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

現在のパソコンの構成

  • マザー 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時間とちょっと、足が痛い

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

      吉和にドライブ

      GWの最終日、天気が良いので吉和方面に久しぶりにドライブ・・・久しぶりに石ヶ谷峡に行ってみます、林道は荒れて狭いですね・・渓流は中々見どころが多い・・・吉和のAWLの山小屋に・・まだ建物はありました・・・ついでにJSWの山小屋も訪ねてみました

      何十年ぶりかに石ケ谷峡に行く 岩と渓流の景観が続く

      に峡を

      石ヶ谷峡の道は狭い 対向車が来るとアウト
      AWLが建設した山小屋は、まだ健在でした 使われてはいないようですね
      JSWさんの山小屋 今は所有していないはずですが
      ▶この続きを見る・・・・

      岩谷観音に登る

      岩谷観音の山頂 気持ちの良い快晴

      昨日に続き、天気が良いので、朝のキクの散歩を兼ねて、岩谷観音を登る・・良く登っていた山だが、記録を調べてみると2020/11/16が最後のようだ・・・途中の車の中で、朝食のおにぎりを食べて、水分峡の駐車場に車を停める、いつもは水分峡の入口から直行で登るが、今日は勾配の楽な道隆寺の霊場から登り始める・・やはり膝に力が入らないので、ゆっくりと休みながら登る・・・GWなので登山者も多い・・・久しぶりの山頂(標高400mほど)は快晴で気持ちが良い・・・広島市内が良く見えて展望が素晴らしい・・・9:47から登り始めて山頂は11:23で、90分かかって登ったとことになる
      下りは、同じ道を下るが、下りの方が足が痛い
      フラフラになって車に到着(11500歩)・・・家に帰り、我が家の温泉で体を癒す・・・でもかなりの筋肉痛

      岩谷観音の寺の跡 ここから山頂まではキツイ
      広島市内が一望できる岩の上、甲斐犬のキクも一緒に登山
      ▶この続きを見る・・・・
      • 2026年6月
        1234567
        891011121314
        15161718192021
        22232425262728
        2930