Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コード✕AIーソフトウェア開発者のための生成AI実践入門~
Search
Yuki Hattori
October 07, 2024
Technology
4
1.1k
コード✕AIーソフトウェア開発者のための生成AI実践入門~
Yuki Hattori
October 07, 2024
Tweet
Share
More Decks by Yuki Hattori
See All by Yuki Hattori
Productivity-Conference-GitHub-20240629
yuhattor
2
4.4k
The-Next-gen-Dev-Strategy-InnerSource
yuhattor
1
47
AI-Powered Development with GitHub Copilot 20240202
yuhattor
14
5.3k
AI-Powered Development with Copilot
yuhattor
0
180
Bringing Open-Source Brilliance to Scrum Teams: A Guide to Enhanced Collaboration
yuhattor
0
180
GitHub Copilot for IT Professionals - 考え方のポイント
yuhattor
1
410
GitHub Universe JP Keynote
yuhattor
0
190
GitHub Universe 主要アップデート
yuhattor
0
480
InnerSource for Developer Experience and Competitive Advantages
yuhattor
0
210
Other Decks in Technology
See All in Technology
10分でわかるfreeeのQA
freee
1
3.4k
フルカイテン株式会社 採用資料
fullkaiten
0
39k
Spring Frameworkの新標準!? ~ RestClientとHTTPインターフェース入門 ~
ogiwarat
2
240
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
ZOZOTOWNのホーム画面をパーソナライズすることの難しさと裏話を語る
f6wbl6
1
380
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
0
1.1k
軽量DDDはもういらない! スタイルガイド本で OOPの実装パターンを学ぼう
panda_program
28
10k
SREの組織類型に応じた リーダシップの考察
kenta_hi
PRO
0
550
データの信頼性を支える仕組みと技術
chanyou0311
3
860
Postmanの日本市場におけるDevRel (的) 活動 / Postman's DevRelish activities in Japan
yokawasa
1
110
AI長期記憶システム構築のための LLMマルチエージェントの取り組み / Awarefy-LLM-Multi-Agent
iktakahiro
2
260
徹底比較!HA Kubernetes ClusterにおけるControl Plane LoadBalancerの選択肢
logica0419
2
130
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
42
2.2k
Optimizing for Happiness
mojombo
376
69k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Designing on Purpose - Digital PM Summit 2013
jponch
115
6.9k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
A better future with KSS
kneath
238
17k
Automating Front-end Workflow
addyosmani
1366
200k
Music & Morning Musume
bryan
46
6.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
231
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
32
1.8k
Agile that works and the tools we love
rasmusluckow
327
21k
Transcript
コード ✕ AI ソフトウェア開発者のための生成AI実践入門 #Forkwell_Library
服部 佑樹 @yuhattor
bit.ly/CodeAndAI #コードAI本 Special Thanks (敬称略) 森崎修司, 和田卓人, 山口鉄平, 金子昌永, 牛尾剛,
三田雅人, 吉田素文, 黒崎優太, 百田涼佑
bit.ly/CodeAndAI #コードAI本 トピック • 生成AIがエンジニアリングの常識を変える • プロンプトで生成AIを操る • プロンプトの実例と分析 •
AIツールに合わせたプロンプト戦略 • AIと協働するためのコーディングテクニック • AIの力を引き出す開発アプローチ • 生成AIの力を組織で最大限に引き出す • 開発におけるAI活用Tips • AI時代をリードするために
bit.ly/CodeAndAI #コードAI本 AI-Powered Development Roadmap 開発に生成AIを取り入れる際の ロードマップ
bit.ly/CodeAndAI #コードAI本 Practiceガイド 開発に生成AIを取り入れる際の プラクティス集
bit.ly/CodeAndAI #コードAI本 AIと協働するための コーディングテクニック
bit.ly/CodeAndAI #コードAI本 小さなコードチャンクによる段階的作業 AIによる作業単位の最適化 大きな機能を小さな部分に分けて実装 する。 使い捨てのコード、実験的なコードな ど、設計レベルでクラスを分割しない ようなケースでも、作業単位を小さく するように心がけることで、AIとの協
働を効率化する。
bit.ly/CodeAndAI #コードAI本 関心の分離によるコード最適化 コードを適切に分割し、AIに与える 情報を最適化する。 クラスを関心ごとに分割し、シンプ ルな構造にすることで、生成される コードの品質向上を図る。 AIによる作業単位の最適化
bit.ly/CodeAndAI #コードAI本 AIとの協働を意識した命名 コードのAI可読性向上 変数や関数に具体的で説明的な名前を 採用する。 適切な命名により、AIが提案するコー ドの品質を向上させ、人間の開発者と AIの両方が理解しやすいコードを作る。
bit.ly/CodeAndAI #コードAI本 検索最適化された命名戦略 コードのAI可読性向上 統一された命名規則を採用し、 検索にヒットしやすいコードを書く。 AIツールが適切なコードを提案する ために、一貫性のある命名を心がけ る。
bit.ly/CodeAndAI #コードAI本 スタイルガイドの明示的提供とカスタマイズ AIと協働する際のコーディングスタイル AIによるコード生成時に標準的なス タイルガイドに従うよう指示する。 標準的なスタイルガイドをベースに、 必要に応じて最低限のカスタム規約 セットを作成する。 AIへのコーディング時の規約伝達を
最小限に抑え、効率的な連携を実現 する。
bit.ly/CodeAndAI #コードAI本 標準化されたコード内ドキュメント 付加情報の提供によりAIの理解を助ける 標準的なコメントプラク ティスに従ってドキュメ ントを書く。 言語ごとのドキュメント 生成の仕組みを活用し、 AIとのコラボレーション
を円滑にする。 言語 方式 概要 Python Docstring PEP 257に準拠して詳細な コメントを記述し、ドキュ メント化 TypeScript JSDoc TypeScriptの型情報ととも に、JSDocを使用してドキ ュメント化 Java Javadoc Javaのクラスやメソッドに 対してコメントを記述し、 ドキュメント化 C# XML ドキュメント XML形式でドキュメントを 記述し、ドキュメント化
bit.ly/CodeAndAI #コードAI本 AIの力を引き出す 開発アプローチ
bit.ly/CodeAndAI #コードAI本 AIに触れさせないコードの分離 AIに適したコードアーキテクチャ 重要な計算ロジックを独立させ、 AIによるコード変更から保護する。 コードの保守性と可読性が向上し、 リファクタリング時のリスクを軽 減する。
bit.ly/CodeAndAI #コードAI本 将来の拡張を考慮したコード設計 AIに適したコードアーキテクチャ 既存コードを改変せずに新しいコー ドを追加できるよう設計する。 コードの保守性や拡張性が向上し、 AIによる開発スピードを妨げない。 (OCP原則)
bit.ly/CodeAndAI #コードAI本 体系的なリファクタリング手法の適用 AIに適したコードアーキテクチャ リファクタリングカタログなどを 活用し、AIにより具体的な提案を 引き出す。 効果的なリファクタリングと品質 の高いコード開発につながる。
bit.ly/CodeAndAI #コードAI本 AIを活用したユニットテストの生成 AIを活用したコード品質向上 AIを使ってユニットテストの骨組みを 生成し、開発者が追加のテストケース を考慮する。 テストコード作成の効率化と品質向上 が可能。
bit.ly/CodeAndAI #コードAI本 AIからの未探索アイデア抽出 AIの知見を最大限に引き出す AIから新しいアイデアを引き出すプロセスを活用する。 多くの提案を求め、重複を削除し、不足するカテゴリについて再度提 案を求める。
bit.ly/CodeAndAI #コードAI本 網羅性を保証する魔法のキーワードはない AIの知見を最大限に引き出す たとえば、左記のキーワード は一見すると意味があるよう に見えます。 しかし、AIにMECEなどの言 葉を使っても、AIは本質的に は次の文字を予測するだけで、
平気で嘘をつきます。
bit.ly/CodeAndAI #コードAI本 網羅的テスト設計のためのデシジョンテーブル活用 AIを活用したコード品質向上 デシジョンテーブルを作成し、それにもとづいてテストコードを 生成する。 より網羅的で有効なテストコードの作成が可能になる。
bit.ly/CodeAndAI #コードAI本 状態遷移図を経由したテストコード生成 AIを活用したコード品質向上 状態遷移図を作成し、それにもとづいてテ ストケースを確認し、テストコードを生成 する。視覚的に状態遷移を確認し、より確 実なテストコードを生成できる。
bit.ly/CodeAndAI #コードAI本 AI時代にはシフトライトが必要になるのか? AIを活用したコード品質向上 シフトライトに関する言説には「今後エージ ェント型の生成ツールがあらわれて、ソリュ ーションを一気に作ったら」という枕詞が隠 されている。 将来、AIの生成するコードの質が飛躍的に向 上し、一気にアプリケーションを生成できる
ようになれば、シフトライトの考え方が有効 になるでしょうが、現時点ではまだそのレベ ルには達していないのが実情です。 SHIFT RIGHT?
bit.ly/CodeAndAI #コードAI本 自然言語でのコードロジック説明 コードリーディングにおけるAIの活用 AIにコードの解説を 依頼する際、具体的 な指示を与える。 より正確で有用な解 説を得ることができ、 コードの理解を深め
られる。
bit.ly/CodeAndAI #コードAI本 複雑なロジックの視覚的表現生成 コードリーディングにおけるAIの活用 MermaidやPlantUMLを使用してコードを 視覚化する。コードの構造や流れを理解し やすくなり、効果的なコードリーディング が可能になる。
bit.ly/CodeAndAI #コードAI本 Big-O記法にもとづくパフォーマンス改善 コードレビューにおけるAIの活用 AIにBig-O記法でアルゴリズムの計 算量を評価させ、改善案を提案させ る。 より効率的なアルゴリズムの設計に つながる。
bit.ly/CodeAndAI #コードAI本 生成AIの力を 組織で最大限に引き出す
bit.ly/CodeAndAI #コードAI本 オープンソースの文化を組織に取り入れる AI時代の競争優位性を高めるための開発組織戦略 ここであらためてAIが読みやすいコードの特徴をまとめると、以下のような ことが挙げられます。 • コードが記述的かつ文脈が明確で、初見でも理解しやすいこと。 • 比較的メジャーなバージョンや技術スタックで書かれている。
• 継続的にメンテナンスされ、常に使用可能な状態であること。
bit.ly/CodeAndAI #コードAI本 先進事例 ゴールドマン・サックスのAIプラットフォーム 「GS AI Platform」は、全ての独自AI技術を中 央集約化し、内部での利用を制限する形で運用 されている。 企業のデータを用いてファインチューニングさ
れた専用モデルも利用。 出典: “Goldman Sachs Deploys Its First Generative AI Tool Across the Firm” - Wall Street Journal <https://www.wsj.com/articles/goldman-sachs-deploys-its- first-generative-ai-tool-across-the-firm-cd94369b>
bit.ly/CodeAndAI #コードAI本 インナーソースの原則 AI時代の競争優位性を高めるための開発組織戦略
bit.ly/CodeAndAI #コードAI本 インナーソースの運用 オープンソースの文化を組織に取り入れる インナーソースは単なる「社内公開するこ と」ではありません。 オープンソースのような貢献と共有の文化 を組織内に作り出すことにあります。 インナーソースの導入とは、この文化を醸 成していく旅なのです。
https://patterns.innersourcecommons.org/v/ja
bit.ly/CodeAndAI #コードAI本 組織内コード共有のルール化 AI時代の競争優位性を高めるための開発組織戦略 AIによるコードの活用には、ソースコードの自由 な利用が前提となります。 その「自由な利用の範囲」は、組織全体ではなく、 特定の部門やプロジェクトかもしれませんが、少 なくともその範囲を明確にすることが大切です。 また、フリーソフトウェアの4つの自由である
「使用する自由」「変更する自由」「共有する自 由」「変更したソフトウェアを再配布する自由」 を社内に限定して適用できるようにライセンスに 統合することも考えられます。
bit.ly/CodeAndAI #コードAI本 メンテナーの明確化 AI時代の競争優位性を高めるための開発組織戦略 社内のリポジトリ管理者を明確にするには 「トラステッドコミッター」という概念が有効。 一般的なメンテナーやコミッターの概念に加え、以下 のような社内事情を考慮している点が特徴。 • 組織内のチーム間の貢献を認識するための仕組みや言語を提
供する。 • ビジネスの優先順位の変化に対応するため、メンテナーのフ ォーカスのずれを考慮する。 • 従業員の評価に組み込めるよう、公式な役割として定義する。 • 従業員でなくなる等による退任プロセスを考慮する。 • 組織内での公式な認定プロセスを設定する。
bit.ly/CodeAndAI #コードAI本 AI時代に適した技術スタックの選定 AI時代に適合したチーム技術スタックの最適化 AIがすでに知っている知識領域と組織内ナレッジを考慮し、 最適な技術スタックを選定。 AIとの協働を円滑にし、開発効率を向上。
bit.ly/CodeAndAI #コードAI本 - 結論 - 今まで通り、良いコードを書く。 そして、メンテナンスする。 なによりも、社内の技術を育てる。
Q&A bit.ly/CodeAndAI