Babylon.js ナビゲーションメッシュと物理エンジンで遊ぶ

Babylon.js がナビゲーションメッシュの機能を持っていることに最近気が付いた。
公式が用意するものでは、エージェントを使って群衆コントロールをするものがあるものの、よりアクティブなものを試したいと思い、物理エンジンと組み合わせてみる。

最終的にできたのはこちら。

Read More

Render にRails アプリをデプロイする

Railsアプリを公開しようとAWS EC2 に無料枠立てられるインスタンスで環境構築を試みた。
しかし、rbenv経由のrubyビルドでディスク容量不足になってしまった。
Fargateなど使う選択肢もあったのだが、なるべく安く済ませたかったので探したうえでRenderを使うことにした。

これを記録的に共有したい。

Renderは無料枠があり、それを使う。
Herokuの課金体系が変わった際には、Renderに乗り換えるという方が多かった様子であった。

Read More

Deno Deploy EA でDB接続を試す

Deno Deploy EA で、データベースの接続を簡易にする方法が提供されるようになったようです。

これまで Deno Deploy からデータベース接続するには、個別のプロジェクトにそれぞれ環境変数を埋めるなど、面倒多いものでした。

やってみます。

Read More

Rails x dry-monads を考える、と境界の話

最近、関数型プログラミングを詰めていった中で、dry-monads に出会った。
(実は、かなり昔にブクマしていたので再会であった。)

Railsに組み込んで使う例をLLMをいくつか出してみたうえで、有望そうであったので、改めてサンプルをつくったので記しておく。

また、システム境界についても考慮する。

実装だけ見たい場合はこちら。

github.com - Octo8080X/think-rails-x-dry-monads

Read More

アトムの個

最近、「データ志向プログラミング ソフトウェアがもつ複雑さの軽減に向けて」を読んだ。

この本、翻訳技術書でたまに見かける「エキサイティングな体験」を感じた書籍であった。
プログラミングパラダイムの本となると、理念的な話が先行しているものを見かけることが多いと感じる。
本書は、現実の目の前にあるアプリケーションへどう適用するのかといった点までフォーカスされておりそれが良かった。

で、本書で、「アトム」が説明されるのだが、マルチスレッド環境と思ってjsで書くというものであった。
内容について納得はできるものの、ここはあえて触っておきたい。

Read More

Fresh 2 の拡張として、プラグイン的なものを作る

先日、Fresh 2 のミドルウェアを作る方法について確認した。

ExpressやHonoに似たことで移植もしやすいことを見込んでいた。
なので移植する形で、実装しプルリクを出した。
結果、CORSミドルウェアとCSRFミドルウェアをFresh本体のリポジトリに入れ、CORSミドルウェアはマージとなった。

今回は、Fresh 2 の拡張として、プラグイン的なもの作ってみる。

Fresh 2 では、Fresh1のようなプラグイン機能は移植されていない。
しかし、Fresh2 のミドルウェアなら、ある機能のために複数の拡張をまとめて行うプラグイン的なものを、実装できるだろうことを見込んだ。

実際に試してみる。

Octo8080X/fresh2-password-auth-sampleにもアップしたので、全体を見たい場合はそちらを参照してほしい。

Read More

Saga パターンを具体的に考える

最近、サービス間の整合性とトランザクションそしてその中で一連の見せ方について、Sagaパターンに一定の理解を持つことができたので、メモを残しておく。

何をまた仰々しくと読む向きもあるだろうが、一定の結論を自分の中で持てるというのはそれ自体に価値がある。

最終的に Denoの提供するインフラ(ランタイムの機能)を利用し、Sagaパターンを下敷きにしたマイクロサービスが裏に控えるWebアプリを実装した。

Read More

Active Record で feature options を試してみる

先日読んだ「システム開発・刷新のためのデータモデル大全 著:渡部幸三」を読んでいました。
その中で、feature optionsという考え方が紹介されていました。
ある対象の属性群を別のテーブルで持つという考え方のものとなり、似たようなものを考えこそすれ、十分検討されたものだと感じました。

この考え方を踏まえ Active Record で試すとどうなるか確認します。

Read More