Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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