多くの喫茶店は「喫茶店といえばJAZZ」ということで 、店内にジャズが流れている。もはやコーヒーを飲みにきたらジャズが流れていたのか、ジャズが流れているからコーヒーを飲みたくなるのかどっちかわからないくらい、ジャズが流れている。ところが最近、ジャズが流れている店よりも、エレクトロニカ系の音楽が流れている店のほうが、コーヒーが旨い場合が多い気がしてならない。喫茶店のジャズは、「かすれてるかんじが逆に良い」「当時の空気を舞う埃さえ感じられる」といった趣の、昔の生演奏の録音が流されていたりする一方、エレクトリニカ系のミュージックはそういったことは許されないので、最低二基設定された大きいスピーカーから出る、高濃度の霧のような、うるさいのにうるさくない、環境音めいた高音質が店内を包んでいる。音質のよさや選曲のよさと、コーヒーと水の旨さの相関関係が出現していることは間違いないだろう。
しかしなぜ、ジャズが流れている店よりも電子音楽が流れている店のほうがコーヒーが圧倒的に旨いのだろうか? コーヒー屋といえばジャズなのに。これは腰を据えて考えておかなければいけない問題におもえてならない。
「コーヒー屋を『やる』にあたって、店内の音楽はなにをかければいいのかな?」と、店の主人が悩んだとする。このとき、
「『コーヒー屋といえばジャズ』で、あるからして、ジャズの名盤とかを適当にかけとばいいでしょ(笑)」
みたいなことを誰かに言われることは、当然、あるだろう。このとき、
「あ。そうすね」
みたいな、「あ」くらいで探求が「終わってるか」「終わってないか」の違いというものが、あるんじゃないでしょうか。
## VitalRouter.MRuby v2
完全にC# で実装された mruby vm を搭載した、ゲームづくり用フレームワーク、[VitalRouter.MRuby](https://github.com/hadashiA/VitalRouter) を公開しました。
![[diagram_mruby.png]]
このライブラリのコンセプトは是非 [[VitalRouter.MRuby]] を見てください。
これは元々、自分がゲーム制作をしているときにほしくなった仕組みから出発しています。上から下に時系列に記述したスクリプトに対して、ステップ毎に asyncな処理を発行する、といった仕組みを志向していたものの、長文テキストをいいかんじに管理できる好きなツールが見当たらず、自分でつくる流れになってしまったのです。
最初は YAMLを使おうとしていました。YAMLは複数行に渡る長々としたテキスト情報を時系列でたくさん埋める、という用途には圧倒的に適していたためです。しかし既存のyamlパーサーが気に入らず、気がついたら自前のyaml パーサー/シリアライザづくりに乗り出してました。yamlのほんのさわりだけの仕様しか使う予定はなかった(というかこれからもない)のですが、yamlの仕様を眺めていると、「ちょっと部屋の掃除と整頓をするか」みたいなな欲求が湧いてきて、気がついたら仕様ページに載ってる機能を全部実装していました。このへん、プログラマとして体が慣らされた結果なのか、つやつやであるべきなのにつやつやではないものを、つやつやになるまで角が取れるまで磨き続けてしまい、我に返ったらものすごい時間が経過している、みたいな、自動機械のような習性が自分に組み込まれていることに怖くなります。
とにかく自分が気に入るレベルのYAMLパーサーは手に入ったので、ゲーム制作を再開しました。ところが、しばらく使っていると、YAMLで条件分岐とかを表現しようとするとかなり独自の文法の導入が必要かつ複雑になることに気がつき、閉口します。同じ頃、Lua-CSharp などの実装をみかけたり、mrubyの存在を十年ぶりに思い出す等の出来事が重なり、「あー こっちか」ということに気がつきました。べつに気がつかなくてもよかったのかもしれませんが、この用途ならYAMLではなく本物のスクリプト言語がいっか、と思ってしまったのです。
この時点で、既にスクリプティングの仕組みのために色々と時間をかけてしまったので、もはやどれだけ時間がかかってもどうでもよくなっており、YAMLではなくmrubyのバインディングによって同じ仕組みを実現するプロジェクトを開始しました。この試みもうまく行き、ゲームのスクリプトをmrubyで記述できるツールができました。Rubyはヒアドキュメントの見た目に目を潰れば、かなりいいかんじです。あえて欠点を挙げるとするならば、するならばですが、mruby部分がネイティブバインディングであることの不便さです。RubyのメソッドをC#から追加したり、相互やりとりの柔軟性がやはりちょっと弱いかな。という感想を最初からある程度は持っていたのですが、あるときふと「ちょっと整理整頓するか」みたいなきもちがわいてきて、気がついたらmruby VMをC#で実装するというプロジェクトを始めていました。そして誕生したのが [MRubyCS](https://github.com/hadashiA/MRubyCS) です。
そして ViralRouter.MRuby v2に至る。とにかく、ここに至るまで、蛇行しすぎて思わぬ長い道程になってしまった。ということですですが、これでやっとゲーム制作二戻っていけそうです。のんびり楽しくゲーム制作しようと思います。
今つくっているのは 本当に 胡椒ひとつぶ分くらいの 小粒の [[2025-03 ぶたのゲームについて|ぶたのゲーム]] ていうやつなんで、これができたからなんやねん、てかんじなんですが。