motoh's blog

主に趣味の電子工作やプログラミングについて書いていきます

プログラミングでChatGPTが欠かせなくなるかもしれないと思わされた体験談

ChatGPTにプログラミングを手伝ってもらったという記事はすでにネット上にあふれていますが、実際に自分で体験してみるまでわからなかったすごさを共有できたらと思います。

きっかけ

仕事で、Linuxでリアルタイム性が求められる組込みシステムのマルチタスク制御をする必要が出てきました。学生のとき(1●年前!!!)にLinuxのマルチスレッド(pthread)でロボット制御をしたことはありますが、最近はというと、ラズパイで遊ぶくらいしかLinuxには触れていません^^; Linuxでリアルタイム性を損なわずにマルチタスク制御できるのかどうか、真面目に調べる必要がありました。

まずは最近のトレンドについて、ChatGPTに聞いてみた

最近ようやくアカウントをつくったChatGPTに、あまり期待はせずに聞いてみました。

コルーチンって何??? ネット検索してみると、確かに最近のトレンドであることが分かります。組込みシステムについてそれなりに知っている気になっていた自分が恥ずかしくなってきました。同時に、いきなりトップクラスの技術者の友達が出来たような、不思議な感覚にとらわれました。(コルーチンなんて常識じゃんと言われてしまうとゴメンナサイですが…)

結局、仕事のチーム内でコルーチンについてプレゼンするのは面倒なので、まずは伝統的なpthreadで調査を進めることにしましたが、ChatGPTは今後無視できなくなると初めて考えさせられた体験でした。

サンプルコードも正確

さらに感動は続きます。

よくよく調べると、Linuxのマルチスレッドでリアルタイム処理をするために、スレッドのスケジューリングポリシーをデフォルトのSCHED_OTHERからSCHED_FIFOに変更する必要があることがわかりました(そうすることでリアルタイムOSと同じように優先度ベースの並列処理ができる)。

※まだ自分のネット検索力にも自信はあったので、これは自分で調べてしまいましたが、後に、ChatGPTに聞いたほうが近道だったことが分かります。

自分で調べた結果、どうやらスケジューリングポリシーを確認、変更するには sched_getscheduler() / sched_setscheduler() を使えば良いことがわかりましたが、いくら検索してもサンプルコードが出てきません。出てくるのはManページを翻訳したようなサイトばかりです(Manページの情報が不十分と言うわけではありませんが、効率を求めるとやはりサンプルコードは欲しい…)。

そこで、ようやくChatGPTに聞いてみました。

…完璧です。わかりやすい解説が付くうえ、とても読みやすいサンプルコードが出てきました。しかも、そのままコンパイルして実行することができました。

なぜ、ネット検索しても出てこないようなサンプルコードをChatGPTさんは書けるのでしょうか… もしかすると、海外サイトも含めて検索するとサンプルコードも出てくるのかもしれませんが、それを日本語の質問で出してくれるChatGPT、便利すぎます。

後で、この関数は親プロセスのスケジューリングポリシーを変更するものであって、子スレッドに対しては別の関数を使う必要があることがわかりました。ChatGPTに質問したら、初めから正しい関数を教えてくれました。そのやり取りがこちら。…ネット検索力、完敗です(汗)

まとめ

初めてChatGPTと一緒にプログラミングをして、そのすごさを目の当たりにしたという話でした。ChatGPTに聞いた内容があまり一般ウケする内容ではなかったので、記事にするかは少し悩みましたが、このような組込み技術者の中でもさらに一握りの人しか調べないような知識までChatGPTが完璧にカバーしているのが本当にすごいと思い、あえて記事にしました。

ChatGPTがプログラミングできると聞いても、結局人が色々手を加えないと使い物にならないでしょと今まであまり気にしていませんでしたが、サンプルコードを生成してくれるツールだと思うと急に身近に感じられ、ネット検索するより早いという評判も、確かに...と思えるようになりました。

ちなみに、自分が使っているのはGPT3.5です。GPT4だとさらに性能が上がってしまうなんて... GPT3.5をもう少し使いこなしたら、GPT4も使ってみたいと思います。