ChatGPTをプログラミングに活用する方法とは?実践形式で解説!

ChatGPTをプログラミングに活用するにあたり、

・ChatGPTはプログラミングサポートツールになるんだろうか…。
・ChatGPTで正確なプログラミングコードを取得する方法が分からない…。

と悩んでいる方もいらっしゃるのではないでしょうか。

ChatGPTは、一般的な情報収集や文章作成だけでなく、プログラミング学習やコードの実装にも活用できるツールです。この記事では、ChatGPTをプログラミングに活用する具体的な方法やコツ、利用時の注意点について解説します。

ChatGPTはプログラミングのサポートツールに最適!

ChatGPTとは、OpenAI社が開発する対話型AIです。ChatGPTでは、大量のテキストデータをもとに構築された大規模言語モデルのGPT-3.5やGPT-4が利用されています。

学習したデータをもとに、高速かつ正確にプログラムを生成できることがChatGPTの特徴です。ただし、誤った情報が出力される場合もあるため、あくまでもエンジニア向けのサポートツールとしての利用が推奨されます。

多様なプログラミング言語に対応

ChatGPTは幅広いプログラミング言語の入出力に対応しています。JavaやC言語、Python、JavaScriptなど、主要なプログラミング言語に対応可能です。さらに、SwiftやKotlinといったモバイルアプリ向けの言語や、R言語、MATLABなど数理系に特化した言語にも対応しています。

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

ChatGPT×プログラミング|活用事例5選

ここでは、プログラミングのサポートツールとしてChatGPTを活用する具体例を5つ紹介します。解説に使用している開発環境は次の通りです。

ChatGPTのプラン:ChatGPT Plus(有料版)
ChatGPTの言語モデル:GPT-4
OS:Windows11 Home
Pythonのバージョン:3.11.4
Node.jsのバージョン:18.15.0

活用例1. プログラムの作成

実装したい処理の流れや使用する言語などを含めてプロンプトを作成すると、プログラムコードを出力させることが可能です。単なるプログラムの作成だけでなく、コメントの挿入や関数についての説明、出力結果の提示なども指示できます。

例えば、Pythonのプログラムコードを作成するプロンプトの例は次の通りです。

Pythonでプログラムコードを作成したいです。プログラムの目的は、ユーザーから入力された3つの数値を小さい順に並べることです。次のような流れで処理を行います。  

・「3つの数字をカンマで区切って入力してください。」というメッセージを表示し、ユーザーからの入力を待つ
・ユーザーが3つの数字を入力したら、それらを小さい順に並べる
・「入力された数字を小さい順に並べた結果は次の通りです。」というメッセージに続けて、入力された数値を小さい順に表示する
・ユーザーが入力した内容に誤りがある場合は「入力に誤りがあります。再度3つの数字をカンマで区切って入力してください。」というメッセージを表示し、ユーザーからの入力を待つ

プログラムコードには適宜コメントを挿入してください。また、プログラムコードを提示するだけでなく、コード中で使用した関数についての説明も教えてください。

 

上記のプロンプトをChatGPTに入力すると、次のような回答が生成されました。

▼ChatGPTの回答内容

以下に指定された要件を満たすPythonのプログラムを作成します。  
# 無限ループを開始します。ユーザーが正しい入力をするまでこれを続けます。
while True:    
 # ユーザーに入力を求めるメッセージを表示します。    
 input_str = input(‘3つの数字をカンマで区切って入力してください: ‘)   
 
 # 入力文字列をカンマで分割します。    
 str_numbers = input_str.split(‘,’)   
     
 # 分割された要素が3つであることを確認します。    
 if len(str_numbers) != 3:        
  print(‘入力に誤りがあります。再度3つの数字をカンマで区切って入力してください。’)        
  continue      

 try:        
  # 分割された文字列を整数に変換します。        
  numbers = [int(num) for num in str_numbers]            

  except ValueError:        
  # もし整数に変換できない文字列があったらエラーメッセージを表示し、再度入力を求めます。        
  print(‘入力に誤りがあります。再度3つの数字をカンマで区切って入力してください。’)        
  continue      

 # 入力された数値をソートします。    
 numbers.sort()      

 # 結果を表示します。    
 print(‘入力された数字を小さい順に並べた結果は次の通りです。’, numbers)      

 # 正常に処理が完了したのでループを抜けます。    
 Break  

使用した関数について説明します。  
1. input(): ユーザーにテキスト入力を求め、その入力を文字列として返します。  
2. str.split(): 文字列を指定した区切り文字で分割し、分割結果のリストを返します。
3. int(): 数値の文字列を整数に変換します。この関数が整数に変換できない文字列を受け取るとValueErrorを発生します。  
4. list.sort(): リストの要素をソート(昇順)します。
5. print(): 指定したメッセージを画面に出力します。  

このプログラムでは、最初にユーザーからの入力を待ち、それをカンマで分割します。分割結果が3つでなければエラーメッセージを表示し、再度入力を待ちます。分割結果が3つの場合は、それぞれを整数に変換し、変換できなければエラーメッセージを表示して再度入力を待ちます。全ての要素が整数に変換できたら、それをソートして結果を表示します。

 

処理内容を説明するコメント付きのPythonコードと、関数やプログラムの説明が正しく出力されました。

生成されたコードを「sort.py」というPythonファイルとして保存し、コマンドプロンプトで実行した結果は次の通りです。

「100,50,3」という3つの数値を入力すると、小さい順に並べた結果が正しく出力されました。

また、数値ではなく「あいうえお」という文字列を入力したところ、エラーメッセージが表示された上で、正しい数値の入力が促されています。その後、「81,7000,-4」という3つの数値を入力したすると、小さい順にソートした結果が表示されました。

活用例2. コードの解説

解読したいプログラムコードを提示し、どのような処理が行われているかを解説してもらうこともできます。コードの解説の例として、次のようなプロンプトを入力しました。

Pythonのプログラムコードの意味が分からないため、解説をしてもらいたいです。プログラムコードが全体として何を目的としているかを簡潔に説明してください。また、コードの各行で行われている処理の意味をコメントとして追記してください。対象のプログラムコードは次の通りです。

import datetime  

for year in range(2023, 2026):    
 for month in range(1, 13):        
  date = datetime.datetime(year, month, 13)        
  if date.weekday() == 4:            
   print(date.strftime(‘%Y-%m-%d’))

 

ChatGPTによって出力された回答は次の通りです。

▼ChatGPTの回答内容

このPythonのコードは、2023年から2025年までの間で、各月の13日が金曜日である日付を探し出して出力するプログラムです。コードの各行は次の通りに機能します。  

コードの詳細な説明:
# datetimeモジュールをインポートする。日付と時間に関連する操作をするために必要なモジュール

import datetime  

# 2023年から2025年までの各年を順番に処理する
for year in range(2023, 2026):    
 # 各年の1月から12月までを順番に処理する    
 for month in range(1, 13):        
  # datetimeオブジェクトを作成する。各年、各月の13日の日付を作成する。        
  date = datetime.datetime(year, month, 13)        
  # その日が金曜日かどうかを確認する。weekday()は月曜日を0、日曜日を6として返すため、金曜日は4になる。        
  if date.weekday() == 4:            
   # 年-月-日形式の文字列に変換して、その日付を出力する            
   print(date.strftime(‘%Y-%m-%d’))  

このコードは「黒い金曜日」を探すための一種のコードと考えることもできます。”黒い金曜日”は、月の13日が金曜日に当たる日のことを指します。

 

解読してもらったPythonコードを実行してみた結果は次の通りです。

ChatGPTが解説した通り、2023年から2025年にかけて13日が金曜日となる日付が出力されました。

このように、コード全体の解説と、関数の意味などを含む行ごとの解説を確認できるため、効果的なプログラミング学習が可能です。

活用例3. プログラムの改善

ChatGPTは、エラーが発生している箇所の特定やコードの効率化など、プログラムの改善にも利用できます。

ただし、特定のバージョンでのみ発生するバグなど、開発環境が原因となっているエラーは改善が困難です。デバッグできる対象は、文法的なミスなど一般的なエラーを含むコードのみに限られます。

ChatGPTでプログラムを改善する例として、あえて誤りを含めた次のようなコードを作成しました。

def divide_numbers(a, b)    
 result = a / b    
 return resalt  
divide_numbers(6, 2)

 

このコードは本来、割り算をするための「devide_numbers」という関数を定義し、「6÷2」を計算させるものです。しかし、誤字や文法ミスがあるため、実行すると次のようなエラーが発生します。

間違っている箇所の特定と修正のため、ChatGPTに入力したプロンプトは次の通りです。

次のPythonコードに含まれる誤りを見つけ、修正したいです。間違っている箇所を修正した正しいコードを作成してください。また、どのような改善を行ったかの解説も教えてください。修正する対象のコードは次の通りです。

def divide_numbers(a, b)    
 result = a / b    
 return resalt  

divide_numbers(6, 2)

 

ChatGPTからは次のような回答が出力されました。

▼ChatGPTの回答内容

与えられたコードには、2つの主な問題点があります。まず、関数定義にはコロン(:)が必要です。Pythonでは、関数定義の後にコロンを使用して、関数の本体が続くことを示します。そして二つ目の問題点は、変数名の間違いです。変数’result’を作成していますが、それを’resalt’として戻そうとしています。これらの問題を修正すると、コードは次のようになります:  

def divide_numbers(a, b):    
 result = a / b    
 return result  

print(divide_numbers(6, 2))  

また、分母(b)がゼロである場合には、ZeroDivisionErrorが発生します。この問題を回避するために、分母がゼロである場合にはエラーメッセージを表示するような条件分岐を追加することができます。以下に改善されたコードを示します:  

def divide_numbers(a, b):    
 if b == 0:        
  return “Error: Division by zero is not allowed”    
 result = a / b    
 return result  

print(divide_numbers(6, 2))  

このコードでは、関数divide_numbersは二つの引数を受け取り、第二引数(b)がゼロでない場合には二つの数値を除算し、その結果を返します。もしbがゼロである場合には、エラーメッセージを返します。

 

誤ったコードに含まれていた誤字や脱字を修正するだけでなく、「分母がゼロになることによるエラー」も指摘の上、改善してもらえました。

改善されたコードの実行結果は次の通りです。

割り算を行うための関数が正常に動作し、6÷2の結果である「3.0」という結果が出力されるようになりました。

活用例4. サンプルデータの作成

プログラムを開発する際に、動作確認などを行うための大量のサンプルデータが必要になる場合があります。データの項目と形式をChatGPTに指示すると、サンプルデータを用意してもらうことが可能です。

例として、次のようなプロンプトをChatGPTに入力してみました。

身長と体重の相関関係を調べるプログラムを開発するため、サンプルデータを用意してもらいたいです。ファイル形式はJSON形式、項目として名前、身長、体重を含むデータを20件作成してください。

出力された内容は次の通りです。

▼ChatGPTの回答内容

JSON形式のデータを以下のように作成いたします。身長の単位はセンチメートル (cm)、体重の単位はキログラム (kg) とします。  

[  
{“name”: “田中”, “height”: 170, “weight”: 65},  
{“name”: “佐藤”, “height”: 160, “weight”: 50},  
{“name”: “鈴木”, “height”: 175, “weight”: 68},  
{“name”: “高橋”, “height”: 165, “weight”: 60},  
{“name”: “伊藤”, “height”: 180, “weight”: 75},  
{“name”: “渡辺”, “height”: 155, “weight”: 48},  
{“name”: “中村”, “height”: 178, “weight”: 72},  
{“name”: “小林”, “height”: 168, “weight”: 64},  
{“name”: “山本”, “height”: 172, “weight”: 70},  
{“name”: “加藤”, “height”: 160, “weight”: 52},  
{“name”: “吉田”, “height”: 174, “weight”: 67},  
{“name”: “山田”, “height”: 163, “weight”: 55},  
{“name”: “石井”, “height”: 177, “weight”: 73},  
{“name”: “前田”, “height”: 169, “weight”: 66},  
{“name”: “小川”, “height”: 171, “weight”: 70},  
{“name”: “岡田”, “height”: 164, “weight”: 58},  
{“name”: “後藤”, “height”: 179, “weight”: 76},  
{“name”: “松田”, “height”: 165, “weight”: 62},  
{“name”: “石田”, “height”: 173, “weight”: 71},  
{“name”: “上田”, “height”: 162, “weight”: 56}
]  

このようなサンプルデータを使って身長と体重の相関関係を調べるプログラムを開発できます。各個人の身長と体重の関係性を見ることで、全体的な相関関係を把握できます。ただし、データが不十分だと正確な結果が出ない可能性もあるので、実際の状況に合わせて適量のデータを用意することが重要です。

 

サンプルデータが作成されただけでなく、データ分析で重要なポイントについての解説も得られました。

活用例5. プログラムの変換

ChatGPTは、特定の言語で書かれたコードを別の言語へ変換することも可能です。例えば、PythonのコードをC言語やJavaScriptなどに変換できます。新たなプログラム言語の学習や、既存コードの再利用による開発の効率化などにChatGPTが役立ちます。

プログラム言語を変換する例として、割り算を行うPythonコードをJavaScriptに書き換えるプロンプトを入力しました。

次のPythonコードを、JavaScriptのコードに変換してください。
def divide_numbers(a, b):    
 if b == 0:        
  return “Error: Division by zero is not allowed”    
 result = a / b    
 return result  

print(divide_numbers(6, 2))

ChatGPTの回答は次の通りです。

▼ChatGPTの回答内容

PythonのコードをJavaScriptに変換建てます。PythonとJavaScriptは多少文法が違うので、注意してください。以下のようになります:  

function divideNumbers(a, b) {    
 if (b === 0) {        
    return “Error: Division by zero is not allowed”;    
 }    
 let result = a / b;    
 return result;
}  

console.log(divideNumbers(6, 2));  

このJavaScriptのコードはPythonのコードと同じ機能を果たします。関数divideNumbersは2つの引数を受け取り、2番目の引数が0でない場合は、最初の引数を2番目の引数で割った結果を返します。もし2番目の引数が0の場合は、エラーメッセージを返します。そして、console.log(divideNumbers(6, 2));を使用して、関数の結果をコンソールに表示します。

 

変換されたコードが、関数や処理内容の解説とともに出力されました。

JavaScriptに変換されたコードを、Node.jsを用いてコマンドプロンプトで実行した結果は次の通りです。

もとのPythonコードと同様に、JavaScriptのコードも正しく動作し、「6÷2」の計算結果として「3」が出力されました。

ChatGPTを活用したプログラミングの方法については、下記の記事も参考にしてください。

◆ChatGPTとUnityを連携するには?AIキャラクターの作り方を解説!

 

ChatGPTから正確な回答を得るコツ

ChatGPTから期待通りの回答を得るには、指示内容を伝えるプロンプトの作り方にコツがあります。プログラミングについて正確な回答を得るために押さえておくべきポイントは次の通りです。

指示は簡潔かつ具体的に

プロンプトが複雑であったり冗長であったりすると、指示内容が適切に伝わらず誤ったコードが生成されてしまうリスクがあります。

ChatGPTを用いて複雑な処理を実装したい場合は、いくつかの機能に分けて段階的に質問することがおすすめです。短いプロンプトに分けると、指示内容が簡潔になります。

また、指示文を作る際は、プログラミングによって解決したい問題や処理の流れ、使用言語などの前提条件を明示しておくことも重要です。より具体的なプロンプトを作成することで、正確な回答が得られます。

AIのプロンプト作成に特化した技術者は、プロンプトエンジニアと呼ばれます。プロンプトエンジニアの概要や求められるスキルについては、下記の記事を参考にしてください。

◆プロンプトエンジニアとは?AI領域で話題の職種について解説!

 

一度に全て質問をしない

具体的な指示内容であっても、一度の質問で全ての情報を入力してしまうと、コードに誤りが生じる場合があります。

例えば、3つの連続した処理を行うツールの作成を指示した際に、1つ目の処理に誤りがあるとコード全体の検証が必要です。段階的な質問で徐々にコードを作っていくほうが不具合のある箇所を特定しやすく、より適切な回答を得られます。

ChatGPTは、ユーザーとやりとりした内容を情報源として、出力の精度を高めることが可能です。ChatGPTの会話を通じてより良いコードを作り上げましょう。

例文や質問に関連した情報を提供する

利用しているプログラミングツールや開発環境、使用したいライブラリなど、詳細な情報を伝えると回答の精度が高まります。

また、例文や表、コードの具体例などを情報源として入力する方法も有効です。例えば、表形式のデータを出力させたい場合、エクセルなどで作った例をプロンプトに含めると希望通りの回答が得やすくなります。

ChatGPTを利用する際の注意点

プログラミングでChatGPTを利用する場合、情報の正確性やセキュリティについて注意が必要です。ここでは、ChatGPTを利用する際の注意点を紹介します。

情報が正しいとは限らない

ChatGPTは学習データをもとに指示された内容を出力するAIのため、アウトプットが常に正しいとは限りません。情報源自体が誤っていた場合、不正確な回答や、正常に機能しないプログラムコードなどを提供することもしばしばあります。

プログラミングにChatGPTを使用する際は、あくまでサポートのためのツールとして位置付け、検証を怠らないことがおすすめです。

機密情報は送らない

ChatGPTに入力した内容は、OpenAI社の機械学習に活用される場合があります。プロンプトに機密情報を含めてしまうと、AIによって学習され情報漏洩につながるリスクがあり危険です。

情報セキュリティ上のトラブルを避けるため、顧客情報や社内で独自に開発したソースコードといった機密性の高い情報は入力しないようにしましょう。

まとめ

ChatGPTは、プログラミングコードの作成や改善、他言語への変換など様々な用途で活用することが可能です。ただし、誤った情報やコードが出力される場合もあるため、内容の検証が必要です。サポートツールとしてChatGPTを活用し、コードの実装やプログラミング学習に役立てましょう。

これからChat GPTを利用してプログラミングを効率化させたい人には、下記の講座がおすすめです。

Udemyおすすめ講座

ChatGPTを使ったAIチャットボットのWebアプリ・アレクサスキル開発ハンズオン

ChatGPTを使ったAIチャットボットのWebアプリ・アレクサスキル開発ハンズオン

2.6(207 件の評価)

1,936 人の受験生

作成者: 経知 神草(chatgpt/whisper/python/numpy/pandas/matplotlib/pytorch/AI/DL)

【2023/6/13 OpenAI API大型アップデート対応】AlexaからChatGPT APIを経由して関数呼び出し判定できるようになります

\無料でプレビューをチェック!/

講座を見てみる

レビューを一部ご紹介

評価: ★★★★★
コメント:非常に楽しく分かりやすい講座です。なお、この分野の進捗はまさに日進月歩なので、業務等で利用しようとする場合、ここから自分でいろいろと学習していく必要があります。

評価: ★★★★★
コメント:面白かったです。特にアレクサの学習資料は少ないので希少価値があると思います。

Chat GPTを活用してプログラミングの生産性向上を目指しましょう!