きらきら万華鏡カメラ - 疲れた心を癒すヒーリングアプリ
端末を傾けると、宝石が転がり、万華鏡が動き出す。
アプリ概要
「きらきら万華鏡カメラ」は、Flutter と Flame Forge2D の物理エンジンを使った本格万華鏡シミュレーターです。端末を傾けるとジャイロセンサーが重力方向を検知し、画面の中の宝石オブジェクトが本物の物理法則に従って転がります。それらが三角形のミラーリングで反射し合い、見たことのない万華鏡パターンを描き出します。オルゴール、ハープ、ピアノ、シロフォンなど8種類の楽器によるモチーフベースの自動演奏BGMが、ぼーっと眺める時間を心地よくサポートします。カメラ映像や写真ライブラリの画像を背景に取り込んで、自分だけの万華鏡を作れるのも本アプリの特徴です。動画として録画して共有することもできます。
主な機能
リアルな物理シミュレーション
Flame Forge2D による剛体物理演算。端末の傾きをジャイロで検知し、宝石オブジェクトが本物の重力に従って動きます。
三角形ミラーのテッセレーション
画面全体に三角形のミラーセルを敷き詰める描画方式。中央の絵が回転対称・鏡映対称で全体に拡がります。
8種類の楽器によるヒーリングBGM
オルゴール、ハープ、ピアノ、シロフォン、グロッケンシュピールなど、ヒーリング系の音色を多数収録。モチーフベースで自動演奏されます。
カメラ&写真の取り込み
リアタイムカメラ映像や写真ライブラリの画像を背景にして、目の前の景色を万華鏡化できます。
手描きオブジェクト追加
指で描いた形を万華鏡パターンに反映可能。RDP アルゴリズムで滑らかに調整されます。
動画録画と共有
お気に入りの瞬間を動画として録画し、SNSなどに共有できます。録画中はUIが自動で非表示になり、BGMもしっかり音声キャプチャされます。
スパークル5段階調整
キラキラ感(スパークル)の強さを5段階で調整可能。控えめなヒーリング向けから派手な賑やかし向けまで対応。
初回起動時のチュートリアル
初めて起動したときに、傾ける・オブジェクトを足す・背景を変えるといった操作をカード形式で案内します。説明を読まずに閉じても、そのまま眺めるだけで楽しめます。
こんな場面で役立ちます
- 寝かしつけの時間、ぼーっと見せたい
- ASMR的に視覚と聴覚で癒されたい
- 暇つぶしに何か綺麗なものを眺めたい
- リラックスしたい・呼吸を整えたい時に
- 幻想的な短い動画を作って SNS に投稿したい
- 知育として「物理」「鏡」を子どもに見せたい
使い方
- App Storeからインストールしてアプリを起動してください。初回のみ操作のチュートリアルが表示されます。
- 起動すると即座に万華鏡が動き始めます。端末を傾けて重力方向を変えるとオブジェクトが動きます。
- 画面下部のメニューから、オブジェクト追加・描画モード・カメラ背景・写真取り込みなどを切り替えられます。
- 描画モードでは指で形を描けます。描いた形はそのまま万華鏡の中を転がるオブジェクトになります。
- 画面をタップするとUIが隠れ、模様だけを全画面で眺められます。
- スパークルの強さやBGMの音量は設定画面から調整できます。
- 録画ボタンを押すと動画として記録できます。録画中はUIが自動で隠れます。
よくある質問
Q. Android版はありますか?
A. 現在は iOS版のみリリースしています。
Q. 対応OSは何ですか?
A. iOS 15.0 以上です。iPhone・iPad の両方で動作します。
Q. 対応している言語は?
A. アプリ内の表示は日本語と英語に対応しています。
Q. iPadでも使えますか?
A. はい、iPadでも動作します。画面の向きは縦横どちらにも対応しており、大きな画面ほど敷き詰められる模様の数が増えます。
Q. カメラ機能を使うのに権限は必要ですか?
A. カメラ背景を使う場合のみ、カメラ権限のリクエストが表示されます。許可しない場合もアプリ自体は利用できます。
Q. BGMが流れません
A. 端末のサイレントモードが ON になっていないかご確認ください。設定画面からBGMの音量も調整できます。
Q. 同じ曲がずっと繰り返されて飽きませんか?
A. 決まった曲を繰り返し再生しているわけではありません。短いモチーフ(音型)を複数用意し、それらを移り変わらせながら鳴らしているため、聴くたびに違う流れになります。楽器も8種類から選べます。
Q. 動画録画の解像度は?
A. 端末画面の解像度に準じます。録画中はUIが自動で非表示になり、BGM音声もキャプチャされます。
Q. 無料で全機能使えますか?
A. はい、基本機能は無料で利用できます。アプリ内には控えめな広告が含まれます。
更新履歴
バージョン 1.0.1(2026年4月9日)
- 軽微なバグの修正とパフォーマンスの改善
バージョン 1.0.0(2026年4月8日)
- 初回リリース
開発の背景
このアプリは「物理シミュレーションと万華鏡を組み合わせたらどうなるか」という僕の思いつきから始まりました。基本の構造はシンプルです。端末の傾きから重力の向きを取り出して物理エンジンに渡し、三角形のセルの中で宝石のようなオブジェクトを転がす。その三角形を鏡映で画面いっぱいに敷き詰めると、中の動きがそのまま万華鏡の模様になります。実物の万華鏡が鏡の中でビーズを転がしているのと同じ理屈を、画面の中でやっている形です。
いちばん手こずったのは、その「敷き詰め」の部分でした。画面全体を隙間なく埋めているつもりでも、四隅にうっすらと埋まらない領域が残ります。原因は、どのセルを描くかの判定を画面の矩形ぴったりで切っていたことでした。画面の端にかかるセルが「範囲外」と判定されて、描画から漏れていたのです。判定の範囲を画面より少し外側まで広げるだけで解決しました。それだけのことに、たどり着くまでずいぶん時間がかかりました。
動きが常に続くアプリなので、描画のコストも課題でした。当初はセルの数だけ中身を描き直していました。画面が広いほど、オブジェクトが増えるほど、負荷が掛け算で膨らむ構造です。今は三角形の中身を一度だけ画像に焼き、各セルにはその画像を貼るだけにしています。あわせて、中心から何回反射したセルかを数えて、遠いセルほど少し薄く描くようにしました。実物の万華鏡でも反射を重ねた奥は光量が落ちます。結果として奥行きが出ました。
途中で大きく方針を変えたのが、万華鏡の中に入れるオブジェクトです。当初は 30 種類以上のいろいろな形を用意していました。ところが鏡で反射させて敷き詰めると、形が多いほど画面がうるさくなるだけでした。最終的に宝石のカットを模した 7 種類に絞り、そのぶん光り方や色の組み合わせに手を入れています。反射で増える絵だからこそ、元の要素は少ないほうがきれいに見える。作ってみるまで気付きませんでした。きらめきの強さは 5 段階で調整できます。静かに眺めたい人と賑やかにしたい人の両方に合わせるためです。
BGM は、コード進行をループさせるのではなく、短いモチーフを複数用意して移り変わらせる作りにしています。眺めている時間が長いアプリなので、決まった曲が繰り返されると数分で気になり始めるからです。オルゴールやハープなど 8 種類の楽器から選べるようにして、同じ模様でも雰囲気を変えられるようにしました。
リリース前後は、模様そのものと関係のない部分にかなりの時間を使いました。録画したときに UI が映り込まないよう先に隠す処理。録画に BGM を確実に含める処理。iPad での画面の向きの扱い。追跡許可や同意管理のダイアログを確実に表示させるための初期化タイミング。どれも表からは見えません。ただ、こういう部分が抜けていると、せっかく録った動画にボタンが写り込んでいた、という形で体験を損ないます。地味な作業ほど、あとで効きます。
このアプリの開発記事
万華鏡の描画を「毎タイル描き直し」から「1枚焼いて貼る」に変えた話
万華鏡アプリの描画が、敷き詰めたタイルの数だけ中身を描き直していました。三角形の中身を一度だけ画像に焼いて、各コピーに貼る方式へ変更。コストがタイル数×オブジェクト数の掛け算から足し算に落ちました。副産物で奥行き感まで付いた記録です。
万華鏡アプリでテッセレーション沼にハマった話
「画面いっぱいに敷き詰めるだけ」のはずが、四隅に隙間ができました。RDP アルゴリズムの epsilon は 2.0 でガクガク、0.5 で重くなる。万華鏡アプリのテッセレーション(敷き詰め)まわりで、何度もやらかした記録です。
万華鏡アプリの BGM を「コード」じゃなく「モチーフ」で作り直した話
万華鏡アプリのヒーリング BGM を自分で流しっぱなしにしたら、5 分で飽きました。3 つのコードを回すのをやめて、4 つのモチーフをランダムに遷移させる作りに変えたら、眺めていられる時間が延びた話です。
回転する万華鏡でカメラ映像が伸び縮みする — AABB をやめて外接円で作る回転不変の描画矩形
万華鏡アプリのカメラ背景が、三角形の回転に合わせてびよんびよん伸び縮みしました。原因は回転する三角形の AABB へ画像を引き伸ばしていたことです。外接円に外接する正方形という回転不変な矩形と、BoxFit.cover 相当の中央クロップで解決し、純粋関数化と回帰テストで固定するまでの記録です。