公開からわずか2ヶ月で1億人以上のユーザーを獲得した、OpenAI社が提供するAIサービス「ChatGPT」。今世界中で最も注目されているAIツールだといえるでしょう。
幅広い質問に対応できることで知られるChatGPTは、プログラミング作業にも大いに役立ちます。ただ、プログラミングに活用できるイメージが湧かない人は多いですよね。
使い方を知らなければ、効果的に活用することは困難です。
そこで、今回はChatGPTでプログラミングの作業を効率化する方法を、言語別のコード例も交えて解説します。プログラミングにChatGPTを活用するメリットやコツ、プロンプトへの質問の仕方も紹介するので、ぜひ参考にしてください。
なお、次の記事ではそもそもChatGPTとは何なのか、その特徴をサービスの仕組みやできること、料金なども踏まえ詳しく解説しているので良ければ参考にしてください。
→ ChatGPTとは何かをわかりやすく解説!仕組みやできることも簡単に紹介
ChatGPTを活用すればプログラミング作業の効率化が可能
冒頭で触れたとおり、ChatGPTを活用すればプログラミング作業の効率化が可能です。その理由は2つあります。
1つは、やりたいことをテキストで入力することで、それをソースコードに変換できるからです。一般に、プログラミング言語で記述するよりも、普段から使い慣れている日本語でやりたいことを説明するほうが時間はかからないでしょう。
もう1つは、自分がよく知らないプログラミング言語でも、ソースコードを記述できるからです。通常プログラミングを行う際には、事前にある程度学習しておく必要があります。しかし、ChatGPTを活用したプログラミングであれば、通常より大幅に少ない学習時間で同じクオリティのものを作成可能です。
以下の例ではJavaScriptを用いて電卓を作成していますが、JavaScriptをまったく知らない人でも同じように電卓を作成できます。
6割以上が「ソースコードの記述」にChatGPTを活用
コンサルティング事業などを行うINTLOOP社がITエンジニア173名以上に対して実施した調査によると、6割以上がChatGPTを含むGenerative AIを「ソースコードの記述」に利用しているのがわかりました。
ITエンジニアは業務の中で、自身が詳しく理解していない言語や処理を扱わなければならない場面があります。このとき、従来であれば自身で勉強や調査をして問題を解決するしかありませんでした。
しかしChatGPTの登場によって、状況は大きく変化しました。プログラミング言語の文法や構文はChatGPTが補完してくれるため、経験の少ないITエンジニアでも実用的なソースコードを記述できます。
このような利点から、ソースコードの記述にChatGPTを活用する人が増えています。そして今後も増え続けていくことは想像に難くありません。
活用者の8割以上が作業効率化を実感
同調査では、85%もの人が「Generative AIの活用が業務効率化に繋がっている」と回答しています。実際に業務効率向上を実感している人が多いことからも、Generative AIの有用性がよくわかります。
例えばChatGPTを使ってコーディングやデバッグを短時間で終わらせることができれば、システム全体の構造設計などの複雑で重要な問題により多くの時間を充てられるようになります。
単純な業務はChatGPTに任せ、人間にしかできない仕事に集中できるようになったことで、多くのITエンジニアが作業効率向上を実感しているのです。
なお、下の記事ではChatGPTで効率化できる業務を、企業の導入事例も交え詳しく解説しているので、あわせて参考にしてください。
ChatGPTで効率化できるプログラミング作業4つ
ここからは、ChatGPTで効率化できるプログラミング作業を4つにまとめて紹介します。
なお、INTLOOP社がITエンジニア173名以上に「どのような業務にChatGPTを活用しているか」を聞いたところ、次のような回答が多くを占めました。プログラミングにChatGPTを活用する際の参考にしてください。
コーディング
コーディングはプログラミング言語を用いてソースコードを書いていく作業です。上グラフの「ソースコードの記述」にあたります。
実際に、有名な「FizzBuzz」問題(1から100までの数字を出力し、3の倍数で”Fizz”、5の倍数で”Buzz”、15の倍数で”FizzBuzz”と出力する)をChatGPTに解いてもらいます。
生成されたコードを実行すると、問題文で指定したとおりの実行結果となりました。そのほか、ToDoリストやカレンダーの作成なども試してみましたが、概ね期待どおりのコードが生成されました。
このように、シンプルな指示であれば十分実用的なコードを得ることができます。
仕様書・設計書の作成
簡単な開発では先にプログラムを作ってから、後追いで設計書を作成することもありますよね。ChatGPTは、ソースコードをもとに仕様書や設計書を作成できます。上グラフの「ドキュメンテーションの作成」や「仕様書・設計書の作成」にあたります。
HTML,CSSとJavaScriptで作成したシンプルなTodoリストのソースコードをChatGPTに入力し「以下のソースコードをもとに、仕様書を作成してください」と指示します。
すると、以下の仕様書が生成されました。
ChatGPTで生成された仕様書(一部抜粋)
概要、外観、機能の3項目にわかりやすく整理されており、機能の説明も過不足ありません。あとは必要に応じてフォーマットを整えれば、仕様書として活用できそうです。
エラー/バグの特定・修正作業
エラー/バグの原因を探したり、修正したりするといった使い方もあります。上グラフの「デバッグ作業」にあたります。
先ほど生成された「FizzBuzz」問題のソースコードにバグやエラーを混ぜ、ChatGPTに修正してもらいました。このとき、ソースコードだけでなくプログラムの仕様も一緒に入力するのがポイントです。
生成されたソースコードでは、こちらが仕込んだバグやエラーがすべて解消されました。構文エラーだけでなく、仕様との差異を正しく検出できています。
作成コードのレビュー作業
作成コードのレビュー作業とは、出来上がったプログラムが規約に沿って正しくコーディングされているか、設計通りの機能を満たすかを確認する作業です。
レビューでの指摘事項は、リファクタリング(プログラムの動作を変えずに内部構造を整理すること)やコメントの追加などをおこないます。上グラフの「ソースコードレビューのコメント作成」にあたります。
ChatGPTを使って、先ほどの「FizzBuzz」問題のソースコードのレビュー作業を行います。結果がわかりやすいように、あえて必須ではない変数を追加したり、インデントをずらしたりした状態で実施しました。
ソースコードは適切にリファクタリングされ、わかりやすいコメントが追加されました。レビュー作業を人間が目視で行うのには限界があるため、ChatGPTを活用するのが効果的です。
ChatGPTを活用したプログラミングのコード例
ChatGPTは幅広いプログラミング言語に対応しています。ここでは一例として、主要な言語11種をピックアップして、ChatGPTを活用したプログラミングのコード例を紹介します。
HTML/CSS
HTML/CSSはWebページの構造や見た目を定義するための言語です。厳密にはプログラミング言語ではなく、HTMLはマークアップ言語、CSSはスタイルシート言語に分類されます。
Webアプリケーションを作る際にはほぼ必須の言語なので、他のプログラミング言語とあわせてここで紹介します。
ここではChatGPTを用いてポートフォリオ用のテンプレートを作成してもらいました。
実際に生成されたWebページがこちらです。シンプルなデザインですが、少し手直しすれば実際にポートフォリオとして使うこともできそうです。
JavaScript
JavaScriptは、Webページに動きをつける際によく使われます。今回はシンプルな電卓を作ってもらいました。
Webページ上で動作する言語なので、HTMLとCSSで土台を作り、JavaScriptで電卓の計算を行っています。生成された画面はこちらで、ボタンで数字を入力すると、問題なく四則演算ができます。見た目が通常の電卓と同様のレイアウトになっているのも優れているポイントです。
PHP
PHPはサーバーサイドのスクリプト言語で、主にWebアプリケーションの開発に使用されます。ここでは例として、ブログシステムを作成してもらいました。
驚くべきことに、特に指示はしていないにも関わらずデータベースに接続する仕組みまで実装されています。投稿されたブログ記事を保存するためにデータベースが必要だとChatGPTが判断したのでしょう。
投稿、閲覧、編集、削除という4つの機能ごとに別々のPHPファイルが生成され、さらにデータベース作成用のSQLまで生成されていました。
Python
PythonはAIや機械学習の分野でよく使われるプログラミング言語で、情報収集や高度な計算に適したライブラリやAPIが多数提供されているのが特徴です。ここでは、東京都の天気を取得し表示するプログラムを作成してもらいました。
指示どおりのプログラムを作成してくれました。注目すべきは、質問文では指定していないのに、天気情報取得に適したAPIのOpenWeatherMap APIを利用している点です。Pythonそのものだけでなく、周辺のライブラリを活用する能力をChatGPTが有していることがわかります。
Ruby
Rubyは、Web開発やスクリプト処理に用いられる汎用プログラミング言語です。ここではじゃんけんゲームを作成してもらいました。
1、2、3がそれぞれグー、チョキ、パーに対応しており、ユーザーが1から3のいずれかを入力することで勝敗が画面に表示されます。このように、ユーザーからの入力によって動作が変わるプログラムも簡単に作成できます。
Java
JavaはWeb、モバイル、組み込みなど幅広いシステムに用いられるプログラミング言語です。ここでは、JavaのフレームワークであるSpring Bootを利用したサンプルWebアプリケーションを作成してもらいました。
Javaだけでなく、Spring Bootの知識も求められる質問でしたが、適切な回答を得られました。フレームワークに関する質問にも対応可能であることがわかります。
C言語
C言語は組み込みシステムやコンパイラなど、効率的なメモリ管理を求められる分野でよく使われています。今回は、初心者がつまずきがちなファイル操作のサンプルを作成してもらいました。
ポインタなどC言語独特の記述にしっかり対応できています。
C++
C++は、その処理の速さからゲーム開発によく用いられるプログラミング言語です。そこで、コンソール上で動作するシューティングゲームを作成してもらいました。
自機が「^」という文字で表現されており、ユーザーの入力に応じて上下左右に動く仕組みが実現できました。とはいえまだまだ土台部分だけなので、シューティングゲームのように複雑なプログラムをすべて生成することは難しいようです。
C#
C#は、.NETフレームワークを使用したデスクトップアプリケーションの開発に広く利用されています。ここでは、.NETフレームワークを利用してカレンダーアプリを作成してもらいました。
C#の.NETフレームワークにも難なく対応できており、Windowsフォームを利用したアプリケーションを生成してくれました。
VBA
VBAはExcelなどのMicrosoft Office製品内で利用されるプログラミング言語です。ここでは、Excel自動化処理のサンプルを作成してもらいました。
ソースコードだけでなく、Excel上でVBAを利用する方法も回答に含まれています。また今回はサンプルなのでセル範囲の合計という簡単な内容ですが、うまく指示すれば煩雑な作業を自動化する用途でも使えそうです。
Go言語
Go言語は高速な実行速度が特徴のプログラミング言語で、並行処理を得意としています。そこで、並行処理のサンプルを作成してもらいました。
task1とtask2が定義されており、メッセージが表示されるタイミングでこの2つのタスクが並行に実行されていることがわかります。
ChatGPTでプログラミングする4つのコツ
ChatGPTには「回答の精度が質問の質に左右される」という性質があります。つまり「うまく質問できれば高精度な回答を得られる」ということです。
それではChatGPTでプログラミングする際、高精度な回答を得るためには、どのようなことを心がけて質問すればよいのでしょうか。ここからは、ChatGPTでプログラミングする際のコツを、4つにまとめて紹介します。
具体的かつ明確な要望を出す
ChatGPTに質問する際は、なるべく具体的で明確な要望になるようにしましょう。あいまいな指示や解釈の仕方が複数あるような指示をすると、期待した回答を得られないことがあります。
悪い質問の例は「エラーが出たのですがどうすればよいですか?」などです。これではプログラミング言語やエラーの種類が質問文からわからないので、有効な回答を得ることは難しいでしょう。
そこで、質問をより明確にしてみましょう。具体的には、実際に出ているエラーメッセージやエラーが出ているコードそのものをChatGPTに入力すると効果的です。
例えば「Pythonでプログラミング中次のエラーが出たので、対処法を教えてください。エラーメッセージはXXXXです。エラーが出ているコードは以下のとおりです。(コードを貼り付ける)」という質問の仕方であれば、適切な対処法を得られる可能性がぐっと高まります。
「前提条件」を指定する
質問する際、前提条件を明示しておきましょう。前提条件とは、使っているプログラミング言語やライブラリ、フレームワークなどの環境面の情報や「今自分が何をしようとしているのか」といったことです。
前提条件を指定するおすすめの方法は、質問文とは別に前提条件を入力する欄を設け、箇条書きで必要な情報を列挙することです。こちらの画像を参考にしてみてください。
前提条件を指定しないと、意図したとおりの回答を得ることが難しくなります。極端な話、まったく別のプログラミング言語についての回答が返ってくるかもしれません。
先ほどと同じ質問文でも、前提条件を記載しなかった場合、まったく違う回答が返ってきました。このように、前提条件の有無で回答の精度は大きく変わるのです。
段階的に指示を出す
ChatGPTでは、得られた回答に続けてさらに質問ができます。これを繰り返して、段階的に指示を出すことでより詳しく情報を得られます。
よくある使い方は、プログラミング用語の説明文中に知らない単語があったとき、さらに質問して掘り下げていく方法です。例えば「オブジェクト指向について簡単に説明してください。」という質問に対して、以下のような回答を得られたとします。
このとき「継承」がよくわからなければ「継承についてより詳しく説明してください。」のように続けて質問できます。すると、継承のより詳しい説明を得ることができました。
このように求める回答を得られるまで対話を続ける手法は、こちらの記事でも解説しています。ChatGPTで効果的なプロンプトを作るコツを紹介しているので、ぜひこちらも確認してみてください。
プラグインを活用する
ある程度ChatGPTの使い方に慣れてきたら、プラグインを活用するとより便利にChatGPTを使えるようになります。プラグインとは、ソフトウェアやブラウザに追加機能を提供するもののことです。ただしChatGPTのプラグインは、有料版「ChatGPT Plus」のユーザーだけが利用できる点に注意してください。
ChatGPTの公式プラグインとしては「Code Interpreter」が提供されています。Code interpreterを使うことで、ChatGPT上でPythonコードの実行やファイル読み込みができるようになります。
そのほかにプログラミングに役立ちそうなプラグインは「Show Me Diagrams」です。これを有効化すると、システム構成やプログラムを図解できるようになります。
なお、下の記事ではChatGPTのプラグイン機能とは何なのか、その特徴を導入方法や使い方も交え詳しく解説しているので、良ければ参考にしてください。
ChatGPT以外でプログラミング作業の効率化に役立つツール
ここからは、ChatGPT以外でプログラミング作業の効率化に役立つツールを3つ紹介します。
GitHub Copilot
GitHub Copilotは、コメントや関数名を入力すると、AIが自動的にソースコードを提案してくれる機能です。GitHubが保有する膨大なソースコードをもとに学習しているので、高品質なコードをお手軽に利用できます。
IDE(統合開発環境)やテキストエディタのプラグインとして提供されており、以下の開発環境で提供されています。
- Visual Studio Code
- Visual Studio
- Vim
- Neovim
- JetBrains
価格は個人用なら月額$10となっています。ChatGPTが幅広い質問に対応できるのに対して、GitHub Copilotはコーディングに特化しているので、自身の用途に合わせて使い分けるとよいでしょう。
Visual Studio IntelliCode
Visual Studio IntelliCodeは、Microsoft社が提供するVisual StudioやVisual Studio Code内で動作するコード補完ツールです。機能はGitHub Copilotに似ており、入力内容をもとにAIがコードを提案してくれます。
GitHub Copilotとの最大の違いは、サポートしているプログラミング言語は少ないものの、無料で利用できるという点です。Visual StudioやVisual Studio Codeを使っている場合は、とりあえずVisual Studio IntelliCodeを試してみることをおすすめします。
Tabnine
Tabnineも、GitHub Copilotと同様にコードの自動提案機能を提供するツールです。ChatGPT以外のツールと紹介しましたが、実はTabnineはChatGPTのAPIを利用しています。
したがって、ChatGPTのように自然言語でコード生成を指示することもできます。GitHub CopilotとChatGPT両方の機能をあわせ持っているイメージです。
利用できる開発環境の一例は、以下のとおりです。
- Visual Studio Code
- Eclipse
- IntelliJ
- Android Studio
コード補完だけであれば無料版でも利用できますが、自然言語によるプログラミング機能を使いたい場合は月額$12のPro版を利用しましょう。
ChatGPTでプログラミングする際の注意点
ここまでで解説したとおり、ChatGPTは優秀で便利なツールですが、決して万能ではないということを忘れてはいけません。
事実、INTLOOP社がITエンジニア173名以上に「Generative AIの利用に関して直面した問題はなんですか」と聞いたところ、8割弱が「信頼性・精度に問題がある」と答えています。
そこで、ここからはChatGPTでプログラミングする際の注意点を、3つにまとめて解説します。
回答の精度にはムラがある
ChatGPTの回答の精度にはムラがあり、ときには誤った情報が含まれている場合があります。生成されたコードを鵜呑みにするのではなく、必要十分な機能が実装されているか、バグが含まれていないかを自身の目で確認することが重要です。
また「回答の精度が質問の質に左右される」という性質については、先ほど解説したとおりです。なるべく精度の高い回答を得られるように、質問の仕方にも気を配りましょう。
複雑な要望には応えてもらえない可能性がある
ChatGPTは単純な機能の実装では力を発揮しますが、複雑な要望には応えてもらえない可能性があります。例えば「バグのないWebアプリケーションをゼロから設計し、コーディングする方法を教えてください」といった大規模で複雑な質問に対しては、適切な回答を得ることが難しいでしょう。
ChatGPTでコーディングする際は、実現したいことをなるべく細かく分割して機能ごとに質問すると、期待どおりの回答を得られる可能性が高まります。
機密情報や個人情報は共有しない
ChatGPTとの会話の中で、パスワードやアクセストークン、個人情報などの機密情報を共有することは絶対に避けましょう。なぜなら、ChatGPTは会話データを学習に使うことがあり、情報漏洩に繋がるかもしれないからです。
実際に2023年6月に公開された下記の記事では、10万以上のChatGPTアカウントが盗まれたと報じられています。
ChatGPTアカウントが10万以上盗まれる、機密情報漏洩の恐れ
ChatGPTは便利なツールである反面、悪用されたときのインパクトも大きなものになります。機密情報や個人情報を入力していないか、十分に注意しながら利用しましょう。
より効果的にChatGPTでプログラミング作業の効率化を目指すなら
ここまでで説明したとおり、現状ChatGPTには信頼性や精度に課題があります。そのため、より効果的にChatGPTを使うには、ChatGPTの活用法だけでなく自分自身もプログラミングスキルを身に着けていることが重要です。
プログラミングスキルを身に着けることで、下記のようなメリットがあります。
- ChatGPTが生成したコードの信頼性を自分で判断できる
- ChatGPTに、より具体的な指示を出せるようになる
- ChatGPTの回答をスムーズに理解できるようになる
とはいえ、プログラミングスキルを独学で身に着けるのは時間がかかりますし、途中で挫折してしまうことも少なくありません。「不明点を聞けない」や「エラーを解決できない」などの理由で、約90%の独学者が脱落してしまうと言われています。
そこでおすすめしたいのが、SAMURAI ENGINEERの「業務改善AI活用コース」です。
SAMURAI ENGINEERの「業務改善AI活用コース」では、下記の4つの仕組みで挫折を防ぎつつ、最速でAI時代に活躍するスキルを習得できます。
- 経験豊富な現役エンジニア講師による専属マンツーマンレッスン
- 平均回答時間30分以内のQ&A掲示版
- 講師に加えて学習コーチがスキル習得を後押し
- 卒業後も教材やQ&A掲示板、転職サポートを継続的に利用できる
プログラミング学習に不安や悩みがある人は、まずは無料カウンセリングでプロに相談してみてください。
公式サイトで詳細を見るChatGPTでのプログラミングにまつわるFAQ
最後に、ChatGPTでのプログラミングへのよくある質問にまとめて回答します。
どう質問すればいいのかわからない時はどうすればいいの?
ChatGPTへの効果的な質問方法は、ある程度型が決まっています。事前にその型を調べておけば、あとはキーワードを当てはめていくだけです。
こちらの記事ではChatGPTで活用できるプロンプトの型をいくつも紹介しているので、迷ったときは参考にしてみてください。
ChatGPTがあればITエンジニアはいらなくなる?
仮にChatGPTが普及したとしても、ITエンジニアがいらなくなることはありません。
あくまでもChatGPTはプログラミングの一部を補助するツールで、その能力には限界があります。システム全体の設計や複雑な問題のデバッグなど、高度な技術的判断は人間の役割です。
INTLOOP社のアンケート調査でも「Generative AIによりITエンジニア業務がなくなる不安がありますか」という質問に対して「とても不安を感じている」という人は4.7%のみという結果が出ています。
一方で、単純なITエンジニア業務はすでにChatGPTに奪われつつあります。今後ITエンジニアとしての価値を高めるには、人間ならではの高度なプログラミングスキルを身に着けることが重要です。
まとめ
今回は、ChatGPTでプログラミング作業を効率化できることや、その具体的な方法について解説しました。ChatGPTの使い方にはさまざまなテクニックがあり、質問の仕方によって得られる回答の質が変わることを理解していただけたかと思います。
今後、ChatGPTを使いこなせるかどうかでITエンジニアの業務効率は大きく差がついていきます。まだChatGPTを利用していない人は、ぜひ自身の業務にChatGPTを取り入れられないか考え、実践してみてください。
なお、次の記事ではChatGPTがどのようにビジネスで使われているのか、その活用例を詳しく解説しているので良ければ参考にしてください。