IoP技術者コミュニティ - 令和5年度SAWACHIエンジニア養成講座を開催しました(検索では越えられなかった壁を越えた日)
2020年度からプロンプト・Kは「高知県IoPプロジェクト及びIoPクラウド(通称:SAWACHI) 参考URL:https://kochi-iop.jp/」において「IoPクラウド」の開発管理業務を担当しています。同社は実質的な“アーキテクト”として、IoPクラウドのシステム構築及び開発・運用の設計を担当し運用の道筋をつけただけでなく、地元ベンダーを主体としたサステナブルな地域発展を目指した産官学スキームの構築に大きく貢献しています。2022年度からは、IoPクラウドのテストベッド環境を活用し、県内企業が自社のデバイスやシステムに、クラウド通信機能やAPI連携機能を付加させる改良・開発を行うスキル獲得やエンジニアコミュニティの創出を目指す「IoP技術者コミュニティ(高知県サイト)」が設立され、この技術者組織における運営事務局、プログラミング講座製作と運営を担当しております。
今年はIoTをChatGPTでプロンプトエンジニアリング
目論見
昨年もESP32マイコンとセンシリオン社のSHT31を使って、IoPクラウド(SAWACHI)に接続する環境測定装置を製作する講座を開催しました。
直ぐにでも商用化できそうなクォリティの本格的なプログラミング講座でしたが、今年はこれをChatGPT(3.5)でIoPクラウドに連携してしまおうという挑戦的かつ意欲的な目論見をもった「本気のプログラミング」講座となっています。
プログラミングは教えない
昨年はテキストに沿ってプログラミングを習得してもらっていました。技術的詳細とその対象となるソースコードを併用しながらのプログラミング講座でした。どうしても課題をクリアできない場合は、講師側で準備したソースコードの張り付けで対応していました。プログラミング講座に付いてこられない方は残念ながら「コピペ」で動かしていました。
しかし!今年の講座では「プログラミングは教えない」の掛け声の下でコードをどう導き出すか?!の「プロンプト」を皆さんと一緒に考え、実際に使えるコードの生成を目指しました。
まずは「Lチカ」でChatGPTの威力発揮しまくり
Lチカを知っている・・・
「Lチカ」は「LEDをチカチカ点滅させる」マイコンのプログラミングを学ぶ際には誰もが通る道です。「LED Blink」を知っているならまだしも「Lチカ」をChatGPTが知っているのでコレで全然通じます(マジで)。
プロンプト
「ESP32でLチカさせるプログラムを教えて」
ChatGPT
#define LED_PIN 2 // Built-in LED for ESP32 is usually at GPIO 2. Change if required
void setup() {
pinMode(LED_PIN, OUTPUT); // Initialize the LED pin as an output
}
void loop() {
digitalWrite(LED_PIN, HIGH); // Turn the LED on
delay(1000); // Wait for 1 second
digitalWrite(LED_PIN, LOW); // Turn the LED off
delay(1000); // Wait for 1 second
}
という感じであっという間にコードを生成してくれました。
会場から歓声があがる!
各所から聞こえる「おお!」とか「すげー」という歓声が印象的でした。
AIがコードを出してくれるなんて・・・最初は誰でもこのリアクションになりますよね! だって「これぞ人類の夢」っていう感じですから。素直にスゴい事が世の中で起こっていると感じていただけたのではないでしょうか?
難関①:SHT31で温湿度データを取得する
SHT31のピン接続
素のSHT31の仕様は知っているChatGPTも、市販されているSHT31を搭載したモジュールのピンがプルアップされてるのが殆どなんて知りません。
ココで躓くのは事前に分かっていたのであえてのエラー発生となりました。
突破と学び
ここはSHT31を搭載したモジュールの個別の仕様書情報をChatGPTに伝えてあげて無事にクリアできました。事前に技術情報を喰わせるとそれに沿って答えてくれるChatGPTの特性の確認ができました。
実際にセンサが動くと「組み込みやってる!」感が出てくるもので、皆さん眼をキラキラさせながらマイコンと格闘されていました。
Wi-Fi接続は割りと余裕
興味深い結果
インターネットに繋いでいくために、ESP32マイコンをWi-Fiルータに繋ぐ必要があります。こちらは、ChatGPTの回答が大活躍でした。
皆さんSSIDとかPWDという今時のネットの繋ぎ方をご理解いただいていたお陰で、大変スムーズに行けましたね。
思わぬ敵・・・Wi-Fi接続数
ここで思わぬ敵が現れます・・・現地には20名超(我々含め)が皆さん会場のWi-Fiアクセスポイントを使っていましたが、これに加えて20台近いESP32マイコンが動き出すと現地がWi-Fiの電波出まくり状態になり枯渇する事態に・・・。こんなこともあろうかと、予備のWi-Fiを準備してそちらにEPS32を誘導して何とか回避しました。いくら世の中が進んでも、物理を超える事はできないし、物理を理解しておかないといくらコードが書けても何にも出来なくなります。こちらも大変良い学びになりましたね。
難関②:AWS IoT CoreとのMQTT通信
講座危うし!
ここも基本的なMQTTやTLS通信の大凡の知識がないとクリアできないところです。ArduinoにSSL証明書を食わせるところやMQTTとの接続のあたりで悪戦苦闘する方が続出!! 講座危うしな雰囲気が漂ってきました・・・内心とっても焦りました。
苦戦の背景
今回の講座は「あくまでIoPクラウドを活用する」前提ですので、当然ながらIoPクラウドが採用している最新で安全なセキュリティや通信技術を採用しています。MQTTがというよりAWS IoT Coreのセキュリティ機能をまで対応したコードをChatGPTが出しててくれない(揺れが大きい)のでかなり大変でしたね。
難しかったポイントをまとめると、
SSLクライアント証明書のコード内記述方法まではChatGPTが答えてくれない
AWS IoT Coreの自由度が大変高い仕様なのでChatGPTの出力に揺れが発生しまくり
技術要素が満載(温湿度計測+Wi-Fi接続+MQTT+SSL通信+データ送信)でChatGPTの揺れが加速
結果
ここから弊社のサポート部隊が大活躍して何とかここも半分程度の参加者の方はクリアできましたが・・・半分の方を取り残す結果に(スミマセン)。
難関③:IoPクラウドとデバイスを接続
やっぱりChatGPTだけに頼るのは難しい
難関②を同じく、こちらも技術要素が満載(温湿度計測+Wi-Fi接続+MQTT+SSL通信+データ送信)で且つIoPクラウドのJSON形式に合わせる必要があり、どんなプロンプトを入れれば良いかというがある程度技術的に分かってないと出力結果の判断にも迷う展開になってしまいました。
魔法の呪文(プロンプト)
こんなこともあろうかと「魔法の呪文」は用意しておいたので、ここも突破できることはできました。 魔法の呪文は本当に最後の手段なので、やはりここも不本意な部分がありました(反省)。
まとめ1:プロンプトエンジニアリングって!?
使う人が知ってることはChatGPTが最強
前述のとおり、使う人が理解している(例えば、Wi-Fiに接続する)内容については、プロンプトと出力の一致を使う側が判断できるのでChatGPTに任せた方が圧倒的に速くて正確でしたね。
プロンプトを考えるには技術的な理解が伴う
当たり前な結論になりますが、ChatGPT(3.5)ではこの壁を乗り越えることはできませんでした。
複雑な技術の活用にはChatGPT3.5は力不足
例えば豊富な機能を備えるAWS IoT CoreやそのSSL証明書の使い方といった複雑な技術が掛け算的に必要になるとGPT3.5の要約能力ではかなり揺れが発生する結果になりました。このレベルになると、やはり使う側が基本的な技術を理解しておいて精査し、GPTと会話しながらコードを紡いでいく必要性が出てきます。手当たり次第動くまでやるのはプログラミングの本質ではありませんので。
まとめ2:検索が越えられなかった壁は越えた
それでも検索するより遙かに高速&簡単
検索では今回の講座をやりきることは当然ながら不可能でした。検索結果を選ぶ時点で技術理解や知識が必要ですから。
検索が越えられなかった壁を越えた瞬間
Lチカでしたり、温湿度計測やWi-Fi接続といったあたりも、本来であれば「検索では越えられない壁」でしたが、このあたりは易々と皆さんが越えていく姿が印象的でした。
人がやりたいと思う限り「コードは生み出される」
遠くに行きたい、空を飛びたい!と一緒で、人が「ソフトウェアを作りたい」「IoTデバイスを作りたい」と思う限り、それでもコードは生み出され続けます。
例え、ChatGPT(今は3.5や4)で今はできなくても、上手く動かないコードが出力されても、この流れは大きなうねりとなって世界中の仕事の仕方や、プログラミングを変えていきます。
誰だってプログラマー宣言
プログラマーって「オレはプログラマー」って言った瞬間からなれる職業です(少なくとも日本では)。
そして世の中に無かった価値を生み出せる素晴らしい仕事です。プログラマーの敷居をChatGPTが一気に下げてくれました。
誰だってプログラマー! 素晴らしい世の中になりましたね。
講座の最期にお伝えしたメッセージです。
リベンジマッチ(バージョンアップ版講座開催)
次回は、7月頃にやります!
今回の実施結果を踏まえた緊急対策会議を実施して課題を洗い出しました。
次回(2023年7月頃)に開催する講座は相当練られている筈です。
(是非、皆様ご参加くださいませ)
バージョンアップ内容
積み上げと、使用する技術の上がり具合を「ホップ・ステップ・ジャンプ」できるようにして積み上げと差分開発がやりやすくする予定です。
(今回は、ホップ・ステップ・大ジャンプ・・・でした)
具体的には、セキュリティやAWS IoT Coreまわりをいきなりやるのではなく、もう少し簡単なプロトコルや通信形式を挟む事により技術的な難易度の傾斜をもう少し緩やかにしてみる予定ですのでお楽しみに。
(おわり)