Open5
Headless CMS まとめ
Strapi
Free plan
- API Requests (per month): Unlimited
- content lakeへのリアルタイム同期によるリクエストも含まれる。案外早くこの条件を満たしてしまいそう。1記事あたり300程度のリクエストはしそう
- Assets: Unlimited
- 少ない
- Bandwidth (per month): Unlimited
- Documents (= Articles): Unlimited
- Useable API
- GraphQL
- HTTP API
概要
完全に自分でhostするHeadless CMS. strapiは TypeScript (or JavaScript) + Node.js + SQLite (or PostgreSQL or MySQL etc) で作成されている。Headless CMS自体はすぐにhostできる。しかし、infraの管理も必要となる。
Google Cloudでhostする場合は以下の構成になる見込み
- Cloud Run with IAP:IAPでアクセスを制限する。strapiにもアクセス制限を設けることができるが、自身でhostするため広く提供するとリスクが高い。そのためIAPを用いる。
- Cloud SQL
- private ip or public ip
- praivate ip の場合:Cloud RunとCloud SQLを接続するために、1. Cloud Runを自身のVPC(Google Cloud)につなげる 2. Cloud SQLを自身のVPCにつなげる, の2stepが必要
- Cloud Runを自身のVPCにつなげる: Cloud RunはGoogleで管理されているため、自身のVPC内からアクセスできない。そのため、Cloud RunをServerless VPC Connector を持ちて、VPCをつなげる。
- Cloud SQLを自身のVPCにつなげる: Cloud SQLもGoogleで管理しているため、自身のVPC内からアクセスできない。この場合はVPC peeringを用いて自身のVPCをつなげる。
- public ipの場合:Cloud RunとCloud SQLはinternetを通してつなげる。この場合通信を暗号化するためTLSが必要。しかし、GoogleはCloud SQL Auth Proxyを提供しているため、これを使用することでTLSを自身で作成する手間が省ける
機能
- Strapi Cloud: comming soon. cloudで管理されるCMS。課金形式だと思われるが、値段はわからない(参照)。
Sanity
Free plan
- API Requests (per month): 100k
- content lakeへのリアルタイム同期によるリクエストも含まれる。案外早くこの条件を満たしてしまいそう。1記事あたり300程度のリクエストはしそう
- Assets: 5GB
- ちょっと心もとない、、、
- Bandwidth (per month): 10GB
- Documents (= dataset内に属するcontent): 10k
- Useable API
概要
機能
- Sanity Stadio:Content Management System, document(記事のこと)を作成するためのツール。Typescript + React + viteのSPAで作成されており、はじめはシンプルな構成となっている。Sanity Stadioコンテンツ制作のためのリアルタイムコラボレーションアプリケーション。どこでhostしていても(ローカルでも)ネットを通じてContent Lakeに接続し、リアルタイムで記事の保存を行う。Sanity Studioには、編集体験をカスタマイズするためのフレームワークも付属している。JavaScriptによるカスタムフォーム検証の定義から、Reactによる入力コンポーネントの構築など、あらゆることを行うことが可能とのこと。
- Content Lake:Sanity Content Lakeは、コンテンツが保存され、アクセスされる場所。クラウドで動作しており、Sanityによる fully managed。Sanity client-libraryかHTTP APIを用いて、定義されたSanity APIを介してContent Lakeにアクセスする
- GROQ:open-sourceのquery-language。機能はGraphQLにており、複数リソースタイプを結合して、必要なfieldのみを取得できる。書き方もGraphQLに似ている。