Slide 1

Slide 1 text

© Findy Inc. みんなで学び合おう!開発⽣産性向上のためのナレッジ共有会【D-Plus Fukuoka】 開発⽣産性を上げるための⽣成AI活⽤術 1 ファインディ株式会社 テックリードマネージャー ⼾⽥ 千隼 @starfish0206

Slide 2

Slide 2 text

© Findy Inc. 2 今⽇の内容を聞いて欲しい⼈ ● ⽣成AIを活⽤したいが、思ってるような結果が出ない ● 上司から「⽣成AIってやつで開発速くしてよ」と⾔われている ● 開発⽣産性と⽣成AIのどっちに着⼿すればいいのかわからない 今⽇の内容から学びがない⼈ ● 開発⽣産性を完全に理解している ● ⽣成AIをバリバリ活⽤しまくっている ● 答え合わせで使ってください

Slide 3

Slide 3 text

© Findy Inc. 3 今⽇のお品書き ● ⽣成AIあるあると解決法 ○ プロンプトがわからない ○ 思ったコードが出⼒されない ○ レビュー疲れ ● まとめ

Slide 4

Slide 4 text

© Findy Inc. 4 ⽣成AIあるあると解決法

Slide 5

Slide 5 text

© Findy Inc. 5 プロンプトがわからない

Slide 6

Slide 6 text

© Findy Inc. 6 プロンプトがわからない ● ⾃分⾃⾝が理解できていないことが原因 ○ プロンプトの書き⽅がわからない ○ Vibe Codingのやり⽅がわからない ○ ⽣成AIに何を依頼したらいいのかわからない ● Issueに書き出してみる タスク分解と階層構造を理解しましょう

Slide 7

Slide 7 text

© Findy Inc. 7 タスク分解 ● 開発に⼊る際に、⼀番最初に着⼿する ● GitHubのIssueにタスクリストを作成し、実装着⼿前にレビューしてもらう ● タスクの内容、対応する順番などを確認して実装着⼿前に認識を合わせる ● 何をどう作るのかを明記する ● いきなり⽣成AIに依頼するのではなく、まず⼈間が理解する必要がある

Slide 8

Slide 8 text

© Findy Inc. 8 階層構造 ● ⻑⽂のプロンプトよりも階層構造のプロンプトの⽅が、⽣成AIの理解度が⾼い傾向にある buttonを作成して返すReact Componentを作ってください。propsにはテキストと無効フラグとクリック時のイベントを受け取ることが出来ます。テキストは必 須です。無効フラグは任意で `is` のprefixを付けてデフォルト値は無しです。クリック時のイベントは任意です。 buttonを作成して返すReact Componentを作ってください。 - props - テキスト - 必須 - 無効フラグ - 任意 - `is` のprefixを付ける - デフォルト値は無し - クリック時のイベント - 任意

Slide 9

Slide 9 text

© Findy Inc. 9 思ったコードが出⼒されない

Slide 10

Slide 10 text

© Findy Inc. 10 思ったコードが出⼒されない ● ⽣成AIが迷ってしまっている環境が原因 ○ 意図したコードが出⼒されない ○ 既存コードが壊れる ● ⽣成AIフレンドリーな開発環境を整える ⽣成AIが迷わないために ガードレール整備をしましょう

Slide 11

Slide 11 text

© Findy Inc. 11 既存コードの最適化 ● 不要なコードの削除 ○ 不要なコードも学習してしまい、不適切な出⼒になることがある ● 統⼀されたコーディング規約 ○ Google の Style Guides などに代表されるようなスタイルガイドを採⽤ ○ 統⼀されたコーディング規約に従ったコードベースは⽣成AIの理解度を向上させる ○ 命名規則が⼀貫していれば、⽣成AIはその規則を学習する ■ 命名パターンを⼀貫して提案できる

Slide 12

Slide 12 text

© Findy Inc. 12 ドキュメンテーションの充実 ● ⽣成AIが読み込む内容はREADMEなどのドキュメントも含まれる ● docコメントやAPIドキュメント ○ ⽣成AIがコードの意図を理解する上で重要な情報源となる ● カスタムインストラクション ○ ⽣成AIに対して特定のコンテキストやルールを教えるための⼿段 ○ 調整して育てることで、⽣成されるコードや提案内容の精度を向上できる ○ プロジェクトやリポジトリのコーディング規約やドメイン知識などを記載する ■ それらの内容を⽣成AIに読み込ませて提案内容に反映

Slide 13

Slide 13 text

© Findy Inc. 13 テストコード ● ⽣成AIが仕様を把握するための重要な情報源 ● ⽣成AIが暴⾛しないためのガードレールの役割 ○ ⽣成AIが仕様を理解しやすくなる ○ 既存の振る舞いが壊れた時、既存のテストコードがコケることで⽣成AIが検知できる ● ⽣成AI時代のテストコードが持つ役割は、今までよりも重要となる

Slide 14

Slide 14 text

© Findy Inc. 14 レビュー疲れ

Slide 15

Slide 15 text

© Findy Inc. 15 レビュー疲れ ● ⼈間が理解しづらいPull requestを⼤量に作成していることが原因 ○ AIが出⼒したものを理解しないままレビューに出している ■ AIが出⼒したコードの合否の判断ができないのが理由 ■ Pull requestの質が低下 ■ リードクラスのレビュー負担が増加 ○ AIに使われている状態 ⽣成AIが出⼒したコードを理解する

Slide 16

Slide 16 text

© Findy Inc. 16 セルフレビュー ● ⽣成AIが出⼒したコードを理解する ○ 読むのではなく読み解いて理解する ● セルフレビューで⾃分が説明出来ないコードはレビュー依頼を出したらダメ ○ ⼀次情報を参照して、理解する ○ 読み解いて理解するために基礎が重要となる ● ⽣成AIが出⼒したコードの責任は⼈間にある ○ 出⼒してもらったコードに⾃分⾃⾝が責任を持つ

Slide 17

Slide 17 text

© Findy Inc. 17 Pull requestの粒度 ● 要件を全て同じPull request内で実現しようとしない ○ Pull requestの粒度が⼤きすぎるとレビューの負担が上がる ○ AIにレビューしてもらったとしても、コンテキストが⼤きくなるので精度が落ちる ● ⼈間とAI、どちらがレビューしたとしても、⼀度にレビューする範囲を限定的にする

Slide 18

Slide 18 text

© Findy Inc. 18 まとめ

Slide 19

Slide 19 text

© Findy Inc. みんなで学び合おう!開発⽣産性向上のためのナレッジ共有会【D-Plus Fukuoka】 開発⽣産性を上げるための⽣成AI活⽤術 19 ファインディ株式会社 テックリードマネージャー ⼾⽥ 千隼 @starfish0206

Slide 20

Slide 20 text

© Findy Inc. みんなで学び合おう!開発⽣産性向上のためのナレッジ共有会【D-Plus Fukuoka】 ⽣成AIを活⽤するために必要な開発⽣産性 20 ファインディ株式会社 テックリードマネージャー ⼾⽥ 千隼 @starfish0206

Slide 21

Slide 21 text

© Findy Inc. まとめ 21 ● ⽣成AIを活⽤できていないのではなく、⽣成AIを活⽤する準備が出来ていないだけ ○ ⽣成AIとの協働は1⽇にして成らず ■ 事前準備や環境、ガードレールの整備などの⽇々の⼩さな積み重ねが重要 ■ ⽣成AIと⾃然に協働できるAIフレンドリーな環境を⽬指す ○ ⾼い開発⽣産性の延⻑線上に⽣成AIを乗せる ● 結局のところ、やるべきことは変わらない ○ ⼈間の開発⽣産性を上げることが、⽣成AIのガードレール整備に繋がる ○ ⾼い開発⽣産性の延⻑線上に⽣成AIとの協業が実現 ● 更に重要度が⾼まる3要素 ○ タスク分解 ○ テストコード ○ 基礎

Slide 22

Slide 22 text

© Findy Inc. ご清聴ありがとうございました 22