Slide 1

Slide 1 text

2024/04/08 Ebisu.mobile #5 - モバイルアプリの品質改善どうしてる? - GitHub Copilotのススメ STORES株式会社 モバイル開発本部 ブランドアプリグループ マネージャー/iOSエンジニア 長谷川 将司(@marcy731)

Slide 2

Slide 2 text

自己紹介

Slide 3

Slide 3 text

自己紹介 Masashi Hasegawa / 長谷川 将司 テクノロジー部門/モバイル開発本部/ブランドアプリグループ ● 2022年4月 STORES(旧 hey)株式会社 に入社 ○ STORES ブランドアプリ ■ マネージャー / iOSエンジニア ● 前職は不動産系ITベンチャーにて色々経験しました ○ iOSアプリ開発 ○ その他(事業立ち上げ、営業、人事、PdM) @marcy731

Slide 4

Slide 4 text

はじめに

Slide 5

Slide 5 text

はじめに STORESは GitHub Copilot Enterprise を契約しています🎉

Slide 6

Slide 6 text

はじめに 目的:開発速度をあげるため

Slide 7

Slide 7 text

はじめに Q. GitHub Copilot って結局使えるの?

Slide 8

Slide 8 text

はじめに Q. GitHub Copilot って結局使えるの? A. GitHub Copilot “は” 使えるよ!オススメ!

Slide 9

Slide 9 text

GitHub Copilot (Enterprise) とは

Slide 10

Slide 10 text

GitHub Copilot とは ● GitHub Copilot ○ 主な機能 ■ AI コーディング アシスタント(Suggestions) ● 入力時にコーディングの提案が提供される(コード補完、新しいコード) ■ チャット機能 ● 問題解決の方法を尋ねたり、コードを説明してもらったり ○ 特徴 ■ Private Repoのコードは学習データに使われない(大事) ■ IDE上で利用可能(Xcodeは未対応😭)

Slide 11

Slide 11 text

GitHub Copilot Business とは ● GitHub Copilot Business ○ 主な機能 ■ AI コーディング アシスタント(Suggestions) ● 入力時にコーディングの提案が提供される(コード補完、新しいコード) ■ チャット機能 ● 問題解決の方法を尋ねたり、コードを説明してもらったり ○ 特徴 ■ Private Repoのコードは学習データに使われない(大事) ■ IDE上で利用可能(Xcodeは未対応😭) ■ GitHub Enterprise 内で Organization の GitHub Copilot へのアクセスを管理できる ■ テレメトリー、プロンプトの候補は、GitHub側に保存もされない(大事)

Slide 12

Slide 12 text

GitHub Copilot Enterprise とは ● GitHub Copilot Enterprise ○ 主な機能 ■ AI コーディング アシスタント(Suggestions) ● 入力時にコーディングの提案が提供される(コード補完、新しいコード) ■ チャット機能 ● 問題解決の方法を尋ねたり、コードを説明してもらったり ■ Copilot Chat in GitHub.com ● GUI上でのChatが利用可能 ■ Copilot pull request summaries ■ knowledge bases ● (複数)リポジトリ内のドキュメントを学習させたナレッジ ベースを作成 ○ 特徴 ■ Private Repoのコードは学習データに使われない(大事) ■ IDE上で利用可能(Xcodeは未対応😭) ■ GitHub Enterprise 内で Organization の GitHub Copilot へのアクセスを管理できる ■ テレメトリー、プロンプトの候補は、GitHub側に保存もされない(大事)

Slide 13

Slide 13 text

Xcode で GitHub Copilot を利用する

Slide 14

Slide 14 text

Xcode で GitHub Copilot を利用する ● GitHub Copilot は公式でXcodeをサポートしていません ● そこで https://github.com/intitni/CopilotForXcode を利用する ○ Copilot for Xcode はGitHub CopilotをXcodeで利用できるようにしたOSSのプラグイン

Slide 15

Slide 15 text

Copilot for Xcode でできること ● Code Suggestions ● Chat ● Prompt to code

Slide 16

Slide 16 text

Copilot for Xcode でできること ● Code Suggestions (powered by GitHub Copilot and Codeium) ● Chat (powered by OpenAI ChatGPT) ● Prompt to code (powered by OpenAI ChatGPT)

Slide 17

Slide 17 text

Copilot for Xcode でできること ● Code Suggestions (powered by GitHub Copilot and Codeium) ● Chat (powered by OpenAI ChatGPT) ● Prompt to code (powered by OpenAI ChatGPT) GitHub Copilotの機能

Slide 18

Slide 18 text

Copilot for Xcode でできること ● Code Suggestions (powered by GitHub Copilot and Codeium) ● Chat (powered by OpenAI ChatGPT) ● Prompt to code (powered by OpenAI ChatGPT) ChatGPT APIが必要

Slide 19

Slide 19 text

GitHub Copilot 各機能と所感

Slide 20

Slide 20 text

Code Suggestions

Slide 21

Slide 21 text

Code Suggestions ● 使い方 ○ コーディング中に リアルタイムで Suggestions が表示される ○ 提案を受け入れる時は「Accept」、拒否する時は「Reject」もしくは無視 ○ Key Binding を設定し、マウス操作なしでAcceptできると便利

Slide 22

Slide 22 text

Code Suggestions https://product.st.inc/entry/2023/05/23/110000

Slide 23

Slide 23 text

Code Suggestions ● 所感 ○ 正直、他言語で聞くほど「それ良い!」という提案自体は少ないかも ○ 全ての提案が「Good」ではないが、たまに「気が利く!」という提案もある ○ 特定のユースケースにおいては捗ることが多い ■ 例えば、既存の似たようなコードをベースにしての提案 ● ボイラープレートコードでの提案 ● Previewやテストのためのデータ準備 ● SwiftUIのおおまかな実装の提案 ■ 提案されたコードがそのまま使えることは多くないが、参考になるので開発速度は上がる ○ 精度には波はあるが、良いコードだけ受け入れれば良いので正直デメリットはない ○ Copilot for Xcodeを入れるとXcodeが重くなったという声も聞くが… ■ 私の環境だと全く感じない ○ CI/CD周りで Ruby Script や ShellScript を書く場合、提案がとても参考になる

Slide 24

Slide 24 text

Chat

Slide 25

Slide 25 text

Chat ● 使い方 ○ Xcode > Editor > Copilot > Open Chat (shotcutを設定していると楽) ○ 注意点は あくまでもChatGPTなので Prompt の内容には注意

Slide 26

Slide 26 text

Chat ● 所感 ○ 今やみんな利用している ChatGPT がXcodeから呼び出せる! ■ (これだけ。でもそれが嬉しい。開発効率は上がる。) ○ 公式ドキュメントで調べるのが正しいのはそれはそう。 ○ でもちょっと気軽に調べたり、相談したい時にとて良い。

Slide 27

Slide 27 text

Copilot Chat in GitHub.com(for Enterprise)

Slide 28

Slide 28 text

Copilot Chat in GitHub.com ● 使い方 ○ ブラウザ上のGitHubでソースコード閲覧時に、「Ask Copilot」というアイコンを押下

Slide 29

Slide 29 text

Copilot Chat in GitHub.com ● fileをAttachmentに指定することで、コードの背景も汲み取った返答が可能

Slide 30

Slide 30 text

Copilot Chat in GitHub.com ● どんな時に役にたつ? ○ PR Review時 ■ とくに自分が慣れていないプロダクトのReview時 ● ex ○ iOSエンジニアがAndroidをレビューする ■ もっと良い書き方ありそうだなーって時 ● Copilot Chatにレビューの壁打ち相手になってもらう ■ Copilot Auto Review 求む ○ Android・Backendの仕様を確認する時 ■ なんとなくは分かるが…詳細は…の時

Slide 31

Slide 31 text

GitHub Copilot Enterprise の他の機能

Slide 32

Slide 32 text

GitHub Copilot Enterprise の他の機能 ● Copilot pull request summaries ○ PR Editor > Copilots Actions > Summary ○ PRサマリーが自動生成

Slide 33

Slide 33 text

GitHub Copilot Enterprise の他の機能 ● Copilot pull request summaries ○ 自動生成されたサマリーの精度 ■ Whatはしっかり記述されている ● が、Whyがないため、あと一歩というところ ■ 英語のみ対応なので日本語対応が欲しい

Slide 34

Slide 34 text

GitHub Copilot Enterprise の他の機能 ● Copilot knowledge bases ○ 現状esaでドキュメントを管理していることもあり、まだとりかかれていません ○ 他プロダクトのバックエンドチームでは成果が出ているとのこと ○ 今後やっていきたい

Slide 35

Slide 35 text

まとめ

Slide 36

Slide 36 text

まとめ ● Code Suggestions ⛅ ○ 現状iOSアプリ開発においては「Copilot最高!」というわけではない ○ ただ「たまに気の利いた提案をしてくれる良い奴」としてそばにいてくれるのはとても良い ○ まだ「副操縦士見習い」のイメージ ● Chat 🌤 ○ XcodeからChatGPTをすぐに呼び出せるのは便利 ● Copilot Chat in GitHub.com 🔆 ○ PRレビュー時やAndroidやバックエンドのコードリーディング時にとても役にたつ ● 今後 🌈 ○ まだCopilotは進化の途中、今後に期待 ○ Xcodeに公式にAI機能が入るらしいので、それにも期待

Slide 37

Slide 37 text

最後に Q. GitHub Copilot って結局使えるの?

Slide 38

Slide 38 text

最後に Q. GitHub Copilot って結局使えるの? A. (Suggestionsなど物足りないが) GitHub Copilot “は” 使えるよ!オススメ!