Laravel-FilametからTypeScrip系へ

DTDの開発を考えて2023年の夏休みにPHPのフレームワークLaravel-Filamentを勉強した。DTDの簡易的な管理画面やAPIまで実装できていたが、開発メンバーにPHPを使えそうな人がいないため、方針転換を検討することになった。

開発メンバーに聞いたところ、TypeScriptであれば自身があるということだったので、TypeScriptベースのフレームワークでLaravel-Filamentに近いものをChatGPTに聞きながら探した。

この内、Ant Designはフロントエンドなので除外。それ以外のフレームワークはヘッドレスCMSと言われるものらしい。

ヘッドレスCMSとは、Wordpressなどのバックエンドとフロントエンドが統合された今までのCMSとは異なり、ユーザーが様々なチャンネルからアクセスできるようにCMSのバックエンドに特化したものだそうだ。

例えば、コンテンツに対して、PCなどのブラウザ、スマホアプリ、ウェアラブルデバイス、VR機器、さまざまなチャンネルでアクセスする場合、それぞれに合わせてフロントエンドを作る必要が出てくる。

WordPressでもパソコンブラウザ用とスマホブラウザ用に対応できるレスポンシブデザインなどもあるが、それよりも幅広い対応が今後は求められてくる。

今回の開発においても、フロントエンドがUnityになるわけなので、そもそものLaravel-Filamentという選択も間違っていて、本来であればヘッドレスCMSを選択すべきだったのだと思う。

よって、この機会にシステムは下記の通りに変更することにした。

  • 今まで
    • バックエンド:Laravel
    • フロントエンド:Unity+Laravel-Filament
  • これから
    • バックエンド:ヘッドレスCMS
    • フロントエンド:Unity

先に進む前に、ヘッドレスCMSについて調べたことを簡単にまとめておく。

ヘッドレスCMSは様々なプロダクトが出ているが、自前サーバーにインストールするオンプレミス型のものと、SaaS型のものがある。基本SaaS型はサブスクとなりお金がかかってしまうので、対象外となる。無料で使用でき今回の案件に良さそうなものは、

特徴/項目StrapiKeystoneJS
オープンソースはいはい
採用例TOYOTA、IBM、Walmartなど
自ホスティング可能可能
主なAPIRESTful, GraphQLGraphQL
リアルタイム更新WebSocketあり(Apollo Subscriptions)
カスタマイズ性高い高い
管理ダッシュボードありあり
データベースサポート多くのDB対応(MongoDB, SQL系)多くのDB対応(MongoDB, SQL系)
学習曲線中程度高い
料金無料(サーバー管理コストのみ)無料
認証とアクセス制御ありあり
開発言語JavaScript (Node.js)JavaScript (Node.js)
Unityとの親和性高い(RESTful, GraphQL APIを通じて簡単に統合可能)高い(GraphQL APIを通じて統合可能)
By ChatGPT 4o

となる。ちなみにStrapiが有名のようだ。

では、このどちらを採用すべきか?

ここで、重要なのはUnityとの連携だ。ヘッドレスCMSはAPIとして、「RESTful」か「GraphQL」を採用しているものが多い。Unityではどちらと連携が取りやすいのだろうか?また、上記のAPIは認証やセッション管理についてどうなっているのだろうか。

調べてみると、「RESTful」も「GraphQL」も認証やセッション管理が行えるようだ。Unityでの通信サンプルをChatGPTに見せてもらったが、若干GraphQLの方が長いくらい。通信にはUnityWebRequestを使えば良さそうだ。

規模的にはStrapiの方が大きいし、資料も集めやすそうなので、Strapiでスタートしてみよう!

コメントする