Strapi を触りだけ試す

Headless CMS はいろいろ使いみちがありそうなので、一度触ってみたかったというだけ。どれでも良かったのだけど目についたので。

やったチュートリアルは以下。

marmelab.com

最近だと普通なのかもだけど 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 としてどういう操作になるか現時点では分からないが、検索・フィルタ、加えて一括処理が有効化できるようだ。

さらに、表に出すフィールドもここで指定できるよう。

f:id:dany1468:20200801082412p:plain

permission

このチュートリアルでは、以下のように Public (認証不要)の role に対して count, find, findone を許可している。

どこまで細かくできるのか分からないけど、Firebase の Rules よりは、分かりやすい、、、か。どうだろ。いずれにしろ苦しみはあるんだろうか。

f:id:dany1468:20200801082901p:plain

ちなみに、permission の変更では再起動は入らなかった。

実際、ファイルとしての変更もなかったので、この辺の設定は Strapi のデータベースで管理されているようだ。

データ作成

メディアのアップロードとかも超楽。。こういうの自前で作ろうとするとめんどいんだよなぁ。

カテゴリーとの関連付け

チュートリアル内では、ビールのカテゴリを付ける部分があるが、Relation のエディターがめっちゃ見やすい。has-one とか many-to-many とかを選んでやるっていうのは、雰囲気でできない感じで良い。

f:id:dany1468:20200801114042p:plain

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 のところだよな、さすが。