0.はじめに
- 自己紹介と今日の見通し
- いいよっていう話ばかりしますが、もちろんデメリット、うまくいかないところもありますので、ご了承を。
- notionの共有
- 目次
1.microCMS(ヘッドレスCMS)がいいよという話
- ヘッドレスCMSとは?
- ブログサイトを例に考えてみましょう。
- 記事のページを1つずつHTMLとCSSで書くのは大変、記事を更新、追加するのにコードをいじるのが大変
- → CMSコンテンツ・マネジメントシステム
- 記事を書いて登録すれば、WEBで表示ができるいろいろなブログサービスもCMSの一つ
- CMSとはなにか?→スライド
- 見えている部分(フロントエンド・頭)と見えていないデータベース・管理部分(バックエンド・体)があります
- 代表的なCMS WordPress 表示部分をテーマ等を使ってカスタマイズできる。データベース部分もある程度カスタマイズ可能
- CMSのうち、データベース+管理機能の部分をあつかうツール・サービスがヘッドレスCMS ←→ カップルドCMS
- →ヘッドレスだから相棒(レンダリング(表示)を担うツール)が必要
- 今回はGatsby
- ヘッドレスだと何がいい?
- 好きなようにデータベースの構成を作れる
- ヘッドレスCMSではGUIでデータベースからテーブルを作成することができるので、バックエンドでプログラミングするのに近い自由度でデータベースを作れます。
- 開発者とコンテンツ管理者の分業ができる
- 例えば新規立ち上げのときでも、ヘッドレスCMSでコンテンツを作りつつ、フロントエンドの構築作業ができて、効率的な開発が可能
- フロントで好きな技術を扱える
- エンジニアの得意な技術、コンテンツや状況に応じた技術を選択できる
- 学習したい技術を使って練習も
- 引っ越しが簡単・フロントの技術変更が容易
- 今回、そんの構築したものに変更を加えてあらたな機能追加した場合
- アップデートしたら、新たにプロジェクトを起こして、連携の設定をすればOK
- 1つのデータソースから複数のところ(ウェブアプリ、ネイティブアプリ・・・)への展開が可能
- 技術さえあれば、1つのデータをWEBアプリで、ネイティブアプリで使うことができる。
- コンテンツ更新が簡単に
- コードをさわらなくてもいい
- 一部分だけをヘッドレスCMSで管理できる
- 例えば、LPで3つくらい並列で「ベネフィット」とか表示するときも、その部分をヘッドレスCMSで管理できたりもします。
- 自分のポートフォリオ部分
- microCMSだとくりかえしフィールドなどを使うとかなり便利そう
- SSGで展開することで早くて、安全で、強力なサイトに
- ヘッドレスCMSいろいろ
- Contentful
- Strapi
- DatoCMS
- microCMSとは
- 日本製(ヘッドレスCMSでは唯一?)
- 英語のヘッドレスCMSばかりの中でUIが日本語
- 日本語のサポート、手厚い。
- 画像の扱いで困ったとき、日本語のチャットで問い合わせできるというのはありがたかった。→ すぐ返答いただけました。
- どんどん開発が進んでいます。

- UI/UXがわかりやすい
- カスタムフィールド、繰り返しフィールド→いろいろなサイト構築に
- そんのポートフォリオサイトのポートフォリオの部分
- サイトのキャンペーン表示部分またはLPのコンテンツ部分に導入することで、ノーコードでお店の人が更新
- 個人ブログや個人開発レベルなら無料で公開まで
- microCMSのユースケースから 企業のDX推進にもよく用いられるようになっている
- https://blog.microcms.io/usecase-acallアップデートのメンテナンスをしなくていい
- https://blog.microcms.io/usecase-interspace記事修正しやすい
- https://blog.microcms.io/usecase-beatfit本来ならバックエンドでデータベースや管理画面を構築するところをmicroCMSで実現 → 工数減
2.Gatsby(静的サイトジェネレータ)がいいよという話
- Gatsbyとは?
- SSG(静的サイトジェネレータ)
- 早い・安全・強い
- 豊富なプラグイン
- プラグインでいろいろな機能を追加できる
- 画像処理
- SEO設定
- いろいろスターターがあります
- テーマを使うと、アップデートにも対応!
- WordPressのテーマアップデートみたいな感じ
- Reactベース
- jsxファイル→htmlに似ている
- コンバーターもあるので、テンプレート、自分で書いたhtmlを変換できる
- cssの当て方もいろいろいい感じのものがある
- scss,sassでもOK
- CSSinJS
- 今回採用
- ノーマルCSS→global.css bootostrap
- styled-components
- graphQL
- いろいろなデータソースを1つのインターフェースで管理できる!
- ミックスもOK
※ ここでこのnotionを共有する
3.Gatsby-microCMSブログ構築デモと解説
1.Gatsbyプロジェクトの生成
- プロジェクト生成
gatsby new myblog <https://github.com/sonho463/starter-microcms.git>- コードエディタでプロジェクトを開く
// プロジェクトのフォルダへ移動
cd myblog
// コードエディタでプロジェクトを開く
code .
2.microCMSの設定
- ユーザー登録〜コンテンツ(API)設定
- サービス名を設定します。後でGatsbyで接続するときに使用します。

- CMSにおいては、データベースに当たる部分
- APIの設定:APIは「テーブル」に当たる部分
- 記事API、カテゴリAPI、設定APIの3つのAPIを作成
- 記事API、カテゴリAPI:リスト形式
- 設定API:オブジェクト形式
- 記事(posts)とカテゴリ(category)のAPIを作成(リスト形式)
- コンテンツ(API)の横の+
- API名・エンドポイントを設定

- API名はわかりやすい名前、エンドポイントは以下
- ブログ記事のAPI:posts
- カテゴリのAPI:category
- APIの型を選択 →リスト形式
- schemaをインポート
microcmsSampleFiles/microcmsSchemaフォルダ内にあります- postsAPIの設定(categoryAPIはそのままでOK)
- categoryフィールドの形式を「コンテンツ参照」にしているので、インポートしたあとに設定をしなおします。
- postsAPIを選択、画面右上のAPI設定
- APIスキーマを選択
- カテゴリフィールドの種類を「コンテンツ参照」にして、参照先をcategoryに設定

- 変更をクリックして設定反映
- 記事を追加
- csvでサンプルファイルをインポート

- ルートの
microcmssampleFiles/csvフォルダにあります - 自分で記事を追加してもOK
- ルートの
- 記事データがないとビルドエラーが出ます。
- ブログ記事は2件
- カテゴリは1件データがあればOK
- ブログ記事のうち1つは、すべてのフィールドにデータを設定する
- 設定APIを追加
- 上記と同じ流れでオブジェクト形式で追加
- オブジェクト形式のAPIは、コンテンツのインポート機能はないので、直接、タイトルとサブタイトルを追加
3.GatsbyとmicroCMSの接続設定
- 環境変数設定ファイル作成
- ルートフォルダに以下のファイルを作成
- .env.development
- .env.production
- microCMS管理画面からapikeyを確認してコピー・ペースト

- 環境変数設定ファイル
MICROCMS_API_KEY = "YOUR_API_KEY"
MICROCMS_SERVICE_ID = "YOUR_SERVICE_ID"4.Git〜確認〜デプロイ
- Gitに登録
- GitHub
git remote add origin <https://github.com/sonho463/myblog0529.git>
git branch -M main
git push -u origin main- gatsby develop
- microCMS側にデータがないとビルドエラー
- ブログ記事は2件、カテゴリは1件、configも入力しておく
- gatsby build → gatsby serve → localhost:9000
- GitHubへ
- Githubにリポジトリ作成
- git push
- git push
- デプロイ
- 環境変数の設定

- デプロイ先の選択はいくつかありますが、それぞれで環境変数を設定しておく必要があります。
- Netlifyへデプロイ
5.コードや表示ページを見ながら解説します。(時間的に触れないかもしれません)
- GraphQL の記述について 1.
- CreatePageでページが生成される仕組み
- post-template.jsx
- index-templateのページネーション機能(GraphQLのフィルター機能で実装)
- カテゴリページには未実装😅
- previous,nextのリンクについて(かなりハマったのでその話)
- GraphQLでデータを読み込んだときにnullだとエラーでストップ
- 入れ子のオブジェクトで読み込むことで、null判定する
- 画像の扱い
- gatsby-source-microcmsプラグインがgatsby-pluguin-imageに未対応
- gatsby-plugin-imageとは
- 画像最適化にはImgixを利用
- 設定いろいろかえてみる
- 記事一覧ページの表示数
- GraphQLの引数 limit,skip を利用
- トップページの背景画像
- ファイルの入れ替えで対応
- 記事一覧ページとカテゴリ別ページ
- アバウト
- コンタクト
- どうしても、コードを触らないといけないところ
- コンタクトフォーム→GoogleFormをiframeタグで埋め込んでいます
- microCMSの無料プランの制限について
- https://microcms.io/pricing
- サービス数1個
- コンテンツ(API)数 10個
- リクエスト数
- Read 無制限
- Write 100回
4.まとめ
- gatsbyとヘッドレスCMSの組み合わせにいろいろな使い所
- 企業のDX推進
- お店サイトで、お店の人で更新できる
- テンプレート(+ちょっとカスタマイズ)でOKなら短時間で構築
- 学習のために構築して、少しググりつつカスタマイズしてみる
- まずはこのスターターで試してみてください。





