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型はサブスクとなりお金がかかってしまうので、対象外となる。無料で使用でき今回の案件に良さそうなものは、
| 特徴/項目 | Strapi | KeystoneJS |
|---|---|---|
| オープンソース | はい | はい |
| 採用例 | TOYOTA、IBM、Walmartなど | |
| 自ホスティング | 可能 | 可能 |
| 主なAPI | RESTful, GraphQL | GraphQL |
| リアルタイム更新 | WebSocket | あり(Apollo Subscriptions) |
| カスタマイズ性 | 高い | 高い |
| 管理ダッシュボード | あり | あり |
| データベースサポート | 多くのDB対応(MongoDB, SQL系) | 多くのDB対応(MongoDB, SQL系) |
| 学習曲線 | 中程度 | 高い |
| 料金 | 無料(サーバー管理コストのみ) | 無料 |
| 認証とアクセス制御 | あり | あり |
| 開発言語 | JavaScript (Node.js) | JavaScript (Node.js) |
| Unityとの親和性 | 高い(RESTful, GraphQL APIを通じて簡単に統合可能) | 高い(GraphQL APIを通じて統合可能) |
となる。ちなみにStrapiが有名のようだ。
では、このどちらを採用すべきか?
ここで、重要なのはUnityとの連携だ。ヘッドレスCMSはAPIとして、「RESTful」か「GraphQL」を採用しているものが多い。Unityではどちらと連携が取りやすいのだろうか?また、上記のAPIは認証やセッション管理についてどうなっているのだろうか。
調べてみると、「RESTful」も「GraphQL」も認証やセッション管理が行えるようだ。Unityでの通信サンプルをChatGPTに見せてもらったが、若干GraphQLの方が長いくらい。通信にはUnityWebRequestを使えば良さそうだ。
規模的にはStrapiの方が大きいし、資料も集めやすそうなので、Strapiでスタートしてみよう!