「ChatGPT」が世間を賑わしてますね♪「ChatGPT」は今なら無料で使える対話型のAIで、入力した質問に対して人間のような精度の高い回答をしてくれます。
ただの対話型チャットAIではなく、特にプログラミングについては「こんなプログラムを書いて」と聞けば、実際のコード作成から動作の説明、エラー部分の指摘までしてくれます。
今回はプログラミングについて「ChatGPTがもたらす新しい可能性」を探るために「Arduinoコマンド」を使用して「Lチカ」プログラムを「ChatGPT」に書いてもらって、そのまま書き込んで動作するのか?や、自動生成されるコードの精度や、修正が必要な場合どんな修正をしたか、等を詳しく紹介していきたいと思います。
ラズパイ「PicoW」を使用した「ChatGPT」のようなチャットボットの作り方も以下のリンクで詳しく紹介しています。
1.プログラミング学習の必要はなくなる?
2.ChatGPTの始め方
3.今回使用するもの
4.「Lチカ」プログラムを書いてもらった
・生成されたプログラムの精度は?
・書き込んで動作確認
・エラーを修正してもらって動作確認
・完成したプログラムの動作確認
・さらに動作を追加して書いてもらった
5.まとめ
1.プログラミング学習の必要はなくなる?
「ChatGPT」を使って、コードが目の前で生成されていく様子を見た時は衝撃的でした。
プログラミングはもう学習する必要はない?・・・そんな思いにもなりました。
しかし、実際にコードを動かしてみると、今のところはまだその領域ではないかもしれません。
ただし考え方を変える必要はありそうです。(今後AIの学習が進むとどうなることやら・・・)
これからは「ChatGPT」でブロックごとにベースのプログラムを生成して、合体させて、修正をかけて完成させる。そんな流れになりそうです。
ということで実際には、まだまだプログラミングの学習は必要と思います。
「ChatGPT」が返してくれるのは「質問に対する答えです!」質問が適切でないと、生成されるコードもいいものになりません。
プログラミングの作り方を学ぶのではなく「こういうプログラムを使用したらこんな動きができる」というプログラミングの使い方を学ぶことが大切と思います。
とはいえプログラミング初心者の方が学習を始める時に、まずは「何から始めたらいいかわからない」「どんなツールを準備するの?」「言葉の意味がわからない」「なんか意味不明なエラーが出た」こんなことでつまづいて挫折しそうな時があると思います。
そんな時は全部「ChatGPT」に聞いてみましょう♪
2.ChatGPTの始め方
「ChatGPT」は以下リンク先の「OpenAI」のホームページから使用することができます。
以下のようなページが表示されますので、下画像のように矢印部の[TRY CHATGPT]をクリックします。
「ChatGPT」を使用するにはアカウント作成が必要ですので案内に従って作成してください。
「Googleアカウント」をお持ちならこれを使用することもできます。
アカウント作成が完了すると次回からは下画像のような画面が表示されます。
英語の画面ですが、ブラウザの翻訳機能は使わずに、そのまま英語のまま使用しましょう。
チャット窓に日本語で書き込めば、日本語で回答してくれます。
たまに英語で回答してきますがその場合は「日本語で書いて」と入力すれば、日本語で書き直してくれます。
3.今回使用するもの
今回はプログラムの動作を実際に動かして目で見て確認できるように、本体にボタンとLEDを搭載したマイコンボードを使って「Lチカ(LEDを点灯、消灯させる)」を行います。
このために「M5Stack社」製のマイコンボード「M5StickC Plus」を使用します。
プログラミング環境は比較的簡単に「C言語」のプログラミングができる「ArduinoIDE」を使用して行います。
「M5StickC Plus」は下写真のようなものです。
「M5StickC Plus」や開発環境の「ArduinoIDE」プログラミング言語の「Arduinoコマンド」の使い方は以下のリンクで詳しく紹介しています。
4.「Lチカ」プログラムを書いてもらった
早速「ChatGPT」に「Lチカ」プログラムを書いてもらって、実際に書き込んで動作確認してみましょう。最初の質問はざっくりと以下のように質問をしてみました。
実際に質問を入力したものは下画像のようになります。
・生成されたプログラムの精度は?
早速、下画像のような回答でコードも書いてくれました。
いきなり「こんにちは」からフレンドリーに始まりましたw。「Lチカ」についての説明もしてくれています。
コードはどうでしょうか?
コードについては、いきなり1行目の「ヘッダーファイル」が間違ってますね・・・
ここは「M5StickC.h」ではなく「M5StickCPlus.h」が正しいですがとりあえずこのまま行きましょう♪
その下の「setup」ではちゃんと「M5.begin」で初期化して、出力端子「26ピン」を「pinMode」で出力端子に設定してくれています。
ただしLEDは外付けではなく内蔵のLEDを使いたかったので、ここは聞き方が悪かったですね・・・
メイン処理の「loop」の中では出力端子を「digitalWrite」で「HIGH」にして「delay」で「1000ms(1秒)」待って出力端子を「LOW」にして「1秒」待ってを繰り、返すという基本的な「Lチカ」のプログラムを作ってくれました。
・書き込んで動作確認
いろいろと間違いはありますが、とりあえず書き込んでみます。
エラーが発生すると思うので、エラーをそのまま「ChatGPT」に聞いてどうなるか確認していきたいと思います。
上画像のようにエラーが発生しました。
発生したエラー文をコピーして「ChatGPT」に貼り付けて聞いてみましょう。
・エラーを修正してもらって動作確認
先程発生したエラーをコピペして聞いてみると以下のような回答でした。
素直に「ごめんなさい」と、人間っぽい対応ですw
ちょっと内容が「Arduino」とも混同してきて、迷走してきましたね・・・
一応そのまま書き込んでみます。
やっぱりエラーですね。このエラーをまた「ChatGPT」に投げてみると以下のような回答でした。
「ごめんなさい」が「申し訳ありません」になりましたw。この辺りの反応の変化も面白いですね。
修正してくれたコードを確認するとピン番号に「39ピン」を指定してきました。
今回は書き込めましたが液晶がバグってます。
今回はエラーが出ませんでしたので「ChatGPT」に、うまく動作しなかったことを伝えました。
さすがにこのままでは長くなりそうなので、具体的な質問をしてみました。
以下が回答です。「申し訳あります」という回答が気になりますがw やっとヘッダーファイルを修正したコードを書いてくれました。
書き込みましたが、LED番号が違うのでやっぱり点灯しません。
私はLEDの番号を知っているので、答えに近い質問になりますが以下のように聞いてみました。
自信満々に「39ピン」と答えました!。高速/低速とか、どんどん遠くへ行ってしまいます・・・しょうがないのでこちらから教えてあげましょうw
また「申し訳あります」という文章が気になりますが、LED番号が「10ピン」であることは知っていたような回答です・・・
これでやっと正しい「Lチカ」のプログラムを書いてくれました。
実際に書き込んで動作確認してみましょう。
・完成したプログラムの動作確認
以下が「ChatGPT」が作成した「M5StickC Plus」の「Lチカ」プログラムで、コピペで書き込むと動作確認することができます。
#include <M5StickCPlus.h>
void setup() {
M5.begin();
pinMode(10, OUTPUT);
}
void loop() {
digitalWrite(10, HIGH);
delay(1000);
digitalWrite(10, LOW);
delay(1000);
}
書き込むと、下画像のようにLEDは点灯し、1秒ごとに点灯/消灯を繰り返します。
思ったより手間取りましたが、ちゃんとお礼を言っておきました。
「お助けできてうれしいです」と感情があるような回答で愛着がわきますね♪
「いいね」ボタンがあったので、こちらにも結果報告しておきました。
・さらに動作を追加して書いてもらった
「Lチカ」ができたところで、今度はこれをボタンを押すたびに、LEDがON/OFFするように書き換えてもらおうと、以下のように質問してみました。
結果はまたいろいろ足りてないですが、ボタン処理関数を使用して、出力の反転処理をするプログラムを書いてくれました。
しかし、このままではボタンを押していない時にLEDが点滅を繰り返し続けます。
ボタンを押すと押した時のLEDの状態を保持し続けます。
そこでわざと以下のように聞いてみました。
長々と説明を書いてくれてますが、コピペしたので間違えるわけもなく、期待通りの回答ではありませんでした・・・。回答をよく読むと、狙って点滅を繰り返すプログラムを書いているようです。
これは聞き方が悪かったのか・・・最初の聞き方をもう少し具体的に以下のように聞き直してみました。
次は正しいプログラムを書いてくれました。聞き方大事ですね。
ボタンの処理も「wasPressed」という「ボタンが押された時」に動作するように指定しています。
ボタン処理関数を使用するときに必須の、ボタン状態を更新する「M5.update」もちゃんと書いてくれてます。
ということで、うまく動作したのでお礼をしておきます。
と思ったのですが、よく見るとまたヘッダーが!「M5StickC」に戻ってますw
旧モデルで情報量が多いからでしょうか・・・
なぜかまた正しいヘッダーを教えてくれましたが、無事に正しいプログラムに辿り着きました。
以下をコピペで書き込むことで動作確認できます。
#include <M5StickCPlus.h>
void setup() {
M5.begin();
pinMode(10, OUTPUT);
}
void loop() {
if (M5.BtnA.wasPressed()) {
digitalWrite(10, !digitalRead(10));
}
M5.update();
}
10行目のプログラムは初心者の方には一見わかりにくいですが、「!digitalRead(10)」で現在のLEDの状態を読み込んで「!」が付いていることで値を反転(HIGHならLOW、LOWならHIGH)して指定することで、ここが実行されるごとにLEDの点灯/消灯を切り換えることができます。
この部分について、もしわからなかったとしても、この行をそのまま「ChatGPT」に聞いてみれば詳しく解説してくれるでしょう♪
5.まとめ
話題の「ChatGPT」について、噂には聞いていましたが実際に使ってみると驚きのものでした。
プログラミングの内容によっては修正せずにそのまま動作するものも多くあります。
しかし、まだまだ万能ではないため、自信満々に間違うことや、不足していることもあります。
また、書き出されるコードについては、どこかから引用されたものである可能性もあるため、ライセンスの問題等、そのまま使用してはいけないかもしれませんし、思わぬ動作をしてしまうことも考えられるため注意が必要です。
しかしながら、プログラミングを知らない人でも思い通りのアプリが作成できる可能性があるため、プログラミング学習の考え方は大きく変わりそうです。
プログラミング学習といえば「Google先生」に聞く「ググり力」が重要でしたが、これからは何でも教えてくれる「ChatGPT」という仲間と一緒に学んでいく、そんな風に感じました。
コメント