AIにコードを書かせてみました
今、マイクロコンピュータとセンサーを使った気圧計を制作しています。これが完成したら部品と基盤をセットにしたキットを作り、子どもたちの教材にするつもりです。
「気圧計を作ろう」と思ったきっかけは昨年、中学校で「学びの多様化学校」の申請をした時に、体験的授業として身近な気象現象を観測する案を考えたことでした。その際、気温や湿度は簡単に計測できて体感的にもわかりやすいのですが、気圧に関しては測定器具があまり出回ってないし体感では分かりにくいので、手軽に測定できる器具を作ってみたら面白いのではと思ったのです。さらに自分で製作すれば理科の分野だけでなく、技術の「ものづくり」やプログラミングの分野も補えます。また近年、気圧の低下時に体調不良を訴える子どもたちが多く、気圧と自分の健康状態についての関連を調べることも出来たりと、いろいろ広げていけるのではと考えたのです。

気圧計のしくみそのものはシンプルで、気圧センサーの数値をマイクロコンピューターで読み取って、それを液晶ディスプレイに表示するだけです。ただし、パソコン上で作るプログラムと違って、マイクロコンピューターにはOS(基本ソフト)が無いので、自分で書いたプログラムでセンサーやディスプレイを直接制御しなければなりません。これが結構やっかいなのです。
どんな電気信号を送るとセンサーが作動して、どんな電気信号でデータを返してくるのか。取得したデータはどんな形式で、実際の気圧に換算するためにはどんな計算が必要なのか。さらに、どんな電気信号で、どんなデータを送ればディスプレイに表示されるのか。そういったことを全て知った上でコードを書く必要があるのです。そのためには各部品のマニュアルを丁寧に読み込まなければなりません。マニュアルが英文の分厚いものだったりすると、これはかなり骨の折れる作業になります。(実際、今回使った気圧センサーのマニュアルがそうでした)

そこで思いついたのがAIの利用です。近年のAIのコーディング能力は飛躍的に上がっていると聞いていたのと、この作業をAIに任せたらどんなコードを生成するのか興味もあったのでやってみることにしたのです。
使ったAIは最近評判を上げているGoogle Gemini pro2.5 。結果は想像以上でした。生成されたコードは一見してかなりきちんとしたもので「これなら使えるな」という印象です。今回使ったマイクロコンピュータはPICという製品で世界中の数多くの電化製品に組み込まれおり、データや文献が豊富だったのでしょう。AIはそれらをしっかり学習している様子でした。

ただしAIの生成したコードが初めから問題なく動いたわけではありません。
プログラミングを経験された方はわかると思いますが、書いたコードが一発で動くことは滅多にありません。単純ミス、思い込み、想定外のケース等、さまざまな修正が必要となるのが常です。特に今回のプログラムのように周辺のハードウェアを直接動かす場合は機器どうしの処理のタイミングを合わせるなどの細かい調整も必要で、試行錯誤的な対応が欠かせないのです。
AIの生成したコードも例外ではなく、初めはまったく動きませんでした。

こうした場合、コードのどこに問題があるのか調べ、修正していく「デバッグ」という作業が必要になります。この作業は大まかに言うと、プログラムをわざと途中で停止させて、その時の状態を調べることで、どこまでは正常に動いていて、どこからが思い通りに動いてないのかを確認し、修正すべきコードを特定していくのです。
例えば気圧センサーとの接続がうまく行っているかどうかを調べるためには、センサーに信号を送った次の段階で一旦プログラムを停止し、センサーからの返信が来ているかどうかをチェックします。今回の場合、まずここで躓いていました。
AIにその原因を尋ねると、いくつか候補を返してきます。接触不良はないか? センサーのアドレスは合っているか? センサーからの応答を待つ時間は十分か?といった具合です。
それぐらいのことならわざわざAIに尋ねる必要もないのですが、どんな答えを返してくるか興味もあったので、一つひとつAIと対話をしながらデバッグを進めていきました。
この時は、3つ目の「センサーの応答を待つ時間は十分か?」というのが正解で、待ち時間を増やすと応答が確認されました。応答が返ってくる前に次の処理を進めてしまっていたのがエラーの原因だったのです。
そこでAIにコードの修正を頼むと、プログラムの他の場所も含め応答時間を変更したコードを生成してくれました。
こんな様子でデバッグを進めていったのですが、すべて順調に進んだわけではありません。例えばディスプレイに文字が正しく表示されない問題が発生した時は、AIも自分もコードに問題があると思い込み修正を繰り返しましたが、実はAIの提示した文字データそのものに誤りがあったのです。そのことに気づくまでは、AIが「本来は不要な『屋上屋を架す』ような修正でした」と反省するような回り道をしてしまいました。
正常に動作するようになるまではそんな試行錯誤の連続でしたが、それはそれでいろんな発見もあり、スリリングで楽しい経験ではありました。

以下、初めてAIを使ってプログラミングをした感想を述べていきます。

まず、先に述べたような試行錯誤は必要でしたが、やはりAIはすごく便利だと思いました。自分でマニュアルを調べ、一からコードを書いていくことに比べると、完全ではないものであっても、AIがまず「雛形」を作ってくれて、それを修正していく方がずっと楽なのです。

そしてAIは自分が使いこなす「ツール」というよりは、相談や議論をする「相手」という印象です。AIに教えられたり、あるいはAIの間違いを指摘したりしながら、エラー箇所を発見しプログラムを修正していく過程はまるで「パートナーと作業をしているような感覚」でした。その過程はとても楽しく、「相手」が人間ではないのはわかっていても、完成した時はお互いを称え合う「共感」すら感じてしまいました。
ただ、こうした便利さ、楽しさを感じる一方で、これから先、AI無しではやっていけなくなり、AIに「依存」していってしまうのではと言う心配も同時に感じました。

また今回はAIの生成したコードが完全ではなく、議論をしながら修正していくことができました。これが出来たのは自分にある程度のプログラミングの知識があり、AIが生成したコードの意味を理解できたからです。そうした基盤があったからこそ、AIとの作業の中で自分自身の認識も深めていくことができたし、それが楽しさにつながっていったと思います。
今後、AIがさらに進化すれば初めから完璧なコードを生成するようになるでしょう。そうなると、プログラムの目的をAIに伝えることさえ出来れば、生成されたコードの意味は分からなくても済むことになります。そうなった時、あえてコードの意味を理解しようとする人がどれぐらいいるのか? 疑問です。便利さの一方で、人間がAIに頼り「怠け癖」がついてしまうのでは危惧します。
「動けばいいじゃない」と割り切ることもひとつですが、自分としては「AIがなにをしているかわからない」というのは気持ち悪いので、しぶとく意味を理解していきたいとは思っています。
気圧計
最後に現在の気圧計の写真を添えておきます。
これはブレッドボードという試作用の基盤に組んだもので、正式ににはプリント基盤を用意して組み立てるつもりです。ディスプレイの上段が気圧、下段が気温です。972.7ヘクトパスカルと気圧が低めに表示されているのは高校校舎の標高が320mほどあるからで、海抜0mに換算すると約1008ヘクトパスカルになります。20mほど上にある中学校舎に移動すれば、さらに2気圧ほど下がるので、なんとなく空気の重さを「実感」できるのではないでしょうか。
気圧計
お問い合わせ
資料請求
見学受付