ChatGPT が世に出て、流行り出し、今ではビジネスの現場でも使われるようになっています。
そんな ChatGPT ですが、プログラミングの現場でも当たり前のように登場するようになりました。
今回は、プログラミングに ChatGPT を活用する方法や、おすすめの質問の仕方について解説します。
ChatGPTについての前提知識
ChatGPT とは
ChatGPTは、OpenAIによって開発された高度な言語モデルを基盤としたチャットサービスです。
元となるGPT(Generative Pre-trained Transformer)は、数十億から数百億のパラメータを用いて訓練されたモデルであり、テキストに対する理解能力が極めて高いです。
近年では、GPT-4によってさらに多様なメディア、例えば画像など、にも対応するようになっています。
このモデルは一般的な質問応答から専門的なプログラミングの支援まで、多岐に渡る用途で利用されています。
しかも、基本機能は無料で使えるため、広く普及しており、多くのユーザーが毎日活用しています。
ChatGPTの一番の特長はその「汎用性」です。
あらかじめ決められた質問に答えるチャットボットと違い、ChatGPTは遥かに高度な理解と生成能力を持っており、質問や命令に対する回答が非常に自然で精度も高いです。
とくにプログラミングの文脈で見ると、このChatGPTはコードの生成やバグの診断、さらにはプロジェクト計画までサポートできる多才なツールと言えるでしょう。
プロンプトとは
ChatGPTに対話や質問をする際に使用する文章やフレーズを「プロンプト」と呼びます。
このプロンプトは、ChatGPTがどのような回答や出力を生成するかを大きく左右します。
(実際にプロンプトを設計する作業を「プロンプトエンジニアリング」と呼びます)
具体的な使い方としては、例えばプログラミングのコードレビューが必要な場合、ChatGPTに「このコードに対してレビューをしてください」といった形でプロンプトを送信します。
そうすると、ChatGPTはそのプロンプトに基づいて、ソースコードのレビューコメントを生成してくれます。
重要なのは、プロンプトが明確かつ具体的であればあるほど、ChatGPTの回答も精度が高くなるという点です。
例えば、あいまいなプロンプトや不明瞭な指示を与えてしまうと、多くのケースに当てはまるだけでふわっとした回答しか得られない可能性が高くなります。
そのため、プロンプトエンジニアリングには、ChatGPTの回答に求める内容を明確にすることが重要です。
このあたりの「コツ」については、記事の後半で詳しく解説します。
ChatGPT がプログラミングに役立つ 5つの場面
ソースコードを書くとき
プログラミングの一番基本的な作業が、当然ながらソースコードを書くことですよね。
特に、使おうとしているプログラミング言語やフレームワークに慣れていない場合、コードを書くのは容易ではありません。
しかし、ChatGPTを使えば、そのような初心者でも、簡単にコードを生成することができます。
たとえば簡単なスクリプトを書きたいといった場合、明確なプロンプトを設定してChatGPTに要求を出せば、必要なコードを書いてくれます。
このような手法は特に、新しいプログラミング言語やフレームワークを学ぶ初期段階で有効です。
ざっくりとしたコードを生成してもらえれば、そのコードを読み解きながら、自分でコードを書き直すことができます。
このように、ChatGPTはプログラミングの学習を効率化するための強力なツールとなります。
たとえば、以下のようなプロンプトをChatGPTに送信するとどうなるでしょうか。
以下のようなPythonのソースコードを生成してください。
- 与えられたリストの要素をすべて足し合わせた値を返す関数
シンプルな質問であるため、そのまま使えるソースコードを得ることができました。
また、ソースコードに解説も丁寧につけてくれています。
もちろん、コード生成はChatGPTの補助の一つであり、最終的には人間がそのコードを理解し、必要に応じてカスタマイズや改善を行う必要があります。
それでも、ChatGPTのおかげで、プログラミングの学習効率が大幅に向上することは間違いありません。
※ただし、ChatGPTはあくまで「補助」のツールであるということを忘れないようにしましょう。
他の人が書いたソースコードを読むとき
ソースコードを読むスキルは、プログラミングにおいて非常に重要な要素です。
特に、他人が書いたコードを理解することは、プロジェクトに参加した際やオープンソースソフトウェアを活用する場合に不可欠です。
このような状況でChatGPTが役立つ一例として、コメントの追加や関数の動作解説が挙げられます。
例えば、特定の関数がどのように動作するのかを理解する際に、その関数の動作をプレーンテキストでChatGPTに説明してもらえます。
この説明を元に、コメントをソースコードに追加することで、後からそのコードを見た時に理解が容易になります。
また、特定のコードブロックが複雑で理解しきれない場面では、そのコードの主要な部分をChatGPTに入力して、それが何をしているのかを説明してもらうという方法もあります。
これにより、コードの動作を把握しやすくなるでしょう。
たとえば、以下のようなプロンプトをChatGPTに送信してみましょう。
以下のような複雑なPythonのソースコードがあります。
---
def calculate_sum(l):
sum = 0
for i in l:
sum += i
return sum
---
このソースコードで何をしているのか、説明してください。
以下のように、行ごとに細かく解説を付けてくれました。
これぐらい丁寧に解説してくれていれば、初心者の方でも読み解きやすいのではないでしょうか?
もちろん、あくまで ChatGPT はヒント程度と捉え、ご自身で読み解くことが重要です。
そして正確な動作を理解するためには、自分自身でのデバッグやテストが欠かせないことは忘れないようにしましょう。
ソースコードの間違い・バグを見つけるとき
ソースコードにバグが含まれていると、それが小さな間違いであってもプロジェクト全体に大きな影響を及ぼす可能性があります。
このような状況でChatGPTを活用すると、バグの特定と修正が少し容易になる場合があります。
具体的には、不明瞭なエラーメッセージに直面した際に、そのエラーメッセージをChatGPTに入力して、可能な原因や解決策についてアドバイスを求めることができます。
また、特定のコードブロックで何か問題が生じていると疑われる場合、その部分をChatGPTに示して、そのコードが何を行っているのか、どの部分が問題を引き起こしている可能性が高いのかを分析してもらうことも可能です。
さらに、修正後のコードをChatGPTに入力して、その修正が適切であるかどうかのフィードバックを受けることもできます。
では例えば、以下のようなプロンプトをChatGPTに送信してみましょう。
以下のようなPythonのソースコードがあります。
---
def sum_list(l):
for i in l:
sum = 0
sum += i
return sum
---
この関数は、引数として与えられたリストの要素をすべて足し合わせた値を返そうとしています。
しかし、実行しても正しい結果が得られません。
この関数のどこが間違っているのか、修正してください。
上記の例では、for ループの中で sum という、足し算用の変数を初期化してしまっているため、正しく足し算できません。
実際に ChatGPT に聞いたところ、問題点について見事に指摘してくれました。
しかも「どのように修正すればいいか?」まで具体例付きで示してくれているのはありがたいですね。
このようにして、ChatGPTはコードのデバッグ作業を少しでもスムーズに進めるための参考意見を提供してくれます。
もちろんこれも参考程度ではありますが、ChatGPTはバグの特定と修正において補助的な役割を果たすことができ、プログラミング作業を効率化できます。
ソースコードのリファクタリング(改善)をするとき
リファクタリングは、コードの外部から見た挙動を変えずに、内部の構造を改善する作業です。
これは、コードの可読性を高めるだけでなく、将来的なバグを防ぐためにも重要なプロセスです。
ChatGPTをリファクタリングに活用すると、この作業がだいぶスムーズになります。
例えば、特定の関数が冗長であると感じた場合、その関数のコードをChatGPTに見せて、「この関数をよりシンプルかつ効率的に書き換える方法は?」と問い合わせることができます。
他にも、複数の場所で同じようなコードが繰り返されている場面に遭遇したら、それを一つの関数にまとめるようChatGPTにアドバイスを求めることもできます。
では例えば、以下のようなプロンプトをChatGPTに送信するとどうなるでしょうか。
以下のようなPythonのソースコードがあります。
---
def get_even_numbers(numbers):
even_numbers = []
for num in numbers:
is_even = False
if num % 2 == 0:
is_even = True
if is_even:
even_numbers.append(num)
return even_numbers
---
上記のソースコードについて、何かリファクタリングのアドバイスはありますか?
上記の例では is_even という変数を使用して奇数・偶数を判別する関数ですが、変数をわざわざ用意しなくても書けます。
そんな罠を仕掛けつつ、ChatGPT に聞いてみましょう。
見事に期待した点を指摘してくれつつ、さらに他の書き方や、コメントについてもアドバイスをくれました。
※読みにくいと感じたら「初心者でも読みやすいコードにして」と伝えてあげればOKです!
このようにChatGPTは、コードスニペットを提供するだけでなく、そのコードの動作原理や、なぜそのようなリファクタリングが有用なのかについても説明してくれます。
これにより、単にコードを改善するだけでなく、リファクタリングの目的や方法についても理解を深めることができます。
ただし、ChatGPTの提案はあくまで参考の一つと考え、そのまま適用する前には十分なテストとコードレビューが必要です。
特に、複雑なアプリケーションやシステムに対してリファクタリングを行う場合は、慎重な確認作業が不可欠です。
要件定義書・設計書を作成するとき
プログラミングでの実際の現場や、個人でのアプリ開発では要件定義書や設計書を作る場合があります。
これらの文書は、プロジェクトのゴールや要件、設計の詳細を明確にするためのものです。
ChatGPTは、このような文書作成のプロセスをサポートする方法がいくつかあります。
たとえば、具体的な要件や機能についての記述をChatGPTに生成させることができます。
もしくは、まだアイデアが不明確な場合には、「このような機能を持つアプリを作りたい、どのような要件が考えられるか?」といった問いに対して、ChatGPTがリストアップしてくれます。
設計書についても同様で、例えばデータベースのスキーマ設計やクラス図、シーケンス図などの草案を考える際のヒントや方針を提供してもらえます。
これにより、文書作成の初期段階で時間を大幅に節約することが可能となります。
では例えば個人開発の場合を考え、以下のようなプロンプトをChatGPTに送信してみましょう。
以下のようなスニペットアプリを作成したいと考えています。
- ユーザーを登録できる
- ユーザーがスニペットを作成できる
- ユーザーがスニペットを編集できる
- ユーザーがスニペットを削除できる
- 他のユーザーが作成したスニペットを閲覧できる
- 他のユーザーが作成したスニペットを検索できる
- 他のユーザーが作成したスニペットにコメントできる
上記の要件を満たすアプリを作成するための設計書を作成してください。
この要件に沿った設計書として、考えられる技術選定までやってくれます。
もちろん、ある程度得意なプログラミング言語やフレームワークがあるならば、その旨も ChatGPT に伝える方が効果的です。
初心者の方は設計で悩むことが多いと思いますので、こういった場面でも活用してみてください。
ChatGPT をプログラミングに活用するコツ 3 選
ここでは、ChatGPTをプログラミングに活用する際のコツを 3つ紹介します。
今では当たり前になっているコツも含まれているかもしれませんが、改めて意識してみてください。
可能な限り具体的に指示を出す
ChatGPTに対する指示が明確で具体的であればあるほど、期待する回答やコードの精度が高まります。
なぜならば、ChatGPT はより文脈にマッチする回答を導き出そうとするからです。
例として、エラーに関する問題を解決したい場合を考えてみます。
エラーが出ています。
何が問題ですか?
このような曖昧な質問では、ChatGPTも効率的な回答ができません。
そこで、以下のように具体的なプロンプトを使用してみてください。
Pythonで以下のようなソースコードがあります。
...(略)
実行すると、以下のようなエラーメッセージが出ています。
---
IndexError: list index out of range
---
原因と解決策を教えてください。
このように具体的なプロンプトを設定することで、ChatGPTは正確かつ有用な回答を生成する可能性が高くなります。
解決したい問題を明確にする
問題解決に向けての質問が効果的になるためには、前提条件をきちんと設定する必要があります。
例えば、プログラミング中にエラーが出て困っている場合、以下のような情報を前提条件として伝えるといいでしょう。
- 使用しているプログラム言語(例:Python, JavaScript, Javaなど)
- 使用しているライブラリやフレームワーク(例:React, Django, Pandasなど)
- 問題の発生している具体的なコードの一部または全体
- エラーメッセージ
- 達成したい具体的な目標(例:ファイルを読み込んでデータを分析する、ウェブページで動的に要素を追加するなど)
前提条件をしっかりと設定したプロンプトの例は、以下のようになります。
Pythonを使用しています。
PandasライブラリでCSVファイルを読み込んで、特定の列の平均値を求めたいです。
次のコードでエラーが出ます。
---
import pandas as pd
...(略)
---
エラーメッセージは以下の通りです。
---
FileNotFoundError: [Errno 2] No such file or directory: 'sample.csv'
---
このように、前提条件を明示することで、よりピンポイントで困りごとを解決することができます。
少しずつ指示を出して段階的に回答を得る
ChatGPTとの対話を行う際、情報の質と精度を高めるために、段階的に指示を出すのもおすすめです。
一度にすべての情報を求めず、まずは基本的な質問から始めることで、特定の問題点や課題に対する更なる洞察を得ることができます。
例えば、プログラムのエラー解析を行いたい場合、初めに「このエラーメッセージは何を意味しますか?」と問うと、ChatGPTはそのエラーに対する基本的な解説を行います。
その後で、「このエラーを解消するためにはどうすればいいですか?」と質問することで、具体的な解決策についても知ることができます。
また、段階的に指示を出す利点として、途中で発生する可能性のある問題を早期に特定し、修正することができます。
例えば、複数のプログラム処理を組み合わせる際に、一つひとつ確認しながら進めることで、全体の処理が順調に行く確率が高まります。
ChatGPT をプログラミングに活用する際の 3つの注意点
ChatGPTをプログラミングに活用する際、そのまま回答を信じてしまうと、思わぬトラブルにつながる可能性があります。
そのため、以下の点に注意することが重要です。
出力されたソースコードを理解してから使う
ChatGPTが出力したソースコードは、そのままコピペする前に必ず理解するようにしましょう。
理由としては、コードの動作を把握することで、バグや予期せぬ挙動を早期に発見できる可能性が高くなるからです。
もしあなたが、例えば、ファイルを操作するスクリプトを生成した場合、そのコードが期待外れの動作をすると、重要なファイルを削除してしまう可能性もあります。
そのようなリスクを回避するためにも、ChatGPTによって生成されたコードの各行が何をしているのかを理解してから実行することが重要です。
また、コードを理解することで、自分自身のプログラミングスキルの向上にも繋がります。
理解した上で使うことが、ChatGPTを安全かつ効果的にプログラミングに活用する基本中の基本です。
間違った情報を出力する可能性があるのでチェックを怠らない
ChatGPTは非常に強力なAIですが、それでも完璧ではありません。
特に、複雑なプログラムや特定のフレームワークに特化した質問に対する回答は、必ずしも正確でない場合があります。
このような理由から、ChatGPTの出力に依存する前に、得られた情報やコードをしっかりと検証することが非常に重要です。
例えば、提供されたソースコードをそのまま利用する前に、まずはテスト環境で動作確認を行うようにしましょう。
また、出力された情報が疑わしい場合や、何らかのエラーが出た場合は、追加の質問をする、あるいは信頼性のある別の情報源で確認をするなど、複数の手段で検証を行うことが望ましいです。
ChatGPTは非常に便利なツールですが、その出力を鵜呑みにするのではなく、常に検証と修正のプロセスを経て使用することが、安全で効果的な活用方法です。
API キーなどの機密情報をプロンプトに含めない
ChatGPTを使用する際には、APIキー、パスワード、顧客データなどの機密情報をプロンプトに含めないように注意が必要です。
これらの情報は、OpenAIのデータベースに保存される可能性があり、将来的に第三者に漏れるリスクがあります。
特にAPIキーのような情報は、悪意のある第三者によって不正に使用される可能性があります。
そのため、ChatGPTを使用する際には、プロンプトに機密情報を含めないようにしましょう。
もしプロンプトの中でAPIキーが含んだ文脈がある場合には、送信する前にその部分を削除するなどの対策を行うことが重要です。
また、社内のソースコードやデータベースにアクセスするための情報をプロンプトに含めないようにすることも重要です。
ChatGPT に送信するということは、社外に情報を漏らす可能性があるということを忘れないようにしましょう。
※ChatGPTに学習させない設定方法もありますが、必ず社内規定などを確認してからご利用ください。
まとめ
ChatGPTは、プログラミングの様々な場面で役立つ強力なツールであることが、お分かりいただけたでしょうか?
しかし、ここまでお伝えしてきた通り ChatGPT の回答は鵜呑みにせず、常に検証と修正のプロセスを経て使用することが重要です。
ぜひ ChatGPT を活用して効率的なプログラミングライフを楽しんでください!
ChatGPT をプログラミングにもっと活用したくなった方へ
今回は最低限の使い方にしか触れませんでしたが、実際にはシステム設計や学習など、あらゆる場面で ChatGPT が活躍します。
しかし、具体的な活用方法を知らないと知っている人とでは開発効率が何倍も違います。
ぜひ一度、使い方をしっかりと学び、効率よく開発できるエンジニアを目指しましょう!
以下の Udemy 講座なら 3,000 円とお安く、料金以上のリターンを得られるので特におすすめです。
>>> 【ChatGPT】講座 システム設計・開発・学習のアシスタントとしてフル活用し業務効率化【エンジニア向け】
執筆時点で受講生も 8,000 人近くにのぼる人気の講座となっております。