【GO RIDEエンジニアがレビュー!】GitHub CopilotはShopify開発に使えるか
ソフトウェア開発の世界では、生産性や効率性を高めるツールが開発されています。GitHub、OpenAI、Microsoftのコラボレーションで生成AIモデルを搭載したGitHub Copilotは、そのようなツールの1つです。Copilotは何を書きたいかを予測し、コードにすることができ、GitHub CopilotはVisual Studio Code、Visual Studio、JetBrainsスイートなどのIDEの拡張機能として利用できます。また、GitHubの公開リポジトリのコードを含む、一般に公開されているソースからの自然言語テキストとソースコードで学習されています。
Copilotは2つのプランがあり、月額$10の個人用のプランと月額$19ビジネス用のプランがあります。ビジネス用のアプリや商品の開発するには、ライセンス侵害やIPの知財の問題を避けるため、ビジネス用のプランをお勧めしております。個人用のプランでは、CopilotがAIモデルを訓練するためにあなたのプロジェクトのコードを使用することができます。ビジネス用のプランの場合、コードはクラウドに送られ、次に何を書くべきかの提案を受けた後、破棄されます。つまり、GitHubのAIシステムに自分の書いたコードをすべて渡したくないのであれば、ビジネス用のプランの方が良いでしょう。
GitHub Copilotの良い点
-
効率アップ
Copilotの特筆すべき機能は、AIによるコード補完です。特に簡単なシンタックスや関数につきまして、まあまあ綺麗なコードを作成し、もう少し開発が早くかけます。このツールは自分のコードの文脈を理解し、関連する行やスニペット、さらには関数を提案してくれます。これによって、コーディングのスピードが上がるだけでなく、複雑な構文を覚える際の認識負荷も軽減されます。Copilotの提案をすぐに使えるので、ドキュメントを探したり、ちょっとした構文エラーに対処したりする時間が減りました。また、新たな効率化により、全体像に集中できるようになり、複雑な問題の解決により多くの時間を割くことができるようになります。
-
学習と探求
生産性の向上だけでなく、Copilotは教育リソースにもなります。コードを生成してくれるので、新しいパターンやベスト・プラクティスを学ぶこともできます。もちろん、いつも完璧なコードを提出してくれていないですが、あくまでも新しいやり方の提案として受ければ、コーディングの視野が広がります。多用途で熟練したバリエーションができるようになります。
-
微調整とカスタマイズ
Copilotはプロジェクトのニーズと完全に一致しないですが、あなたの修正から学び、それに応じて提案を適応させることができます。このパーソナライズされたことは、時間が経つにつれてツールの有用性を高めてくれます。ある程度、コンテキストを理解することができます。例えば、REST APIを扱っている場合はREST開発に沿った提案をくれます。大体のやりたいことをよく理解できますが、正確に何を書きたいのかを理解できないケースの方が多いです。特に複雑なシステムやアプリの開発の場合にコンテキストの理解が弱くなります。
GitHub Copilotの弱点
-
コンテキストの理解不足
Copilotは自然言語のモデルを使用していますので、完璧なコードを書くわけではくて、アクセスできるコンテキストから可能な限り最良のコードを生成するように設計されています。提案したコードが常に動作しない場合やミスがかなり多いです。Copilotは限られたコンテキストしか保持できないため、プロジェクト内の別のところや同じファイル内で定義されている関数等利用できない可能性もあります。また、古いライブラリや言語や非推奨の使い方を提案することもありますので、提案されたコードには必ず確認とテストが必要になります。ただ、Copilotはあなたのコードから学んでいますので、いくつかの似たような関数を書く特に、最初の関数の提案が間違えっていても、2回目の関数を書く時に、Copilotはあなたが前のメソッドをどのように書いたかを学習し、かなり良い提案をしてくれるケースもあります。
-
提案の正確さ
Copilotが表示した全完成の平均26%をユーザーが受け入れています。つまり、正確な場合よりもミスの場合が多いです。ただ、完全なミスではなくて、コードを確認して、編集しましたら、使えるケースが多いです。私の場合だと、完璧な場合が15%、まあまあの場合は70%、完全に間違った場合は15%でした。また、完璧な場合は、10行のコードの提案等とかではなく、ほとんどの場合、書いている中のコードの行を完成させるのに1〜2行の提案であることでした。また、非常に一般的なプログラミングのパターンに関することには正確率が少し上がります。関数やクラスを書く時に、関数に詳細の名前をつけていると、提案は少しより良くなるケースもあります。
Shopify開発でGithub Copilotを利用する
Node.jsやRubyといったShopifyが推奨する言語でコードを書く場合はCopilotが上記の良い点と弱点を感じました。残念ながらCopilotは必ずしもShopifyのAPIに精通しているわけではなく、専門的な知識にはあまりなかったです。しかし、自分が書いたコードから文脈の手がかりを拾って学習し、その知識を使って、少し何を書こうとしているものを最適に予測することがよくなります。つまり、Shopify関連の開発経験には、通常の開発経験とほぼ同じでした。ただ、CopilotはそこまでShopifyの専門のAPIの知識はあまりなくて、Copilotで生成されるコードは、他のコードと同様にShopifyのドキュメントを確認しないといけないです。Shopifyのドキュメントは最も正確な情報を得るのが最善です。また、少し残念ですが、Copilotはliquidのようなテンプレート言語ではそこまで効果がないことがわかりました。提案の精度はかなり落ちますが、繰り返しますが、Copilotがあなたのコードから学習するにつれて、使用すればするほど提案は少し良くなります。
Github Copilotの感想
GitHub Copilotのようなツールを使うことで、開発者の仕事のやり方が少し変わるようになると思います。以前のワークフローは、アプリケーションに何をさせたいかを考え、それをプログラミング命令で書き、問題がある時にStackOverflowに確認して、解決をコピーペーストとかすることです。Copilotでは継続的なフローではなく、コードを書き始めて、途中でCopilotが提案をくれて、それを確認してから、使うか、編集するか、無視するかを決めることになります。コードレビューのスキルがもっと大事になります。良い意味でも悪い意味でも、本当に誰かと一緒に仕事をしているようなものです。もちろん最終の決断、大まかなアーキテクチャやストラクチャ、テスティング等はまだ開発者のお仕事になります。
Copilotはもちろんいつも信用できないですが、あくまでも良いスタート地点として使用できるかと思います。Copilotがあなたの知らないクラスや関数を提案してきたら、それについて時間をかけてオンラインで調べられます。コードが提案されたら、それが十分に最適化されているかどうかを判断することが重要し、多くのことを学ぶことができます。
結論として、GitHub Copilotの使用にはまあまあ満足しています。開発を少しスピードアップしてくれて、短くて、難しくないコードやコメントを書いたりする時間を節約できます。スピード感は10%ぐらい上がったと思います。ただ、もちろんそのプラス10%は純粋にコードを書く側だけの話になり、ユーザー要件の収集・分析、ユーザーのニーズを技術仕様へ変換、システムデザイン等のタスクにはまだ役に立てないです。Copilotをツールとしてワークフローに取り入れることによって、開発者としてのメリットをもたらすことができ、自分のスキルを補完し、コーディングを増幅させるサポート仲間として使用できます。