Slide 1

Slide 1 text

コード ✕ AI ソフトウェア開発者のための生成AI実践入門 #Forkwell_Library

Slide 2

Slide 2 text

服部 佑樹 @yuhattor

Slide 3

Slide 3 text

bit.ly/CodeAndAI #コードAI本 Special Thanks (敬称略) 森崎修司, 和田卓人, 山口鉄平, 金子昌永, 牛尾剛, 三田雅人, 吉田素文, 黒崎優太, 百田涼佑

Slide 4

Slide 4 text

bit.ly/CodeAndAI #コードAI本 トピック • 生成AIがエンジニアリングの常識を変える • プロンプトで生成AIを操る • プロンプトの実例と分析 • AIツールに合わせたプロンプト戦略 • AIと協働するためのコーディングテクニック • AIの力を引き出す開発アプローチ • 生成AIの力を組織で最大限に引き出す • 開発におけるAI活用Tips • AI時代をリードするために

Slide 5

Slide 5 text

bit.ly/CodeAndAI #コードAI本 AI-Powered Development Roadmap 開発に生成AIを取り入れる際の ロードマップ

Slide 6

Slide 6 text

bit.ly/CodeAndAI #コードAI本 Practiceガイド 開発に生成AIを取り入れる際の プラクティス集

Slide 7

Slide 7 text

bit.ly/CodeAndAI #コードAI本 AIと協働するための コーディングテクニック

Slide 8

Slide 8 text

bit.ly/CodeAndAI #コードAI本 小さなコードチャンクによる段階的作業 AIによる作業単位の最適化 大きな機能を小さな部分に分けて実装 する。 使い捨てのコード、実験的なコードな ど、設計レベルでクラスを分割しない ようなケースでも、作業単位を小さく するように心がけることで、AIとの協 働を効率化する。

Slide 9

Slide 9 text

bit.ly/CodeAndAI #コードAI本 関心の分離によるコード最適化 コードを適切に分割し、AIに与える 情報を最適化する。 クラスを関心ごとに分割し、シンプ ルな構造にすることで、生成される コードの品質向上を図る。 AIによる作業単位の最適化

Slide 10

Slide 10 text

bit.ly/CodeAndAI #コードAI本 AIとの協働を意識した命名 コードのAI可読性向上 変数や関数に具体的で説明的な名前を 採用する。 適切な命名により、AIが提案するコー ドの品質を向上させ、人間の開発者と AIの両方が理解しやすいコードを作る。

Slide 11

Slide 11 text

bit.ly/CodeAndAI #コードAI本 検索最適化された命名戦略 コードのAI可読性向上 統一された命名規則を採用し、 検索にヒットしやすいコードを書く。 AIツールが適切なコードを提案する ために、一貫性のある命名を心がけ る。

Slide 12

Slide 12 text

bit.ly/CodeAndAI #コードAI本 スタイルガイドの明示的提供とカスタマイズ AIと協働する際のコーディングスタイル AIによるコード生成時に標準的なス タイルガイドに従うよう指示する。 標準的なスタイルガイドをベースに、 必要に応じて最低限のカスタム規約 セットを作成する。 AIへのコーディング時の規約伝達を 最小限に抑え、効率的な連携を実現 する。

Slide 13

Slide 13 text

bit.ly/CodeAndAI #コードAI本 標準化されたコード内ドキュメント 付加情報の提供によりAIの理解を助ける 標準的なコメントプラク ティスに従ってドキュメ ントを書く。 言語ごとのドキュメント 生成の仕組みを活用し、 AIとのコラボレーション を円滑にする。 言語 方式 概要 Python Docstring PEP 257に準拠して詳細な コメントを記述し、ドキュ メント化 TypeScript JSDoc TypeScriptの型情報ととも に、JSDocを使用してドキ ュメント化 Java Javadoc Javaのクラスやメソッドに 対してコメントを記述し、 ドキュメント化 C# XML ドキュメント XML形式でドキュメントを 記述し、ドキュメント化

Slide 14

Slide 14 text

bit.ly/CodeAndAI #コードAI本 AIの力を引き出す 開発アプローチ

Slide 15

Slide 15 text

bit.ly/CodeAndAI #コードAI本 AIに触れさせないコードの分離 AIに適したコードアーキテクチャ 重要な計算ロジックを独立させ、 AIによるコード変更から保護する。 コードの保守性と可読性が向上し、 リファクタリング時のリスクを軽 減する。

Slide 16

Slide 16 text

bit.ly/CodeAndAI #コードAI本 将来の拡張を考慮したコード設計 AIに適したコードアーキテクチャ 既存コードを改変せずに新しいコー ドを追加できるよう設計する。 コードの保守性や拡張性が向上し、 AIによる開発スピードを妨げない。 (OCP原則)

Slide 17

Slide 17 text

bit.ly/CodeAndAI #コードAI本 体系的なリファクタリング手法の適用 AIに適したコードアーキテクチャ リファクタリングカタログなどを 活用し、AIにより具体的な提案を 引き出す。 効果的なリファクタリングと品質 の高いコード開発につながる。

Slide 18

Slide 18 text

bit.ly/CodeAndAI #コードAI本 AIを活用したユニットテストの生成 AIを活用したコード品質向上 AIを使ってユニットテストの骨組みを 生成し、開発者が追加のテストケース を考慮する。 テストコード作成の効率化と品質向上 が可能。

Slide 19

Slide 19 text

bit.ly/CodeAndAI #コードAI本 AIからの未探索アイデア抽出 AIの知見を最大限に引き出す AIから新しいアイデアを引き出すプロセスを活用する。 多くの提案を求め、重複を削除し、不足するカテゴリについて再度提 案を求める。

Slide 20

Slide 20 text

bit.ly/CodeAndAI #コードAI本 網羅性を保証する魔法のキーワードはない AIの知見を最大限に引き出す たとえば、左記のキーワード は一見すると意味があるよう に見えます。 しかし、AIにMECEなどの言 葉を使っても、AIは本質的に は次の文字を予測するだけで、 平気で嘘をつきます。

Slide 21

Slide 21 text

bit.ly/CodeAndAI #コードAI本 網羅的テスト設計のためのデシジョンテーブル活用 AIを活用したコード品質向上 デシジョンテーブルを作成し、それにもとづいてテストコードを 生成する。 より網羅的で有効なテストコードの作成が可能になる。

Slide 22

Slide 22 text

bit.ly/CodeAndAI #コードAI本 状態遷移図を経由したテストコード生成 AIを活用したコード品質向上 状態遷移図を作成し、それにもとづいてテ ストケースを確認し、テストコードを生成 する。視覚的に状態遷移を確認し、より確 実なテストコードを生成できる。

Slide 23

Slide 23 text

bit.ly/CodeAndAI #コードAI本 AI時代にはシフトライトが必要になるのか? AIを活用したコード品質向上 シフトライトに関する言説には「今後エージ ェント型の生成ツールがあらわれて、ソリュ ーションを一気に作ったら」という枕詞が隠 されている。 将来、AIの生成するコードの質が飛躍的に向 上し、一気にアプリケーションを生成できる ようになれば、シフトライトの考え方が有効 になるでしょうが、現時点ではまだそのレベ ルには達していないのが実情です。 SHIFT RIGHT?

Slide 24

Slide 24 text

bit.ly/CodeAndAI #コードAI本 自然言語でのコードロジック説明 コードリーディングにおけるAIの活用 AIにコードの解説を 依頼する際、具体的 な指示を与える。 より正確で有用な解 説を得ることができ、 コードの理解を深め られる。

Slide 25

Slide 25 text

bit.ly/CodeAndAI #コードAI本 複雑なロジックの視覚的表現生成 コードリーディングにおけるAIの活用 MermaidやPlantUMLを使用してコードを 視覚化する。コードの構造や流れを理解し やすくなり、効果的なコードリーディング が可能になる。

Slide 26

Slide 26 text

bit.ly/CodeAndAI #コードAI本 Big-O記法にもとづくパフォーマンス改善 コードレビューにおけるAIの活用 AIにBig-O記法でアルゴリズムの計 算量を評価させ、改善案を提案させ る。 より効率的なアルゴリズムの設計に つながる。

Slide 27

Slide 27 text

bit.ly/CodeAndAI #コードAI本 生成AIの力を 組織で最大限に引き出す

Slide 28

Slide 28 text

bit.ly/CodeAndAI #コードAI本 オープンソースの文化を組織に取り入れる AI時代の競争優位性を高めるための開発組織戦略 ここであらためてAIが読みやすいコードの特徴をまとめると、以下のような ことが挙げられます。 • コードが記述的かつ文脈が明確で、初見でも理解しやすいこと。 • 比較的メジャーなバージョンや技術スタックで書かれている。 • 継続的にメンテナンスされ、常に使用可能な状態であること。

Slide 29

Slide 29 text

bit.ly/CodeAndAI #コードAI本 先進事例 ゴールドマン・サックスのAIプラットフォーム 「GS AI Platform」は、全ての独自AI技術を中 央集約化し、内部での利用を制限する形で運用 されている。 企業のデータを用いてファインチューニングさ れた専用モデルも利用。 出典: “Goldman Sachs Deploys Its First Generative AI Tool Across the Firm” - Wall Street Journal

Slide 30

Slide 30 text

bit.ly/CodeAndAI #コードAI本 インナーソースの原則 AI時代の競争優位性を高めるための開発組織戦略

Slide 31

Slide 31 text

bit.ly/CodeAndAI #コードAI本 インナーソースの運用 オープンソースの文化を組織に取り入れる インナーソースは単なる「社内公開するこ と」ではありません。 オープンソースのような貢献と共有の文化 を組織内に作り出すことにあります。 インナーソースの導入とは、この文化を醸 成していく旅なのです。 https://patterns.innersourcecommons.org/v/ja

Slide 32

Slide 32 text

bit.ly/CodeAndAI #コードAI本 組織内コード共有のルール化 AI時代の競争優位性を高めるための開発組織戦略 AIによるコードの活用には、ソースコードの自由 な利用が前提となります。 その「自由な利用の範囲」は、組織全体ではなく、 特定の部門やプロジェクトかもしれませんが、少 なくともその範囲を明確にすることが大切です。 また、フリーソフトウェアの4つの自由である 「使用する自由」「変更する自由」「共有する自 由」「変更したソフトウェアを再配布する自由」 を社内に限定して適用できるようにライセンスに 統合することも考えられます。

Slide 33

Slide 33 text

bit.ly/CodeAndAI #コードAI本 メンテナーの明確化 AI時代の競争優位性を高めるための開発組織戦略 社内のリポジトリ管理者を明確にするには 「トラステッドコミッター」という概念が有効。 一般的なメンテナーやコミッターの概念に加え、以下 のような社内事情を考慮している点が特徴。 • 組織内のチーム間の貢献を認識するための仕組みや言語を提 供する。 • ビジネスの優先順位の変化に対応するため、メンテナーのフ ォーカスのずれを考慮する。 • 従業員の評価に組み込めるよう、公式な役割として定義する。 • 従業員でなくなる等による退任プロセスを考慮する。 • 組織内での公式な認定プロセスを設定する。

Slide 34

Slide 34 text

bit.ly/CodeAndAI #コードAI本 AI時代に適した技術スタックの選定 AI時代に適合したチーム技術スタックの最適化 AIがすでに知っている知識領域と組織内ナレッジを考慮し、 最適な技術スタックを選定。 AIとの協働を円滑にし、開発効率を向上。

Slide 35

Slide 35 text

bit.ly/CodeAndAI #コードAI本 - 結論 - 今まで通り、良いコードを書く。 そして、メンテナンスする。 なによりも、社内の技術を育てる。

Slide 36

Slide 36 text

Q&A bit.ly/CodeAndAI