コード生成を実現するVS Codeの拡張機能

こんにちは。職業「戸倉彩」です。

Visual Studio Code(以下、VS Code)は、その拡張性の高さで世界中の開発者から支持されています。特に、「コード生成」を行なってくれる拡張機能は、プログラミング作業の効率化に大きく貢献しています。今回は、VS Codeで利用できるコード生成拡張機能を3つ選定し、紹介していきます。
※本記事は、2023年12月1日時点で公開されている情報に基づいています。

# 1. GitHub Copilot / GitHub Copilot Chat
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146388/8710f4d4-d4d3-ce31-d7d9-73c4b0153f92.png)
[GitHub Copilot - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146388/45a449ca-8459-2c4d-db84-ca6c32ffcdcd.png)
[GitHub Copilot Chat - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat) *プレビュー版

GitHubが公開している拡張機能。すでに1,000万以上もの数がダウンロードされています。
2023年に試す必要があるVS Code機能が1つあるとしたら、「GitHub Copilot」をオススメします。
このAI駆動のコーディングアシスタントは、入力中にインラインコード提案を提供し、生産性を大幅に向上させます。自然言語のコメントに基づいてコードを書く能力があり、ChatGPTに似たチャット機能も提供されています。AIアシスタントをワークフローに統合したい開発者に最適です。

コードに加えて、ターミナルのコマンド打ち間違えやエラーが発生した時も、修正案をクイックに提案してくれるのも助かります。

▼ コマンドの入力ミスによりエラー発生時のCopilotによるコマンド修正の提案の例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146388/7e340d7e-e5a2-0bfb-68f5-d13597cd3b59.png)


GitHub Copilotは、有料で提供されているサービスですが、個人で利用する場合には30日間の1回限りの試用版を設定することができます。ただし、試用版の申し込みの際に支払い方法の指定が求められ、30日以内に試用版をキャンセルしない場合は自動的に有料サブスクリプションに移行され料金が発生するためご注意ください。

[最新情報]
2023年11月30日(US時間)、GitHub Copilotアップデートがありました。今のところMonthlyベースでアップデートが提供されているようです。
* Copilotのアップデート 
    * メニューが更新され、アイコンからの操作が容易になりました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146388/e66944ed-048a-ce55-3d8a-47955488dca0.png)
    * JetBrains IDE向けCopilot拡張機能が改善され、提案されたコードを一語づつまたは一行づつ取り入れることが可能になり、必要な部分だけを選択して利用できるようになりました

* Copilot Chatのアップデート
    * GPT-4モデルに対応し、より正確で有用なコードの提案が可能になりました
    * エージェントと呼ばれる新機能が追加されました
    * 説明コンテキストが改善されました
    * ソース管理のコミットメッセージを✨アクションを使用して、自動生成できるようになりました
    ▼ 実際に操作を試してみたところ英語のみのようでしたが、いい感じのコミットメッセージになっていました。これでコミットメッセージに悩むことはなくなりそうです
    ![Copilot.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146388/1f924511-2677-7fe7-b8c6-46156803f96b.gif)




[参考リソース]
* [GitHub Copilot in VS Code - Visual Studo Code Docs](https://code.visualstudio.com/docs/editor/github-copilot)
* [GitHub Copilot の課金について](https://docs.github.com/ja/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot)
* [GitHub Copilot – November 30th Update](https://github.blog/changelog/2023-11-30-github-copilot-november-30th-update/)
* [GitHub Copilot Homepage](https://github.com/features/copilot)

# 2. Tabnine
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146388/1b2b1bb8-3c95-0649-372c-0466a4cb5786.png)
[Tabnine: AI Autocomplete & Chat for Javascript, Python, Typescript, PHP, Go, Java & more - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=TabNine.tabnine-vscode)

拡張機能の名前が長い...ですね。通称、Tabnineです。
こちらも入力中にかしこくコード提案を行ってくれます。あなたが入力したコードから学習し、現在のコンテキストとコーディングパターンに基づいて提案を行うことで、より速く効率的にコーディングを行う手助けをします。オープンソースデータでのみトレーニングされたAIを使用したい人にとって人気の拡張機能です。

# 3. ChatGPT (ChatGPT - Genie AI)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146388/0f48c8d8-f27b-037e-63d4-1cd53816da4e.png)
[ChatGPT - Genie AI](https://marketplace.visualstudio.com/items?itemName=genieai.chatgpt-vscode)

VS Code Marketplaceで「ChatGPT」で検索すると、実に275件もの拡張機能がヒットします。いろいろ試しているところですが、個人的にはこちらの拡張機能が一番しっくりきています。

OpenAIによって開発されたGPT-4、GPT-3.5、GPT-3およびCodexモデルに対応しています。
こちらも作業を効率化したい開発者の間で人気のある拡張機能の一つとなっています。
この拡張機能は、AI駆動のLLMであるChatGPTの機能を直接コーディング環境に統合します。コーディングの質問に答えたり、コーディングタスクのサポートなど、VS Codeから離れることなく助けを得ることができるので、開発者にとって使いやすさと効率性が定評です。
* GPT-3: 数百億のパラメータを持つ大規模な言語モデルで、自然言語生成と理解において高い能力を示します
* GPT-3.5: GPT-3の改良版であり、より洗練された応答と高度な理解能力を備えています
* GPT-4: GPT-3シリーズの後続モデルで、さらに高度な機能と精度を持ち、複雑な言語処理タスクに対応しています
* Codex: CodexはGPT-3を基に開発されたモデルで、特にプログラミング言語の理解とコード生成に特化しています。

# おまけ - watsonx Code Assistant for Z
2023年10月30日に、IBMが提供を開始したメインフレーム、IBM Z向けの生成AIを活用してコード生成を提供するサービスです。IBM Z用の **「COBOLのコードをJavaへ変換」** し、さらに新旧のコードの比較（現新一致テスト）や、日本語仕様書からのコードの生成なども可能なツールです。

このサービスの登場により、COBOLの専門知識を持つ開発者が少なくなっている問題に対しても、より広く使われているJavaに移植することでアプリケーション・モダナイゼーションの取り組みの手助けにもなることが期待されており、IBM Z上で展開しているアプリケーションの保守やサポートのしやすさにも貢献することに繋がりそうです。

企業向けサービスの有料サービスです。より詳細な情報が必要な場合は、日本IBMのホームページの相談窓口からお問い合わせください。

▼ デモ動画はこちらをご覧ください
<iframe width="560" height="315" src="https://www.youtube.com/embed/FJr0iKXKr3M?si=CKxYYGDSVnE8Gn-W" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

[参考リソース]
* [IBM、メインフレーム・アプリケーションのモダナイゼーションを加速するwatsonxの生成AI機能を発表 - ニュースリリース](https://jp.newsroom.ibm.com/2023-08-23-IBM-Unveils-watsonx-Generative-AI-Capabilities-to-Accelerate-Mainframe-Application-Modernization)
* [watsonx Code Assistant - 日本IBM](https://www.ibm.com/jp-ja/products/watsonx-code-assistant)

# コード生成を実現するVS Codeの拡張機能とうまく付き合うためのコツ
コード生成の拡張機能は、魔法ではありません。
拡張機能をインストールした後は、拡張機能の設定を自分のニーズに合わせてカスタマイズしてみましょう。また、近年、コード生成周りの技術進化も早いため、最適な拡張機能の選択と継続的な学習に努めることが生産性向上の鍵となります。

また、最初は小規模なプロジェクトや、特定の部分に限定して試験的に利用し、コードの質や効果を評価することを強くおすすめします。

# コード生成の拡張機能を利用する際に注意すべき点
大前提として、VS Codeを業務で使用する場合、使用する拡張機能も含めて企業のポリシーに沿って許可されているか事前に確認することが重要です。

下記でいくつかの注意すべき点をお伝えしておきます。
**1. セキュリティ**
生成されたコードのセキュリティを確認し、不正なコードや脆弱性が含まれていないかを検証する必要はあります。
**2. データプライバシー**
コード生成ツールが外部のAPIやサービスを使用している場合、送信されるデータのプライバシーの取り扱いについては理解しておきましょう。
**3. 依存性の管理**
依存関係のあるライブラリやフレームワークを自動的に追加する機能は便利ですが、不要な依存関係が増えないように管理することが大切です。
**4. 品質保証**
自動生成されたコードも、通常の人間によって作成したコードと同様に品質保証のプロセスを経る必要があると考えておいたほうが良いでしょう。
**5. ライセンスと著作権**
コード生成ツールが生成するコードのライセンスや著作権を理解し、適切に取り扱う必要があります。

今回ご紹介した拡張機能の具体的な使い方が知りたい場合は、インターネットやQiitaで検索して必要な情報を探してみてください。

Happy Coding!
X (Twitter)で最新情報配信中 [@ayatokura](https://twitter.com/ayatokura)