Yappli Tech Blog

株式会社ヤプリの開発メンバーによるブログです。最新の技術情報からチーム・働き方に関するテーマまで、日々の熱い想いを持って発信していきます。

AIと一緒にアプリを作る未来が来たか?(Github Copilot・Android)

こんにちは、Androidエンジニアのてつ(哲)です。

最近ChatGPTがかなり流行って、アプリ開発者としても関わりたいので、今回は関係性あるGithub Copilotの記事を書きました。

Github Copilotとは何

GitHub Copilotは、GitHubとOpenAIが共同で開発した人工知能ツールであり、ユーザーがVisual Studio Code、Microsoft Visual Studio、Vim、またはJetBrains統合開発環境を使用するときに、GitHub Copilotを通じてコードを自動補完できます。 2021年6月29日にこのソフトウェアを発表し、主にPython、JavaScript、TypeScript、Ruby、およびGoなどのプログラミング言語を対象としています。

Android開発にも使える?

サポート言語は特に書いてないですが、詳細説明よりAndroid Kotlinも使えます。

GitHub Copilotは、パブリックリポジトリに表示されるすべて言語でトレーニングされます。 各言語で、受け取る提案の品質は、その言語のトレーニングデータの量と多様性によって異なります。 たとえば、JavaScriptは、パブリックリポジトリで適切に表現されており、GitHub Copilotでサポートされている最適な言語の1つです。 パブリックリポジトリでの表現が少ない言語では、生成される候補の信頼性が低下する可能性があります。

ちなみに、Kotlinはメジャー言語ではありませんが、Githubの言語ランキング 2022 3Qより使用量は14位になってます。

設定方法

Android Studioがインスタンス済、且つGithubアカウントが持っている人なら、設定自体は15分くらい完成できます。

Github Copilotのサインアップ

Copilot 公式サイトで下記情報を入力すれば、60日間は無料に使えます(2022/12時点):

  • 姓名
  • 住所(領収書用)
  • 決済方法(クレジットカードもしくはPaypal)

個人使用の場合、無料期間後は毎月10ドル/毎年100ドルになります。

Android Studioの設定方法

設定説明はIntelliJ IDEAになりますが、Android Studioと殆ど同じですので、同じ手順を踏めば設定できます。

どこまで出来るか?

Android開発でよく利用するシーンを考えて、GitHub Copilotがどの程度できるかを確認したいですから、まずはコード自動生成の部分からです。

アクティビティ内の変数宣言やCompose UIの実装など、よく使う書き方は問題なく生成できました。パワーアップした自動補完機能のような感覚です。

特にCompose Previewは修正する必要がなく、そのまま使用できるのが便利です。 AndroidではUIの実装が多いので、作業効率が大幅に向上すると考えられます。

また、生成内容は書かれたコードを参照しているので、 運がよければ、一発で全文を生成することもあります。

(足し算のUI実装)

次に、コメントからコードを生成する部分です。

ここは、入力されたテキストがメールアドレス形式かどうか、よくあるケースを試してました。 生成された内容はよく使われるPatternsでの実装、特に問題がなさそうです。生成内容もコメントから解析されたものであるため、他の自然言語(英語や中国語)はどうなるのもやってみました。

生成された内容はほとんど同じですが、関数の命名から各言語の習慣によって少し異なることがわかりました。

ではコメントが複雑になった場合、要件に従ってコードを生成できるでしょうか?

Date APIは非推奨ですが、その他の修正が必要な箇所はありませんでした。これはかなり実用的なレベルだと感じました。また、コードからコメントを生成できるので、上手に使えばドキュメントの整備にも役立つでしょう。

ただし、生成元は公開リポジトリを参照しているため、このような使えないものもあります。 正確性は自己責任なので、よく確認してから使いましょう!

まとめ

GitHub Copilotはプログラマーのように考えたりコーディングをすることはできませんが、標準的な実装や繰り返されるタスクでは、非常に良いコードの提案ができます。個人的な意見ですが、アプリ開発の案件が保守中心ではなければ、AIの恩恵を十分に受けることができます。もちろん人間と同じレベルではありませんが、それでも一緒に作れると言えるでしょう。各国で人材不足が深刻な問題である今、このようなツールが広く普及すれば、近い将来には常識となるかもしれません。

ご覧いただきありがとうございました!