我が家の妻側が丸見え 労働安全衛生法のレビュー

隣の家の解体が終わり、家の妻側が丸見えに
長い間、外壁も手入れをしていないので少しくたびれています
夕方にキクと散歩

建設アシストの法規制管理の見直しを貸しする・・これで2回目となる
それなりに満足できる法規制の特定とはなっているが、もう一度判定に使っているAIを検討した結果、AIに頼らず、条件選定で多くが可能なことが分かってきたので変更を検討するが、今まで法規制の解釈のためにベースとなる体系(Excel→CSVで取込)を見直しをする必要ができてきた
2回目も、かなり突っ込んできたが、途中でかなり妥協をしていたので、今回は腰を入れて見直しを開始する・・・やはり、安衛法の解釈は複雑、言葉の定義から、法規制と思っていたのが実は「ガイドライン」だったり、新しい発見も多い・・・1ち日をかけて約半分まで終わったが・・・疲れる

ここで、もう一度「元請」周りの安衛法による定義を確認する

呼称意味根拠
事業者労働者を使用する者すべて(元請も下請も)法2条3号
注文者仕事を他人に請け負わせる者(下に出せば中間業者も注文者)法31条等
元方事業者一の場所の仕事の一部を下請に請け負わせている事業者=元請(全業種共通法15条1項
特定元方事業者元方事業者のうち建設業・造船業(特定事業)のもの法15条1項
関係請負人元方事業者の下のすべての請負人(一次・二次…下請全部)法15条1項

選任される「人」の呼称

呼称誰が選任役割根拠
統括安全衛生責任者特定元方事業者現場全体の安全衛生を統括管理する人法15条
元方安全衛生管理者特定元方事業者統括の管理事項のうち技術的事項を管理する人法15条の2
店社安全衛生管理者特定元方事業者(中小規模現場)店社(支店等)から現場を指導・巡視する人法15条の3
安全衛生責任者各下請(関係請負人)統括安全衛生責任者との連絡役法16条
  • 元方事業者(全業種)→ 法29条:関係請負人とその労働者が法令違反しないよう指導する義務。建設業ではさらに法29条の2で危険場所の技術的指導。
  • 特定元方事業者(建設・造船)→ 法30条:統括管理措置。協議組織の設置・運営、作業間の連絡・調整、作業場所の巡視、関係請負人の安全衛生教育の指導・援助、仕事の工程・機械設備の配置計画と関係法令措置の指導、その他労働災害防止に必要な事項の6つです。
  • 注文者(設備等を請負人に使わせる者)→ 法31条:足場・型枠支保工等の設備面の措置

雨のみなと公園 コードのレビュー

キクとみなと公園の散歩 雨はかなり降っている

台風の接近で朝からかなりの雨です・・・甲斐犬のキクの散歩は予定通り、上下に登山用のレインコートを着込んで散歩、でも40年前のゴアテックスは効果が薄く、かなり浸み込んできました・・・やはり、新しいのを使わないと大雨は無理かな

雨のみなと公園をまわる
公園には誰もいない

環境側面であるコードのレビューを実施した
\environment\edit_environment.blade.php
\environment\index.blade.php

1.最優先:CSPとインラインハンドラの矛盾

これが一番の地雷です。直近で@alpinejs/cspに移行してscript-srcから unsafe-eval を外したのに、1-1.この2画面はインラインイベントハンドラだらけonclick=”openAiModal()” / “closeAiModal()” / “runAiEstimate()”
onclick=”addCustomRow()” / “removeCustomRow(this)”
onclick=”window.print()”
script-srcからunsafe-inlineも外す方針なら、これらは全滅
Alpineだけ対応しても、素のonclickが残っていればCSPの一貫性は崩れる・・セキュリティ監査を目標にするなら、unsafe-inline除去は通過点になるはずなので、ここはaddEventListener方式へ統一すべき・・幸い既に477〜492行で同パターンを使っているのでdata-action=”open-ai-modal”のような属性+委譲リスナーに寄せれば機械的に直せる

▶この続きを見る・・・・

元宇品の散歩

元宇品の海岸でキクと
元宇品の森を歩く

建設アシストのコードのセキュリティ対策として、CSP(Content Security Policy)でunsafe-evalを禁止した結果、Alpine.js の式評価がブロックされ動作不能になった問題を解決します

1.パッケージ切り替え・ビルド設定

package.json / resources/js/app.js

変更内容詳細
alpinejs → @alpinejs/cspに差し替えnpm install @alpinejs/cspを実行、app.jsのインポートを変更
グローバル Alpine コンポーネントを app.jsに集約alpine:initイベント内で Alpine.data()を登録

app.jsに登録したグローバルコンポーネント:

コンポーネント名用途
scheduleInitModal(chartType, switchUrl)工程表 初期選択モーダル
flashMessageプロフィール保存後フラッシュメッセージ(2秒フェードアウト)
dropdownMenuナビゲーション ドロップダウン
laravelModal(initialShow, modalName, focusable)Breeze 標準モーダル(フォーカストラップ付き)

▶この続きを見る・・・・

iso_app 開発ロードマップ

1. プロジェクト概要

so_app は、建設会社の作業所管理をシステム化した業務アプリケーションです。ISO監査・施工計画・環境側面・リスクアセスメント・安全パトロール・法規制管理を統合した、建設DXを目指した詳細な管理システム

項目内容
技術スタックLaravel(PHP) + Vite + Tailwind CSS + SQLite/MySQL
AI機能Claude API(法規制選定・環境側面推論・監査支援)
モデル数約45モデル(ISO監査・工事管理・環境・安全・リスクなど)
現在の状態複数社でテスト運用中
目標建設業界のDX化
特徴セキュリティを重視した「統制下でのAI活用」の実証システム

2. フェーズ別ロードマップ

Phase 1: 品質と信頼性の確立(現フェーズ)
作業状態
セキュリティ監査(Critical 1〜4 テナント分離)✅ 完了
セキュリティ監査(High 7〜9 認可漏れ)✅ 完了
AI送信情報のガード機構(InputValidator)⏳ 次タスク
AI送信内容の透明性確保(ユーザー画面への明示)⏳ 予定
Medium 13 ファイル名処理⏳ 予定
Phase 2: 保守性と共通化
今後作業効果
Blade コンポーネント化(写真・添付・印刷UI)新機能追加が高速化
AI Service の共通基底クラスAI呼び出しの一元管理
PrintHelper・共通ヘルパー関数の整備重複コードの削減
トレイト化(HasPhotos, HasAttachments等)モデルの統一化
Policy への移行(Phase 3)認可の構造的解決
グローバルスコープによるテナント自動分離忘れて漏れる事故の防止

4. 直近のアクションアイテム

作業内容対象ファイル状態
InputValidator の実装(AI送信ガード機構)app/Services/Ai/InputValidator.php
既存AI Serviceへの組み込み(5箇所)AiRecommendationService等
Environment + RiskAssessmentへのトレイト確認完了確認
ai_usage_logs テーブルの設計・作成database/migrations/
プロンプトキャッシュの実装全AI Service📅
ログローテーション設定(.env変更)config/logging.php📅

5. 業界への影響と目標

このシステムは「技術者が作った業務システム」ではなく、「業務実践者がAIを道具として使って作った業務システム」です。建設業界のDX化に向けて、特に以下の点で先進的な位置付けにあります

  • ISO監査・施工計画・環境・安全・法規制管理の統合(業界で類を見ない)
  • 「機密情報は外部AIに出さない」設計によるセキュリティと利便性の両立
  • 大手企業の情報セキュリティ要件に対応可能な「統制下でのAI活用」の実証
  • 30年以上の建設業務経験と20年のISO審査経験が詰め込まれた業務知識

今AIの活用に伴い、AIのセキュリティが大きな課題となっていますが、「AI使用禁止」ではなく、「適切な制御下での活用」という選択肢を具体例として示すことが目標とし、このシステムが業界全体のAI活用推進のモデルケースとなることを目指します

Phase 3: AIゲートウェイ・セキュリティ監視
今後作業期待効果
AI利用ログテーブル(ai_usage_logs)の実装コストの可視化・会社別分析
コスト制御(予算上限・アラート)コスト制御(予算上限・アラート)APIコストの自動管理
ルールベース匿名化サービス機密文書の安全なAI活用
セキュリティ監視Console Command日次自動チェック
セキュリティダッシュボード運用状況の可視化
プロンプトキャッシュの実装APIコスト最大90%削減
Phase 4: 組織内AI・高度なセキュリティ
今後作業内容
Ollama + ローカルLLMの検証自前AIの感触をつかむ(無料)
契約書・技術文書の匿名化処理機密情報を外部に出さない仕組み
統合AIパイプライン匿名化→外部AI→復元の一連の流れ
AI利用の完全監査ログセキュリティ監査員AI
管理ダッシュボードの高度化リアルタイム監視・異常検知
Phase 5: 商用化準備
今後作業内容
サーバーセキュリティの強化ファイアウォール・HTTPS・バックアップ
ユーザー管理のセキュリティ強化パスワードポリシー・2FA・セッション管理
スケーラビリティ対応複数社本格導入への対応
SLA・サポート体制の整備商用化に向けた運用体制

3. サーバー・ユーザー管理セキュリティ計画

3.1 ユーザー管理の強化(優先度高)
項目内容優先度
パスワードポリシー複雑性要件・有効期限の設定
ログイン試行回数制限ブルートフォース攻撃対策
セッションタイムアウト一定時間後の自動ログアウト
退職者の即時無効化アカウント無効化フローの整備
二要素認証(2FA)重要操作時の追加認証
アクセスログ閲覧UI管理者向けの操作履歴確認機能
3.2 サーバーセキュリティ(段階的に対応)
項目内容難易度
HTTPS の徹底SSL証明書の設定・自動更新
不要ポートの閉鎖ファイアウォール設定
OS・PHP・Laravelのアップデート方針定期更新のルール化
バックアップ体制自動バックアップの設定・復旧手順
ログローテーション日次ローテーション設定(保存14日)
依存ライブラリの脆弱性チェックcomposer audit の定期実行

新しいマザーボードに交換

現在のパソコンの構成

  • マザー ASUS ROG STRIX B550-A GAMING
  • CPU Ryzen9 3950X(16C32T 3.5-4.7GHz)
  • メモリ DDR4 PC4-28800 3600MHz 2✕32GB=64GB
  • グラフィックボード GeForce RTX™ 4070 Ti
  • M.2SSD PCle4.0 NVMe M.2 Kingston KC3000 1021GB PCIe Gen 4.0 x4 70000MB/S
  • M.2 SSD PCIe Gen4x4 NVMe M.2 diloca EN760 2TB 2280 4800MB/s
  • 電源 MSI 750W MAG A750GL PCIE5  PS1326
    ・PCIe 5.0 GPU ネイティブ16ピン(12VHPWR)450W対応
    ・ATX 3.0 対応/フルモジュラー設計
    ・80 PLUS Gold認証取得
  • ケース NZXT(CA-H510E-B1)
マザーを交換してケースに組込む
マザーに仮組して、稼働を確認
ASUS ROG STRIX B550-A GAMINGでAMD Ryzen 5000シリーズ AM4 対応 メモリはDDR4
新しいマザーボードが届いていた

今回は、パソコンの修理は、マザーだけを交換する、他のパーツはすべて前のを流用・・さっそく裸で組んで、テストをすると無事に起動、ケースをパーツを清掃して組込み、12時前にセットが完了した

ログインに関するセキュリティ

1.ログインに関するセキュリティ

SaaS運用に向けたセキュリティ強化として、フェーズ1(必須項目)の完了およびフェーズ2の主要項目を実装した。

1-1. HTTPS強制(フェーズ1)
  • iPadのChromeブラウザでログインフォーム送信時に「送信されている情報は保護されません」の警告が表示されていた。
  • XサーバのSSL化は設定済みだったが、LaravelのURL生成がHTTPになっていた。
    ① `app/Providers/AppServiceProvider.php` に追記
    “`php
    use Illuminate\Support\Facades\URL;

    public function boot(): void
    {
    if (!app()->environment(‘local’)) {
    URL::forceScheme(‘https’);
    }
    }
    ② `bootstrap/app.php` にTrustProxies設定を追加
    “`php
    $middleware->trustProxies(at: ‘*’);
    “`

結果

  • iPadでの警告が解消された。
  • ローカル環境(HTTP)では適用しない条件分岐を追加し、ローカルの動作も正常化。
1-2. セッションのセキュア設定(フェーズ1)

本番・ローカル各.envに以下を追記:

項目本番ローカル
SESSION_SECURE_COOKIEtruefalse
SESSION_ENCRYPTtruetrue
SESSION_SAME_SITEstrictlax

結果

  • セッションCookieのHTTPS限定送信を設定。
  • セッションデータの暗号化を有効化。
  • 既存ログインユーザーのセッションが一度無効化されたが、再ログインで正常動作を確認。
1-3. ログイン失敗のロック機構(フェーズ1)

app/Http/Requests/Auth/LoginRequest.php を確認した結果、Laravel標準のRateLimiterによる以下の機能がすでに実装済みであることを確認した。

  • 5回失敗でアカウント一時ロック
  • メール+IPアドレスの組み合わせでカウント
  • 時間経過で自動解除
  • Lockoutイベントの発火

結果

  • 追加実装不要。実装済みを確認。
1-4. セキュリティヘッダーの実装(フェーズ2)

app/Http/Middleware/SecurityHeadersMiddleware.phpを新規作成し、bootstrap/app.php` に登録。

設定したヘッダー:

ヘッダー設定値効果
Strict-Transport-Securitymax-age=31536000HTTPS強制をブラウザに記憶
X-Frame-OptionsDENYクリックジャッキング防止
X-Content-Type-OptionsnosniffMIMEタイプ誤判定防止
Referrer-Policystrict-origin-when-cross-originURL漏洩防止
Content-Security-Policyself + unsafe-inlineXSS対策

注意事項

  • ローカル環境(APP_ENV=local)では全ヘッダーをスキップする条件を追加。
  • TipTapエディタ・Axios使用のため、CSPは段階的に厳格化する方針とした。
1-4. セキュリティヘッダーの実装(フェーズ2)

app/Http/Middleware/SecurityHeadersMiddleware.hpを新規作成し、bootstrap/app.php` に登録。

設定したヘッダー:

ヘッダー設定値効果
Strict-Transport-Securitymax-age=31536000HTTPS強制をブラウザに記憶
X-Frame-OptionsDENYクリックジャッキング防止
X-Content-Type-OptionsnosniffMIMEタイプ誤判定防止
Referrer-Policystrict-origin-when-cross-originURL漏洩防止
Content-Security-Policyself + unsafe-inlineXSS対策

注意事項

  • ローカル環境(APP_ENV=local)では全ヘッダーをスキップする条件を追加。
  • TipTapエディタ・Axios使用のため、CSPは段階的に厳格化する方針とした。
1-5. 不審ログイン通知メール(フェーズ2)

新しいIPアドレスからのログインを検知し、登録メールアドレスへ通知メールを自動送信する機能を実装。
新規作成ファイル
app/Mail/SuspiciousLoginMail.php
resources/views/emails/suspicious_login.blade.php
resources/views/emails/suspicious_login_text.blade.php(HTML/テキスト両形式対応)

    修正ファイル
    app/Http/Controllers/Auth/AuthenticatedSessionController.php

      検知ロジック:

      $isNewIp = !LoginLog::where(‘user_id’, $user->id) ->where(‘ip_address’, $request->ip()) ->where(‘id’, ‘!=’, $log->id) ->exists(); if ($isNewIp && $user->email) { Mail::to($user->email)->send( new SuspiciousLoginMail($user, $request->ip(), now()->format(‘Y年m月d日 H:i’)) ); }

      メール設定

      環境設定
      本番Xサーバ SMTPサーバ(sv13426.xserver.jp:587)
      ローカルMAIL_MAILER=log(ログファイルに出力)

      動作確認結果

      • Gmail:受信トレイに正常届を確認 ✅
      • MSN(Outlook):迷惑メールフォルダに届くことを確認 ✅

      残課題

      MSN/Outlookの迷惑メール判定を解消するため、DNSへのSPFレコード追加を推奨。
      レコード種別:TXT
      値:v=spf1 include:xserver.jp ~all

      2.フェーズ別進捗

      フェーズ1(必須・リリース前)
      項目状態
      パスワードのハッシュ化(bcrypt)✅ 完了(実装済み確認)
      HTTPS強制✅ 完了
      セッションのセキュア設定✅ 完了
      ログイン失敗のロック機構✅ 完了(実装済み確認)
      フェーズ2(リリース後早めに)
      項目状態
      セキュリティヘッダー(HSTS等)✅ 完了
      不審ログイン通知メール✅ 完了
      SPF・DKIMの設定⬜ 未対応(推奨)
      パスワードリセットフローの強化⬜ 未対応(次回

      下関三日目

      朝は同じモーニング、ホットサンドイッチにした
      ホテルの前の通り

      夕方には雨は上がってきた

      今日の組織の場所は、昨日の組織と余り離れていない
      朝から雨が降り続いていたが、今日は一日中、デスクワーク
      夕食にケンタッキーのフライドチキンを購入したが、まったく旨くなかった・・・なんじゃこれは

      MACmini4にLaravelローカル環境構築

      元宇品の森に散歩
      MACmini4に建設アシストLaravelのローカルな環境を構築する・・・なれないMACで一日かかった
      マザーを交換することにする このマザーは6年前に購入したASUS ROG STRIX B550-F GAMING(ちょっと高級品)でAMD Ryzen 5000シリーズ AM4 対応だが、最近はメモリが高騰して数倍になっているので、高いDDR5を避けてDDR4のAM4が人気があり、まだ現役バリバリだった
      マザーは同じくB550だが、LANが2.5G対応のASUS ROG STRIX B550-A GAMING を手配する

      パソコンのエラー

      朝は京橋川の土手をキクと散歩
      ケースからマザーを取り出して、清掃して裸にして色々と試す
      とりあえず、MACmini4を使えるようにして、Laravelのシステムの再構築を行う
      メモリも交換、電源の交換、BIOS更新、USBの清掃・・・すべてやってみたが、USB device over current status detected(USB過電流検出)のエラーメッセージは消えない

      建設アシストセキュリティ監査

      1. セキュリティ監査の実施

      iso_app (建設アシスト)のセキュリティ強化を実施する

      1.1 監査方法

      Claude Code(Opus 4.7)を「セキュリティ監査員」として起用し、以下の観点でアプリケーション全体を調査しました。

      • 認証・認可の漏れ(全コントローラーを網羅的に調査)
      • テナント分離の実装状況(マルチカンパニー対応の確認)
      • ファイルアクセス制御
      • AI API への機密情報送信リスク
      • 入力検証・出力エスケープ
      • 依存ライブラリの脆弱性
      1.2 監査サマリー
      重大度 件数対応状況
      Critical6件 4件完了・2件対応中
      High8件7件完了・1件対応中
      Medium2件計画中
      合計16件 11件完了

      3. High 項目の詳細

      項目コントローラー内容状態
      認可漏れChecklistControllergetEvidence で他社データをJSON取得可能✅ 完了
      認可漏れEnvironmentControllerindex/edit/save/aiEstimate でテナント確認なし✅ 完了
      認可漏れRiskAssessmentControllerdownloadAttachment で他社ファイルダウンロード可能(16メソッド)✅ 完了
      AI情報AuditAiService被監査対象名・業務概要がAPI送信される⚠ 対応中
      AI情報SafetyPatrolController作業内容・使用機械の詳細が送信される⚠ 対応中
      AI情報risk_assessment.blade.php下請業者名・プロジェクト名がプロンプトに含まれる⚠ 対応中

      4. 是正処置の内容

      4.1 共通トレイトの新規作成

      認可ロジックを一元化する AuthorizesTenantAccess トレイトを作成しました。

      app/Http/Controllers/Concerns/AuthorizesTenantAccess.php

      このトレイトにより:

      • 認可ロジックが1箇所で管理される
      • 各コントローラーへの適用が use 一行で済む
      • 将来の Policy 移行への布石となる
      • 役割ベースの例外(システム管理者は全社アクセス可)を正しく処理
      4.2 適用したコントローラーと保護されたメソッド数
      コントローラー保護メソッド数対応回
      ProjectController8メソッド第1回
      ConstructionPlanController15メソッド第1回
      SafetyPatrolController14メソッド第1回
      ChecklistController6メソッド第1回
      EnvironmentController4メソッド第2回
      RiskAssessmentController16メソッド第2回
      合計63メソッド
      4.3 テストケース(26件 全PASS)

      各コントローラーに対して以下のパターンを網羅的にテスト:

      • 他社ユーザーが各リソースにアクセス → 403
      • 自社ユーザーがアクセス → 200(正常)
      • role=1 システム管理者 → 全社アクセス可(200)
      • 削除・変更系でDBの状態が変わらないことを確認
      4.4 実施コストと効果
      項目内容
      実施時間(合計)約2時間半
      API利用コスト$6.51(約1030円)
      外注した場合の市場価格130〜350万円相当
      コスト比約1300〜3500倍の費用対効果
      コード変更量673行追加、12行削除
      テスト件数26件 全PASS

      2. Critical 項目の詳細

      2.1 テナント分離の欠落(Critical 1〜4) ✅ 完了

      最も重大な問題でした。URL のIDを変えるだけで他社のデータに読み取り・編集・削除アクセスが可能な状態でした

      対象コントローラー影響範囲重大度
      ProjectControllershow/edit/update/destroy/editOverview/updateOverview/uploadPhoto(8メソッド)Critical
      ConstructionPlanControllerdownloadDocx/downloadXlsx/generatePdf/diagramEditor等(15メソッド)Critical
      SafetyPatrolControllercreate/store/index/show/destroy/generateAiChecklist等(14メソッド)Critical
      ChecklistControllerdeleteEvidence/getEvidence等(6メソッド)Critical
      2.2 AI API への機密情報送信(Critical 5〜6) ⚠ 対応中

      発注者名・予算・下請業者名・近隣企業名などが、マスキングなしで Anthropic Claude API に送信される可能性がありました。

      【現状の評価(設計意図の確認後)】
      現状のAI利用は「チェックボックス選択による固定語彙のみを送信」という設計になっており、実質的な機密情報漏洩リスクは低い状態です。ただし、将来の機能拡張で誰かがフリーテキストを送る実装をしてしまうリスクの予防として、コードレベルのガード機構を実装予定です。

      5. 進捗状況

      フェーズ内容状態
      Phase Aリスクアセスメント(自主監査)✅ 完了
      Phase B-1Critical 1〜4 テナント分離✅ 完了
      Phase B-2High 7〜9 認可漏れ(Environment, RiskAssessment)✅ 完了
      Phase B-3Critical 5〜6, High 10〜12 AI関連⏳ 次フェーズ
      Phase B-4Medium 13 ファイル名処理⏳ 後ほど
      Phase CAIゲートウェイ構築・匿名化📅 来月
      Phase D監視・運用体制の確立📅 数ヶ月後
      Phase E継続的改善(PDCA)継続

      6. 次フェーズの計画

      6.1 AI送信情報のガード機構(InputValidator)

      現在の「固定語彙のみ送信」という設計意図をコードで強制するバリデータークラスを実装します。

      • 会社名・個人名らしき文字列の検出
      • 長い数字列(電話番号・契約番号等)の検出
      • 検出時の警告ログ記録
      • 既存のAI Serviceへの組み込み(5箇所)
      6.2 将来計画:ローカル AI 前処理

      契約事項・技術的背景・経営内容の文書化を扱う際、自前サーバーに置いたローカルAIで一般化処理をしてから外部AIに送信する仕組みを構築予定です。

      • ルールベース匿名化サービス(Phase 1): 氏名・会社名・金額の自動マスキング
      • ローカルLLM検証(Phase 2): Ollama + Llama 3.2 などで自前AIの感触をつかむ
      • 統合AIゲートウェイ(Phase 3): 匿名化→外部AI→復元のパイプライン構築

      Claude Code 最適化

      1. プロジェクト容量の実測結果

      Claude Codeのトークン消費がものすごい・・・いくら請求が来るやら(トークン量は1億となっていた!!)、これは大変なのでトークン削減・コスト最適化の実践を考える
      iso_app プロジェクトの容量分析結果(2026年5月実測):

      フォルダサイズ(MB)分類除外対象
      node_modules/103.25npmライブラリ
      ✅ 除外必須
      vendor/73.14Composerライブラリ✅ 除外必須
      storage/app/59.91写真・添付ファイル✅ 除外必須
      storage/logs/4.33ログファイル✅ 除外必須
      storage/fonts/5.87IPAexフォント✅ 除外必須
      storage/framework/0.27Laravelキャッシュ✅ 除外必須
      public/18.39ビルド成果物・画像⚠ 一部除外
      resources/1.32ビュー・CSS・JS❌ 必要(含める)
      database/0.86マイグレーション❌ 必要(含める)
      app/0.38実コード❌ 必要(含める)

      ⚠ 実コード(app/, resources/, database/, routes/, config/)の合計はわずか 2.7MB。全体の 1% です。

      2. .claudeignore の設定

      .claudeignore ファイルをプロジェクトルートに作成することで、Claude Code が読み込む対象を 268MB から 2.7MB に削減できます。

      依存ライブラリ(最重要)
      vendor/
      node_modules/
      アップロードされた写真・添付ファイル(iso_app固有)
      storage/app/public/photos/
      storage/app/public/evidence/
      storage/app/public/plans/
      storage/app/public/ra_attachments/
      Laravelキャッシュ・ログ
      storage/logs/
      storage/framework/
      storage/fonts/
      ビルド成果物
      public/build/
      public/storage/
      手書きCSSは含める
      !public/css/print-common.css
      Git・IDE
      .git/
      .idea/
      .vscode/
      バイナリ・大容量ファイル
      *.zip *.tar.gz *.pdf *.xlsx *.sql *.sqlite

      ▶この続きを見る・・・・

      Laravel 基礎知識

      1. Laravel と

      Laravel は PHP で書かれたオープンソースの Web アプリケーションフレームワークです。2011 年に Taylor Otwell によって作られ、現在では PHP フレームワークの中で最も人気のあるものの一つとなっています。MVC(Model-View-Controller)アーキテクチャを採用しており、ビジネスロジック・データ・表示を分離して開発できます。

      1.1 主要な機能
      機能説明
      Eloquent ORMデータベース操作をオブジェクト指向で直感的に扱える。SQLをほとんど書かずにDB操作が可能
      Blade テンプレートシンプルかつ強力なテンプレート構文。HTMLとPHPを綺麗に分離
      Artisanコマンドラインツール。コードの自動生成・マイグレーション・キャッシュクリアを効率化
      ルーティングRoute::get(‘/users’, …) のような直感的な記述でURLとコントローラーを結びつける
      認証(Auth)ログイン・登録・パスワードリセットなどの認証機能を標準装備
      マイグレーションデータベース構造のバージョン管理
      キューと スケジューラ非同期処理・タスクの定期実行

      2.Composer による依存管理

      2.1 Composer とは

      Composer は PHP の依存管理ツールです。JavaScript の npm、Python の pip に相当します。Laravel 自体も Composer を使ってインストール・管理されます。「アプリの部品調達係」と考えると理解しやすいです

      2.2 Composer の3つの役割
      • 買い物リストの管理: composer.json = 「このアプリに必要な部品リスト」
      • 部品の調達と配置: Packagist からライブラリを取得して vendor/ に配置
      • 部品同士の互換性チェック: バージョン矛盾がないか自動確認

      2.3 ライブラリの所在
      場所役割
      Packagist (packagist.org)PHPライブラリのカタログ(Amazonのサイトに相当)
      GitHub実際のソースコードの置き場所(Amazonの倉庫に相当)
      vendor/ フォルダあなたのPCに取ってきた完成品(自宅に届いた荷物)
      ローカルキャッシュ一度落としたものの控え(物置に置いてある予備)
      2.4 よく使うコマンド

      composer install               # composer.lock通りにインストール
      composer update                # 制約内で更新
      composer require guzzlehttp/guzzle  # 新規パッケージ追加
      composer remove vendor/package      # パッケージ削除
      composer dump-autoload         # オートローダーの再生成

      ▶この続きを見る・・・・

      日曜日も天気が良い

      元宇品の森の中
      元宇品のプリンスホテル側を散歩
      Codexをインストールする

      建設アシストのコードが多くなってきたので、Claude Codeのトークン消費が多くなってくる(毎回、コードを読み込んで応答するため)・・・2日ごとにクレジット要求が来るようになったので、今噂のchatJPのClaude Code向けのプラグインであるCodexをインストールをして、さっそく工事管理のフロントエンドを修正させたが、ずいぶん時間がかかり、おまけにClaude codeも消費しているようで、またクレジットが切れてしまった・・・いくら請求が来るのか戦々恐々・・・Codexが使えるようであればFreeから契約するかと思っていたが、もう少し様子をみる必要がある・・・・Claude Codeを使わなくても、Clude,Geminiなどでもコード作成はできるが、スピードとシステム全体の網羅性はClaude Codeを使いだすと数倍以上に効率が良いため、中々戻れない

      ▶この続きを見る・・・・

      内部監査システムを構築

      昨日に引き続き内部監査のシステムを構築する・・・ようやく、難しい監査チェックシートを作成、かなりClaudeを使い倒していると、昨日に引き続きもう追加のクレジットの要求・・・かなりの金食い虫だが、仕事は素晴らしいので対価としては多少納得
      内部監査システムはかなり完成に近い、明日で細かな詳細を仕上げるかな

      朝の散歩では、宇品波止場にはクルーズ船が停泊
      内部監査の個別監査計画書
      内部監査リスト
      監査チェックシート ISOシステムはタブメニューで
      監査チェックシートはCSVで雛形を取り込み

      内部監査の複雑な仕組みのアプリうケーションが作成できれば、どのような業務アプリも作成できる自信がついた

      監査指摘シート
      監査での不適合 是正処置報告書

      京橋川の散歩

      朝は、雲が多いが晴れていたが、15時過ぎから雷が鳴り雨が降った
      先週から良い天気だったので久しぶりの雨

      甲斐犬のキクと京橋川を散歩

      今日は内部監査システムの監査チェックシートに使うテンプレートを作成・・・やはり、このデータは自分で作らないとAI任せとはできない(しかし最後は自分で作成した内容をAIでコ―ディング)

      キクらしいが白い花が映えている
      朝食は卵丼
      隣の家が解体されて、通りから我家が見えるように

      茶菖蒲 内部監査システムの構築

      良い天気が続いている・・茶菖蒲も咲いてきた
      元宇品を甲斐犬のキクと散歩

      ようやく、内部監査システムの構築に、今まで2回ほどシステム化しているので、これが3回目、今回のを集大成としたい

      内部監査リスト

      内部監査リストや内部監査計画書の作成はたやすいが、キモとなる監査の仕方の指針となる、内部監査チェックシートの作り方が悩ましい

      内部監査計画書

      甲斐犬のキク

      元宇品はプリンスホテル側を歩く
      朝はキクが起こしに来る
      散歩までベットで待機
      五日市の病院の帰り、水鳥公園に

      建設アシストは今まで対象を、建設現場管理を重点にしていたが、今回はそれらを纏める会社の管理を構築すべく、まずは入り口となる会社概要ページを作成・・半分は会社のHPをリンクさせている
      左には処理メニューが配置されているが、多くはこれから開発してゆくことになる

      建設アシストの会社概要の作成

      キクと朝の散歩

      4月はここ数年で初めて出張が無かった
      3月中から5月の末までは出張の仕事ななく、久しぶりに何もすることが無い時間となったが、意外と何もする気が起きない・・やるべきことは多いのだけど、なんとなくぼんやりと過ごしている
      今の重要のタスクは、甲斐犬のキクの朝の散歩となっている・・1時間以上の散歩はかなりのタスクだが、健康維持には重要な事項だろう

      甲斐犬のキク
      土手をキクと歩く
      護岸からの風景は気持ちが良い

      今日は日曜日、良い天気だ、甲斐犬のキクと京橋川の土手を広島大橋まで南下して、往復・・・1時間とちょっと、足が痛い

      工程表設定メニュー
      工程表印刷のメニュー

      • 2026年6月
        1234567
        891011121314
        15161718192021
        22232425262728
        2930