遺伝的アルゴリズムをScratchで体験してみた

遺伝的アルゴリズムをScratchで体験してみた

まちクエストを一緒に運営する @jishiha さんが、技術書典7でリリースされた新しいコンテンツが面白かったのでメモ。

大人のためのScratch

ノンプログラマーでもわかる、Scratchで簡単遺伝的アルゴリズム

これは、前作の『Scratch を改造しよう』に続く、大人のためのScratchシリーズの第2弾になってます。

Scratchといえば、ブロックを組み合わせてコードを書いていく事もあって、一般的には子供向けプログラミング入門環境としてよく知られています。

でも実は、大人のためのScratchという通り、小学生じゃなくても十分楽しめるんです。というか、プログラミングにはいろんな楽しみ方が有るってことを、今回のコンテンツで改めて実感しました。

ちなみに技術書典とは、

技術書を中心として出展者はノウハウを詰め込み、来場者はこの場にしかないおもしろい技術書をさがし求める、技術に関わる人のための場として『技術書典』を開催します。

https://techbookfest.org

というイベントだそうです。技術書版コミケ?っぽいのかな、行ってみたい。

遺伝的アルゴリズム?

最初にこのタイトルを見たときには「うーん、なんとなく難しそうな内容のネタだなー」「なんでこのネタなのかな?」と思ったのが正直な印象でした。

しかも、実際に動かせるScratchプロジェクトへのリンクをクリックをして「中を見る」したら、ブロック定義やループや変数がずらっと並んでるし、ほんとに“ノンプログラマーでもわかる”って大丈夫?とも…😅

しかし、実際に読んでみるとそんなことは全くの杞憂に過ぎず、Scratchのプログラムについてはすごく丁寧に解説されてるし、全10章を読み終わる頃には、遺伝的アルゴリズムってそういうことなのか!と、かなりのわかった感が味わえました。

そして、「このパラメータを変えたら遺伝による世代にどんな変化が見られるのかな?」と、まるで生命の進化を自在に操っているかのごとく、何度もパラメータを変えながらプログラムを走らせていてふと、思いました。これが、

プログラミングで学ぶ

ってことか!

例えば「遺伝」を学ぶ場合、本だけではわかりにくかったり、かと言って、実験室で何世代にも渡る遺伝の実験をするのもなかなか難しそう。

そんな時、遺伝をプログラムのロジックで表して動かしたり、パラメータを変化させてみると、複雑な遺伝の仕組みがとても解りやすくなるんですね。

そう考えると、この

  • 「遺伝的アルゴリズム」をプログラミングで表現すること
  • ノンプログラマーでも理解できるようにScratchが使われていること

は、とてもナルホド感の高い組み合わせだったんですね。

近頃、プログラミングを学ぶ環境はあちこちに増えていて、プログラミング大好き!な子供や大人はガシガシコード書いてゲームやロボットやサービスを作るようになってきてます。それはそれで楽しい。

でも一方で、プログラミング大好き!じゃない人でも、プログラミングでいろんなことが楽しめる、そんなコンテンツも今後どんどん増えたらまた面白そうだなと思いました。

プログラミングの楽しみ方も様々ですよ。

ノンプログラマーでもわかる、Scratchで簡単遺伝的アルゴリズム

ウェブでも購入できて500円!オススメです😄

Little Computer People

(余談)この遺伝的アルゴリズムを触っていて、ふと中学生の頃にパソコンショップの店頭でデモ展示されていたゲームのことを思い出しました。当時、いつかこんなのが作ってみたいと思ってました。

コンピューターの中で生活する人をただ眺めるだけのゲームなのですが、30年以上もタイトルをずっと思い出せずに記憶の彼方で消えかかっていたのを @abee2 先生がサクッと教えてくれました

これも、Scratchで作れるかな?😆