microCMS使ってみた
今回は以前から気になっていた、日本製Headless CMSであるmicroCMSを触ってみたのでそのことについて書きます
Headles CMSとは
Head (ビュー = 表示画面) less(ない) CMS(コンテンツ管理システム)で、表示画面がないCMSのことです。
今までのCMSは表示画面とコンテンツ管理が合わさったものでしたが、HeadlessCMSは表示画面が存在しないので、自分で自由に作成することができます。
また、サイトのある一部分のみコンテンツ管理することも可能です。
Contentfulなどが有名だと思います。
microCMSとは
導入でも書きましたが、microCMSは日本製のCMSです。
ドキュメントや、サポートまですべて日本語対応しているため、初めてHeadlessCMSを触ってみる場合には取り扱いやすいと思います。
また、完全に主観ですが管理画面が分かりやすいため、エンジニアだけでなくコンテンツを管理する編集者も使いやすいと思います。
実際に使ってみる
それでは実際にブログ記事を管理する想定で使ってみます。
アカウント作成などは省きます。
APIの作成
まずはAPIを作ります。
API名とエンドポイントを指定します。
APIで取得できるデータの形式を指定します。
今回は、記事一覧を取得するAPI作成するためリスト形式にします。
APIで管理する各フィールドを作成します。
シンプルに
- 記事タイトル
- 記事内容
- 投稿日時
を作成しました。
フィールドの種類はたくさんあるため、コンテンツの種類によって選択します。
フィールドに対して、複数のコンテンツを参照させることができます。
例えば、記事に対して複数タグなどをつけたい場合は、タグを返すAPIを作成しコンテンツを公開することで、記事一覧のAPIのタグのフィールドに複数のコンテンツを参照させることができます。
コンテンツ作成
APIは作成したので、コンテンツを作成します。
先程作成した、タグも複数紐付けることができています。
コンテンツは、予約公開することもできます。
APIプレビューで、APIのレスポンスを簡単にみることができます。
画面での表示
画面で表示させます。
APIキーを保護する
APIキーをenvファイルで保護します。
.envにAPIキーを記述
API_KEY=key
記事一覧ページ
記事を一覧表示するだけのページを作ります tailwindcssを使っています。
<template> <div class="max-w-screen-lg mx-auto mt-5 flex flex-col items-center"> <div> <article-card v-for="article in articles" :key="article.id" :article="article" /> </div> </div> </template> <script> import axios from 'axios' import ArticleCard from '~/components/ArticleCard.vue' export default { components: { ArticleCard }, async asyncData() { const { data } = await axios.get( 'https://bloglog.microcms.io/api/v1/blogs', { headers: { 'X-API-KEY': process.env.API_KEY } } ) return { articles: data.contents } }, data() { return { articles: [], } } } </script>
記事タイトル、投稿日、タグ、記事の内容が表示されていることが確認できました。
さいごに
紹介の部分でも書きましたが、microCMSは日本語のドキュメントが充実しているので、扱いやすいです。
早いペースで新機能が追加されたり、改善されているため今後もっと使いやすくなっていくのでは、と思います。