【MBTI診断】16タイプ別・フリーランスに向いてる仕事/働き方
- コラム
- フリーランス/個人事業主
- 働き方
2023年に大きな話題になったChatGPT。ChatGPTは登場当初から「プログラミングが任せられる」と注目されていました。日頃からプログラムを書く筆者も、開発でChatGPTのお世話になっています。
プログラミングは1人だと手が止まってしまいますが、ChatGPTがいれば優秀なアシスタントがついたようで頼もしいですね。本記事では、AIシステムの構築にも携わっている筆者が、プログラミング領域におけるChatGPTの活用方法について解説します。
ITライター兼Web開発者。 システムエンジニアとしての経験とSEOの知見を活かした記事を執筆。AIを組み込みライター業務を効率化するWebサービス『MOJI-KA』を開発・運用中。
目次
ChatGPTをプログラミングに活用する方法はこれだけあります。
それぞれ具体的な利用方法を交えながらご紹介してきます。なお、本記事では誰でも無料で使えるGPT3.5を利用しています。
システムを構築するうえで、課題を解決するための計算方法や処理方法を「アルゴリズム」と呼びます。アルゴリズムを考えるのは結構たいへんな作業で、課題によっては何時間、何日間も頭をひねり続けるケースもあるほどです。しかし、一人で悩み続けるのは効率がよくありません。そこでChatGPTに助けてもらいましょう。
<プロンプト>
#目的:以下の課題に対してアルゴリズムを提案する
#課題:文字列の反転
#条件:3パターンほど提案し、それぞれのメリット・デメリットを解説してください
<ChatGPT回答>
なかなか的確な回答が返ってきました。どのアルゴリズムを採用するかも検討できるので、設計が捗りそうです。
ChatGPTにプログラムを書いてもらえば、面倒なプログラミングすらしなくてはいいのでは?ということで、プログラムをChatGPTにお任せしてみました。私の場合は、関数やモジュール単位で抽象化されたプログラムを書いてもらうことがよくあります。
※社内でChatGPTの利用が禁止されている場合は利用を控えましょう。自社特有の情報をプロンプトに入れてしまうと、情報流出の原因になります。
<プロンプト>
#目的:プログラムコードサンプルの提案
#課題:Javascriptで翌月末の日付を取得する
#条件:コードにはコメントで解説を入れること
<ChatGPT回答>
素晴らしいですね。利用頻度の高い処理は関数化してしまえば、効率的にコーディングできます。しっかりコメントも入ってるので処理内容も理解しやすいです。
人が書いたプログラムコードだと、複雑すぎて読み解くのが難しいことがあります。そういうときにChatGPT先生に解説してもらいましょう。
<プロンプト>
#目的:プログラムコードの解説
#コード:
function getNextMonthEndDate() {
const currentDate = new Date();
const nextMonthFirstDate = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1);
const nextMonthEndDate = new Date(nextMonthFirstDate – 1);
return nextMonthEndDate;
}
const result = getNextMonthEndDate();
console.log(“翌月末の日付:”, result);
<ChatGPT回答>
ポイントを押さえた解説をしてくれます。個人的にわからない部分があれば、追加で質問していけば理解が深まるでしょう。
面倒な関数コメントも、ChatGPTに書いてもらうことができます。
<プロンプト>
#目的:関数コメントを追加
#条件:引数に関しても説明を入れること
#コード:
function reverseString(str) {
return str.split(”).reverse().join(”);
}
function calculateSum(a, b) {
return a + b;
}
function findMax(arr) {
return Math.max(…arr);
}
<ChatGPT回答>
非常に便利です。都度コメントを入れるのが面倒な人におすすめ。筆者のように関数コメント書くの嫌いな人にはとくにおすすめです。
通常コードレビューは、自分以外の第三者に見てもらうことで、適切な処理手順やプログラムの効率的な書き方などを指摘してもらいます。しかし、1人ではレビューをしてもらうことができません。そこで、ChatGPTにレビューしてもらって、自分のコードを見直しましょう。
<プロンプト>
目的:コードレビュー
要件:以下のコードについてレビューを実施
コード:
function calculateSum(a, b) {
return a + b;
}let result = calculateSum(3, 5);
console.log(result);
<ChatGPT回答>
変数名の付け方からエラーハンドリングまでしっかりレビューしてくれますね。自分のクセで書いちゃっている人は見直すきっかけになるかもしれません。
うまく動かないプログラムコードをChatGPTに修正してもらうこともできます。ただし、ChatGPTの回答通りにすればかならず修正できるとは限りません。シンプルなものであれば問題なさそうですが、複雑に要素が絡み合っているものの場合、1箇所が直っても別の箇所にバグが発生する可能性があります。しっかり検証できる環境を構築しておくことをおすすめします。
<プロンプト>
#目的:バグの修正
#コード:
def calculate_average(numbers):
total = sum(numbers)
average = total / total
return averagedef main():
try:
# ユーザーに数値の入力を求める
numbers = input(‘コンマで区切られた数値を入力してください: ‘)
numbers = [float(x) for x in numbers.split(‘,’)]result = calculate_average(numbers)
print(‘平均値:’, result)
except ValueError as e:
print(f’エラー: {e}’)if __name__ == “__main__”:
main()
<ChatGPT回答>
どこを修正したのかも教えてくれるので、影響範囲を予測しやすいのはいいですね。
「リファクタリング」とは、機能を保ちつつプログラムの可読性や保守性を高めるように修正すること。リファクタリングは細心の注意を払って取り組む必要がありますが、ChatGPTに提案してもらえば、リスクを抑えながら実施できるでしょう。当然ながら、最終的な動作確認は必須です。
<プロンプト>
#目的:Pythonコードのリファクタリング
#コード:
def calculator(operator, operand1, operand2):
if operator == ‘add’:
result = operand1 + operand2
elif operator == ‘subtract’:
result = operand1 – operand2
elif operator == ‘multiply’:
result = operand1 * operand2
elif operator == ‘divide’:
if operand2 != 0:
result = operand1 / operand2
else:
result = ‘Error: Division by zero’
else:
result = ‘Error: Invalid operator’return result
def main():
operator = input(‘Enter operator (add, subtract, multiply, divide): ‘)
operand1 = float(input(‘Enter first operand: ‘))
operand2 = float(input(‘Enter second operand: ‘))result = calculator(operator, operand1, operand2)
print(‘Result:’, result)if __name__ == “__main__”:
main()
<ChatGPT回答>
変更点も示してくれるので、変更前との差分を見ながら検討できます。
新しいプログラム言語に取り組むときって「Javascriptのメソッド◯◯ってpythonでどう書くんだ?」みたいなことがよくあります。そういう場合に、言語変換をChatGPTにしてもらいましょう。
<プロンプト>
#目的:プログラム言語の変換
#要件:Javascriptからpythonへ変換
#コード:
// 文字列を逆順にする関数
// 引数: str – 逆順にする対象の文字列
function reverseString(str) {
return str.split(”).reverse().join(”);
}// 2つの数値の合計を計算する関数
// 引数: a – 加算する数値
// 引数: b – 加算する数値
function calculateSum(a, b) {
return a + b;
}// 配列内の最大値を求める関数
// 引数: arr – 最大値を検索する配列
function findMax(arr) {
return Math.max(…arr);
}
<ChatGPT回答>
プログラム言語ごとで書きっぷりの違いもわかるので、勉強になりますね。
お客さんにデモ画面を見せたいときに、データが何も入ってない画面だと寂しいものです。そういう場合にテスト(デモ)データを入れるのですが、いちいち用意するのは結構めんどう。こういうときにChatGPTにデータを用意してもらいましょう。
<プロンプト>
#目的:テストデータの作成
#要件:言語はpythonで、配列データ[(名前)(生年月日)(性別)(出身地)]を作成。配列の中身はランダムな100件
<ChatGPT回答>
サクッと作れるので便利です。
書いたプログラムが正しく動くのかをか単体テストしたいときに、テストを実行するためのプログラムを生成してもらいます。ただし、テストコードが意図したテスト内容になっているかはしっかり確認しましょう。わからないままテスト実行しても動作保証にはならないからです。
<プロンプト>
#目的:関数のテスト
#要件:以下の関数に対するテストコードを生成
#コード:
function findMax(arr) {
return Math.max(…arr);
}
<ChatGPT回答>
テスト環境のフレームワークまでアドバイスしてくれました。テストの自動化ができればさらに開発を効率化できるでしょう。
新しいプログラム言語を学びたい場合、1人で勉強するのは大変です。とくにプログラミングを初めて学ぶ人は、誰かの教えがないとかなりの確率で挫折します。最初の入口として、ChatGPTに講師になってもらえば右も左もわからない状況から優しく導いてくれるでしょう。
<プロンプト>
あなたはプログラミング講師です。私にPythonについて教えてください。まずは何から始めるべきですか?
<ChatGPT回答>
<プロンプト>
では「1. Pythonのインストール」から教えてください。
<ChatGPT回答>
提示されたカリキュラムを指定して「教えて」といえばChatGPTが必要な知識や手順を示してくれます。
機械学習で注目を集めているPythonを体系的に学びたいのであれば、AIプログラミングスクールがおすすめです。気になる方は以下の記事もチェックしてみてください。
AIを学べるプログラミングスクールおすすめ10選【AIツール開発者が厳選】
Workship MAGAZINE
実際にChatGPTでToDoリストを管理する簡単なアプリケーションを作成してみました。ChatGPTに投げたプロンプトは難しいものではありませんでしたが、しっかり想定したものを作ってくれました。作成までおそらく30秒程度、驚異的な早さといえるでしょう。
#目的:簡単なToDoリストの作成
#要件:HTML、CSS、Javascriptで実装
#機能:ToDoの作成・編集・削除ができる
以下で実際に操作できるので、ぜひ試してみてください。ToDoリストを作成、編集、削除できます。
デザインはまだまだ改善の余地がありますが、基本機能はあっという間にできてしまったので、このまま改善していけばアプリが完成しちゃいますね。
ここからはプログラミングでChatGPTを活用する際に、狙った回答を得られるようにするためのコツをご紹介します。効率的にプログラミングをするためにも、以下の点をおさえておきましょう。
指示(プロンプト)の内容は可能な限り簡潔かつ具体的に書きます。上記で紹介した活用例でもそうでしたが「目的」「条件」「要件」など、必要な情報を端的に伝えるようにすると、ChatGPTも意図を読みやすくなります。反対に、長文で指示を書くと思ったとおりの回答が得られなにくくなるでしょう。
とくに、細かい条件を追加したい場合は「◯◯の場合:ほげほげ」「△△の場合:ふがふが」というように条件を明示してあげることも大切です。また、なるべく小さい単位に機能を分割して指示を出したほうが精度の高い回答を得られやすくなります。
いくら具体的な指示であっても、ChatGPTの許容量を超えるような条件を書き連ねても、想定した内容が返ってこないかもしれません。いくら頭のいい人でも、大量の指示を一度に受ければパンクしてしまうように、ChatGPTも段階的に指示を出したほうがしっかり回答してくれます。
無理やり回答されたプログラムコードだと、バグが発生するリスクも高まるでしょう。そのため、最小単位でプログラムコードを生成してもらうのが成功への近道といえます。
システムを構築する場合、あらかじめコーディング規約を学習させることで、統一感のあるプログラムコードを出力してもらえます。
以降のプログラムは以下の規約に可能な限り従ってください。
#言語:JavaScript
#コーディング規則
– 関数名は全てキャメルケースを使ってください。
– 変数名は全てキャメルケースを使ってください。
続けて、プログラムを生成する指示を出していけば、コーディング規約に従ったプログラムを生成してくれるでしょう。
プログラムコードでどのような形式のデータを出力したいのかを例示してあげると、回答の精度が高まります。たとえば、JSON形式でデータを出力してほしい場合は以下のように指示を出します。
関数◯◯の出力はJSON形式で以下に従ってください
{ name: xxx, age: xxx, sex: xxx }
なるべく優しく丁寧に指示を出せば、ChatGPTも適切な回答を出力してくれるでしょう。
最後にChatGPTでプログラミングする際の注意点を紹介します。
企業活動とChatGPTとの相性はよくありません。企業情報(ノウハウや顧客情報など)を含むデータをChatGPTに指示として入れてしまうと、ChatGPT自身の学習データとして利用されてしまう可能性があるからです。ただし、極力抽象化した指示の出し方であれば、情報の流出は避けられるでしょう。
もし、ChatGPTをコア業務で利用したいのであれば、Microsoftが提供するAzure OpenAIのChatGPTの利用を検討してください。こちらは、入力情報を機械学習データとして利用しないことを明言しているため、ビジネス用途にも適しているといえます。
AIの回答がすべて正しいと考えるのは非常に危険です。そのため、ChatGPTが生成したプログラムコードはしっかり検証するようにしてください。でないと、思わぬところでバグが発生する可能性があります。
プログラムを生成してもらったら、動作検証する、問題があれば修正するということを繰り返すことで意図したシステムを構築できるようになるでしょう。ChatGPTは万能ではありません。あくまでプログラミングのサポートツールとして活用することを心がけてください。
ChatGPTは、使い方にさえ気をつければ強力なプログラミングパートナーになってくれます。実際、私自身も個人の開発ではお世話になることが多く、行き詰まったときに助けてもらうことがよくあります。本記事を参考に、自分にあったChatGPTの使い方を見つけてみてくださいね。
おすすめのAIライティングツール12選【AIツール開発者が解説】
Workship MAGAZINE
AIを活用したWebサイト制作ツール10選。最短30秒でホームページが作成可能!?
Workship MAGAZINE
(執筆:コロスキー 編集:少年B)