1
/
5

ゲーム開発の現場で検証!GitHub Copilot利用のコツ

当社ミスリル株式会社では、エンジニアの生産性を高めるため、希望エンジニア社員全員に対してGitHub Copilotを導入することが決定されました!

導入までの検証結果とそこから見えてきたGitHub Copilotの活用テクニックを紹介したいと思います。

費用対効果は?エンジニアチームが価値を検証!

生産性向上の観点で注目されているGitHub Copilotですが、ゲーム開発における有用性はどの程度なのでしょうか?

当社のAI活用プロジェクトから有志のエンジニアメンバーが、1ヶ月間現場で使い倒して検証したので、その結果の一部をご紹介します。

※ AI活用プロジェクトとは、AIをゲーム開発の現場で応用するための検証・ツール作成・ワークフロー整備を目的とした社内プロジェクトです。興味がある方は下記記事もご参照ください。

大手ゲーム企業から転職して実感した圧倒的成長。エンジニアの技術的挑戦を支えるミスリルのカルチャーとは | MYTHRIL Inc.
こんにちは!ミスリル株式会社の成岡です。今回は現場で活躍している社員へインタビューを行い、ミスリルでの仕事内容や、実際に働いてみて感じたことについて、たっぷりと語ってもらいました!ミスリル入社後...
https://www.wantedly.com/companies/company_3239475/post_articles/505535

GitHub Copilotとは

GitHub CopilotとはAIを活用したコーディング支援ツールです。具体的には、コードを書き始めるとエディタの自動補完機能のようにコードの候補を提案する機能があります。従来の自動補完とは違い、「ここで書きたいコードを前後の文脈から汲み取って提案してくれる」使用感があることが特徴です。

裏側にはGPTをベースにした大規模言語モデルがあります。世界中の大量のオープンソースコードで学習されており、パブリックリポジトリで使用されている全てのプログラム言語をカバーしています。

またVisual Studio, Visual Studio Codeだけでなく、 RiderなどのJetBrainsのIDEとも簡単に連携できるため、多くのプロジェクトに導入しやすいことも特徴です。

GitHub Copilotの得意/不得意

GitHub Copilotを効果的に使いこなすためには、ChatGPT同様に、コンテキストを正確に与えることが重要です。大量のコードを学習したGitHub Copilotですが、前後のコードが無い空ファイルだけが与えられても、何が求められているのかを推論することは難しいということです。

GitHub Copilotは、現在編集中の箇所の前後のコード、コメント情報、あるいはIDEが開いているファイルの情報(後で詳しく説明します)など、様々な情報をコンテキストとして取得しています。

コンテキストの精度がコード提案の品質と密接に関連しているという特徴から、以下のような得意・不得意があることがわかります。

得意

  • 既に存在するクラスに機能を追加すること
    • そのファイルにすでに多くのコードが書かれていてコンテキストが豊富であるためです。
  • 汎用的なロジックを考えること
    • 例えばダイクストラ法で経路探索、二分探索で検索、メルセンヌ・ツイスタで擬似乱数生成など、アプリケーションやゲームのドメインに依存しない一般的なアルゴリズムを生成することが得意です。あるいは独自性が少ない(サンプルとしてよく実装される)一般的なFPSのインゲームなどのコード提案に対しては、精度が高まります。

不得意

  • 空白のファイルからフルスクラッチで機能を作ること
    • 新しいファイルを作る場合でも、テンプレートファイルから作成する方がコンテキストが豊富であると言えます。
  • アプリケーションやゲーム固有のロジックを生成すること
    • 例えばオリジナルのルールを持つ対戦カードゲームのインゲームロジックなど、似たコードが世の中に少なく、コンテキストとして仕様情報などが与えられていない場合、コード提案の精度は低下します。

※ AI技術は日々進化していますので、ここで紹介するGithub Copilotの特徴やテクニックは半年後には古くなっているかも知れません。この記事は2023年6月時点の情報を基にしていることをご了承ください。

GitHub Copilot利用のコツ6選

ここからは具体的な利用方法について見ていきましょう。
※ 例に出るソースコードは、この記事専用のサンプルとして用意しました。

1. 先にコメントを書く

GitHub Copilotに最もストレートにコンテキストを提供する方法は、コードを書く前にやりたいことをコメントとして記述することです。
例として「データベースから指定したuserIdのユーザーデータを取得する」コードをCopilotに提案させたASP.NET Core (C#)のコードを示します。

取得の方法など細かく指定することなく、人間向けに書く通常のコメントの粒度であっても十分な精度の提案を出してくれました。

人間がコードを提案するとしたら、頭の中で例えば以下のような情報処理が行われると思います。

  • このプロジェクトではORMにEFCoreを使用している
  • このクラスのメンバ変数には_userDbContextというユーザーデータを扱いそうな名前のDbContextが存在している
  • このメソッドの引数にuserIdが渡されているので、これが指定のユーザーを指すと推測できる
  • asyncメソッドなのでSingleOrDefaultよりもSIngleOrDefaultAsyncを選ぶのが適切だろう

こうした情報を開発者が明示的に指定することなく、GitHub Copilotが暗黙的にコンテクスト情報として収集しています。そのため、シンプルなコメントを書くだけで、「空気を読んで、コード提案をしてくれた」という感覚が得られました。

2. 既存のコードに対してコメントを提案させる

開発中のプロジェクトにおいて、「このコードは読みにくいからコメントを付け足したい」と思った時もGitHub Copilotは役立ちます。コメントを開始して1秒ほど待つと、前後のコードの内容に基づいた最適なコメントを提案してくれます。

こちらはグラフ探索のPythonコードでコメントを補完させた例で、コメントが入ることでコードの可読性が向上しています。

3. IDEを利用している場合は、開いておくべきファイルを選別する

GitHubによれば、IDEを使っている場合、編集中のファイルだけでなく、開いている別タブのファイル情報も参照してコード提案に影響を与えているとのことです。

つまり、編集中のソースファイルと似たロジックを持つファイルや、仕様情報が記載されたマークダウンのドキュメント等を別タブで開いておくことで、コード提案の精度が向上する可能性があります。

4. ドキュメントの作成にも利用する

コードの記述を補助するだけでなく、GitHub Copilotは設計書などのドキュメント作成においても有用な提案をしてくれます。例えば、データベースのテーブル情報の概要からDDLを生成したり、PlantUMLやMermaidでER図を書かせたりなど、応用の幅は広いです。以下はMermaidのER図を生成した例です。

5. Few-shot promptingを活用する

Few-shot promptingとはいくつかの出力例を与えることで、期待する出力を高い確率で得られるようにするプロンプトエンジニアリングの手法です。この手法はGitHub Copilotでも有効でした。

例えば、社内独自の形式でデータベースのDDLファイルを出力させたいとき、「このようなCREATE TABLE文の時は、このように出力をしてください」というサンプル情報をコメントとして記載しておくと、新しいCREATE TABLE文を入力として与えた時に、サンプルを参考に適切な出力を提案をするようになります。提案の精度が今一歩上がり切らないと感じた時に有効な手法だと考えています。

6. プラットフォーム固有のコードを書かせる

プラットフォーム固有であり、記述頻度が少なく忘れがちなコードを書かなければならない際にもGitHub Copilotは有効です。記述方法を調べる手間が省け、作業時間の短縮に繋がります。
下記にUnityでの使用例を示します。

この例では保持しているマテリアルの解放を補完しています。メモリリークを防ぐため、マテリアルは明示的に解放することが望ましく、オブジェクトが破棄される際のコールバックで解放するように提案されました。

こちらはシェーダプロパティIdの取得の例です。このようなプラットフォーム固有の記述についても高い精度で補完してくれました。


まとめ

GitHub Copilotは、前提知識がなくてもその便利さを実感できるほど強力なツールですが、この記事で紹介した得意・不得意や活用テクニックを知っておくことで、エンジニアの生産性はさらに高まり、プロジェクトに大きな価値をもたらすと考えています。当社では、今後もAIを活用したゲーム開発のプロセスの革新を続けてまいります。

\クライアントエンジニアのご応募はこちらから!/

クライアントエンジニア
求む!プロフェッショナルな集団で活躍するエンジニアのスペシャリスト!
現在は大手ゲーム会社との協業で、複数の新規ゲームの開発を行っています。 それとは別に自社開発のオリジナルタイトルの開発も進めており、自社IPのパブリッシュを目指しています。 創業者であり、代表取締役CEOの孟山自身も、大手ゲーム会社でディレクターなどを複数のタイトルで務めており、クリエイターが気持ちよく働ける環境作りを目指しています。 『マリオパーティ』『どうぶつの森』『シノアリス』『テイルズシリーズ』『スターオーシャンシリーズ』などの有名タイトルで開発の中心を手掛けたメンバーなどが揃っており、経験値の高い開発者が、数多く在籍しています。 ミスリルが目指すのは、「NEXT STANDARD.」。ユーザにとって価値のある体験を創造し、次世代のスタンダードを生み出すことです。「スタンダード」であることと、「まだ世にない新しいもの」。この二つを兼ね備えたゲームを創るため、しがらみや慣例にとらわれず、様々な取り組みにチャレンジしています。
MYTHRIL Inc.(ミスリル株式会社)

\サーバーエンジニアのご応募はこちらから!/

サーバエンジニア
品質の高いサービスを支える、サーバーエンジニア募集!
現在は大手ゲーム会社との協業で、複数の新規ゲームの開発を行っています。 それとは別に自社開発のオリジナルタイトルの開発も進めており、自社IPのパブリッシュを目指しています。 創業者であり、代表取締役CEOの孟山自身も、大手ゲーム会社でディレクターなどを複数のタイトルで務めており、クリエイターが気持ちよく働ける環境作りを目指しています。 『マリオパーティ』『どうぶつの森』『シノアリス』『テイルズシリーズ』『スターオーシャンシリーズ』などの有名タイトルで開発の中心を手掛けたメンバーなどが揃っており、経験値の高い開発者が、数多く在籍しています。 ミスリルが目指すのは、「NEXT STANDARD.」。ユーザにとって価値のある体験を創造し、次世代のスタンダードを生み出すことです。「スタンダード」であることと、「まだ世にない新しいもの」。この二つを兼ね備えたゲームを創るため、しがらみや慣例にとらわれず、様々な取り組みにチャレンジしています。
MYTHRIL Inc.(ミスリル株式会社)

\その他、各職種のご応募はこちらから!/

MYTHRIL Inc.(ミスリル株式会社)の募集・採用・求人情報 - Wantedly
MYTHRIL Inc.(ミスリル株式会社)の新卒・中途・インターンの募集が131件あります。気軽に面談して話を聞いてみよう。職種や採用形態からあなたにあった募集を見つけることができます。募集では「どんなことをやるのか」はもちろん、「なぜやるのか」「どうやるのか」や実際に一緒に働くメンバーについて知ることができます。
https://www.wantedly.com/companies/company_3239475/projects
MYTHRIL Inc.(ミスリル株式会社)では一緒に働く仲間を募集しています
12 いいね!
12 いいね!

同じタグの記事

今週のランキング

MYTHRIL Inc.(ミスリル株式会社)からお誘い
この話題に共感したら、メンバーと話してみませんか?