遠藤諭のプログラミング+日記 第215回
「生物シミュレーションのたまごっち」誕生の記録
M5Stack Stopwatchで“ポケットチューリング”がサイコーに楽しい
2026年08月21日 09時00分更新
いつでもチューリングパターンと一緒
M5Stackというデバイスをご存じだろうか。Wi-FiとBluetoothが使えるESP32という小さなマイコンを中心に、ディスプレイやボタン、バッテリーなどを小さな四角いケースに詰め込んだ開発モジュールだ。ブロックのようにモジュールを組み合わせて、手軽にIoTガジェットが作れることで人気を集めている。
私は、この手の組み込み系やArduino系の小さいデバイスは、メモリ管理や配線が面倒で、正直まるで得意としていない。しかし、最近登場した「M5Stack Stopwatch」というモデルの、まん丸いディスプレイがどうにも気になって入手したのだった。
いざ触ってみると、これがめちゃくちゃ楽しい。自分が書いたコードが、パソコンの四角い画面の中から飛び出し、手のひらに収まる丸いガジェットの中で動く。私の苦手分野だったはずだが、AIに聞けばいろいろ教えてくれるので、ジタバタしながらもプログラムを走らせることができた。
この「手の中にあるモノ感」はすばらしい。
では、この丸い画面で何を動かすか。作りたいのは、前回のこのコラムで紹介した「チューリングパターン」だ。
チューリングパターンとは、コンピュータ科学の父とも呼ばれるアラン・チューリングが提唱した、生物の模様を数式で表現した画像のことである。シマウマの縞やヒョウの斑点がそうだ。前回のコラムでは、ゴマサバの横っ腹のまだらの模様がおいしそうだと書いた。
それらが生物のなかで自己組織化して作り出されるのは、とても不思議である。個人的な意見だが、いま全盛のAIが世の中の情報をかき集めて真似ただけであるのに対して、次にくるのは自己組織化ではないかとなんとなく思う。
そして前回のコラムでも触れたのだが、私は、動物の形をした立体オブジェの表面をすべて液晶で覆い、そこにチューリングパターンをうごめかせたいと思っていた。どうもそう簡単ではないということが分かって、ディスプレイの前に切り抜いた紙をぶら下げる「おさかなチューリング」という小学生なみの工作をしてちょっと満足していたのである。
ところが、その後、小さな円形の液晶のデジタルバッジに“チューリングパターンが生成される過程の動画”を入れて表示させてみたら、これがなかなか味わい深かった。まるでシャーレの中の微生物の培養のようすを見ているような感じで、これはこれで生物っぽいではないかというわけだ。
だったら、動画を流すのではなく、同じく円形液晶がついたM5Stack Stopwatchの上で、チューリングパターンをリアルタイムで生成させてみたいと思ったのである。
「ポケットチューリング」と名付けることにしよう。
ささやかながら、“生命シミュレーションのたまごっち”が誕生した気分もある。
約40年ぶりのコミケと、幻の「たまご焼きゲーム」
少し話は逸れるが、前回のコラムで「チューリングパターン・キューブ」を夏のコミケで頒布すると書いた。結果から言うと、これも無事に完了した。私を約40年ぶりにコミケのサークル参加に引っ張りこんだTさんと、ZEN大学の同僚である吉村先生と一緒に、「寄り道総研」というブースで売り子をやらせてもらった。
情報系を教えておられる吉村総一郎先生は、オリジナル情報系謎解きゲーム「ドナンの部屋」の攻略・解説本というものを売っていた。
Tさんのほうは、前回はAIが作ったたまごかけご飯(TKG)のレシピ&試食レポート本を出して気を吐いていたのだが、今回は「たまご焼きゲーム」を作ろうとして、結局当日までに完成しなかったらしい。
たまご焼きゲームとしては、溶いた卵をフライパンに流し、ほどよく焼いたところでクルッと巻く。そのタイミングの良さを競う、といったものが考えられる。ひょっとしたら、M5Stack Stopwatchの丸いディスプレイを超ミニフライパンに見立ててプレイしたら楽しいかもしれない、などと後で思った。
私のチューリングパターン・キューブも、“こういうもの”を分かってくれる人たちが買ってくれて、その人たちとの会話がなかなか楽しかった。
大学の授業で学生たちにチューリングマシンでプログラミングする課題を出している先生がいたり、コンピュータの分野に精通しているはずなのにチューリングパターンのことはご存じなく、素直に感動してくれる人がいたりした。
隣のブースの情報系同人雑誌を売っている若人2人とも交流して、「『波紋とらせんとフィボナッチ』(近藤滋)が文庫におりてきているのでオススメですよ」と勧められた。言われて、私も買って読んでみたのだが、まさに前回紹介したアラン・チューリングの論文やチューリングパターンの話が出てくる!
本当に、コミケってすばらしいと思う。
話は長くなるのでここではやめておくが、私の人生を最も大きく変えた出来事の1つが、1977年に友人Sくんに誘われて参加したコミケ(C5)なのは間違いない。そのSくんがその後やっていた印刷屋さんについても、どこかで触れなければならないのだが、やはりとても長くなってしまうので別の機会にゆずることにしたい。
チューリングパターンに話を戻すと、コミケ当日の夜の会話も面白かった。日本におけるサイエンスエッセイの最高峰というべき『物理の散歩道』(ロゲルギスト著)に「味噌汁にできる柄の話がありましたよね」とか、「寺田寅彦のエッセイに近い話があったかも」といった具合である。
それぞれの人の中に、それぞれのチューリングパターンがあるのだと思う。
AIと二人三脚で挑む「ポケットチューリング」開発
さて、この手の組み込み系やArduino系の小さいデバイスは、正直まるで得意としていないと書いた。過去には、WatchyやWatch XといったArduino系のスマートウォッチ開発ボードをいじったことはあるが、やはりC++やマイコン特有の作法はどうも苦手である(参照:“自作PC”ならぬ“自作スマートウォッチ”の時代はくるのか?)。
スマートウォッチ開発ボードのときはたいしたことはできなかったのだが、いまならAIというものが我々にはついている。
ということで、さっそくAIサポーテッドというよりも“AIまる投げ”感覚で、M5Stack Stopwatch向けのチューリングパターン生成プログラムを書き始めてみた。しかし、ウェブサービスを作るときのように、AIに投げたら一度でパッと完成するというほど簡単な話ではなかった。
まず、ブラウザで動かしていたGray-ScottモデルのプログラムをM5StackのC++用に移植してもらう。
開発環境のインストールから設定まで、それなりに躓いたりしたものの、そこもAIに聞いてなんとかクリア。コードも3度ほどエラーを出したが、なんとか動かすことができた。
しかし、小さなマイコンにとって浮動小数点の計算は重労働で、画面の更新はカクカクだった。
そこから、AIくんとの高速化に関するやりとりがはじまった。まず、浮動小数点の計算を14ビットの「固定小数点演算(整数演算)」に切り替えた。次に、ESP32に内蔵されている2つの頭脳(デュアルコア)を活用し、画面の左半分と右半分を並列で計算させた。さらに、標準の描画関数を使わず、VRAM(ビデオメモリ)に直接データを流し込むことにした。
これで爆速になったゾと喜んだのもつかの間。よく見ると肝心の反応拡散のようすがおかしいではないか? 整数化の代償として、小数点以下のデリケートな「揺らぎ」が失われ、複雑な模様が安定しない。最終的には、計算を行う一瞬だけ浮動小数点(float)に戻す「ハイブリッド方式」を採用することになった。
ウネウネからKillを増加させて点が増えてきた。ポケットチューリングでは右の青いボタンを押すことで表示色を変えられる。また、FeedとKill、経過時間がリアルタイムで表示される(単位=秒、その意味ではストップウォッチ的)。
今回、これがうまくいった理由の1つは、最初に「何も考えずに開発したい」とAIに伝えたことかもしれない。
実際に、私は何も考えずにAIの言うがままに開発環境を設定し、作り方もAIがやりたいという手順ですすめた。こんな機能を持たせたいとか、こんなUIにしたいとかを伝えただけで、中身はまるで考えていない。途中のいくつかの課題については、前述のようなやりとりはあったが、AIは、その都度、理由や考え方を説明しながら解決してくれる。
つまり、「何も考えずに開発」したはずが、ジタバタとやりとりしたのがよかったのだろう。プログラムが完成する頃には、M5Stack Stopwatchというハードウェアのキャラクターも、今回のソフトウェアで重要な点も、全体像がつかめた気分になったのである。
これはなかなかの教育的効果ではないかと思う。
生物シミュレーションのたまごっち
ドタバタとエラーを消したり、改善したりしながら数時間でできあがった「ポケットチューリング」は、単に模様を眺めるだけでなく、かなり遊べるガジェットになった。
基本的な使い方はこうだ。
本体左側のオレンジボタンを押すと、迷路、縞模様、斑点、波紋、細胞壁など、8種類のチューリングパターンのプリセットが切り替わる。右側の青いボタンを押すと、サイバー、炎、マトリックスなど8種類のカラーテーマが変わる。
また、M5Stack Stopwatchのタッチ対応の丸い画面のフチを指でなぞることで、模様のパラメータをマニュアル調整できる。
液晶の右のフチを上下にスワイプすると、物質を追加する「Feed」の値が変化する。左のフチを上下にスワイプすると、物質を取り除く「Kill」の値が変化する。円周を二分割して左右に割り振ったわけだ。画面下部には「F:0.029 K:0.057」のように、リアルタイムで数値が反映される(FeedとKillについては前回記事を参照のこと)。
なぞっていくと、斑点が徐々に繋がってストライプになり、混合相を経て迷路に近いものになったりする。波紋が崩れてワームのように這い回ったりもする。その場で相転移(模様の傾向の変化)が起きるのだ。自分の指先で、模様が安定して成長できるスイートスポットを探す。
もし、パラメータをいじりすぎて画面が真っ暗(死滅状態)になってしまっても大丈夫だ。画面の中央をポンとタップすると、「DROP SEED!」という表示とともに反応物質の塊がポチョンと投下され、そこから再び模様が広がり始める。
手のひらの中で蠢く模様を指先でなぞって環境を変化させ、死に絶えそうになったら中央をタップして栄養(シード)を落としてやる。
お気に入りの生命を採取する「デジタル虫かご」
さらに、このガジェットにはもう一つ、「デジタル虫かご」とでも呼ぶべき機能がある。
シミュレーション中にオレンジボタンを押しっぱなしにしながら、青ボタンをカチッと押すと、画面にメニューが浮かび上がる。オレンジボタンで項目を送り、青ボタンで決定。ここで「SAVE CURRENT」を選ぶと、現在画面で蠢いている物質濃度の配列データが、画像に変換されることなくバイナリデータのまま、大容量のFATFSパーティションに保存される。
メニューから「GALLERY」を開けば、保存した過去の模様たち(コレクション)を青ボタンでパラパラとめくって閲覧できる(オレンジボタンで閲覧を終了してメニューに戻る)。これだけでも図鑑のようで楽しいのだが、これだけではない。
ギャラリーで過去のお気に入り模様を眺めている最中に、青ボタンを「長押し」する。すると、その模様の配列データが現在のキャンバスにロードされ、メニューも飛び越えて、その状態から即座にシミュレーションの培養が再開される。
偶然生み出された美しい模様ができたらすかさずメニューから採取し、後からロードしてさらに別のパラメータを与えて育て直す。
これはもはや、タイムマシン付きデジタル培養皿である。
本物のたまごっちは、エサを要求されたりウンチを掃除したりする営みはあるものの、中身はIF-THEN-ELSEやWHILE-DO-LOOPの塊である。それに対してポケットチューリングは、ささやかながら生物のしくみそのものをシミュレーションしている。
小さな円窓の中で、数式が生み出す生命的な模様が今日も蠢いている。
ポケットチューリングのコードは、GitHubに置いた。
https://github.com/hortense667/PocketTuring
吉村先生の「ドナンの部屋」はこちら。
https://donans-room.pages.dev/
遠藤 諭(えんどうさとし)
角川アスキー総合研究所リサーチパートナー、MITテクノロジーレビュー日本版アドバイザー、ZEN大学客員教授、ZEN大学 コンテンツ産業史アーカイブ研究センター研究員。プログラマを経て1985年に株式会社アスキー入社。月刊アスキー編集長、株式会社アスキー取締役、株式会社角川アスキー総合研究所取締役などを経て、2025年より現職。雑誌編集長時代は、ミリオンセラーとなった『マーフィーの法則』など書籍も手がけた。著書に、『計算機屋かく戦えり』、『近代プログラマの夕』(ともにアスキー)など。
X:@hortense667
Bluesky:https://bsky.app/profile/hortense667.bsky.social
mixi2:@hortense667
note:https://note.com/hortense667
Medium:https://medium.com/@satoshi.endo
本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
-
第214回
プログラミング+
チューリングパターンを遊ぼう! -
第213回
プログラミング+
ナイジェリア鉄道に5ドル払った朝――AIによって新しい種類のバグが誕生しているのではないか -
第212回
プログラミング+
解約したいだけなのに、なぜ立てこもらなければならなかったのか? -
第211回
プログラミング+
メガネは、AIの居場所になるのか -
第210回
プログラミング+
ナポレオン一世とコンピューター -
第209回
プログラミング+
鉄腕アトムー科学+魔法=AI on NVIDIA DGX Sparkが出した答えとは? -
第208回
プログラミング+
“合成音声”はかくも機械的なのに心を揺さぶるのか? -
第207回
プログラミング+
秋葉原は「アキバノハラ」だったのか、「アキハノハラ」だったのか? -
第206回
プログラミング+
“宿題でAIを使いはじめる前”に、“AI的ゾンビ”(a-zombie)にならないための方法 -
第205回
プログラミング+
「電脳秘宝館・マイコン展」──Intel 4004“ナゾ基板”の正体と、日本最初の野球ビデオゲーム「ラスト・イニング」 - この連載の一覧へ


















