ChatGPTはプログラマーの生産性アップに有効?
ChatGPTの登場によって多くの業務がサポートされるようになり、生産性アップを実感した人や企業は多いのではないでしょうか。ChatGPTは言語の翻訳やデータ整理、プログラムコードの作成など、プロンプト次第でできることは多種多様です。
そんなChatGPTはITエンジニア、特に多くのコードを作成しなければならないプログラマー達にとってはどういった存在になるのでしょうか。昨今のプログラマーがChatGPTを扱うことで生産性アップにつなげられるのか気になります。
ここでは、ChatGPTがプログラマーに与える影響について、近年危惧されている「プログラマーの将来がなくなる」「失業するのではないか」というプログラマー不要説にフォーカスしました。
ChatGPTとは
ChatGPTとは、OpenAIが開発する自然言語型のAIチャットシステムです。自然言語に対応しますので、英語でも日本語でも言語から判断し適切な返答を返してくれます。つまり日本語で質問すると、適切な返答が日本語で返ってくる優れものです。
また、2024年7月18日、最新版のGPT-4o miniがリリースされました。GPT-4o miniはGPT-4と近い性能があり、尚かつAPI料金はGPT-4oの約1/30で利用できます。現在では提供が終了したGPT-3.5と置き換わっています。
【参考】:OpenAI 【参考】:OpenAI: Introducing ChatGPT 【参考】:ChatGPT — Release Notes 【参考】:GPT-4o mini: advancing cost-efficient intelligence | OpenAI
ChatGPTの登場でプログラマー不要説が出てきている
ChatGPTはプログラマーがコードチェックに利用したり、コード作成のサポートで利用したり、あらゆる局面で活用されています。ChatGPTの進化は日々進んでおり、続々と最新のGPTモデルがリリースされ続けています。
現在は2022年11月に登場した時よりも精度が格段にアップしており、より多くのニーズに応えられるようになっています。プログラミングにおいては、精度の高さから「プログラマー不要説」が出てきているほどです。
確かに簡単なコードであればChatGPTで瞬時に作成できるためプログラマーという職種が必要ないように感じますが、実際のシステム開発の現場においてはそれを全肯定するのは難しいでしょう。
理由としては、システム開発においてはコーディングスキルはもちろん、論理的思考や問題解決能力、システム設計のスキルも重要であり、現状これらを全てAIで補うのは困難です。
システム完成までにはさまざまなトラブルが勃発し、柔軟な対応力も求められるため、プログラマーがChatGPTを活用するのは、あくまでも生産性アップを目指すためのサポート目的の域を出ないでしょう。
ChatGPTの活用方法が多様化
ChatGPTは、2023年3月にGPT-4を発表してから関連サービスの発表が相次いでいます。GPTのAIエンジンのみならず、ChatGPTプラグインやChatGPT APIなど多数の発表がされています。詳細は以降で解説していきます。
【参考】:OpenAI
GPTsを活用する
2023年11月6日にChatGPTをカスタマイズできる機能である「GPTs」が公開されました。ノーコードでオリジナルのChatGPTを作成でき、数十分程度でプロトタイプが完成します。ジャンルは幅広く、カスタマーサポートや教育、エンターテイメントなど、さまざまな用途に応用できます。
【参考】:Introducing GPTs | OpenAI
GPTsを作成するには有料のChatGPT Plusに加入が必須ですが、カスタマイズされたGPTsが提供されているGPT Storeは無料ユーザでも活用できます。「GPTs」とは、カスタマイズされたGPTsとGPT Storeの両方の意味を指します。
【参考】:Introducing the GPT Store | OpenAI
OpenAI APIを活用する
これまでOpenAIは、「ChatGPT API」を用いることでプログラミング言語やそのアプリケーションから起動することができるとしてきました。
近年のOpenAIは画像生成が可能なDALL-E3や、音声をテキストに変換できるWhisperなど、さまざまなサービスを続々とリリースさせたことにより、ChatGPT APIとあわせた「OpenAI API」に統合しました。
OpenAI APIを利用するにあたっては、選択するモデルによって料金が異なります。また、モデルによってはアップデートの関係で価格帯がいくつかに分かれているケースがあるため、詳細は以下の公式リンクから確認しましょう。
【参考】:Pricing | OpenAI
OpenAI APIで利用できるモデル
ここでは、前述したOpenAI APIで利用できるモデルを一覧で紹介します。(2024年8月時点)
ChatGPTでプログラミングを始める方法
ChatGPTが公開されてから多くの話題に上がっています。ここでは、ChatGPTの実際の活用方法を考えていきます。特に、エンジニアの方が業務で使用する際にどのような観点で活用できるのか、エンジニア視点で解説していきます。
ChatGPTを利用するには
ChatGPTを利用するには、公式サイトでアカウントを作成し、チャットシステムにログインして利用します。
最新版のGPT-4o miniおよびGPT-4oは無料でも利用できますが、利用回数に制限が設けられています。GPT-4oを制限なく利用するには、月額20USドルのChatGPT Plusに登録する必要があります。Plusでは、GPT-4oやGPT-4など利用に合わせてGPTモデルを選択できます。
ChatGPTでプログラミングを行うコツ
ChatGPTでプログラミングを行うには、以下のようなコツを抑えることでより正確なコードを作成しやすくなります。
◼︎プロンプトは簡潔で具体的に プログラミングのコードを作成するには、具体的なプロンプトの入力が必須です。また、より正確な回答を得るためにもプロンプトはわかりやすく簡潔にまとめるのがベストです。プロンプトが長すぎると処理に時間がかかり、欲しい結果が得られない可能性が高まります。
◼︎段階的にやりとりを行う プログラミングにおいて、1度のプロンプトで完璧な回答を得るのは難しい場合があります。いくつかのフェーズに分けたり、大まかなタスクを達成してから細部を詰めたりすると、誤りを大きく減らせるでしょう。
◼︎関連する情報も提供する
内容が複雑化しそうな場合は、関連情報を提供するのがおすすめです。使用しているプログラミングツールや開発環境、使用したいライブラリ、前提条件、さらに具体例や参照したいデータなどを必要に応じて提示しましょう。
【エンジニア向け】ChatGPTの活用方法
ここからChatGPTを、エンジニアの業務へどのように活用できるか検討していきます。さらに、実際にChatGPTとチャットを行い、その返答の妥当性もチェックします。主にITエンジニアの職務の利用ケースを想定し、いくつかの実例をまとめてみました。
ドキュメントの和訳や英訳
ドキュメントの和訳や英訳は、エンジニアの仕事で重要なウェイトを占めています。技術用語や解説は欧米から発信されることも多く、英語のコミュニケーションは重要です。
ここでは、特定のホームページの文章を英語から日本語に訳す場面を想定します。一例として、ChatGPTのホームページの説明文を英語から日本語にしてもらいます。
最初に日本語で「次の文章を日本語にしてください。」とプロンプトを入力します。ChatGPTからは以下のような返答がきました。
翻訳の材料として、ここではChatGPT公式サイトの文面を貼り付けてみます。
「Introducing ChatGPT We’ve trained a model called ChatGPT which interacts in a conversational way. The dialogue format makes it possible for ChatGPT to answer followup questions, admit its mistakes, challenge incorrect premises, and reject inappropriate requests.」
【参考】:Introducing ChatGPT | OpenAI
その結果、以下の回答が得られました。日本語訳は概ね妥当だと判断できます。
念のため、「ありがとうございます。」と感謝を伝えます。日本語での問いかけに対してはきちんと日本語で返答されます。
エンジニア向けドキュメントはPDF化しているものも多いですが、PDFからテキスト変換することで翻訳ソフトとしても活用することができます。
プログラムコードのレビュー
作成したプログラムのコードは言語仕様に基づいてレビューすることができます。そのため、ChatGPTも時間をかけずにコードレビューを手助けしてくれます。
次の例は、PHPで和暦を西暦に変換するプログラムを作成し、ChatGPTにレビューを依頼したものです。
「次のPHPのプログラムは正常ですか?」として以下のコードと共に送信しました。
<?php
$subject = 'これは平成31年の報告書です'; // '令和 元年'や'令和 XX年'、平成でも処理できます。
$subject = preg_replace('/(元年)/', '1年', $subject); // 先に'元年'を'1年'に変換します。
$pattern = '/(令和|平成)\s*([0-9]+)年/'; // 和暦の正規表現パターンです。
if (preg_match($pattern, $subject, $matches)) { // 正規表現のパターンマッチを行います。
// var_dump($matches); // デバッグ用(必要ならコメントアウトを外す)
if ($matches[1] == '令和') { // 和暦が令和の場合の処理です。
$year_base = intval($matches[2]) + 2018; // 令和の場合 2018を追加します。
} elseif ($matches[1] == '平成') { // 和暦が平成の場合の処理です。
$year_base = intval($matches[2]) + 1988; // 平成の場合 1988を追加します。
} else {
// 他の元号が追加された場合のための処理
echo '不明な元号です: ' . $matches[1];
exit;
}
$year = '西暦' . $year_base . '年'; // 数値から文字列に変換します。
echo preg_replace($pattern, $year, $subject); // 和暦を西暦に変換します。
} else {
echo $subject; // そのまま表示します。
}
?>
ChatGPTは、以下のコメントを返答してくれました。
上記のように改善点や注意点もピックアップしてくれています。修正後のコードとして、以下が提示されました。
画像の修正コードは以下のように記述されています。
<?php
$subject = 'これは平成31年の報告書です'; // '令和 元年'や'令和 XX年'、平成でも処理できます。
$subject = preg_replace('/元年/', '1年', $subject); // '元年'を'1年'に変換します。
$pattern = '/(令和|平成)\s*([0-9]+)年/'; // 和暦の正規表現パターンです。
function convertEraToGregorian($era, $year) {
switch ($era) {
case '令和':
return intval($year) + 2018; // 令和の場合 2018を追加します。
case '平成':
return intval($year) + 1988; // 平成の場合 1988を追加します。
default:
return null; // 他の元号の場合にはnullを返します。
}
}
if (preg_match($pattern, $subject, $matches)) { // 正規表現のパターンマッチを行います。
$era = $matches[1];
$year = $matches[2];
$year_base = convertEraToGregorian($era, $year); // 和暦から西暦に変換します。
if ($year_base !== null) {
$year_string = '西暦' . $year_base . '年'; // 数値から文字列に変換します。
echo preg_replace($pattern, $year_string, $subject); // 和暦を西暦に変換します。
} else {
echo '不明な元号です: ' . $era; // 不明な元号の場合のエラーメッセージ
}
} else {
echo $subject; // 正規表現にマッチしない場合、そのまま表示します。
}
?>
具体的な変更点については、以下のように詳細が記載されています。
アルゴリズムのコード化
プログラムコードのレビューと同様に、アルゴリズムのコード化も簡単に行ってくれます。
次の例は、1~100までの足し算を行うプログラミングのコードを依頼したものです。「1~100までの足し算を表示する、C言語のコードを教えてください。」とプロンプトを入力します。
次の通り、簡単にコードを生成し返答してくれました。
画像のコードは以下のように記述されています。
#include <stdio.h>
int main() {
int sum = 0; // 合計値を格納する変数
int i;
// 1から100までの数を足し合わせる
for (i = 1; i <= 100; i++) {
sum += i;
}
// 結果を表示
printf("1から100までの合計は %d です。\n", sum);
return 0;
}
また、コードの説明として1〜7のポイントに分けて解説しています。
もちろん同じ依頼を別のプログラミング言語にも用いることができます。「Java言語の場合はどうなりますか?」と依頼してみました。
画像のコードは以下のように記述されています。
public class SumExample {
public static void main(String[] args) {
int sum = 0; // 合計値を格納する変数
// 1から100までの数を足し合わせる
for (int i = 1; i <= 100; i++) {
sum += i;
}
// 結果を表示
System.out.println("1から100までの合計は " + sum + " です。");
}
}
上記の通り、コードを返答してくれるとともに、次の解説コメントまで返答してくれました。
さらに次のように、「C言語のコードにコメントを追加してください。」と、生成したプログラムコードにコメントを追加することも簡単にできます。
ちょっとした手伝いであれば、苦もなく対応してくれそうです。
新規プロジェクト市場性を把握
市場規模や成長性が不確かな場合においても、総合的な参考意見をもらえます。続いては、以下のようなプロンプトを入力してみます。
「金融業界のITシステムを開発する予定です。ChatGPTのGPT-4はどの程度役立ちますか?」
ChatGPTの返答は、以下の通りです。
内容をうまく要約して回答しており、パッと見ただけで内容を把握しやすくまとめています。また、注意点についても記載されています。
さらに、続けて「AIのITへの利用は今後も成長すると考えますか?」と聞いてみます。ChatGPTの返答は、以下の通りです。
このような内容は、意思決定支援として有効です。エンジニアのロール別にもさらに多様な用途に活用ができると考えられます。回答の正確性については利用者が判断することになりますが、実用領域に近づいていることは間違いないでしょう。
ChatGPTの活用方法は多岐に渡ります
ChatGPTは自然言語に対応し、学習内容に基づいて多くの検索結果から要約文を作成したり、より適切な回答をしたりすることができます。エンジニアの観点ではドキュメント作成やプログラミングの生産性向上が期待できます。
このように多くの領域に使用することができますので、是非とも色々な場面で試してみることをおすすめします。
マイナビエージェントに無料登録して
転職サポートを受ける
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから