[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-watashitachi-ga-claude-code-nuxt-rust-monorepo-iji":3},{"article":4,"author":63},{"id":5,"category_id":6,"title":7,"slug":8,"excerpt":9,"content_md":10,"content_html":11,"locale":12,"author_id":13,"published":14,"published_at":15,"meta_title":16,"meta_description":17,"focus_keyword":18,"og_image":19,"canonical_url":19,"robots_meta":20,"created_at":15,"updated_at":15,"tags":21,"category_name":43,"related_articles":44},"d0000000-0000-0000-0000-000000000553","a0000000-0000-0000-0000-000000000046","私たちがClaude CodeでNuxt 4 + Rustモノレポをどう維持しているか","watashitachi-ga-claude-code-nuxt-rust-monorepo-iji","Open SoftがClaude Codeをプロダクションモノレポの日常開発ツールとしてどのように使用しているかの舞台裏。マルチファイルリファクタリング、マイグレーション作成、テスト生成、コードレビュー、フックとMCPサーバーによるカスタムツーリングの実際のワークフロー。","## 私たちのスタックとClaude Codeが適している理由\n\nOpen Softでは、メインプロダクトはモノレポとして構築されたウェブサイトです：TypeScriptのNuxt 4フロントエンドとPostgreSQLバックのRust\u002FAxumバックエンドAPI。コードベースは2つの言語、2つのビルドシステム、共有データコントラクト、データベースマイグレーション、10言語のi18nファイル、デプロイメントインフラストラクチャにまたがっています。変更は頻繁にスタックの両側に同時に影響します。\n\n私たちは2025年半ばにClaude Codeを採用し、最も使用する開発ツールになりました。コードを書いてくれるからではなく、他のツールではできない方法でコードベース全体について推論してくれるからです。Claude Codeに「articlesにpublished_atフィールドを追加して」と言うと、Rustマイグレーションを読み、ハンドラのSQLクエリを更新し、フロントエンドのTypeScript型を修正し、Nuxtページコンポーネントを調整し、10個のロケールファイルすべてを更新し、検証のためにビルドを実行します。このクロススタックの認識が、モノレポ開発で欠かせないものにしています。\n\n## CLAUDE.md：エージェントにあなたの規約を教える\n\n効果的なClaude Code使用の基盤は`CLAUDE.md`ファイルです。これはClaude Codeが各セッションの開始時に読むプロジェクトレベルの指示ファイルです。AIエージェント向けのオンボーディングドキュメントと考えてください。\n\n私たちのCLAUDE.mdには以下が含まれます：\n\n- **コミット規約：** すべてのコミットは`TASK-XXX:`で始まり、命令形を使用\n- **アーキテクチャ概要：** モノレポ構造、どのディレクトリに何が含まれるか\n- **コードスタイルルール：** TypeScript strictモード、`any`禁止、Composition APIのみ、`\u003Cscript setup>`構文\n- **i18nルール：** 10言語すべてを同期、キーをアルファベット順に並べ替え、英語プレーンテキストキー\n- **セキュリティルール：** コミットに秘密情報なし、パラメータ化SQL、明示的CORSオリジン\n- **開発コマンド：** `npm run dev`、`cargo run`、`make fixtures`など\n\nClaude Codeはこれらの規約に一貫して従います。コミットメッセージを生成する時は`TASK-XXX:`プレフィックスを使います。翻訳キーを追加する時は、アルファベット順で10個のロケールファイルすべてに追加します。SQLを書く時はパラメータ化クエリを使います。これにより、コードレビューのフィードバックの一カテゴリ全体 — 規約違反 — が排除されます。\n\n```markdown\n# CLAUDE.md抜粋例\n## i18nルール\n10言語すべてを同期に保つ必要があります。翻訳キーを追加する時：\n1. キーフォーマット：キーとして英語プレーンテキストを使用\n2. アルファベット順：すべてのロケールファイルでキーをA-Z順にソート\n3. すべてのロケールが必要：en、ru、id、zh、ja、ko、fr、de、es、ar\n```\n\nバックエンド（`\u002Fserver\u002FCLAUDE.md`）とフィクスチャ（`\u002Fserver\u002Ffixtures\u002FCLAUDE.md`）にはディレクトリごとの`CLAUDE.md`ファイルも維持しており、Claude Codeがそれらのディレクトリで作業する時にアクティブになるコンテキスト固有の指示を提供します。\n\n## マルチファイルリファクタリング：キラーユースケース\n\n最も時間を節約するワークフローはクロススタックリファクタリングです。プロジェクトからの実例を紹介します。\n\n**タスク：** articlesシステムにSEOフィールド（`meta_title`、`meta_description`、`focus_keyword`、`robots_meta`）を追加する。\n\nClaude Codeなしでは、この変更に必要なこと：\n1. 4カラムを追加するSQLマイグレーションの作成\n2. Rust `Article`モデル構造体の更新\n3. Rust `CreateArticle`と`UpdateArticle` DTOの更新\n4. articlesハンドラの全SQLクエリの更新（SELECT、INSERT、UPDATE）\n5. フロントエンドのTypeScript `Article`型の更新\n6. 管理エディタフォームの新フィールド追加\n7. ブログ記事ページのmetaタグレンダリング更新\n8. サイトマップ生成ロジックの更新\n9. 全フィクスチャファイルの新フィールド更新\n10. マイグレーション実行、リビルド、テスト\n\nClaude Codeを使えば、コマンドを一つ入力するだけ：\n\n```\narticlesにSEOフィールド（meta_title、meta_description、focus_keyword、robots_meta）を追加。\nマイグレーションを書き、Rustモデルとハンドラを更新し、フロントエンドの型と\n管理エディタを更新し、ブログページにmetaタグを追加し、フィクスチャを更新。\n```\n\nClaude Codeは単一のエージェントループとして実行します：\n- 既存のマイグレーションファイルを読んでスキーマを理解\n- Rustモデルを読んで現在の構造体を理解\n- ハンドラを読んで全SQLクエリを発見\n- フロントエンドの型とコンポーネントを読む\n- 12+ファイルにわたる全変更を実行\n- `cargo check`でRustコードのコンパイルを検証\n- `npm run build`でフロントエンドのビルドを検証\n- エラーを修正し、両方が通るまでイテレーション\n\nプロセス全体は約5分で、手動では45-60分かかります。さらに重要なのは、人間が見落とすクロスリファレンスバグを検出すること — UPDATEクエリに新カラムを追加し忘れたり、フィクスチャファイルを見落としたりすることです。\n\n## マイグレーション作成\n\nデータベースマイグレーションは、現在のスキーマ、望む最終状態、その間の安全な変換パスの理解を必要とするため、Claude Codeに特に適しています。\n\nClaude Codeにマイグレーションの作成を依頼すると：\n1. 既存の全マイグレーションファイルを読んで現在のスキーマを理解\n2. Rustモデルを読んでターゲット状態を理解\n3. 適切な`ALTER TABLE`文でマイグレーションSQLを作成\n4. 適切な場所に`IF NOT EXISTS`ガードを追加\n5. 可逆マイグレーションを使用する場合、対応する「ダウン」マイグレーションを作成\n6. 新スキーマを使用するようにRustモデルとハンドラを更新\n\n## テスト生成\n\nテストフィクスチャとSQLシードデータの生成にClaude Codeを広く使用しています。フィクスチャファイルには適切なSEOメタデータ付きの現実的な長文コンテンツ（1500+語の記事）が含まれ、手動で書くのは退屈でエラーが起きやすいです。\n\nワークフロー：\n1. 必要な記事を記述（トピック、角度、技術的深さ）\n2. Claude Codeが完全なMarkdownコンテンツ付きのSQL INSERT文を生成\n3. UUID規約に従う（`d0000000-...`は記事、`a0000000-...`はカテゴリ）\n4. 冪等性のため`ON CONFLICT (slug) DO NOTHING`を追加\n5. `article_tags`ジャンクションテーブル経由で記事をタグにリンク\n\n## Claude Codeによるコードレビュー\n\nマージリクエストを開く前に、Claude Codeをレビュアーとして実行します：\n\n```\nこのブランチの全変更をバグ、セキュリティ問題、パフォーマンスの問題、\nCLAUDE.md規約との一貫性についてレビューしてください。\n```\n\nClaude Codeは：\n- `git diff main...HEAD`を実行して全変更を確認\n- 各ファイルの潜在的な問題を分析\n- SQLインジェクション（非パラメータ化クエリ）をチェック\n- 10言語すべてでi18nキーの存在を検証\n- Rustプロダクションコードの`.unwrap()`呼び出しをチェック\n- エラーハンドリングがパターンに従っているか検証\n- ファイルパスと行番号付きの発見を報告\n\n人間のコードレビューで見つかる問題の約30%を検出し、人間のレビュアーがアーキテクチャとビジネスロジックに集中できるようにします。\n\n## フック：品質ゲートの自動化\n\nClaude Codeはフック — 特定のアクションの前後に自動実行されるスクリプト — をサポートしています。品質を強制するためにフックを使用しています：\n\n**プリコミットフック：** Claude Codeがコミットを作成する前に`cargo fmt --check`と`cargo clippy`を実行。どちらかが失敗するとClaude Codeが問題を修正して再試行。\n\n**ポストエディットフック：** Claude Codeが`\u002Fi18n\u002Flocales\u002F`のファイルを修正した後、10個のロケールファイルすべてが同じキーセットを持つかを検証するスクリプトを実行。キーが欠けていればClaude Codeが追加。\n\n## MCPサーバー：Claude Codeの能力を拡張\n\nModel Context Protocol（MCP）サーバーはClaude Codeに外部ツールへのアクセスを提供します。2つのカスタムMCPサーバーを実行しています：\n\n1. **データベースMCPサーバー：** Claude Codeが開発PostgreSQLに直接クエリ可能。データ問題のデバッグ時に、`SELECT`クエリを実行して実際のデータベース状態を検査し、問題を理解し、修正を書く — すべて一つのループで。\n\n2. **デプロイメント状態MCPサーバー：** CI\u002FCDパイプラインに接続。Claude Codeが最新のデプロイメントの成否を確認し、ビルドログを読み、失敗を診断 — CIダッシュボードへの切り替え不要。\n\n## 1Mコンテキストでの大規模コードベースのヒント\n\nClaude Codeの1Mトークンコンテキストウィンドウは、モノレポ作業で最も強力な機能です：\n\n**Claude Codeに探索させる。** どのファイルを見せるか事前選択しようとしないでください。何が欲しいかを記述し、Claude Codeにツール（`Grep`、`Glob`、`Read`）を使って関連コードを見つけさせましょう。\n\n**安定したコンテキストにCLAUDE.mdを使う。** セッション間で変わらない情報 — アーキテクチャ、規約、コマンド — はCLAUDE.mdに入れ、Claude Codeが再発見にコンテキストを浪費しないようにします。\n\n**メガタスクをフェーズに分割。** 1Mトークンあっても、「認証システム全体をリファクタリング」のようなタスクはフェージングが有益：まず分析と計画、次にモジュールごとの実装、最後にテスト。\n\n**エージェントループを信頼する。** Claude Codeが変更を加え、ビルドを実行し、エラーを見つけ、修正する時 — そのループが機能です。途中で中断しないでください。収束させましょう。\n\n## 落とし穴と回避策\n\n**落とし穴：Claude Codeの過剰設計。** 不要な抽象やパターンを追加することがあります。回避策：CLAUDE.mdに「KISS — シンプルに保つ。過剰設計を避ける。」を追加。\n\n**落とし穴：長いセッションでの古いコンテキスト。** 多くの編集後、Claude Codeの現在のファイル状態の理解がずれることがあります。回避策：各主要タスクで新しいセッションを開始。\n\n**落とし穴：非決定的な出力。** 同じプロンプトで異なるコードが生成されることがあります。回避策：具体的で詳細なプロンプトを使用。\n\n**落とし穴：テストデータの品質。** AI生成のテストデータが内部的に不整合な場合があります。回避策：生成されたフィクスチャを常にレビューし、フルテストスイートを実行。\n\n**落とし穴：積極的なファイル変更。** Claude Codeが依頼していないファイルを変更することがあります。回避策：受け入れる前に差分を注意深くレビュー。\n\n## FAQ\n\n### Claude Codeの日常使用コストは？\n\n4人の開発者チームで、全プロジェクトのClaude Code API使用に月約$200-300を費やしています。開発者あたり月$20のMaxプランはより予測可能な代替手段です。\n\n### Claude Codeはオフラインで使えますか？\n\nいいえ。Claude CodeはAnthropicのAPIとの通信にインターネット接続が必要です。\n\n### Claude Codeはビルドを壊しますか？\n\nはい、しかしほとんどの問題は自分で検出します。Claude Codeはエージェントループの一部としてビルドコマンドを実行します。`cargo check`が失敗するとエラーを読んで修正します。経験上、約90%のビルドが最初のパスで成功し、99%がClaude Codeの自己修正ループ後に成功します。\n\n### 秘密情報と環境変数はどう扱っていますか？\n\nClaude Codeは`.gitignore`を尊重し、機密ファイルを除外するよう設定できます。リポジトリに秘密情報を保存することはありません。\n\n### Claude Codeはソロ開発者に適していますか？\n\nもちろんです。ある意味ではソロ開発者にとってさらに価値があります — コードレビューの第二の目、プロジェクト規約を記憶する知識ベース、退屈なタスクの力の増幅器として機能します。\n\n## 結論\n\nClaude Codeはアプリケーションを書いてくれる魔法の杖ではありません。クロススタック推論、規約の強制、退屈なマルチファイル変更に優れたフォースマルチプライヤーです。永続的なプロジェクト知識のためのCLAUDE.md、品質強制のためのフック、外部ツールアクセスのためのMCPサーバーの組み合わせが、モノレポ作業で使用した中で最も有能なAI開発ツールにしています。\n\n9ヶ月の日常使用後の重要な洞察：Claude Codeが最も価値を発揮するのは新しいコードの作成ではなく、既存コードの保守 — リファクタリング、マイグレーション、テスト、レビューです。これらは開発者の時間の70%を消費し、コードベース全体を理解するエージェントから最も恩恵を受けるタスクです。","\u003Ch2 id=\"claude-code\">私たちのスタックとClaude Codeが適している理由\u003C\u002Fh2>\n\u003Cp>Open Softでは、メインプロダクトはモノレポとして構築されたウェブサイトです：TypeScriptのNuxt 4フロントエンドとPostgreSQLバックのRust\u002FAxumバックエンドAPI。コードベースは2つの言語、2つのビルドシステム、共有データコントラクト、データベースマイグレーション、10言語のi18nファイル、デプロイメントインフラストラクチャにまたがっています。変更は頻繁にスタックの両側に同時に影響します。\u003C\u002Fp>\n\u003Cp>私たちは2025年半ばにClaude Codeを採用し、最も使用する開発ツールになりました。コードを書いてくれるからではなく、他のツールではできない方法でコードベース全体について推論してくれるからです。Claude Codeに「articlesにpublished_atフィールドを追加して」と言うと、Rustマイグレーションを読み、ハンドラのSQLクエリを更新し、フロントエンドのTypeScript型を修正し、Nuxtページコンポーネントを調整し、10個のロケールファイルすべてを更新し、検証のためにビルドを実行します。このクロススタックの認識が、モノレポ開発で欠かせないものにしています。\u003C\u002Fp>\n\u003Ch2 id=\"claude-md\">CLAUDE.md：エージェントにあなたの規約を教える\u003C\u002Fh2>\n\u003Cp>効果的なClaude Code使用の基盤は\u003Ccode>CLAUDE.md\u003C\u002Fcode>ファイルです。これはClaude Codeが各セッションの開始時に読むプロジェクトレベルの指示ファイルです。AIエージェント向けのオンボーディングドキュメントと考えてください。\u003C\u002Fp>\n\u003Cp>私たちのCLAUDE.mdには以下が含まれます：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>コミット規約：\u003C\u002Fstrong> すべてのコミットは\u003Ccode>TASK-XXX:\u003C\u002Fcode>で始まり、命令形を使用\u003C\u002Fli>\n\u003Cli>\u003Cstrong>アーキテクチャ概要：\u003C\u002Fstrong> モノレポ構造、どのディレクトリに何が含まれるか\u003C\u002Fli>\n\u003Cli>\u003Cstrong>コードスタイルルール：\u003C\u002Fstrong> TypeScript strictモード、\u003Ccode>any\u003C\u002Fcode>禁止、Composition APIのみ、\u003Ccode>&lt;script setup&gt;\u003C\u002Fcode>構文\u003C\u002Fli>\n\u003Cli>\u003Cstrong>i18nルール：\u003C\u002Fstrong> 10言語すべてを同期、キーをアルファベット順に並べ替え、英語プレーンテキストキー\u003C\u002Fli>\n\u003Cli>\u003Cstrong>セキュリティルール：\u003C\u002Fstrong> コミットに秘密情報なし、パラメータ化SQL、明示的CORSオリジン\u003C\u002Fli>\n\u003Cli>\u003Cstrong>開発コマンド：\u003C\u002Fstrong> \u003Ccode>npm run dev\u003C\u002Fcode>、\u003Ccode>cargo run\u003C\u002Fcode>、\u003Ccode>make fixtures\u003C\u002Fcode>など\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Claude Codeはこれらの規約に一貫して従います。コミットメッセージを生成する時は\u003Ccode>TASK-XXX:\u003C\u002Fcode>プレフィックスを使います。翻訳キーを追加する時は、アルファベット順で10個のロケールファイルすべてに追加します。SQLを書く時はパラメータ化クエリを使います。これにより、コードレビューのフィードバックの一カテゴリ全体 — 規約違反 — が排除されます。\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-markdown\"># CLAUDE.md抜粋例\n## i18nルール\n10言語すべてを同期に保つ必要があります。翻訳キーを追加する時：\n1. キーフォーマット：キーとして英語プレーンテキストを使用\n2. アルファベット順：すべてのロケールファイルでキーをA-Z順にソート\n3. すべてのロケールが必要：en、ru、id、zh、ja、ko、fr、de、es、ar\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>バックエンド（\u003Ccode>\u002Fserver\u002FCLAUDE.md\u003C\u002Fcode>）とフィクスチャ（\u003Ccode>\u002Fserver\u002Ffixtures\u002FCLAUDE.md\u003C\u002Fcode>）にはディレクトリごとの\u003Ccode>CLAUDE.md\u003C\u002Fcode>ファイルも維持しており、Claude Codeがそれらのディレクトリで作業する時にアクティブになるコンテキスト固有の指示を提供します。\u003C\u002Fp>\n\u003Ch2 id=\"\">マルチファイルリファクタリング：キラーユースケース\u003C\u002Fh2>\n\u003Cp>最も時間を節約するワークフローはクロススタックリファクタリングです。プロジェクトからの実例を紹介します。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>タスク：\u003C\u002Fstrong> articlesシステムにSEOフィールド（\u003Ccode>meta_title\u003C\u002Fcode>、\u003Ccode>meta_description\u003C\u002Fcode>、\u003Ccode>focus_keyword\u003C\u002Fcode>、\u003Ccode>robots_meta\u003C\u002Fcode>）を追加する。\u003C\u002Fp>\n\u003Cp>Claude Codeなしでは、この変更に必要なこと：\u003C\u002Fp>\n\u003Col>\n\u003Cli>4カラムを追加するSQLマイグレーションの作成\u003C\u002Fli>\n\u003Cli>Rust \u003Ccode>Article\u003C\u002Fcode>モデル構造体の更新\u003C\u002Fli>\n\u003Cli>Rust \u003Ccode>CreateArticle\u003C\u002Fcode>と\u003Ccode>UpdateArticle\u003C\u002Fcode> DTOの更新\u003C\u002Fli>\n\u003Cli>articlesハンドラの全SQLクエリの更新（SELECT、INSERT、UPDATE）\u003C\u002Fli>\n\u003Cli>フロントエンドのTypeScript \u003Ccode>Article\u003C\u002Fcode>型の更新\u003C\u002Fli>\n\u003Cli>管理エディタフォームの新フィールド追加\u003C\u002Fli>\n\u003Cli>ブログ記事ページのmetaタグレンダリング更新\u003C\u002Fli>\n\u003Cli>サイトマップ生成ロジックの更新\u003C\u002Fli>\n\u003Cli>全フィクスチャファイルの新フィールド更新\u003C\u002Fli>\n\u003Cli>マイグレーション実行、リビルド、テスト\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Claude Codeを使えば、コマンドを一つ入力するだけ：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>articlesにSEOフィールド（meta_title、meta_description、focus_keyword、robots_meta）を追加。\nマイグレーションを書き、Rustモデルとハンドラを更新し、フロントエンドの型と\n管理エディタを更新し、ブログページにmetaタグを追加し、フィクスチャを更新。\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Claude Codeは単一のエージェントループとして実行します：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>既存のマイグレーションファイルを読んでスキーマを理解\u003C\u002Fli>\n\u003Cli>Rustモデルを読んで現在の構造体を理解\u003C\u002Fli>\n\u003Cli>ハンドラを読んで全SQLクエリを発見\u003C\u002Fli>\n\u003Cli>フロントエンドの型とコンポーネントを読む\u003C\u002Fli>\n\u003Cli>12+ファイルにわたる全変更を実行\u003C\u002Fli>\n\u003Cli>\u003Ccode>cargo check\u003C\u002Fcode>でRustコードのコンパイルを検証\u003C\u002Fli>\n\u003Cli>\u003Ccode>npm run build\u003C\u002Fcode>でフロントエンドのビルドを検証\u003C\u002Fli>\n\u003Cli>エラーを修正し、両方が通るまでイテレーション\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>プロセス全体は約5分で、手動では45-60分かかります。さらに重要なのは、人間が見落とすクロスリファレンスバグを検出すること — UPDATEクエリに新カラムを追加し忘れたり、フィクスチャファイルを見落としたりすることです。\u003C\u002Fp>\n\u003Ch2 id=\"\">マイグレーション作成\u003C\u002Fh2>\n\u003Cp>データベースマイグレーションは、現在のスキーマ、望む最終状態、その間の安全な変換パスの理解を必要とするため、Claude Codeに特に適しています。\u003C\u002Fp>\n\u003Cp>Claude Codeにマイグレーションの作成を依頼すると：\u003C\u002Fp>\n\u003Col>\n\u003Cli>既存の全マイグレーションファイルを読んで現在のスキーマを理解\u003C\u002Fli>\n\u003Cli>Rustモデルを読んでターゲット状態を理解\u003C\u002Fli>\n\u003Cli>適切な\u003Ccode>ALTER TABLE\u003C\u002Fcode>文でマイグレーションSQLを作成\u003C\u002Fli>\n\u003Cli>適切な場所に\u003Ccode>IF NOT EXISTS\u003C\u002Fcode>ガードを追加\u003C\u002Fli>\n\u003Cli>可逆マイグレーションを使用する場合、対応する「ダウン」マイグレーションを作成\u003C\u002Fli>\n\u003Cli>新スキーマを使用するようにRustモデルとハンドラを更新\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"\">テスト生成\u003C\u002Fh2>\n\u003Cp>テストフィクスチャとSQLシードデータの生成にClaude Codeを広く使用しています。フィクスチャファイルには適切なSEOメタデータ付きの現実的な長文コンテンツ（1500+語の記事）が含まれ、手動で書くのは退屈でエラーが起きやすいです。\u003C\u002Fp>\n\u003Cp>ワークフロー：\u003C\u002Fp>\n\u003Col>\n\u003Cli>必要な記事を記述（トピック、角度、技術的深さ）\u003C\u002Fli>\n\u003Cli>Claude Codeが完全なMarkdownコンテンツ付きのSQL INSERT文を生成\u003C\u002Fli>\n\u003Cli>UUID規約に従う（\u003Ccode>d0000000-...\u003C\u002Fcode>は記事、\u003Ccode>a0000000-...\u003C\u002Fcode>はカテゴリ）\u003C\u002Fli>\n\u003Cli>冪等性のため\u003Ccode>ON CONFLICT (slug) DO NOTHING\u003C\u002Fcode>を追加\u003C\u002Fli>\n\u003Cli>\u003Ccode>article_tags\u003C\u002Fcode>ジャンクションテーブル経由で記事をタグにリンク\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"claude-code\">Claude Codeによるコードレビュー\u003C\u002Fh2>\n\u003Cp>マージリクエストを開く前に、Claude Codeをレビュアーとして実行します：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>このブランチの全変更をバグ、セキュリティ問題、パフォーマンスの問題、\nCLAUDE.md規約との一貫性についてレビューしてください。\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Claude Codeは：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>git diff main...HEAD\u003C\u002Fcode>を実行して全変更を確認\u003C\u002Fli>\n\u003Cli>各ファイルの潜在的な問題を分析\u003C\u002Fli>\n\u003Cli>SQLインジェクション（非パラメータ化クエリ）をチェック\u003C\u002Fli>\n\u003Cli>10言語すべてでi18nキーの存在を検証\u003C\u002Fli>\n\u003Cli>Rustプロダクションコードの\u003Ccode>.unwrap()\u003C\u002Fcode>呼び出しをチェック\u003C\u002Fli>\n\u003Cli>エラーハンドリングがパターンに従っているか検証\u003C\u002Fli>\n\u003Cli>ファイルパスと行番号付きの発見を報告\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>人間のコードレビューで見つかる問題の約30%を検出し、人間のレビュアーがアーキテクチャとビジネスロジックに集中できるようにします。\u003C\u002Fp>\n\u003Ch2 id=\"\">フック：品質ゲートの自動化\u003C\u002Fh2>\n\u003Cp>Claude Codeはフック — 特定のアクションの前後に自動実行されるスクリプト — をサポートしています。品質を強制するためにフックを使用しています：\u003C\u002Fp>\n\u003Cp>\u003Cstrong>プリコミットフック：\u003C\u002Fstrong> Claude Codeがコミットを作成する前に\u003Ccode>cargo fmt --check\u003C\u002Fcode>と\u003Ccode>cargo clippy\u003C\u002Fcode>を実行。どちらかが失敗するとClaude Codeが問題を修正して再試行。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>ポストエディットフック：\u003C\u002Fstrong> Claude Codeが\u003Ccode>\u002Fi18n\u002Flocales\u002F\u003C\u002Fcode>のファイルを修正した後、10個のロケールファイルすべてが同じキーセットを持つかを検証するスクリプトを実行。キーが欠けていればClaude Codeが追加。\u003C\u002Fp>\n\u003Ch2 id=\"mcp-claude-code\">MCPサーバー：Claude Codeの能力を拡張\u003C\u002Fh2>\n\u003Cp>Model Context Protocol（MCP）サーバーはClaude Codeに外部ツールへのアクセスを提供します。2つのカスタムMCPサーバーを実行しています：\u003C\u002Fp>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>データベースMCPサーバー：\u003C\u002Fstrong> Claude Codeが開発PostgreSQLに直接クエリ可能。データ問題のデバッグ時に、\u003Ccode>SELECT\u003C\u002Fcode>クエリを実行して実際のデータベース状態を検査し、問題を理解し、修正を書く — すべて一つのループで。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>デプロイメント状態MCPサーバー：\u003C\u002Fstrong> CI\u002FCDパイプラインに接続。Claude Codeが最新のデプロイメントの成否を確認し、ビルドログを読み、失敗を診断 — CIダッシュボードへの切り替え不要。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"1m\">1Mコンテキストでの大規模コードベースのヒント\u003C\u002Fh2>\n\u003Cp>Claude Codeの1Mトークンコンテキストウィンドウは、モノレポ作業で最も強力な機能です：\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Claude Codeに探索させる。\u003C\u002Fstrong> どのファイルを見せるか事前選択しようとしないでください。何が欲しいかを記述し、Claude Codeにツール（\u003Ccode>Grep\u003C\u002Fcode>、\u003Ccode>Glob\u003C\u002Fcode>、\u003Ccode>Read\u003C\u002Fcode>）を使って関連コードを見つけさせましょう。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>安定したコンテキストにCLAUDE.mdを使う。\u003C\u002Fstrong> セッション間で変わらない情報 — アーキテクチャ、規約、コマンド — はCLAUDE.mdに入れ、Claude Codeが再発見にコンテキストを浪費しないようにします。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>メガタスクをフェーズに分割。\u003C\u002Fstrong> 1Mトークンあっても、「認証システム全体をリファクタリング」のようなタスクはフェージングが有益：まず分析と計画、次にモジュールごとの実装、最後にテスト。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>エージェントループを信頼する。\u003C\u002Fstrong> Claude Codeが変更を加え、ビルドを実行し、エラーを見つけ、修正する時 — そのループが機能です。途中で中断しないでください。収束させましょう。\u003C\u002Fp>\n\u003Ch2 id=\"\">落とし穴と回避策\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>落とし穴：Claude Codeの過剰設計。\u003C\u002Fstrong> 不要な抽象やパターンを追加することがあります。回避策：CLAUDE.mdに「KISS — シンプルに保つ。過剰設計を避ける。」を追加。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>落とし穴：長いセッションでの古いコンテキスト。\u003C\u002Fstrong> 多くの編集後、Claude Codeの現在のファイル状態の理解がずれることがあります。回避策：各主要タスクで新しいセッションを開始。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>落とし穴：非決定的な出力。\u003C\u002Fstrong> 同じプロンプトで異なるコードが生成されることがあります。回避策：具体的で詳細なプロンプトを使用。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>落とし穴：テストデータの品質。\u003C\u002Fstrong> AI生成のテストデータが内部的に不整合な場合があります。回避策：生成されたフィクスチャを常にレビューし、フルテストスイートを実行。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>落とし穴：積極的なファイル変更。\u003C\u002Fstrong> Claude Codeが依頼していないファイルを変更することがあります。回避策：受け入れる前に差分を注意深くレビュー。\u003C\u002Fp>\n\u003Ch2 id=\"faq\">FAQ\u003C\u002Fh2>\n\u003Ch3>Claude Codeの日常使用コストは？\u003C\u002Fh3>\n\u003Cp>4人の開発者チームで、全プロジェクトのClaude Code API使用に月約\u003Cspan class=\"math math-inline\">200-300を費やしています。開発者あたり月\u003C\u002Fspan>20のMaxプランはより予測可能な代替手段です。\u003C\u002Fp>\n\u003Ch3>Claude Codeはオフラインで使えますか？\u003C\u002Fh3>\n\u003Cp>いいえ。Claude CodeはAnthropicのAPIとの通信にインターネット接続が必要です。\u003C\u002Fp>\n\u003Ch3>Claude Codeはビルドを壊しますか？\u003C\u002Fh3>\n\u003Cp>はい、しかしほとんどの問題は自分で検出します。Claude Codeはエージェントループの一部としてビルドコマンドを実行します。\u003Ccode>cargo check\u003C\u002Fcode>が失敗するとエラーを読んで修正します。経験上、約90%のビルドが最初のパスで成功し、99%がClaude Codeの自己修正ループ後に成功します。\u003C\u002Fp>\n\u003Ch3>秘密情報と環境変数はどう扱っていますか？\u003C\u002Fh3>\n\u003Cp>Claude Codeは\u003Ccode>.gitignore\u003C\u002Fcode>を尊重し、機密ファイルを除外するよう設定できます。リポジトリに秘密情報を保存することはありません。\u003C\u002Fp>\n\u003Ch3>Claude Codeはソロ開発者に適していますか？\u003C\u002Fh3>\n\u003Cp>もちろんです。ある意味ではソロ開発者にとってさらに価値があります — コードレビューの第二の目、プロジェクト規約を記憶する知識ベース、退屈なタスクの力の増幅器として機能します。\u003C\u002Fp>\n\u003Ch2 id=\"\">結論\u003C\u002Fh2>\n\u003Cp>Claude Codeはアプリケーションを書いてくれる魔法の杖ではありません。クロススタック推論、規約の強制、退屈なマルチファイル変更に優れたフォースマルチプライヤーです。永続的なプロジェクト知識のためのCLAUDE.md、品質強制のためのフック、外部ツールアクセスのためのMCPサーバーの組み合わせが、モノレポ作業で使用した中で最も有能なAI開発ツールにしています。\u003C\u002Fp>\n\u003Cp>9ヶ月の日常使用後の重要な洞察：Claude Codeが最も価値を発揮するのは新しいコードの作成ではなく、既存コードの保守 — リファクタリング、マイグレーション、テスト、レビューです。これらは開発者の時間の70%を消費し、コードベース全体を理解するエージェントから最も恩恵を受けるタスクです。\u003C\u002Fp>\n","ja","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:41.705741Z","私たちがClaude CodeでNuxt 4 + Rustモノレポ開発をどう行っているか","Open SoftがClaude Codeをマルチファイルリファクタリング、マイグレーション作成、テスト生成、コードレビューにNuxt 4 + Rustモノレポでどう使っているか、実際のワークフロー例付き。","claude code モノレポ ワークフロー",null,"index, follow",[22,27,31,35,39],{"id":23,"name":24,"slug":25,"created_at":26},"c0000000-0000-0000-0000-000000000008","AI","ai","2026-03-28T10:44:21.513630Z",{"id":28,"name":29,"slug":30,"created_at":26},"c0000000-0000-0000-0000-000000000012","DevOps","devops",{"id":32,"name":33,"slug":34,"created_at":26},"c0000000-0000-0000-0000-000000000004","Nuxt","nuxt",{"id":36,"name":37,"slug":38,"created_at":26},"c0000000-0000-0000-0000-000000000001","Rust","rust",{"id":40,"name":41,"slug":42,"created_at":26},"c0000000-0000-0000-0000-000000000002","TypeScript","typescript","エンジニアリング",[45,51,57],{"id":46,"title":47,"slug":48,"excerpt":49,"locale":12,"category_name":43,"published_at":50},"d0000000-0000-0000-0000-000000000671","2026年、なぜBaliは東南アジアのインパクトテックハブになりつつあるのか","naze-bali-2026-tonan-ajia-inpakuto-tekku-habu","Baliは東南アジアのスタートアップエコシステムで第16位にランクイン。Web3ビルダー、AIサステナビリティスタートアップ、エコトラベルテック企業が集積し、この島は地域のインパクトテック首都としてのニッチを確立しつつあります。","2026-03-28T10:44:49.081179Z",{"id":52,"title":53,"slug":54,"excerpt":55,"locale":12,"category_name":43,"published_at":56},"d0000000-0000-0000-0000-000000000670","ASEANデータ保護パッチワーク：開発者のためのコンプライアンスチェックリスト","asean-deta-hogo-pacchiwaku-kaihatsusha-kompuraiansu-chekkurisuto","7つのASEAN諸国が包括的なデータ保護法を有し、それぞれ異なる同意モデル、ローカライゼーション要件、罰則構造を持っています。マルチカントリーアプリケーションを構築する開発者のための実用的なコンプライアンスチェックリストです。","2026-03-28T10:44:49.074910Z",{"id":58,"title":59,"slug":60,"excerpt":61,"locale":12,"category_name":43,"published_at":62},"d0000000-0000-0000-0000-000000000669","Indonesiaの290億ドルデジタルトランスフォーメーション：ソフトウェア企業のチャンス","indonesia-290oku-doru-dejitaru-toransufomeshon-sofutowea-kigyo-chansu","IndonesiaのITサービス市場は2026年に290.3億ドルに達すると予測されており、2025年の243.7億ドルから増加します。クラウドインフラ、AI、電子商取引、データセンターが東南アジアで最も速い成長を牽引しています。","2026-03-28T10:44:49.055660Z",{"id":13,"name":64,"slug":65,"bio":66,"photo_url":19,"linkedin":19,"role":67,"created_at":68,"updated_at":68},"Open Soft Team","open-soft-team","The engineering team at Open Soft, building premium software solutions from Bali, Indonesia.","Engineering Team","2026-03-28T08:31:22.226811Z"]