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
コードAI本 - コード×AIーソフトウェア開発者のための生成AI実践入門
yuhattor
1
120
Code AI Findy Event
yuhattor
6
760
Productivity-Conference-GitHub-20240629
yuhattor
2
4.5k
The-Next-gen-Dev-Strategy-InnerSource
yuhattor
1
51
AI-Powered Development with GitHub Copilot 20240202
yuhattor
14
5.4k
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
420
GitHub Universe JP Keynote
yuhattor
0
190
Other Decks in Technology
See All in Technology
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.1k
인디 앱 개발자와 Flutter
tinyjin
0
150
2024年グライダー曲技世界選手権参加報告/2024 WGAC report
jscseminar
0
300
TypeScript、上達の瞬間
sadnessojisan
37
9.3k
AGIについてChatGPTに聞いてみた
blueb
0
100
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
500
SREの組織類型に応じた リーダシップの考察
kenta_hi
PRO
1
640
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
第23回Ques_タイミーにおけるQAチームの在り方 / QA Team in Timee
takeyaqa
0
260
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
0
160
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
310
Can We Measure Developer Productivity?
ewolff
1
110
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
94
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Writing Fast Ruby
sferik
627
61k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
The Cult of Friendly URLs
andyhume
78
6k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Embracing the Ebb and Flow
colly
84
4.5k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Fireside Chat
paigeccino
33
3k
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