管理画面付きAPIが簡単に作れるmicroCMSとの向き合い方まとめです。
- microCMS という、管理画面付きの API が簡単に作れるサービスを実務に導入して 1 年ほどが経った - Nuxt.js 製の Web アプリケーションのメディアページに導入したり、Next.js×Incremental Static Regeneration なサイトに導入した - サイトマップだったり、型定義だったり、デプロイだったりに知見が溜まってきたのでまとめてみた
管理画⾯付き API が簡単に作れる microCMS との向き合い⽅まとめ株式会社 NoSchool CTO / meijin
View Slide
概要microCMS を実務に導⼊して 1 年ほどが経ち、Nuxt.js および Next.js 製のサイトの記事系コンテンツページへの導⼊実績を積んだ型定義、デプロイ、サムネ画像の扱いなどの知⾒が溜まってきたので、まとめてみました
⾃⼰紹介TypeScript と Testing と DDD が好き最近はゼルダ無双をプレイ中オンライン家庭教師マナリンクを開発
マナリンクhttps://manalink.jp/⼩〜⾼校⽣向けオンライン家庭教師サービスカナダ在住、塾講師、某坂道アイドルの作曲家など個性豊かな先⽣が在籍
microCMS とは管理画⾯が予め提供されていて、⼊稿すると JSON Web API が⽣える SaaS。ビジネス職が⼊稿 → エンジニアは SPAのフロントを実装するだけで OK。便利!※添付画像は私が個⼈で利⽤しているアカウントのスクショです
microCMS をバックエンドにした例https://manalink.jp/passed-stories/f_lhea4vqユーザー(⽣徒さん)へのインタビューインタビュワー(ビジネス職)が⼊稿フロントエンド(Nuxt.js)で好きにデザインできる!
microCMS を扱う上で溜まった知⾒
microCMS で返ってくる記事データの型を定義するフロントエンドが SPA×TypeScript な時に便利TypeScript でレスポンスの型を定義画像が{ url: string }型になる縛りといった罠を回避できる
microCMS にリクエストするときのクエリの型を定義するmicroCMS はデータの検索や取得フィールドの指定も可能だが、専⽤のクエリを覚えなければならないクエリの型を TS で定義することで学習コストを削減
下書き状態の記事でも⾒れるようにする公開前の記事の表⽰チェックや社内レビューに有効記事ごとに発⾏される draftKey を使うと下書き記事を API で取得できるNuxt.js では query 経由で draftKeyを取得、Next.js(ISR)ではPreviewmodeを使う
管理画⾯での変更が反映されない!そんなときは...Vercel など⼀部の環境からアクセスする際、たまにキャッシュが消えないらしく記事の更新が反映されないことがあるmicroCMS は前段に CDN(CloudFront?)を使⽤しているため、CDN を逆⽤して、Cache-Control: no-store を設定して無理やり解決Incremental Static Regeneration 等の SSG 利⽤時は有⼒かも
imgix を活⽤しようmicroCMS にアップロードした画像は imgix を通してアクセス可能になりますimgix とは、クエリパラメータで画像を臨機応変に最適化して取得できる CDN例)w で幅、fm で画像種別、q で画質
imgix 画像専⽤の VueComponentURL, width, height などを props で渡すと、前述のクエリパラメータを組み合わせた上で,タグ等を使って Webp 対応してくれる Component を作ったvue-imgix というライブラリもあるのでこっちもアリかも
まとめmicroCMS を使うと、管理画⾯を内製するコストを削減できるNuxt や Next 等のモダンフロントエンド(SPA)と相性がいいimgix が実質無料で付いてくるので、活⽤してパフォーマンス向上しよう
ご清聴ありがとうございました採⽤に少しでも興味を持った⽅はお気軽に DM ください!Twitter: @Meijin_garden