顧客管理Webアプリを、CakePHP4とRemixで書き比べるためのプロジェクトです。 TypeScriptをフロント・バックエンドの両方で使用することに興味があったので、 既存のフルスタックFWと比較してどのような違いがあるのかを知るために作りました。
TypeScriptとReactの組み合わせは、快適にUIを書くことができるのですが、バックエンドの実装に時間がかかってしまうという印象を受けました。 CakePHP4などのフルスタックフレームワークは、バックエンド側の機能とフロントエンド側の機能が連携しており、 フレームワークが想定している使い方を行うのならば、シンプルに実装することができます。
それを特に感じたのがページネーションです。
CakePHPでは、コントローラー側でパラメータを指定してpaginateを実行し、
ビュー側で$this->Paginator->prev('前へ')
のような簡単なコードで前のページのリンクを生成することができます。
TypeScriptのバックエンドはORMとしてPrismaを使用しているのですが、 ページング自体は簡単に実装することはできますが、Prismaのfind関数をラップしている場合は少し面倒くさいです。 今回は自前でpaginate用の関数を実装したものを使用しているのですが、フレームワークの機能として提供されているのは便利だと感じました。
豊富なバックエンド側の機能と、それと密に連携しているフロントエンド側の機能がフルスタックFWの高速な開発を実現しているのだと、実際に作ってみて感じました。
一方で、フルスタックFWが想定していないことを行おうとしたときのコストは大きいと思います。 開発の大部分をひとつのFWのAPIを使用して実装しているので、そこから外れたことを行おうとしたときに、 薄いライブラリを使うよりもコードが複雑になってしまう気はしています。