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.2k
コード✕AIーソフトウェア開発者のための生成AI実践入門~
Yuki Hattori
October 07, 2024
Tweet
Share
More Decks by Yuki Hattori
See All by Yuki Hattori
GitHubの軌跡:リポジトリからAIプラットフォームへ
yuhattor
3
91
コードAI本 - コード×AIーソフトウェア開発者のための生成AI実践入門
yuhattor
1
270
Code AI Findy Event
yuhattor
7
990
Productivity-Conference-GitHub-20240629
yuhattor
2
4.7k
The-Next-gen-Dev-Strategy-InnerSource
yuhattor
1
63
AI-Powered Development with GitHub Copilot 20240202
yuhattor
14
6k
AI-Powered Development with Copilot
yuhattor
0
190
Bringing Open-Source Brilliance to Scrum Teams: A Guide to Enhanced Collaboration
yuhattor
0
200
GitHub Copilot for IT Professionals - 考え方のポイント
yuhattor
1
450
Other Decks in Technology
See All in Technology
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
120
Snykで始めるセキュリティ担当者とSREと開発者が楽になる脆弱性対応 / Getting started with Snyk Vulnerability Response
yamaguchitk333
2
180
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
150
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
210
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
160
ずっと昔に Star をつけたはずの思い出せない GitHub リポジトリを見つけたい!
rokuosan
0
150
20241220_S3 tablesの使い方を検証してみた
handy
3
320
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
NilAway による静的解析で「10 億ドル」を節約する #kyotogo / Kyoto Go 56th
ytaka23
3
370
あの日俺達が夢見たサーバレスアーキテクチャ/the-serverless-architecture-we-dreamed-of
tomoki10
0
420
MLOps の現場から
asei
6
630
.NET 9 のパフォーマンス改善
nenonaninu
0
690
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
The Invisible Side of Design
smashingmag
298
50k
RailsConf 2023
tenderlove
29
940
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
We Have a Design System, Now What?
morganepeng
51
7.3k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Become a Pro
speakerdeck
PRO
26
5k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
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