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

チームの性質によって変わる ADR との向き合い方と、生成 AI 時代のこれから / How ...

Transcript

38 slides
  1. チームの性質によって変わる ADR との向 き合い方と、生成 AI 時代のこれから Hirotaka Miyagi / @MH4GF

    2025/03/26 実例!フロントエンドの技術選定とその後を ADR から 振り返る 1
  2. Hirotaka Miyagi / @MH4GF GraphQL, GitHub Actions, 静的解析が好き ROUTE06, inc.

    Liam ERD という OSS の ER 図自動生成ツールを開発 中 自己紹介 2
  3. 1. ROUTE06 と ADR 2. 2 つのプロジェクトでの運用事例 商社向け SaaS ...

    大規模受託開発プロジェクト 開発者向けツール ... 新規事業プロジェクト 3. 生成 AI 時代の ADR と技術選定 4. Appendix: ADR のオレオレベストプラクティス アジェンダ 4
  4. 会社名 株式会社ROUTE06 住所 東京都千代田区丸の内一丁目 6-5 丸の内北口ビルディング 9F 設立 2020年1月 資本金

    1 億円 取締役 遠藤崇史 (代表) 事業内容 エンタープライズソフトウェアサービス・プロフェッショナルサービス 法務顧問 アンダーソン・毛利・友常法律事務所 会社概要 6
  5. 2022 年頃から一つのチームで運用開始 事業上新規立ち上げの機会も多く、プロジェクトも多いことから丁寧にドキュメントを残す 文化があり、ADR は文化にマッチした 現在は多くのチームで運用中 会社のブログでも何件か ADR の記事を公開している チームにおける

    ADR 導入から 1 年経った振り返りと感想 - ROUTE06 Tech Blog チーム開発における技術選定の進め方 - ROUTE06 Tech Blog アーキテクチャ決定記録(ADR)を活用した要件定義プロセス - ROUTE06 Professional Services ROUTE06 と ADR 7
  6. 全社的なオペレーションに GitHub を採用しており、経理や人事のメンバーも Pull Request を出す 社内の稟議システムも ADR のエッセンスを取り入れ GitHub

    上で行っている ROUTE06 では今年度から GitHub を活用した新しい稟議システムの運用を開始しました。 ソフトウェア開発において技術やアーキテクチャ選定で活用される Architectural Decision Record (ADR) の思想と手法に習い、会社運営に関わる意思決定のログ (申請/承認/回覧) を 記録する仕組みを構築し、Corporate Decision Record (CDR) と命名しております。 少額の経費申請から大型投資や資金調達まで、管理職の権限と責任に基づくあらゆる承認 が CDR を介して行われるようになりました。 ref: Corporate Decision Record (CDR) 〜 GitHub を活用した新しい稟議システム| ROUTE06 ROUTE06 と ADR 8
  7. 「理論的根拠に対する強固な共通の理解を作るための ADR」 私のチームは、私がテックリードになる前から、技術選定の経緯や結果をドキュメントと して残す ADR が実践されていました。新しくチームに参加した人から「素晴らしい」や 「助かる」といった声を聞くのでこれは十分に機能しているでしょう。 しかし、私は ADR にはもっと多くのことを表現できる可能性があると考えており、具体的

    には ADR で「理論的根拠に対する強固な共通の理解を作る」ことはできないか試していま す。そして、ADR を Pull request にして、レビューで議論し、最終的にコミットメントで きる場合は Approve してもらうことで、マイケルの「決定された行動方針に対する高度の コミットメント、およびその理論的根拠に対する強固な共通の理解」を実現することがで きると考えています。 ref: チーム開発における技術選定の進め方 - ROUTE06 Tech Blog 同僚の好きな言葉 1 9
  8. この二つを伝えられたら終わりなんですが、それだけだと登 壇の意味がないので、自分が所属していた 2 つのチームで の ADR の運用事例を紹介します プロジェクト 1: 商社向け

    SaaS・受託開発プロジェクト・チーム規模 12-15 人 プロジェクト 2: 開発者向けツール・新規事業プロジェクト・チーム規模 5-7 人 11
  9. 受託開発プロジェクト Vite 製の SPA, GraphQL を利用し API リクエストをする Web アプリケーション

    ページ数や機能数が多く長期間のプロジェクト・フロントエンド/バックエンドでチームと して分離していた フロントエンド開発メンバーだけで最大 15 人 (10 人チーム +5 人チーム) プロジェクト 1 - プロジェクトの特徴 12
  10. 比較的詳細まで ADR として記載していた 事業の性質: プロジェクトの性質上長期間保守することが予想された 関係者の多さ: 開発に参加するメンバーも多く、共通理解を深めやすくしたい 2023 年の業界動向: Web

    フロントエンドではそれぞれの領域でデファクトスタンダードと なっている構成が確立されておらず、複数の選択肢から判断する状況が多かった プロジェクト 1 - 運用方針 15
  11. GitHub リポジトリにマークダウンファイルとして格納 テックリードに限定せず、全員で ADR を書く 調査 Issue を担当した人が執筆 Pull Request

    上で議論し、マージされたら Accepted とする Issue 上で調査 → PoC 実装 → ADR 追加 PR の作成 → 本実装 のワークフロー プロジェクト 1 - 運用方法 16
  12. 技術顧問の hiroppy さんと定期的に ADR を振り返る会を実施 「運用してみてどう?」 「そもそもこれってどういう意味?」などを議論し、チームの共通 理解をさらに深める ROUTE06 社ではなにかの意思決定をするときに

    ADR を作りメンバーの承認を得るフロー があり、どういう経緯で導入されたのかがわかります。この会でもその ADR を再度議論し たり、今後組織やコードベース自体が大きくなっていくので、どのようにスケールしやす い構成や仕組みを作っていくかをみんなで考えています。 ref: 技術顧問として半年間で感じた会社の成長 - ROUTE06 Tech Blog プロジェクト 1 - 運用方法 17
  13. 20

  14. プロジェクト 1(商社向け SaaS) プロダクトの性質上、長期間保守が予想される 関わるメンバーが多く、共通理解を作るのが難しい状況 デファクトスタンダードなライブラリが決まっていない状況 → 詳細かつ多数の ADR は価値を生んだ

    プロジェクト 2(開発者向けツール) PMF 前の 0→1 の開発で、スクラップアンドビルドが求められていた 大半のメンバーが前プロジェクト経験者で、主要領域以外は前プロジェクトを踏襲 チームメンバーの共通理解が作りやすい状況 → 少数の ADR でも十分な価値を生んだ 2 つのプロジェクトの比較 24
  15. (Google 翻訳)シニアエンジニアが Cursor や Copilot などの AI ツールを使っている様子を見ると、魔法のように見えます。彼らは数 分で機能全体をスキャフォールディングし、テストとドキュメントを完成させます。しかし、よく観察すると、重要なことに気付く でしょう。彼らは

    AI の提案をそのまま受け入れているのではなく、常に次のことを行っています。 生成されたコードをより小さく、焦点を絞ったモジュールにリファクタリングする AI が見逃したエッジケースの処理を追加する 型定義とインターフェースの強化 アーキテクチャ上の決定に疑問を抱く 包括的なエラー処理の追加 言い換えれば、彼らは長年かけて苦労して得たエンジニアリングの知恵を AI の出力を形作り、制限するために応用しているのです。 AI は彼らの実装を加速させていますが、彼らの専門知識こそがコードの保守性を維持しているのです。 若手エンジニアは、こうした重要なステップを見逃してしまうことがよくあります。AI の出力をすぐに受け入れてしまうため、私が 「トランプのカードハウス」と呼ぶコードができあがってしまいます。これは、完成しているように見えても、現実世界のプレッシ ャーで崩れてしまうコードです。 ref: The 70% problem: Hard truths about AI-assisted coding - Medium 生成 AI 時代の ADR - AI コーディングツールとプログラマ 27
  16. Cline AI 時代のプログラマに必要なこと このように整理できるはず。 コンテキストを記述する能力 ドメインを記述する能力 AI の性能に対する直感 AI に対する直感以外は、適切なモジュール分割、境界づけられたコンテキストの抽出であり、ユビキタス言語の構

    築、DDD であり、ドメインエキスパートとしての実装対象の抽象化能力ではないか。 結局自分は .clinerules に結構な量の指示を書いており、これを自分の能力に合わせて構築できるのがプログラミン グのドメインエキスパートとしての価値だと感じている。 ref: CLINE に全部賭けろ - Zenn 生成 AI 時代の ADR - AI コーディングツールとプログラマ 28
  17. → 2025 年春としては、ADR はどんどん書くべきだと考える ADR は意思決定のスナップショットドキュメントであり、現在のソースコードからは読み 取れない「なぜ」を表す トレードオフや、選ばなかった選択肢とその理由 この情報は AI

    コーディングツールに「なぜこの実装方針にすべきか」を伝える効率的な手 段 コード生成だけでなく、 「今」のアーキテクチャドキュメントを生成 AI に品質高く書いても らうためにも重要 Cline の Memory Bank のセットアップにも一連の ADR を渡して整理してもらってい る 生成 AI 時代の ADR - 高品質なコンテキストとしての ADR 30
  18. ADR はその価値は理解されやすいものの、実際に書くまでのハードルが高く導入されないことも多い しかしドキュメント化こそ生成 AI が得意な領域であり、生成 AI と対話しながら書くことでハードルは 下げられる よく使うプロンプトは以下で、あくまで自分の思考の整理と言語化に利用する 〇〇についてのADR

    を書きます。以下は私のメモで、あなたは以下のメモを整理し、深掘りをし、疑問点があれば私に質問してください。 テンプレートに従って記載してください。 ## 私のメモ - xxx - yyy ## ADR テンプレート ~~~ 今こそ ADR を運用し始めて欲しい 生成 AI 時代の ADR - ADR を書く敷居の低減 31
  19. Michael Nygard 氏のテンプレートが必要十分 architecture-decision-record/locales/en/templates/decision-record-template-by- michael-nygard/index.md - GitHub ステータスは Accepted と

    Rejected を中心に使う 提案中は PR が Open な状態 マージされたら Accepted ADR のベストプラクティス - フォーマット 34

More Decks by Hirotaka Miyagi

Other Decks in Technology