Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go コードベースの構成と AI コンテキスト定義

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for ANDPAD inc ANDPAD inc
December 08, 2025

Go コードベースの構成と AI コンテキスト定義

奥村 雅敏
2025 年 12 月 8 日
GO・GMOペパボ・アンドパッド "Go" 同勉強会

Avatar for ANDPAD inc

ANDPAD inc

December 08, 2025
Tweet

More Decks by ANDPAD inc

Other Decks in Programming

Transcript

  1. © 2025 ANDPAD All Rights Reserved. Confidential 2021年に自動車業界からSWEに転身 2024年 アンドパッド入社

    アンドパッドでは請求管理プロダクトでバックエンド開発に従事 奥村 雅敏 株式会社アンドパッド 開発本部 Profile | 経 歴 2 自己紹介
  2. © 2025 ANDPAD All Rights Reserved. Confidential テスト 3 開発でのAI活用

    機能実装 リファクタリング ドキュメント作成・要約
  3. © 2025 ANDPAD All Rights Reserved. Confidential 4 AIに対してプロジェクトの内容を伝える難しさ AIには背景情報を理解した上で回答してほしい

    • 一般的なことではなくプロジェクト固有の文脈を理解してほしい • 質問のたび同じことを説明する手間 ➢ ドメイン知識 ➢ プロジェクトの構成 ➢ コーディングルール AIに伝わりやすくするための試みと知見を共有します
  4. © 2025 ANDPAD All Rights Reserved. Confidential 5 AIにプロジェクトを伝える工夫 〜コンテキストを書く〜

    複数のAIツールが共通して参照できるコンテキストを1箇所で管理する チームの開発環境では複数のAIツールを使っている Github上での自動レビュー Github Copilot AI統合エディタ Cursor / Claude Code MCP連携 Gemini 共通コンテキスト
  5. © 2025 ANDPAD All Rights Reserved. Confidential • ディレクトリ構造の詳細 ◦

    ツリー形式で構造を説明 + 各層の詳細を説明 ▪ 各層の責務と役割 • 依存関係のルール • 何を書くのかだけでなく、何を書いてはいけないのか • テストのガイドライン ◦ どのようにテストを書くのか ◦ お手本にするファイルを示す 6 共通コンテキストに書くこと①
  6. © 2025 ANDPAD All Rights Reserved. Confidential 7 共通コンテキストに書くこと② •

    実行してほしいコマンドを明確に書く ◦ AIが書いたものはAIでLintやテストをしてほしい ◦ 環境依存のコマンドをシームレスに実行 ▪ 環境変数などの設定も含めて一括で実行してもらう • 指定していても環境変数をうまく設定できないことが良くある ◦ 使ってほしいコマンドを使ってくれない時が良くある ▪ “RECOMMENDED”や「頻繁に使用」といった脚注を追記すると 従ってくれやすくなる様子
  7. © 2025 ANDPAD All Rights Reserved. Confidential 8 共通コンテキストに書くこと③ •

    技術スタックや使用技術 ◦ 使用言語 / インフラ / DB ◦ 全体像の把握に役立ちそう ▪ 人間が最初に見るような場所はAI向けにも有効そう • 外部ライブラリ使用のガイドライン ◦ AIは一般的なライブラリを引っ張ってきてしまいがち • 関連リポジトリ・周辺サービス・監視体制 ◦ 一応記述。影響するかも?
  8. © 2025 ANDPAD All Rights Reserved. Confidential 詳細なREADMEを書く感覚 • チームにジョインした新メンバーのために、

    丁寧に文書を残すように伝える • 細かいことでも書けることは書く 9 共通コンテキストを書く
  9. © 2025 ANDPAD All Rights Reserved. Confidential 特にクリーンアーキテクチャはAIと相性が良さそう • 広く認知されているため、AIとしても学習データが多そう

    • どこに何を書くのかが的確 • 各層が独立しているため、層のルールに従えば適切なコードを書ける ◦ AIがプロジェクト全体を把握する必要が無い ◦ コンテキストを理解していなくても、ある程度正確に出力される 11 歩み寄る工夫①: 一般論に合わせる 一般的なアプリケーションアーキテクチャにこちらから寄せに行く
  10. © 2025 ANDPAD All Rights Reserved. Confidential Goならではのメリット • コードスタイルが揺れない

    • 制御フローが分かりやすい • 構造体に余計な機能がついていない ◦ 継承がない ◦ コンストラクタ・デストラクタがない • Goのインターフェースは依存関係が明確になるので積極的に使いたい 挙動が予測しやすいので、AIにも読みやすい言語と言える 12 歩み寄る工夫②: Go言語の「予測しやすさ」を活かす
  11. © 2025 ANDPAD All Rights Reserved. Confidential • 値オブジェクトを使う ◦

    Goなら型定義・型エイリアスを使う ◦ プリミティブ型の意図が分かりやすくなる ◦ Goだと変数名を省略しがちなので、より分かりやすさが 増すかも ◦ 感覚としてかなり有効なので、置き換えを進めている ▪ 一つパターンを用意すれば、 同じ様な置き換えは結構正確にやっていくれる 13 歩み寄る工夫②: Go言語の「予測しやすさ」を活かす
  12. © 2025 ANDPAD All Rights Reserved. Confidential 1 まとめ: AIとの協業は「対話」と「設計」で

    1. AIに「教える」 AIをチームの新メンバーと捉え、 詳細なREADMEを書くように プロジェクトを伝える 2. AIに「歩み寄る」 AIが理解しやすいように、 予測可能で責務が明確な コードベースを設計する AIとのスムーズな協業
  13. © 2025 ANDPAD All Rights Reserved. Confidential コーディング規約は定めていても、 細かい部分は見落としてしまう。 Lintツールとの併用が必要

    16 AIと共に開発を進める中での課題 AgentモードとPlanモードなどの違 いが明確に分かっていない 各種モードの 使い分けができていない 細部の記法は 見落としがち