光と色のシンフォニーを、Macの中にーデジタル万華鏡アプリを作ってみた

万華鏡は、子どものおもちゃで終わらない

万華鏡というと、小学校の工作で作った記憶がある方も多いのではないでしょうか。筒をくるくる回すたびに、形と色が次々に変わり、思いがけない模様が現れる。子どものころはただ夢中でのぞいていましたが、あらためて考えると、あれはまさに光と色彩のシンフォニーでした。

万華鏡の魅力は、のぞいた先の模様だけにとどまりません。外側の造形と、内側に広がる映像表現、その両方がそろって初めてひとつの作品になります。

外側もまた、ひとつのアート

万華鏡の外観には、ガラス、陶器、木材、金属、プラスチック、紙など、実にさまざまな素材が使われています。形も筒形に限らず、こけしのようなもの、望遠鏡のようなもの、建物や人形を思わせるものまであり、中には工芸品やアート作品と呼びたくなるようなものも少なくありません。
手に取ったときの質感や佇まいも含めて、万華鏡は見るための道具であると同時に、それ自体が鑑賞の対象なのだと感じます。

内部に広がる、終わりのない変化

内部に使われるオブジェクトもまた実に多彩です。ガラス片、ビーズ、天然石、プラスチック片、ドライフラワーなど、さまざまな小片が組み合わさって無数のパターンを生み出します。

同じものは二度と現れない――少なくとも、そう感じさせるところが万華鏡のすごいところです。現れては消え、消えてはまた新しい像が立ち上がる。その儚さと、尽きることのない変化の連続。その両方を同時に持っているところに、万華鏡の奥深さがあるのだと思います。

華麗な夢の世界 万華鏡
編者:照木 公子
発行日:2003年5月8日 第3刷
出版社: 文化出版局
ISBN-10:4579207319)

それをアプリで再現してみたくなった

そんな幻想的な世界を、アプリで作れないだろうか。そう思ったのが今回の始まりでした。

もちろん、万華鏡アプリ自体は世の中にたくさんあります。いまさらと言えばいまさらです。でも、美しいものは何度見てもいい。子どものころ、母の鏡台についていた虹色にきらめく小さな飾りや、本で見た王冠の宝石に心を奪われた記憶が、いまだにどこかに残っています。光りものに目がないあたり、昔から少々カラス寄りだったのかもしれません。

まずは要件定義から

そこで、いつものようにChatGPTに要望を整理してもらい、まずは要件定義を作ることにしました。今回作りたかったのは、macOS上で動くデジタル万華鏡アプリです。画面は左にキャンバス、右にコントロールパネルという構成。操作はタブ式にして、見た目の整理と使いやすさを両立させたいと考えました。ほとんどメニューを使わないので操作が楽です。

特にこだわったのは、「平面的な図形の繰り返し」に見えないことです。単なる幾何学模様ではなく、本物の万華鏡のように、光がにじみ、重なり、奥行きが感じられること。さらに、グロー効果は必須。色についても、ただの単色ではなく、オパールやシャボン玉、モルフォ蝶の羽のような、見る角度や動きによって印象が変わる偏光色、構造色、干渉色のような表現を取り入れたいと考えました。

素材も色も、できるだけ豊かに

内部の素材も、できるだけ豊かにしたい。ガラス片のようなもの、宝石のようなもの、光る粒子、フィルム片、有機的な断片など、さまざまなオブジェクトをプレート上に置き、それを鏡で反射・複製して万華鏡模様を作る構想です。

ミラーの角度は、30-60-90、45-45-90、60-60-60といった三角形セルを切り替えられるようにし、プレート自体も移動や回転ができるようにしたい。色もブレンドモードも変えられて、さらに動きに合わせて色や輝きが少し変わる。そんな、見ていて飽きない仕組みを目指しました。

要件定義が、一気に輪郭を与えてくれた

ChatGPTがまとめてくれた要件定義はかなり本格的で、SwiftUI(Apple製品(iOS, macOSなど)の画面を、少ないコードで直感的に作れる現代的なフレームワーク)をベースにしつつ、高速描画が必要な部分はMetal(GPU(画像処理装置)の能力を最大限に引き出すための技術)を使う構成になりました。目的は、対称図形を並べることではなく、「光る素材片を鏡で増幅していく万華鏡体験」をデジタルで再現すること。その方向性がはっきりしたことで、作るべきものの輪郭がかなり見えてきました。

Codexで実装してみたら……

そして、それをもとにCodexに実装してもらったところ、最初のプロトタイプは数十分で形になってしまいました。ここは正直かなり驚きました。

もちろん、そこから先はそう簡単にはいきません。実際に動かしてみると、「ここはもっとこうしたい」「この色はもう少し深くしたい」「動きが少し素直すぎる」など、こちらの注文がどんどん増えていきます。いわば、作る側の欲がむくむくと育ってくるわけです。

でも、そのわがままに付き合って、黙々と手を入れてくれるのが妙にうれしい。人間相手なら少し遠慮しそうなことでも、こちらは容赦なく投げられる。しかも、ちゃんと形になって返ってくる。そのやりとり自体が、ものづくりの新しい面白さだと感じました。いくつもアプリを作ってきたおかげで、Codexも分かってくれているので、エラーログもしっかり組み込んでくれました。

美しさと軽さ、そのせめぎ合い

描画にはMetalを使っているので、映像はリアルタイムでかなり滑らかに動きます。GPUの力をしっかり使っているおかげで、光のにじみや発光感も気持ちよく出せます。

ただ、その一方で、エフェクトを盛りすぎると描画が重くなり、動きが少しカクついてしまうこともあります。美しさを取るか、軽快さを取るか。このあたりのバランス調整は、なかなか悩ましいところです。万華鏡はのぞけば夢の世界ですが、作る側は意外と現実的な最適化とも向き合わされます。きれいごとだけでは済まない、というやつです。

そして今度は、動画と音へ

使っているうちに、今度は静止画だけでは物足りなくなってきました。だったら動画でも書き出したい。最初は静止画像と同じ解像度で考えていたのですが、最終的には16:9や1:1といった一般的な比率でエクスポートできるようにしました。やはり、見せる場所を考えると、このあたりの対応は欠かせません。YouTubeのアカウントを整理したら動画も載せたいと思います。

そうなると、次は音が欲しくなります。映像だけでもきれいなのですが、しばらく見ていると今度は音楽をつけたくなってきました。こうしてまた新しい欲が出てくるわけです。しかも、この音楽づけがまた、なかなかの沼でした。この話は長くなるので、続きはまた次回に回そうと思います。

万華鏡の世界は、思っていた以上に深い

最後に、今回あらためて万華鏡について調べてみると、日本には万華鏡美術館や博物館が思っていた以上にありました。それだけ長く、人を惹きつけてきた世界なのだと思います。

小さな筒の中に、驚きと美しさが無限に詰まっている。万華鏡には、そう言いたくなるだけの力があります。関連する施設もリストアップしてみましたので、興味のある方は、実物の万華鏡の世界に触れに出かけてみるのもおすすめです。

名称所在地特徴公式URL備考
三河工芸ガラス美術館愛知県西尾市巨大万華鏡スフィア体感https://mikawakougei.com/予約優先・日祝は予約のみ開館の運用あり。
京都万華鏡ミュージアム京都府京都市中京区触れる展示+投影式万華鏡https://k-kaleido.org/常時約50点展示・投影式上映あり(展示替え型の常設)。4
日本万華鏡博物館埼玉県川口市見る/作る 予約優先https://nihonmangekyouhakubutsukan.jimdofree.com/予約優先・日祝は予約のみ開館の運用あり。5
MOA美術館静岡県熱海市円形ホールの巨大万華鏡マッピングhttps://www.moaart.or.jp/万華鏡は館内スポット(関連展示):円形ホールの投影型万華鏡。
アトリエ・ロッキー万華鏡館静岡県伊東市巨大万華鏡+制作体験https://www.mangekyo-kan.com/作品常時展示・巨大万華鏡あり(常設)。
黄金崎クリスタルパーク・ガラスミュージアム静岡県賀茂郡西伊豆町万華鏡も楽しめるガラス館https://ikoyo-nishiizu.jp/crystal/現代ガラス常設+万華鏡コーナー(常設)/企画展も実施。
流山万華鏡ギャラリー&ミュージアム千葉県流山市土蔵建築で万華鏡展示https://shiro-mirin.com/kaleidoscope-gallery/無料公開(催し物は別料金の場合あり)/建物の由来は市サイトで明記。
小さな万華鏡美術館栃木県那須郡那須町作家作品展示+制作体験http://non-collection.net/移転準備・休業情報あり(営業日・冬季休業等は観光協会側に詳細)。体験・ショップのみは入館料無料扱いの記載あり。
神戸万華鏡ミュージアム兵庫県神戸市中央区元町の万華鏡ミュージアムhttps://kobekitano.com/公式ページが不具合
仙台万華鏡美術館宮城県仙台市太白区見て触って作れる体験型https://sendaikaleidoscope.com/季節ごとに展示替えの記載あり(常設+入替)。
(2026年3月18日時点の公開情報に基づく、入場料等は変更される場合がありますので、必ず公式サイトでご確認ください。)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次