
J58にシートをセット




8件すべて、実際に動かして判明した内容
| 行事名が空 | 2件 | 旧サイトが行事名自体をPDFリンクにしていた |
| 日付の年が1年ずれ | 3件 | 2008年度、曜日は正しく年だけ誤り |
| 曜日が合わない | 4件 | 2020〜2023年度 |
| 表記の重複誤記 | 3件 | 「先進企業視察会視察会」 |
| 名簿の疑わしい記載 | 6件 | 「幹事→監事」「㈱ダイクレ㈱」等 |
780行・9章+付録2
対象を事務局に絞り、管理者向けの内容とは分けた・・・マニュアルは公開サイト上の固定ページとして設置している・・・更新経路は「ページ上で直接編集」に一本化・・・ 変換スクリプトとページ編集の二経路があると、どちらかの修正が失われる・・・スクリプトは移行用の一度きりのものとして明記のうえ保管
| 構成 | frameset ベースの静的HTML |
| 規模 | 773ファイル / 2.74GB |
| 制作 | Dreamweaverで約15年間 |
| スマホ対応 | なし |
破棄したもの
| 運営委員会PDF | 1,534本 / 206MB | パスワード運用ごと廃止 |
| 死蔵HTML | 654本 | トップから到達不能な滞留分 |
| 制作元データ(.mif / .pef) | 207MB | サイト運用に不要 |
移行したもの
| 行事 | 192件(2008〜2025年度・18年分) |
| 添付ファイル | 368件 / 84MB(写真138・PDF230) |
| 固定ページ | 8本(協会案内5・名簿2・マニュアル1) |
| 静的アーカイブ | 16本(1992〜2007年度) |
| 親テーマ | twentytwentyfive(WordPress公式) | 本体と同時に更新される基盤 |
| 子テーマ | qmac(新規作成) | 配色・レイアウト・動的ブロック |
| プラグイン | qmac-core(新規作成) | 投稿タイプ・分類・管理画面整理 |
当初はクラシックテーマを検討したが撤回した・・・クラシックテーマはWordPress本体の更新に追従しにくく、ブロックエディタで書かれた投稿との整合が崩れやすい・・子テーマ方式なら親テーマが本体と一緒に更新され、独自の差分だけを自前で保守すればよい。保守性と自由度が両立する・・・・親テーマが公式テーマである点も重要で、コアチームが保守しており、第三者テーマのように開発停止で行き詰まるリスクが小さい
「マニュアルに書いてあるから大丈夫」ではなく、そもそも触れないようにする方針
| 権限 | 編集者権限(外観・プラグイン・ツールに到達不可) |
| 左メニュー | 5項目に限定 |
| ブロック | 102種を非表示にし、17種のみ許可 |
| パターン | 挿入可能なパターンを0本に |
| テンプレート | 編集欄を非表示にしたうえ、保存自体を拒否 |
現行運用で最も手間だった作業を自動化・・・開催日を入力するだけで、年度タームの作成・付与・サイドパネルへの反映がすべて自動で行われる・・事務局の手作業はゼロ・・・・年度末の切替も、状態を「予定 → 終了」に変えるボタン1つ(取り消し可)に集約
| 更新の担い手 | 事務局 |
| 行事の追加 | 管理画面で入力 |
| 年度末の切替 | ボタンで切り替え |
| 過去年度リンク | 完全自動 |
| 写真の掲載 | ドラッグで追加(自動圧縮) |
| スマホ対応 | あり |
今日は一日、鹿児島で仕事だが、昼から現場確認に、東シナ海側の吹上浜(加世田市)に行く、吹上浜は久しぶりですね
2005年に、HHM、SDK、SEI、TAMの4人で、薩摩半島のキャラバンに行っています
2月の連休は暖かい薩摩半島の南端に温泉ざんまい
仕事は少し早く終わったが、飛行機の便は無いので予定通りの便で帰宅に


対象:https://sys-assist.co.jp/(WordPress / Parabolaテーマ)
| サイトタイトルの全角スペース削除 | 管理画面 |
| キャッチフレーズ設定 | 管理画面 |
| サンプル投稿「Hello world!」とコメントの削除 | 管理画面 |
| コメント機能の全面停止 | 管理画面 |
| 開発者プロフィールページの新設 | 固定ページ |
| 会社概要ページの新設 | 固定ページ |
| ISO 14001:2026改訂の解説記事を公開 | 固定ページ |
| SEO基盤の導入(メタ情報・OGP・構造化データ) | mu-plugin 1ファイル |
| プロフィール写真とOGP画像の作成 | 画像加工 |
| 見出し・表・段組みの表示調整 | 追加CSS |
| 日本語URL 4本の英字化 | 管理画面 |
| 旧URLから新URLへの301リダイレクト | Redirectionプラグイン |
| パーマリンク構造を「投稿名」に変更 | 管理画面 |
| Google Search Console の登録 | 外部サービス |
| サイトマップの404不具合の修正と送信 | | | mu-plugin修正 |
検索結果に表示される説明文です。順位そのものには影響しませんが、クリックされるかどうかを決めます・・今回はページごとに手動で設定しました・・設定していないページは本文の冒頭120文字が自動で使われますが、それでは表の中身が流れ込むなど、不適切な文章になることがあります
SlackやTeams、LINE、X などにURLを貼ったとき、タイトル・説明文・画像のカードとして表示させるための情報です・・BtoBでは、担当者が社内チャットにURLを貼って共有する場面が必ずあります・・ここで無地のリンクが出るか、製品名と写真の入ったカードが出るかで、受け手の反応が変わります・・今回、1200×630ピクセルのOGP画像を作成しました
人間には見えない、機械向けの説明書きです。ページのHTMLに埋め込まれ、Googleに次のような情報を明示的に伝えます。
| Organization | 有限会社システムアシストという組織が運営している |
| WebSite | このサイトの正式名称は「建設アシスト」である |
| SoftwareApplication | 建設アシストは業務用のソフトウェア製品である |
| WebPage / BreadcrumbList | このページの位置づけと階層 |
文章から推測させるのではなく、決まった形式で直接伝えるため、誤解が起きません。将来的に、検索結果でのリッチな表示(星評価や階層表示など)の土台にもなります
見出しは文字を大きくする装飾ではなく、文書の階層を示す指定です。h1が章、h2が節、h3が項にあたります・・Googleはこの階層を読んで文書の構成を把握します。h1の次がいきなりh5だと、「大見出しが存在しない文書」と解釈されます・・文字の大きさはCSSで自由に変えられます。 見た目のためにタグのレベルを下げる必要はありません。今回、追加CSSでh2を約20pxに調整し、タグは正しい階層のまま使えるようにしました
転居届にあたります。 「このURLは、この新しいURLに恒久的に移りました」という宣言です・・301(恒久的)と302(一時的)があり、URL変更時は301を使います。Googleは301を見て、旧URLの評価を新URLに引き継ぎます・・設定しないと、旧URLはただの404(ページなし)になります。これまでに得た評価も、他サイトからのリンクも、すべて失われます・・今回は4本のURLを変更したため、Redirectionプラグインで301を設定しました。
日本語のURLは、コピーすると次のように変換されます
https://sys-assist.co.jp/%e5%bb%ba%e8%a8%ad%e3%83%97%e3%83%ad%e3%82%b8…
これが200文字以上続きます。メールに貼っても、資料に載せても読めません。他サイトからリンクを張ってもらう際にも敬遠されます・・・投稿が0件の今のうちに変更したのは、影響を受けるURLが最も少ないタイミングだったためです。 記事が増えてから変更すると、大量の301を管理することになります
「Hello world!」は、WordPressをインストールすると最初から入っているサンプル記事です・・・これが公開されたまま残っているサイトは、「作りかけで放置されている」と判断されます・・人間にもクローラにも、同じ印象を与えます。SEOの技術論以前の問題として、削除が必要でした
「SEO対策」という言葉は範囲が広すぎて、何をしているのか分かりにくくなります。実際には、性質の違う4つの層に分かれています。今回の作業も、この4層のどこかに必ず属しています。
Googleは「クローラ」というプログラムを走らせ、Web上のページを片端から読み込んでいます。読み込んだページを整理して保管することを「インデックスに登録する」と言います
インデックスに登録されていないページは、検索結果に絶対に出ません。 順位が低いのではなく、そもそも存在しないものとして扱われます
今回この層に効いた作業
・サイトマップの修正と送信(#15, #14)
・日本語URLの英字化(#11)
サイトマップは「このサイトにはこういうページがあります」という一覧表です。これがGoogleに届いていなければ、クローラは自力で探し回るしかありません・・実際、今回のサイトではサイトマップが404エラーを返しており、Googleが一覧表を受け取れない状態でした
インデックスに登録されても、Googleが「このページは何について書かれているか」を誤解すれば、見当違いの検索キーワードで表示されてしまいます
ここで働くのが、ページの見出し構造とメタ情報です
今回この層に効いた作業
・meta description の設定(#8)
・見出し構造の整理(#10)
・構造化データ JSON-LD の出力(#8)
・サイトタイトルの修正(#1, #2)
Googleは近年、「誰が書いたのか」を強く見ます。 E-E-A-T(経験・専門性・権威性・信頼性)と呼ばれる評価軸です
特に、お金や健康や安全に関わる分野では厳しく評価されます。建設業の安全管理と法規制は、まさにこの分野です。 匿名の記事と、17年間・延べ630回の審査経験をもつ主任審査員が書いた記事とでは、扱いが変わります
ただし、Googleは経歴を推測してくれません。サイトに書いていなければ、存在しないのと同じです
今回この層に効いた作業
・開発者プロフィールページ(#5)
・会社概要ページ(#6)
・構造化データによる組織情報の明示(#8)
作業前のサイトには、誰が作っているのか、どこの会社なのかが一切書かれていませんでした。これはSEO以前に、人間の読み手が判断できない状態でした。
Googleは近年、「誰が書いたのか」を強く見ます。 E-E-A-T(経験・専門性・権威性・信頼性)と呼ばれる評価軸です
特に、お金や健康や安全に関わる分野では厳しく評価されます。建設業の安全管理と法規制は、まさにこの分野です・・匿名の記事と、17年間・延べ630回の審査経験をもつ主任審査員が書いた記事とでは、扱いが変わります・・ただし、Googleは経歴を推測してくれません・・サイトに書いていなければ、存在しないのと同じです
今回この層に効いた作業
・title の整理(#1, #8)
・meta description の設定(#8)
・OGP画像の作成(#9)

| ページ数 | 5(うち1件はサンプル投稿) | 8 |
| <title> | 建設アシスト …(先頭に全角空白4個) | 建設作業所の法規制・安全管理をAIで支援するクラウドシステム |
| meta description | 0件 | 全8ページに出力 |
| OGP / Twitter Card | 0件 | 全ページに出力 |
| 構造化データ(JSON-LD) | 0件 | 全ページに出力 |
| URL形式 | 日本語(1本あたり200文字超) | 英字(/about/ /company/ 等) |
| サイトマップ | Googleが取得できない状態 | 正常に処理・登録済み |
| Google Search Console | 未登録 | 登録済み・サイトマップ送信済み |



今日は昼から鳥取での仕事なので、昼前に出かける
仕事は夕方に終わり、予約していたホテルに行くと・・・予約が無い
よくよく確認してみると9/2なのに10/2で予約していました・・・焦って宿泊場所を探すが、ホテルはどこも満室だ、¥32000のホテルはあったが論外、あとはカプセルホテルかゲストハウスしかないと・・・探していたら寿司屋が旅館をしているのが宿泊できそう・・・少し歩くことになるが、汗だくで到着・・・風呂は銭湯の温泉に
久しぶりに木賃宿で寝ることに

システム言語の研究
AIで作成させるシステムでTypeScriptTypeScript、Next.js、Vercel、Supabaseが良いと聞いたので、AIに説明をしてもらった
| name | 役割 | Laravel版での相当物 |
|---|---|---|
| TypeScript | 言語(型付きJS) | PHP 8.3 |
| Next.js | フレームワーク(画面+API一体) | Laravel + Blade |
| Vercel | ホスティング(サーバーレス) | Xserver |
| Supabase | DB+認証+ストレージ | MariaDB + Breeze |
利点
欠点
今日は15時から八幡浜に出張に、ここの組織ももう10年以上審査している
宇品港からは新しいリニアジェットが就航していたが、前のスーパージェットより料金が値上げされて、所要時間は10分ほど余分ににかかって1時間20分で、松山観光港に、ここではリムジンバスが廃止となっているので、連絡バスで高浜港に行き、伊予鉄で大手町に、ここから1km以上歩いてようやくJR松山駅



JR松山駅は高架になって、駅も新しくなったが、前の場所よりかなり遠くなった
ギリギリで特急に乗る、乗り遅れると1時間は待たなくてはならない
八幡浜の駅は時代に取り残されたよう

Laravelに付属する開発用の簡易サーバ
ブラウザ → localhost:8000 → PHPの内蔵サーバ → アプリ
コマンドを打っている間だけ動き、ウィンドウを閉じると止まる
8000 はポート番号で、同じPC内で複数のサーバを区別する番号です。アプリを2つ動かすなら 8000 と 8001 のように分けます。
常駐型のWebサーバで、バックグラウンドで動く
ブラウザ → XXXX.test → hosts → 127.0.0.1 → Herd(nginx) → PHP → アプリ
これはデータベースだけを担当します。Webサーバとは無関係です
アプリ → 127.0.0.1:3306 → MariaDB
複数のバージョン(MySQL 5.7 / 8.0 / MariaDB 10.11 …)を並べて入れ、必要なものだけ起動できるのが特徴です。本番と同じバージョンを選べるので、XXXXX_app では 10.11 系を選びました。
停止していると、アプリは起動してもデータベース接続エラーになります
Herd と DBngin の両方が起動していないと動きません。片方だけだと、サイトは開くがデータが出ない、あるいはそもそも開かない、という状態になります。
php artisan serve は「ちょっと動かす」用、Herd は「開発環境として据える」用、という使い分けです。今回のように複数プロジェクトを並行させるなら Herd が向いています。

MariaDB 10.11.11 上で稼働
| 段階 | 内容 | 状態 |
|---|---|---|
| 段階1 | fork と不要モジュール削除 | 完了(12コミット / −38,485行) |
| 段階2 | テナント解決の起点変更と顧客マスタ | 完了 |
| 段階3-0 | MariaDB 切替 | 完了 |
| 段階3-1〜3-6 | 審査構造への再編 | 完了 |
| 段階4 | 申込フロー再構築・ランク語彙 | 未着手 |
| 段階5 | RiskAssessment / Project 削除・匿名化辞書 | 未着手 |
| 段階6 | AI支援の語彙・解釈原則の追記 | 未着手 |
被審査組織は台帳である・・審査機関にとって被審査組織は登録番号・初回認証日・認証範囲を持つマスタであり、審査計画の副産物として属性が空のレコードが増える構造にはできない・・・認証契約に基づいて台帳に登録し、それから審査計画を立てる順序が実務に合う
| 仕様書 | 当初 | 確定 |
|---|---|---|
| §2.2 | client_sites(有期事業所マスタ)を新設 | 中止。審査対象は自由記述で足りる |
| §2.3 | audit_no を varchar 化して回次を保持 | audit_type へリネーム。自動採番も廃止 |
| §2.4 | 審査チームはaudit_reports 配下のまま | audit_plan_auditors へ移設(審査単位で任命) |
| §4 | チェックリスト3段構造をそのまま使う | 全面撤回。質問マスタ・テンプレート機構を全廃 |
| §8 | AUD-RPT を個別審査の計画・報告書として維持 | 画面ごと廃止。階層が1段浅くなった |
| §2.1 | 被審査組織を自由記述入力→自動登録 | 不採用CLI-EDIT に一本化(台帳の質を守るため) |
| 段階3指示 | AUD-HOME を AUD-PLAN 配下へ | 据え置き。AUD-RPTS が既に役割を果たしていた |