GitHub Copilot Workspace で我々のアプリ開発がどう変わるのか?
by
ShuyaKinjo
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
2024/09/25 ⾦城 秀哉 GitHub Copilot Workspaceで これからのアプリ開発がどう変わるのか?
Slide 2
Slide 2 text
⾃⼰紹介 2 ⾦城 秀哉(Shuya Kinjo) ● クラスメソッド株式会社 ○ リテールアプリ共創部 マッハチーム ● サーバーサイドエンジニア ● 興味‧関⼼ ○ IaC、CI/CD、⽣成AIアプリ開発 @joe-king-sh
Slide 3
Slide 3 text
リテールアプリ共創部とは 3 アプリ開発のクライ アントワークを専⾨ に⾏っています クラスメソッドの⽀援領域
Slide 4
Slide 4 text
GitHub Copilot使ってますか?
Slide 5
Slide 5 text
GitHub Copilotの歴史 5 ● 2021年6⽉29⽇ ○ VS Code向けにGitHub Copilotのテクニカ ルプレビューを発表
Slide 6
Slide 6 text
GitHub Copilotの歴史 6 ● 2021年6⽉29⽇ ○ VS Code向けにGitHub Copilotのテクニカ ルプレビューを発表 ● 2022年6⽉21⽇ ○ テクニカルプレビューを終了し、個⼈開発 者向けの有償サブスクリプションサービス として⼀般提供開始
Slide 7
Slide 7 text
GitHub Copilotの歴史 7 できること ● コードの先読み補完 できないこと ● こちらから明確な指⽰出し ○ 出だしを書く ○ コメントを先に書く ■ など、⼯夫が必要 ● 2021年6⽉29⽇ ○ VS Code向けにGitHub Copilotのテクニカ ルプレビューを発表 ● 2022年6⽉21⽇ ○ テクニカルプレビューを終了し、個⼈開発 者向けの有償サブスクリプションサービス として⼀般提供開始
Slide 8
Slide 8 text
GitHub Copilotの歴史 8 ● 2021年6⽉29⽇ ○ VS Code向けにGitHub Copilotのテクニカ ルプレビューを発表 ● 2022年6⽉21⽇ ○ テクニカルプレビューを終了し、個⼈開発 者向けの有償サブスクリプションサービス として⼀般提供開始 ● 2023年3⽉22⽇ ○ GitHub Copilot Xの発表 ■ GitHub Copilot chat ■ GitHub Copilot for docs ■ GitHub Copilot for pull requests ■ GitHub Copilot for CLI ■ GitHub Copilot Voice
Slide 9
Slide 9 text
GitHub Copilotの歴史 9 ● 2021年6⽉29⽇ ○ VS Code向けにGitHub Copilotのテクニカ ルプレビューを発表 ● 2022年6⽉21⽇ ○ テクニカルプレビューを終了し、個⼈開発 者向けの有償サブスクリプションサービス として⼀般提供開始 ● 2023年3⽉22⽇ ○ GitHub Copilot Xの発表 ■ GitHub Copilot chat ■ GitHub Copilot for docs ■ GitHub Copilot for pull requests ■ GitHub Copilot for CLI ■ GitHub Copilot Voice できること ● コードの先読み補完 ● ⽣成内容を明確に指⽰ ○ 〇〇を××に変更して ○ △△を参照して ○ テストを書いて ● VS Code上でCopilotと会話 ○ このコードを説明して ○ このエラーの原因は? できないこと ● コードの断⽚以上の⽣成 ○ 複数ファイルの修正
Slide 10
Slide 10 text
次のブレイクスルーが気になりませんか? 10 2024年4⽉29⽇
Slide 11
Slide 11 text
今⽇話すこと 11 1. GitHub Copilot Workspaceの概要 2. テクニカルプレビューを触ってみた感想
Slide 12
Slide 12 text
GitHub Copilot Workspaceとは?
Slide 13
Slide 13 text
GitHub Copilot Workspaceとは 13 ● GitHubが提供する全く新しい統合開発環境 ● ⾃然⾔語で、コード断⽚⽣成ではなくタスク遂⾏を指⽰ ● 開発プロセスの全体をAIがサポート ○ 仕様策定 ○ 変更計画 ○ 実装 ○ PR作成 ● 現時点ではテクニカルプレビュー ○ wait listへ登録が必要
Slide 14
Slide 14 text
● セッションという単位で1つの 開発プロセスを管理 GitHubが提供する全く新しい統合開発環境 14
Slide 15
Slide 15 text
● 以下の流れで開発を進める ○ Issue ■ タスクの指⽰ ○ Specification ■ Copilotと仕様策定 ○ Plan ■ Copilotと変更計画 ○ Implement ■ Copilotと実装 GitHubが提供する全く新しい統合開発環境 15
Slide 16
Slide 16 text
● 以下からセッションを開始可能 ○ GitHub Issue ○ Pull Request ○ リポジトリを指定して、ア ドホックタスクの開始 GitHubが提供する全く新しい統合開発環境 16
Slide 17
Slide 17 text
● 例として、TODO管理APIの OpenAPI作成をするGitHub Issueでセッションを開始 ● 元Issueとは独⽴している。 ○ Workspace上でタスクを編 集してもGitHub Issueには 反映されない タスクの指⽰ 17
Slide 18
Slide 18 text
● As-Is ○ openapi.yamlはリポジトリに存在し ない ● To-Be ○ ルートにopenapi.yamlを含んでいる ○ OpenAPI 3.0.3で仕様を書いている。 ○ 登録、取得、更新、削除のエンドポイ ントを含んでいる。 ○ TODOのアイテムは id,title,content,status,createdAtを含 んでいる。 Copilotと仕様策定 18
Slide 19
Slide 19 text
● openapi.yamlファイルを追加する ○ OpenAPIを3.0.3で定義する ○ info section ■ title, description, versionを 記述する ○ paths ■ 登録、取得、更新、削除を ⽤意する ○ components ■ TODO itemを id,title,content,status,createdAtでス キーマ定義する Copilotと変更計画 19
Slide 20
Slide 20 text
● 変更計画をもとにCopilotが 実装 Copilotと実装‧PR作成 20
Slide 21
Slide 21 text
● PR作成もWorkspace上で⾏う ● もちろんDescriptionもCopilot が書いてくれる Copilotと実装‧PR作成 21
Slide 22
Slide 22 text
● チームメンバーにPRレビュー 依頼を出す ● PRからWorkspaceを開いて、 変更の経緯、指⽰内容を確認す ることも可能 ● PRを元に新しいセッションも 開始可能 ○ 貰ったコメントについて Copilotと修正できる Copilotと実装‧PR作成 22
Slide 23
Slide 23 text
もう⼈間がすること無くない? もしかして 23 全部やっといたよ
Slide 24
Slide 24 text
めちゃくちゃあります そんなことありません 24 全部やっといたよ
Slide 25
Slide 25 text
全てのプロセスで⼈の⼿を加えられる 25 ● 修正⽅法 ○ 直接提案内容を編集
Slide 26
Slide 26 text
全てのプロセスで⼈の⼿を加えられる 26 ● 修正⽅法 ○ 直接提案内容を編集 ○ 新たな変更指⽰を直接追加
Slide 27
Slide 27 text
全てのプロセスで⼈の⼿を加えられる 27 ● 修正⽅法 ○ 直接提案内容を編集 ○ 新たな変更指⽰を直接追加 ○ チャットで修正内容を指⽰
Slide 28
Slide 28 text
全てのプロセスで⼈の⼿を加えられる 28 ● 修正⽅法 ○ 直接提案内容を編集 ○ 新たな変更指⽰を直接追加 ○ チャットで修正内容を指⽰ ● 全てのステップでやり直し可能
Slide 29
Slide 29 text
Copilotとコードの共同編集 29 ● Files changedビューでの編集 ○ ⽣成された変更内容を直接 ⼿動で変更可能 ● チャットで修正指⽰出し
Slide 30
Slide 30 text
Copilotとコードの共同編集 30 ● Codespaces上での表⽰‧編集 ○ ブラウザで動作するVS Codeで表⽰可能 ○ Workspaceの編集状態と同 期される ○ ターミナルも利⽤可能
Slide 31
Slide 31 text
テスト実⾏、動作確認 31 ● Workspace上でもターミナル を利⽤可能 ● ⾃動テストや静的解析などが実 ⾏できる
Slide 32
Slide 32 text
やるべきことは(楽になるが)変わらない Copilotはあくまでも副操縦⼠ 32 操縦桿を握るのはあなたです
Slide 33
Slide 33 text
GitHub Copilot Workspace 使ってみた
Slide 34
Slide 34 text
タスクを丸投げしてみた 34
Slide 35
Slide 35 text
タスクを丸投げしてみた 35 ● 流⽯にタスクを遂⾏できない ○ Issueが不明瞭で仕様策定が できないアラート ○ Issueの説明に注⽬すべき ファイルやディレクトリ名 を明⽰すると良いとのこと
Slide 36
Slide 36 text
Issueを詳細化してタスクを丸投げしてみた 36
Slide 37
Slide 37 text
Issueを詳細化してタスクを丸投げしてみた 37 ● 以下を⼀通り実装してくれた ○ AWS CDKのインフラ ○ Lambdaのコード ○ テスト ○ CI/CD ○ API仕様
Slide 38
Slide 38 text
Issueを詳細化してタスクを丸投げしてみた 38 ● 提案仕様、変更計画のレビューが難 しい ○ Issueで指⽰は出しているが、仕 様にはなく、実装には含まれる ● 細かい点まで指⽰が難しい ○ ⾔語やライブラリのバージョン が全体的に古め ○ 指⽰漏れが発⽣ ● 変更内容が⼤きく扱い⾟い ○ テストが動くまでが⼤変 ○ PRがレビューし⾟い
Slide 39
Slide 39 text
Issueを詳細化してタスクを丸投げしてみた 39 ● 結論 ○ AIにざっくりプロジェクト のベースを作ってもらって ⼿動で直すような⽤途には 不向き
Slide 40
Slide 40 text
⼩さなタスクを1つずつ投げてみた 40
Slide 41
Slide 41 text
⼩さなタスクを1つずつ投げてみた 41 ● 指⽰出し、提案内容のレビュー の問題は解消 ● プロジェクト初期段階のタスク は不向き ○ コマンドを叩く系 ■ npm init ■ cdk init ○ 全体アーキテクチャの設計
Slide 42
Slide 42 text
⼩さなタスクを1つずつ投げてみた 42 ● 結論 ○ プロジェクトの⽴ち上げ段 階は⼿動の⽅が良い ○ 既存コードのコンテキスト 無しに理想のコードを書か せることが困難 ○ ある程度育ったリポジトリ 向き
Slide 43
Slide 43 text
既存プロジェクトへの機能追加を試してみた 43 ● 既存コードを読み設計⽅針を理解した上で提案 ○ 設計⽅針などは既存コードのコンテキストの⽅が意図が明確に伝わる ○ 現在のコンテキストはセッションを実⾏する1リポジトリに閉じるので、複数リ ポジトリやナレッジベースの参照に期待(ドキュメントも読ませたい) ● 良く把握したリポジトリであることが前提 ○ 変更仕様をいきなり提案されてもレビューができない ○ 別途コードリーディングが必要 ● ⽣成されるコードの品質はさらに改善を期待 ○ シンタックスエラーを含む提案も ○ どこまで指⽰を出し、どこから⾃分で書くか迷う ○ 途中で仕事を奪えるのはAIとのペアプロならでは
Slide 44
Slide 44 text
その他注意点 44 ● テクニカルプレビューの現時点では英語のみ対応 ○ ⽇本語で指⽰出しは可能だがCopilotからは英語で提案 ○ Enterキー変換を待たずに送信 ● コード⽣成の待ち時間 ○ 指⽰→再⽣成のループを回す上でコード⽣成のスピードは重要 ○ 今後はビルド時間に加えてコード⽣成時間も待つように?
Slide 45
Slide 45 text
まとめ
Slide 46
Slide 46 text
まとめ 46 ● GitHub Copilot Workspaceは新しい統合開発環境 ● Copilotが開発プロセスを広くサポートしてくれるが丸投げはできない ○ Issueの⾒極めと切り出し、AIの提案をコードレビュー、必要に応じ て⼿直しする技術は引き続き重要 ○ 開発プロセス、扱うツールが変わるので適応する必要あり ● 現時点ではテクニカルプレビュー ○ GAまでにコード⽣成の品質向上や参照するコンテキスト追加を期待 ○ 触りたい⽅はwait listへ登録を!
Slide 47
Slide 47 text
No content