Scratchで描く雪の結晶!「自分を呼び出す魔法」でフラクタル図形を作ろう
サイエンストレーナーの桑子研です。毎日が実験。
雪の結晶、ギザギザの海岸線、そして食卓にのぼるブロッコリー。これらに共通する“美しさの秘密”を知っていますか?実は、どれも「部分を拡大すると、全体とそっくりな形が隠れている」という、不思議な性質を持っているんです。
この自然界に潜むデザインルールを「フラクタル」と呼びます。そして今日は、この神秘的なフラクタル図形を、プログラミングツール「Scratch」で描く冒険に出かけましょう!まるで魔法使いのように、単純な命令を組み合わせて、複雑で美しい世界を創り出す面白さを体験できますよ。
まずは完成形!魔法で描かれたアートを見てみよう
さっそくですが、こちらが今回作成するプログラムです。
左上の緑の旗マークを押すと、図形が描かれ始めます。もし「完成まで待てない!」という方は、キーボードのシフト(Shift)キーを押しながら旗マークをクリックしてみてください。ターボモードになり、一瞬でアートが完成します。
どうです?美しい模様でしょう?この図形を描くための魔法の呪文は、たったの2つ。「ブロックを作る(自分で命令を作る魔法)」と「再帰処理(自分を呼び出す魔法)」です。さあ、この魔法の秘密を一緒に解き明かしていきましょう!
ステップ1:基本の呪文「三角形よ、現れよ!」
まずは、すべての基本となる「正三角形を描く」というプログラムを作ります。これは簡単ですね。
次に、この一連の動きを「ブロックを作る」機能で、いつでも呼び出せるオリジナルの呪文にしてみましょう。いわば、魔法の書に新しい呪文を登録するようなものです。
ここでは呪文の名前を「triangle」とし、「引数(ひきすう)」というものを追加します。この引数とは、ここでは三角形の大きさを指定するためのもの。これで「大きな三角形を描け!」「小さな三角形を描け!」と、自由に大きさを変えられるようになります。
ほら、triangleブロックの数字を300から200に変えるだけで、小さな三角形が描けました。これで第一の魔法はマスターです!
ステップ2:禁断の呪文!?「自分自身を呼び出す」
ここからが本番です。二つ目の魔法、「再帰(さいき)処理」に挑戦しましょう。これは、プログラムが自分自身の呪文を、その呪文の中から呼び出すという、ちょっと不思議なテクニックです。
「『triangle』の呪文を唱えている最中に、さらに小さな『triangle』の呪文を唱えさせる」というイメージ。三角形の辺を描きながら、その先にまた新しい三角形を生み出していくのです。
プログラムのポイントは、triangleブロックの中で、さらにtriangleブロックを呼び出している点。そして、呼び出すたびに辺の長さを半分(number or text / 2)にしています。
さあ、これを実行するとどうなるでしょう…?
なんと!プログラムが自分を呼び出し続け、猫が無限に描き続けて止まらなくなってしまいます! 暴走です!そう、この魔法には「止め時」を教えてあげる必要があるのです。
ステップ3:魔法を制御し、アートを完成させよ!
暴走する魔法を止めるため、「もし辺の長さが10よりも大きかったら処理を続ける。でも、それより小さくなったら、もうおしまい!」という停止条件を追加します。
このたった一つのルールを加えるだけで、無限の暴走は止まり、秩序だった美しいフラクタル図形が姿を現します。
単純な「三角形を描く」というルールと、「辺の先から、半分の大きさで同じことを繰り返す」というルール。そして「小さくなりすぎたら止まる」というルール。たったこれだけの組み合わせで、こんなにも複雑で美しい模様が生まれるのです。
なぜこうなるのか、プログラムの動きをじっくり追いかけてみるのも面白いですよ。自然界の神秘を、自分の手で再現できたような感動が味わえるはずです!
お問い合わせ・ご依頼について
科学の不思議やおもしろさをもっと身近に!自宅でできる楽しい科学実験や、そのコツをわかりやすくまとめています。いろいろ検索してみてください!
・運営者・桑子研についてはこちら
・各種ご依頼(執筆・講演・実験教室・TV監修・出演など)はこちら
・記事の更新情報はXで配信中!
科学のネタチャンネルでは実験動画を配信中!