先日より、コーディングにおける作業効率化、サポートを兼ねてChatGPTを使い始めてみました。
月3000円はかなりお高いですが、ほぼ正確に答えを出してくれるなど、AI技術の進歩を実感することができました。
(無料のプランだと1日で可能なチャット数はかなり限られてしまいます。)
今回はChatGPTがコーディングにおいてどのように役立ったのかを簡単にまとめてみました。
①希望通りのコードを生成してくれる
「こういう機能を実装したいけど、どうやって書けばいいかわからない!」というときに、ChatGPTに聞いてみると、ほぼ希望通りのコードを生成してくれます!
例えば「1から10までの整数の和と積をそれぞれ求めるC#のコードを生成してください。」とお願いすると下記の答えが返ってきました。
以下は、1から10までの整数の和と積をそれぞれ求めるC#のコードです。
using System;
class Program
{
static void Main()
{
int sum = 0;
int product = 1;
for (int i = 1; i <= 10; i++)
{
sum += i;
product *= i;
}
Console.WriteLine("1から10までの和: " + sum);
Console.WriteLine("1から10までの積: " + product);
}
}
実行結果:
1から10までの和: 55
1から10までの積: 3628800
何か応用バージョン(範囲を変える、関数化するなど)が必要であれば、お知らせください。
こんな感じで希望通りのコードを生成してくれました。
今回は例として簡単なコードを生成しましたが、多少複雑な内容でもだいたい希望通りのコードを生成してくれます。
②コードを別の言語に変換してくれる
先ほどAIが生成したソースを別の言語に変換してみます。
「このコードをVBに変換してください。」と入力すると下記の答えが返ってきました。
以下は、先ほどのC#コードをVB.NET(Visual Basic .NET)に変換したものです。
Module Program
Sub Main()
Dim sum As Integer = 0
Dim product As Integer = 1
For i As Integer = 1 To 10
sum += i
product *= i
Next
Console.WriteLine("1から10までの和: " & sum)
Console.WriteLine("1から10までの積: " & product)
End Sub
End Module
実行結果(同じ):
1から10までの和: 55
1から10までの積: 3628800
他のバージョン(GUIアプリ、関数化、任意の範囲など)をご希望の場合もお気軽にどうぞ!
こんな感じでC#→VBに変換して生成してくれます。
ほかの言語(C++)でもこの通り
#include <iostream>
int main() {
int sum = 0;
int product = 1;
for (int i = 1; i <= 10; ++i) {
sum += i;
product *= i;
}
std::cout << "1から10までの和: " << sum << std::endl;
std::cout << "1から10までの積: " << product << std::endl;
return 0;
}
簡単なコードならたったの数秒で変換して生成してくれます。
③ソースレビューも可能
実際にコードを組んだもののコンパイルエラーや例外処理が発生してしまう、エラーはないのに想定通りの処理にならない!という時は、実際のソースを入力して聞いてみると、どこが間違っているかをほぼ正確に教えてくれます。
先ほどの1~10の和と績を求めるコードをあえて間違った内容に変えて、下記のようにChatGPTに聞いてみました。
class Program
{
static void Main()
{
int sum = 0;
int product = 1;
for (int i = 1; i < 10; i++)
{
sum += i;
product *= i;
}
Console.WriteLine("1から10までの和: " + sum);
Console.WriteLine("1から10までの積: " + product);
}
}
上記のコードで1から10の和と積を求めたいのですが、答えが一致しません。
実際に返ってきた答えは下記の通り。
ご指摘の通り、以下のC#コードは「1から10までの和と積」を求めたい意図ですが、正しい結果にならないのはループ条件のせいです。
for (int i = 1; i < 10; i++)
これは i
が 1以上10未満(つまり1〜9) のときだけループします。
修正方法
10を含めたいので、条件を i <= 10
に変更してください:
for (int i = 1; i <= 10; i++)
修正後のコード:
using System;
class Program
{
static void Main()
{
int sum = 0;
int product = 1;
for (int i = 1; i <= 10; i++) // <= に修正
{
sum += i;
product *= i;
}
Console.WriteLine("1から10までの和: " + sum); // 正しくは55
Console.WriteLine("1から10までの積: " + product); // 正しくは3628800
}
}
正しい結果:
和(1〜10): 55
積(1〜10): 3628800
何か他にも知りたいことがあれば気軽にどうぞ!
こんな感じで「どこが間違っているのか」「どのようにすれば正しく動くのか」を正確に教えてくれました。
ちなみにソースを入力せずとも、ソースファイルを直接添付することも可能です。(ファイルの種類によっては対応していない場合あり。同時にアップロードできるファイル数やサイズはプランによって異なります。)
実際に学習用に作成したプログラムのソースをアップロードしたところ、
・良い点
・改善点やアドバイス
・修正する場合の優先順位
これらを簡潔に説明してくれました。
また、コードではないですが詳細設計書やテスト仕様書も同じようにレビューしてくれます。
まとめ
コーディングにおいてAIをうまく活用すれば複雑な内容でもある程度は正確に教えてくれるため、時間短縮など作業の効率化が狙えます。
もちろん、AIを活用する上でのリスクやデメリットもいくつかあります。
①場合によっては間違った答えを生成してしまう
当たり前ですが、いくら学習能力が向上したといっても100%正しい答えを生成してくれるとは限りません。
ときには間違った答えを生成することだってあります。
AIが生成した答えが正しいのかどうかを判断する力や、AIが正確に答えてくれるような質問や文章を組み立てる力が必要になってきます。
なんでもかんでもAIに聞いて、AIの答えを鵜呑みにしてばかりでは自分自身で物事を考える/判断する力は身に付きません。
②著作物や機密情報などを学習させない
実際に業務で使用するプログラムやその他の資料、画像などを安易にアップロードして学習させてしまうと、予期せぬ場面で情報漏洩や著作権侵害につながる可能性も否定できません。
実際に業務で生成AIを使用する場合は、「プログラムの変数名や関数名を業務とは関係ない名称に変更する」「そもそも生成AIをツールとして使用してよいか確認する」などの対応も忘れてはいけません。
使い方によって毒にも薬にもなる生成AI。
ありとあらゆる分野で活用されていますが、誤った使い方をして他に迷惑をかけてしまっている人も多く見かけます。
ルールやマナーを守って活用し、自分自身のスキルアップにつなげていきたいですね。