Scratchで描く雪の結晶!「自分を呼び出す魔法」でフラクタル図形を作ろう

サイエンストレーナーの桑子研です。毎日が実験。

雪の結晶、ギザギザの海岸線、そして食卓にのぼるブロッコリー。これらに共通する“美しさの秘密”を知っていますか?実は、どれも「部分を拡大すると、全体とそっくりな形が隠れている」という、不思議な性質を持っているんです。

この自然界に潜むデザインルールを「フラクタル」と呼びます。そして今日は、この神秘的なフラクタル図形を、プログラミングツール「Scratch」で描く冒険に出かけましょう!まるで魔法使いのように、単純な命令を組み合わせて、複雑で美しい世界を創り出す面白さを体験できますよ。

まずは完成形!魔法で描かれたアートを見てみよう

さっそくですが、こちらが今回作成するプログラムです。

左上の緑の旗マークを押すと、図形が描かれ始めます。もし「完成まで待てない!」という方は、キーボードのシフト(Shift)キーを押しながら旗マークをクリックしてみてください。ターボモードになり、一瞬でアートが完成します。

どうです?美しい模様でしょう?この図形を描くための魔法の呪文は、たったの2つ。「ブロックを作る(自分で命令を作る魔法)」と「再帰処理(自分を呼び出す魔法)」です。さあ、この魔法の秘密を一緒に解き明かしていきましょう!

ステップ1:基本の呪文「三角形よ、現れよ!」

まずは、すべての基本となる「正三角形を描く」というプログラムを作ります。これは簡単ですね。

正三角形を描くプログラム

描かれた正三角形

次に、この一連の動きを「ブロックを作る」機能で、いつでも呼び出せるオリジナルの呪文にしてみましょう。いわば、魔法の書に新しい呪文を登録するようなものです。

ブロック作成画面

ここでは呪文の名前を「triangle」とし、「引数(ひきすう)」というものを追加します。この引数とは、ここでは三角形の大きさを指定するためのもの。これで「大きな三角形を描け!」「小さな三角形を描け!」と、自由に大きさを変えられるようになります。

作成されたtriangleブロック

triangleブロックを使ったプログラム

ほら、triangleブロックの数字を300から200に変えるだけで、小さな三角形が描けました。これで第一の魔法はマスターです!

大きさを変えた三角形

ステップ2:禁断の呪文!?「自分自身を呼び出す」

ここからが本番です。二つ目の魔法、「再帰(さいき)処理」に挑戦しましょう。これは、プログラムが自分自身の呪文を、その呪文の中から呼び出すという、ちょっと不思議なテクニックです。

「『triangle』の呪文を唱えている最中に、さらに小さな『triangle』の呪文を唱えさせる」というイメージ。三角形の辺を描きながら、その先にまた新しい三角形を生み出していくのです。

再帰処理を入れたプログラム

プログラムのポイントは、triangleブロックの中で、さらにtriangleブロックを呼び出している点。そして、呼び出すたびに辺の長さを半分(number or text / 2)にしています。

さあ、これを実行するとどうなるでしょう…?

なんと!プログラムが自分を呼び出し続け、猫が無限に描き続けて止まらなくなってしまいます! 暴走です!そう、この魔法には「止め時」を教えてあげる必要があるのです。

ステップ3:魔法を制御し、アートを完成させよ!

暴走する魔法を止めるため、「もし辺の長さが10よりも大きかったら処理を続ける。でも、それより小さくなったら、もうおしまい!」という停止条件を追加します。

停止条件を追加した完成プログラム

このたった一つのルールを加えるだけで、無限の暴走は止まり、秩序だった美しいフラクタル図形が姿を現します。

単純な「三角形を描く」というルールと、「辺の先から、半分の大きさで同じことを繰り返す」というルール。そして「小さくなりすぎたら止まる」というルール。たったこれだけの組み合わせで、こんなにも複雑で美しい模様が生まれるのです。

なぜこうなるのか、プログラムの動きをじっくり追いかけてみるのも面白いですよ。自然界の神秘を、自分の手で再現できたような感動が味わえるはずです!

お問い合わせ・ご依頼について

科学の不思議やおもしろさをもっと身近に!自宅でできる楽しい科学実験や、そのコツをわかりやすくまとめています。いろいろ検索してみてください!
・運営者・桑子研についてはこちら
・各種ご依頼(執筆・講演・実験教室・TV監修・出演など)はこちら
・記事の更新情報はXで配信中

科学のネタチャンネルでは実験動画を配信中!