Strapi を触りだけ試す
Headless CMS はいろいろ使いみちがありそうなので、一度触ってみたかったというだけ。どれでも良かったのだけど目についたので。
やったチュートリアルは以下。
最近だと普通なのかもだけど docker 一撃で立ち上がるのはありがたい。日頃の開発環境もこれぐらい洗練させられると捗るんだろうなぁ。。local の IIS と格闘とか時間の浪費感が。。
インストールから管理画面起動まで
私の Mac がポンコツなのもありますが、5 分 - 10 分かかりました。
管理画面はいきなりいい感じに日本語化されていてビビりました。まじかよ。
コンテンツ追加
たいていの RDB にありそうな型( text, boolean, date など ) がありつつ、Media (複数可能)、Relation (外部キー的な?)があったり、Enumeration 、JSON、UID などいくつかの RDB には実装されている便利な型なんかも用意されている。
Dynamic Zone と Component というのもあるが、この辺はよくわからない。
コンテンツを保存すると、Strapi が restart される。この辺、チュートリアルにもあるが、コンテンツ用の各種ファイルを作成するだけなので、それを読み込むようだ。
生成される JSON やらを見ると、find, count, findone, create, update, delete
の操作が利用可能になるようだ。
さらなる設定
API としてどういう操作になるか現時点では分からないが、検索・フィルタ、加えて一括処理が有効化できるようだ。
さらに、表に出すフィールドもここで指定できるよう。
permission
このチュートリアルでは、以下のように Public (認証不要)の role に対して count, find, findone
を許可している。
どこまで細かくできるのか分からないけど、Firebase の Rules よりは、分かりやすい、、、か。どうだろ。いずれにしろ苦しみはあるんだろうか。
ちなみに、permission の変更では再起動は入らなかった。
実際、ファイルとしての変更もなかったので、この辺の設定は Strapi のデータベースで管理されているようだ。
データ作成
メディアのアップロードとかも超楽。。こういうの自前で作ろうとするとめんどいんだよなぁ。
カテゴリーとの関連付け
チュートリアル内では、ビールのカテゴリを付ける部分があるが、Relation のエディターがめっちゃ見やすい。has-one とか many-to-many とかを選んでやるっていうのは、雰囲気でできない感じで良い。
has-one を選んだ時に API の絞り込みが /beers?category.slug=ipa
のようになる。
今日はここまで
時間切れでチュートリアルにある認証の部分までいけなかったが、なんとなく感覚がつかめてよかった。
ちなみにチュートリアルは最初コードをペタペタ貼り付けるだけでいいのかと思いきや、だいぶ端折られていて、「あれ?Next ってこれで良かったっけ?」的に思っていたら案の定動かなかった。以下にソースコードがあるので、そこが参考にできる。
GitHub - marmelab/strapi-beerdex: StrapiJS Example Application For Beer Management
また、Nextjs の方にも strapi のサンプルがあることに気づいた。
next.js/examples/cms-strapi at canary · vercel/next.js · GitHub
つうか、このチュートリアル書いてる marmelab って react-admin のところだよな、さすが。