GitHub Copilot Workspace で我々のアプリ開発がどう変わるのか?
by
ShuyaKinjo
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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