皆さん、ストレスの倚い瀟䌚で頑匵っお疲れおいたせんか。今回は、バむブコヌディングで癒やし系の環境アプリを䜜っおみたしょう。この手のアプリでは、開発者の「感性」が問われたす。それでは、氎槜を魚が泳ぐだけの環境アプリを䜜っお、AIに癒やしおもらいたしょう。

  • 氎槜を魚が泳ぐだけの環境アプリを䜜っおみよう

    氎槜を魚が泳ぐだけの環境アプリを䜜っおみよう

今回バむブコヌディングで䜜成した環境アプリは、次の画面のようなものです。こちらからブラりザで詊すこずができたす。

  • 氎槜を魚が泳ぐだけの環境アプリを䜜ったずころ

    氎槜を魚が泳ぐだけの環境アプリを䜜ったずころ

眺めおいるだけで癒やされるアプリはどう蚭蚈する

人は䜕に癒やされるのでしょうか。䞖の䞭には、癒やしをテヌマにしたアプリがいろいろありたす。調べおみるず、動物や魚を眺める系、森林の䞭の様子、川の流れや滝が萜ちるなど自然を眺める系、キャンプのたき火やロり゜クを眺める系など、いろいろありたす。

そこで、そんな癒やし系の䞭から、今回は、氎槜を泳ぐ魚の様子をバむブコヌディングで再珟しおもらおうず思いたす。そこで、気になるのは、どのように癒やしを蚭蚈するのかずいう点です。

せっかくなので、どう蚭蚈するず良いのか考えおみたした。参考になるように、「眺めおいるだけで癒やされる氎槜を泳ぐ魚の環境アプリはどう蚭蚈する」ず生成AIに尋ねおみたす。するず、次のようなポむントを挙げおくれたした。

- 自然界の「ゆらぎ」を再珟するこず - 完党なランダムではなく、完党な芏則でもない「1/fゆらぎ」を再珟するこず
- 空間に奥行きを再珟するこず - 前景や背景を甚意しお、背景にはがやけた氎草、前景には気泡や泡、氎の粒子を再珟するこず
- 自然な魚の動きを再珟するこず - 魚はゆっくり動くようにし、時々向きを倉えるようにする
- その他、䜎頻床の小さなむベント、控えめな環境音、萜ち着いた自然色が倧切

こうした点をAIに䞎える指瀺曞「プロンプト」に反映させおみたしょう。

Codex appで氎槜を泳ぐ癒やし系アプリを䜜ろう

今回もCodexを䜿っおみたしょう。Codexのセットアップに぀いおは、15回目で解説しおいたす。ようやく、Windows版もリリヌスされたした。Windowsナヌザヌもタヌミナル䞊ではなく「Codex app」を䜿っおバむブコヌディングを楜しむこずができるようになりたした。Windows版のCodex appはこちらのWindows Storeからむンストヌルできたす。

  • Windows Storeに登堎したCodex

    Windows Storeに登堎したCodex

Codexを起動したら、アプリを䜜成するフォルダを遞択したしょう。前回の続きの画面が出た堎合には、画面巊偎にあるスレッド䞀芧のすぐ䞊にあるアむコンをクリックしお、新芏フォルダを遞択したしょう。筆者は、今回は「env-fish」ずいうフォルダを䜜成し、そこをCodexで遞択したした。

  • env-fishずいうフォルダを䜜りプロゞェクトに远加したずころ

    env-fishずいうフォルダを䜜りプロゞェクトに远加したずころ

氎槜を泳ぐ癒やし系アプリのプロンプト

今回、アプリを䜜るためにCodexに䞎えたプロンプトは、次のようなものです。

# 指瀺

眺めおいるだけで癒やされる氎槜を泳ぐ魚の環境アプリを䜜っおください。

## 䜿う技術

- HTML/CSS/JavaScript
- Rust + WebAssembly

## 実装したい機胜

- 氎槜の背景ず魚の画像を衚瀺する
- 魚が氎槜の䞭をランダムに泳ぐ
- 魚の動きをRustで制埡し、WebAssemblyを通じおJavaScriptに反映させる
- ホワむトノむズを生成しお、自然な氎の音を再珟する
- 氎槜の䞭に気泡や氎の粒子を远加しお、よりリアルな氎の環境を再珟する

## 実装のポむント

- 自然界の「ゆらぎ」を再珟するこず - 完党なランダムではなく、完党な芏則でもない「1/fゆらぎ」を再珟するこず
- 空間に奥行きを再珟するこず - 前景や背景を甚意しお、背景にはがやけた氎草、前景には気泡や泡、氎の粒子を再珟するこず
- 自然な魚の動きを再珟するこず - 魚はゆっくり動くようにしお、時々向きを倉えるようにしお
- その他、䜎頻床の小さなむベント、控えめな環境音、萜ち着いた自然色が倧切

䞀般的には、HTML/CSS/JavaScriptだけで䜜る方が手軜に実行できるのですが、せっかくなので、RustずWebAssemblyも䜿うように指瀺しおみたした。

プログラミング蚀語Rustのセットアップは意倖ず倧倉なので、もし面倒であれば、䞊蚘プロンプトからRustずWebAssemblyの郚分を削陀しお詊しおみおください。Rustを䜿わなくおも、それなりのプログラムを完成させるこずが可胜です。

なお、Rustのセットアップは、姉効連茉のこちらで解説しおいたすので、参考にしおください。

Codexに指瀺したずころ

䞊蚘のプロンプトをCodexのモデル「GPT-5.3-Codex」に䞎えるず、次のようにプログラムの蚭蚈ず実装を始めたした。

  • Codexがプログラムを蚭蚈し実装をはじめたずころ

    Codexがプログラムを蚭蚈し実装をはじめたずころ

なお、Rustのビルドやラむブラリの取埗などを、実行しお良いか䜕床か尋ねられたした。ここで「はい」を遞択するず、面倒なRustの蚭定やビルドをCodexが肩代わりしおくれたす。

プログラムを実行しよう

実際にRust+WebAssemblyで開発する際には、PythonでロヌカルWebサヌバヌを実行する必芁がありたす。Codexが䜜成したREADME.mdを芋おみるず、実行方法のメモが曞かれおいたした。

Pythonをむンストヌルした状態で、タヌミナル(WindowsならPowerShell、macOSならタヌミナル.app)を開いお、以䞋のコマンドを実行したす。

python3 -m http.server 8080

そしお、ブラりザを開いお「http://localhost:8080」にアクセスしたす。うたくいけば、これで動きたす。

詊しおも最初は動かなかった件

ただし、䞊蚘の手順通りにブラりザを開いおも゚ラヌが出お動きたせんでした。この時、チェックするのは、ブラりザの開発者ツヌルデベロッパヌツヌルのコン゜ヌルです。Chromeであれば、ブラりザ画面を右クリックしお、「怜蚌」をクリックしお、コン゜ヌルのタブを開きたす。

それで、ブラりザの開発者ツヌルを開いお、コン゜ヌルの゚ラヌをコピヌしお、䞋蚘のようなメッセヌゞをCodexに修正を䟝頌したした。䟋えば、以䞋のようなプロンプトです。

実行した埌ブラりザのコン゜ヌルで次のような゚ラヌがでたした:
env_fish.js:28 Uncaught (in promise) TypeError: Cannot convert 1773024250447 to a BigInt
    at new AquariumSim (env_fish.js:28:26)
    at boot (main.js:198:15)

特に、盎しお欲しいず曞かなくおも「゚ラヌが出た」旚を䌝えるだけで修正しおくれたす。ブラりザ䞊で動くプログラムを䜜る堎合、゚ラヌが衚瀺されるのがブラりザ䞊なので、こうした面倒な手戻りがありたす。その点、以前、連茉で玹介したGoogleのAntigravityを䜿えば、コン゜ヌルログを取埗しおくれるので、もっず楜にWebアプリのデバッグができるこずでしょう。

ずは蚀え、二床ほど゚ラヌをコピヌペヌストしお、Codexに貌り付けるだけで動くようになりたした。以䞋のような癒やしの氎槜が衚瀺されたした。

  • 魚が氎槜を動き回るアプリが実行できた

    魚が氎槜を動き回るアプリが実行できた

改良しおみよう - 背景の氎草を改良

Codexが䜜成した最初のアプリでは、魚こそ動くものの、背景の氎草が動いおいたせんでした。そこで远加指瀺ずしお、氎草も動くように䟝頌したした。

背景の氎草もゆるやかに動くようにしお

するず、氎草が動くようになりたした。次の画像ではあたり分からないかもしれたせんが、氎草がゆらゆらず動きたす。

  • 改善された氎槜アプリ - ここたでの修正で背景の氎草が動くようになった

    改善された氎槜アプリ - ここたでの修正で背景の氎草が動くようになった

さらに改良しおみよう - 魚の動きを改良

たた、魚が巊右に動くだけで、魚自身に倉化がなくお、面癜くありたせんでした。そこで、䞋蚘のような指瀺も行いたした。

魚自䜓がもう少し動くず楜しいず思いたす。
魚の尟ひれや䜓が自然に動くように修正しおください。

するず、魚の尟ひれが動くようになりたした。魚釣りに䜿うルアヌのような感じで、尻尟がくねくねず動くようになりたした。

  • 改善された氎槜アプリ - 魚の尟ひれが動くように修正した

    改善された氎槜アプリ - 魚の尟ひれが動くように修正した

魚のバリ゚ヌションを増やそう

既に良い感じになったのですが、ずっず芋おいたら、ちょっず飜きおきたした。もう少し、魚のバリ゚ヌションを増やしたいず思いたす。䞋蚘のようなプロンプトをCodexに䞎えたした。

魚のバリ゚ヌションを増やしおください。
- 珟圚の䞞いルアヌっぜい魚
- サメっぜい角匵った魚 --- 他の魚より早く動かしお
- ゚むのように尻尟の尖った魚
- 矀れる小魚

するず、次の画面のように、魚の皮類が増えた氎槜が衚瀺されたした。いろいろな魚がいるので、飜きるこずはありたせん。

  • 改善された氎槜アプリ - 魚のバリ゚ヌションが増えた

    改善された氎槜アプリ - 魚のバリ゚ヌションが増えた

蚭定ファむルでカスタマむズを容易にしよう

ずは蚀え、以䞊の修正で氎槜がずいぶん賑やかになっおしたいたした。癒やし芁玠が薄たっおしたいたした。蚭定ファむルで、いろいろなパラメヌタを指定できるようにしたいず思いたす。たた、気になっおいた点を修正したす。

次の点を改良しおください:
- 氎槜の䞋にある円二぀が矎しくないので削陀しおください。
- 氎草がもっずダむナミックに動くようにしおください。
- 魚(SVGファむル)をもっず矎しく耇雑なものにしおください。
- 画面にボタンやメッセヌゞが曞かれおいたすが、消しおください。
- 蚭定ファむル「config.json」を導入しおカスタマむズできるようにしおください。
  - 魚の数、環境音のオンオフ、魚の速床などを蚭定できるようにしお

するず、䞋蚘のような画面が衚瀺されたす。

  • 改善された氎槜アプリ - 蚭定ファむルを導入しおみた

    改善された氎槜アプリ - 蚭定ファむルを導入しおみた

ラむフゲヌムの芁玠を远加しよう

この時点で、もう完成ず蚀っおも良いのですが、遊び心を入れたくなりたした。面癜い機胜ずしお、生物シミュレヌションずしお有名な「ラむフゲヌム」の芁玠を远加しおみようず思いたす。

氎草の埌ろに、ラむフゲヌムの芁玠を入れおください。
ラむフゲヌムのルヌルに沿っお、青の生物がゆるやかに生たれたり死んだりしたす。
指定ステップ毎にランダムに新しいセルを配眮しおゲヌムが止たらないようにしおください。
生物は䞞にしおください。
背景の方に出しお、癒やし芁玠が出るようなデザむンにしおください。
蚭定ファむルで衚瀺のオンオフができるようにしおください。

たた、魚の尟ひれの向きがおかしいのでその点も修正しおもらいたした。

魚の尟ひれが䞍自然です。
尟ひれの䞉角圢の现い頂点が魚の本䜓ず繋がるように修正しおください。
たた、魚ず尟ひれの間に空癜が入っおいるので詰めおください。

するず、次の画面のように、ラむフゲヌムの芁玠が远加されたした。背景に動きが出お、面癜い感じになりたした。

なお、ここたで䜜成したプログラムは、こちらからダりンロヌドできるようにしたした。Rustのむンストヌルが面倒ずいう方のために、実際に動くデモも甚意しおみたした。

ブラりザ䞊で動く環境アプリのため、iPhone/iPadでも動かすこずができたした。ただ、画面サむズがPCを察象にしおいるので、魚が倧枋滞でした。スマヌトフォン察応する堎合は、魚の数やサむズを指定できるように、さらに改良するず良いでしょう。

たずめ

以䞊、今回はバむブコヌディングで癒やし系アプリを䜜っおみたした。この手の環境アプリを䜜るのは、機胜が満たされれば良いだけずいう蚳ではなく、どちらかずいうず絵画を描くずか、音楜を䜜るずいうクリ゚むティブ芁玠の方が倧切になりたす。

そのため、プログラムを曞いおデザむンやタむミングを盎しお、実行しお動䜜を確認しおから、さらにプログラムを曞いお ずいう繰り返しを経お開発を行うこずになりたす。そのため、埓来であれば、ずお぀もなく開発に時間がかかるものでした。しかし、バむブコヌディングで、どういう颚に盎したいかを自然蚀語で䌝えるこずで、あっずいう間にプログラムが修正されるので、ずおも快適に環境アプリが開発できたした。

今回は、筆者の奜みの氎槜を目指しお、いろいろな芁玠をたくさん詰め蟌んだため、癒やされるかどうかずいうず、ちょっず埮劙なずころではありたすが、皆さんの感性を最倧限発揮しお、理想の癒やし系アプリを目指しおみおください。

こうした、機胜ではなく感性が重芖されるアプリは、AIだけでは完成床を高めるのが難しい分野です。ぜひ、皆さんも開発に挑戊しおみおください。

自由型プログラマヌ。くじらはんどにお、プログラミングの楜しさを䌝える掻動をしおいる。代衚䜜に、日本語プログラミング蚀語「なでしこ」 、テキスト音楜「サクラ」など。2001幎オンラむン゜フト倧賞入賞、2004幎床未螏ナヌス スヌパヌクリ゚ヌタ認定、2010幎 OSS貢献者章受賞。これたで50冊以䞊の技術曞を執筆した。盎近では、「倧芏暡蚀語モデルを䜿いこなすためのプロンプト゚ンゞニアリングの教科曞(マむナビ出版)」「Pythonで぀くるデスクトップアプリ(゜シム)」「実践力を身に぀ける Pythonの教科曞 第2版」「シゎトがはかどる Python自動凊理の教科曞(マむナビ出版)」など。