プログラミングにおいてChatGPTやGitHub CopilotなどのAIを活用することで、開発効率を大幅に向上でき、学習者にとっても非常に有用です。
今回は以下について解説します。
- プログラミングで使えるAIツール
- 初心者はまずどのAIツールを使うべきか?
本記事は以下のような人にとって役立つかと思います。
- AI活用は気になるが、AIツールが色々あってよくわからない。
- プログラミング初心者でもAIツールを使ったほうがよいのか?まずはどれを使えば良いのかがわからない。
AIを活用することで、プログラミングや学習効率は飛躍的に向上します。一緒にAIの使い方を学んでいきましょう!
動画は以下にあります。
プログラミングで使える生成AIツール
プログラミングを支援するAIツールをおおまかに分けると以下の4つがあります。
- (1)コーディングを一部支援するAI
- (2)高度なコーディング支援を行うAI
- (3)アプリを自動生成するAI
- (4)汎用チャット型AI
以下がイメージです。
それぞれ、どのようなものかを簡単に説明します。
(1) コーディングを一部支援するAI
書きかけのコードの続きを予測してくれます。また、コメントを書くとそれに合わせたプログラムを提案してくれます。
最も有名なツールはGitHub Copilotでしょう。他にも、Tabnine、Amazon CodeWhispererなどがあります。
「賢い予測変換」のように、コーディングをアシストしてくれるんだね!
以下がVisual StudioでGitHub Copilotを使っている例です。
Productというクラスの意味を理解し、そのクラスで定義されていそうなプロパティ(Name、Price)を提案してくれていますね。
次のように、コメントに基づいてコードやメソッドを提案してもらうことも可能です。
この他に、コードの解説をしてもらったり、テストコードを作ってもらうことも可能です。
コードの意味まで踏み込んで提案してくれるのが、従来あった単純なコード補完機能との大きな違いですね。
GitHub CopilotはVisual Studio Code(VSCode)、Visual Studioなど様々な開発環境(と言語)で使うことができます。(参考)
Indivisual版の料金は1ヶ月間で10ドル、1年契約で100ドル(1ヶ月で約8.3ドル)となっています。(参考)
(2) 高度なコーディング支援を行うAI
(1)の発展版です。AIと会話をしながら、プロジェクト全体のコードを対象に、コード作成や修正といった作業を行います。
AIは人からの指示を受け、プロジェクト内で参照すべき複数のコードを確認しながら「ファイルやコードを一括で作成」してくれます。
先駆者としてはCursor(VSCodeをブランチして作った開発環境)があります。最近ではGitHubCopilotもこのような機能を備えています。
以下は、Visual Studio上のGitHub Copilotで機能追加をしている例です。Todoリスト管理アプリでTodoアイテムへ「作成日」を追加しています。
「作成日」を追加するため、以下の3箇所の修正案を同時に掲示してくれていますね。
- 1. TodoList.cs (データ定義)
- 2. TodoListService.cs (ビジネスロジック)
- 3. TodoList.razor (画面)
内容を確認し問題なければ、これらをコードベースへ反映させることも可能です。
この例では、参照するソースファイルを人が明示的に指定しましたが、どのファイルを参照するかの判断をAIに任せることも可能です。
GitHub Copilotの最新機能は最初にVSCodeに導入される傾向があるため、最新機能をすぐに試したい場合はVSCodeで試してみるとよいでしょう。
私はVisual StudioでC#アプリ開発がメインなので、「早くVisual Studioにも導入されないかなぁ」と待つことが多いですね。
(3) アプリを自動生成するAI
「こんなアプリが作りたい」という要望を伝えるだけで、 自然言語の要件からアプリ全体(データベースからUIまで)「必要なものを全部作成」してさらにデプロイしてくれます。
例えばbolt.newのようなサービスがあります。さらに先日(2024年10月末)、GitHub Sparkが発表され大きな話題になりました。
以下は、bolt.newで「プログラミング学習アプリ」を作ってみた例です。
要件を伝えると、AIがアプリ全体を作りはじめます。しばらくすると、アプリが完成です。
アプリ全体を自動でつくるなんてすごい!
そうですね。ある意味、AIを使ったプログラミングの究極の姿といえるかもしれません。
ただもちろん、「どのようなアプリも一発で必ず作れる!」というわけではないため、人が確認したり修正したりといったことも必要になります。
(1)~(3)で紹介したAIツールは、コーディングに特化しているため、開発環境に統合されている・作ったものをそのままデプロイできるなどの強みもあります。
(4) 汎用チャット型AI
ChatGPT、Claude、Perplexityなどのような対話型AIです。
コードの書き方を教えてくれたり、エラーの解決方法を提案してくれます。プログラムの設計相談やプログラミング以外の質問にも答えてくれます。
Web検索エンジンと連携して、最新のWebページ上の情報を引用した上で回答してくれるものもあります。これはPerplexityが有名ですね。
最近では、ChatGPTもWeb検索に対応しました。
汎用チャット型AIは開発環境と密に連携できるわけではありませんが、工夫して使えばプログラミングの生産性を大きく向上できます。
以下は、ChatGPTで「C#のラムダ式」について質問をしている様子です。
ラムダ式について具体例を交えながら丁寧に回答してくれていますね。
チャット型AIは汎用性が高く、アプリ開発のあらゆるタスク(要件定義、設計、コーディング、テスト)やプログラミング学習で活用できます。
以下の記事もよかったら参考にしてください。
また、わからない点があればさらに質問するなどチャット形式で議論できます。
プログラミングの専門的な知識をもつメンターにアドバイスをもらえるという感じかもしれませんね。
ChatGPT(OpenAI)、Claude(Anthoropic)などはAIの基盤となる大規模言語モデル(LLM)を自社開発していることもあり、最新技術がいちはやく使える点も魅力です。
私はアイデアのブレストから実装まで、日常的にチャット型AIを活用しています。
基本機能は無料で利用できますが、制限を解除するために有料プラン(月額20ドル)を検討してもよいでしょう。
それぞれの最も安い有料プランは一ヶ月で20ドルとなっています。
(参考:ChatGPT価格、Claude価格、Perplexcity価格)
AIツールの提示するコードや回答は常に正確とは限らないため、最終的な判断と責任はプログラマ自身にあります。
初心者はまずどれを使うべきか?
おすすめのAIツール
プログラミング初心者の方にはまずは以下をおすすめします。
- (4) 汎用チャット型AI(ChatGPT、Claude、Perplexityなど)
理由は以下です。
- 対話形式で学習:不明点を理解できるまで掘り下げて質問できる。
- 説明の難易度を調整:初心者向けにわかりやすい具体例を交えた説明など。
- Web検索連携による正確性の向上:情報の出典が明確になる。
このように、チャット型AIは「プログラミングメンターのような存在」として活用できます。
チャット型AIを学習に使う例
チャット型AIを学習に使う1例を紹介します。
以下はChatGPTをプログラミング学習に使うイメージです。
「DIコンテナ(依存性注入を扱うコンテナ)」について小学生にもわかるレベルで解説してもらっています。
この後さらに、具体例も掲示してもらえます。
この「記事を書くアプリ」の例は比較的わかりやすいように思います。DIコンテナを使わなかった場合(Before)、使った場合(After)が書かれているのがよいですね。
DIコンテナを使う方法のコードが全然わからないんだけど!「Service Collection」、「AddSingleton」、「AddTransition」…って何?
そんなときは不明点が理解できるまで質問しましょう!
なるほど…。わからないことがあれば遠慮なくどんどん聞いていけばよいのね。
人に聞くのと違い、遠慮なく何回でも聞けますよ!(しかも、同じことを何回聞いても怒られません(笑))
チャット型AIは他にも例えば以下のような活用方法があります。
- エラーの原因特定を手伝ってもらう
- 自分の書いたコードをレビューしてもらう
- 新しい技術やフレームワークの概要を学ぶ
- 特定のタスクに必要なライブラリやAPIの選定支援
「エラーの原因がわからず学習が進まない」となると、学習のモチベーションが低下してしまいますよね。
このようなときにもAIの助けを借りると問題解決が早まり、モチベーションを維持しやすくなるでしょう。
私自身、プログラミングについて新しいことを勉強し続けており、チャット型AIに日々助けられています。
チャット型AIを初心者がプログラミングでどのように活かせるかについては、また別の記事で詳しく紹介したいと思います。
チャット型AIの回答は非常に便利で、初心者が抱える基本的な疑問に対して高い正確性が期待できます。
しかし、前述した通りAIも完璧ではなく、誤った情報を提供する可能性があります。(まあ、人間でも間違えることはありますね)
そのため、書籍や公式ドキュメントの参照、専門家や人間のメンターに質問するといったことを併用するとよいでしょう。
AI活用の進め方
最初に述べた通り、まずは対話型AIの活用がおすすめです。
ChatGPT、Claude、Perplexityなどはそれぞれ制限があるものの無料でも使えるので、まずはぜひ試してみてください。
ただ、本格的に使う場合は、質問の回数制限などがない有料の契約をすることをおすすめします。
チャット型AI市場は競争が激化しており、各社の技術が日々進化している状況なので選定が難しいですね。
初心者がまず少し試してみる場合は、メジャーなものからどれか選べば、それほど違いはないかもしれません。
現在ですと、迷ったらChatGPTをまず試してみるのがよいのではないでしょうか。
ある程度、プログラミングやAIの活用方法に慣れてきたら、以下の(1),(2),(3)へ段階的にチャレンジしていくとよいでしょう。
- (1) コーディングの一部を支援してくれるAI
- (2) コーディングのより高度な支援をしてくれるAI
- (3) アプリを自動生成してくれるAI
(1),(2)についてGitHub Copilotは30日の無料トライアル期間(参考)もあるので、気軽に試してみることができます。
まとめ
プログラミングで使えるAIツールを紹介しました。
コーディングの一部を支援してくれるAI、さらに高度な支援を行ってくれるAIとしてGitHub Copilot、Cursorなどがあります。
アプリの完全な自動生成を目指したAIサービスとしてbolt.new、GitHub Sparkなどがあります。
汎用チャット型AIのChatGPT、Claude3、Perplexityもプログラミングでおおいに活用できます。
プログラミングの初心者/学習者は、「プログラミングメンター」のような「汎用チャット型AI」をまず使ってみるのがよいと思います。
プログラミングに関連する様々な事柄について、納得がいくまで質問したり、初心者向けにわかりやすく説明してもらうことが可能です。
とにかく、まずは使ってみましょう!
引き続き、プログラミングやAI活用について楽しく学んでいきましょう。