敢えて NetlifyCMS を試そうではないか

# はじめに
[JAMstack](https://jamstack.org/) 構成のWebアプリ／Webサイト制作で用いられる ヘッドレスCMS のうち、
日本製の [microCMS](https://microcms.io/) が注目されていることは、
多くの記事で取り上げられていることからも分かります。

[microCMS](https://microcms.io/) については、他の方が執筆された記事に委ねるとして、
この記事では敢えて [NetlifyCMS](https://www.netlifycms.org/) について書きます。

# 特徴
[NetlifyCMS](https://www.netlifycms.org/) の特徴は次のとおりです。

- [React](https://ja.reactjs.org/) 製
- [markdown](https://daringfireball.net/projects/markdown/) 記法で書ける
- スマホ非対応
- [ドキュメント](https://www.netlifycms.org/docs/intro/)は英語で書かれている

静的サイトジェネレーターには、
同じく[React](https://ja.reactjs.org/) 製の [GatsbyJS](https://www.gatsbyjs.com/)との相性が良さそうですね。

# 目的
[NetlifyCMS](https://www.netlifycms.org/) で用意されているテンプレートを使ったWebサイトを、
ネット上に公開して編集します。
今回は、静的サイトジェネレーターに [Hugo](https://gohugo.io/) を選択します。

# 環境
- MacOS Big Sur　バージョン 11.1
- Google Chrome　バージョン 87.0.4280.88

# 補足
これからご紹介する手順の前提として、

- [GitHub](https://github.com/)
- [Netlify](https://www.netlify.com/)

で、それぞれアカウントを作成済みで、ログインした状態になっています。

よって、アカウント未作成もしくはログアウト状態で進めていくと、
アカウント作成／ログインを促す画面へ遷移するので、その際は案内に従って進めてください。

# 準備
まず、[NetlifyCMS 公式サイト](https://www.netlifycms.org/)で用意されているテンプレートのソースコードを、
[Netlify](https://www.netlify.com/) を介して [GitHub](https://github.com/) にデプロイする必要があります。

## 公式サイトへアクセス
[NetlifyCMS 公式サイト](https://www.netlifycms.org/)へアクセスし、「GET STARTED」をクリックします。
![00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/29772376-5276-c214-5ea1-af4c910fdb62.png)
## 静的サイトジェネレータの選択
いずれかの静的サイトジェネレータを選択し、「Deploy to Netlify」をクリックします。
今回は [Hugo](https://gohugo.io/) を選択しました。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/dc8b0fe2-e9b2-44cc-5ddc-0cf49014a6d6.png)
## GitHubと連携
「Connect to GitHub」をクリックします。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/cfade4da-d1cd-af28-c068-f3effba38e00.png)
## 保存とデプロイ
① がリポジトリ名になります。好きな名前に変更することができます。
② の「Save & Deploy」をクリックします。
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/9f3f7bcc-c81b-a858-9e44-8a02e119ea65.png)
## デプロイ開始
デプロイが始まると [Netlify](https://www.netlify.com/) のページに自動遷移します。
デプロイ完了まで少し時間がかかり、その間は「Site deploy in progress」と表示されます。
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/176872fb-8591-1f6c-aec7-bd40e19456d2.png)
## デプロイ完了
デプロイが完了するとサイトのURLが表示されるので、それをクリックします。
![04a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/daecb66b-093a-a5fd-e051-c64e098905c1.png)

サイトへ遷移しました。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/e2a39602-09c4-1f8b-3023-5702a83079b5.png)
## GitHubを確認
[Netlify](https://www.netlify.com/) のページで「GitHub」をクリックします。
![05b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/c9b7fffb-28d9-ef04-667b-c3e1137171ea.png)

今回、静的サイトジェネレーターとして選択した [Hugo](https://gohugo.io/) のファイル構成で、 
[GitHub](https://github.com/) にアップロードされていることが確認できます。
![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/d6c0dacd-df27-1cd1-9631-d8419e41bdad.png)

## ユーザー登録とログイン
[Netlify](https://www.netlify.com/) から「You've been invited to join 〜.netlify.app」という件名の招待メールが届いているので、
「Accept the invite」をクリックします。
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/ff0a9162-4c97-b5da-bb31-74efdb19dc3e.png)

登録するパスワードを入力して「Sign up」をクリックします。
![08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/058400eb-42e3-6848-dfcf-9cf8835ea177.png)

ログインされました。
![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/faae6cff-7fe6-3ca7-8022-dae26b5d6c08.png)

# NetlifyCMS を触ってみる
サイトURLの末尾に「/admin/」を付加したURLが [NetlifyCMS](https://www.netlifycms.org/) の管理画面のURLです。
https://ご自身のサイトURL/admin/ にアクセスします。
## 投稿ページを確認
「Post」とは投稿ページのことです。
投稿されている記事のタイトルが一覧で表示されます。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/5813c942-ea19-ffaf-dcdc-7fb58f94a3f8.png)

サイトのメニュー「Blog」をクリックすると、投稿記事の一覧を確認することができます。
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/1bca2cfe-ab2f-6105-01e1-cc0d659967e4.png)

## 固定ページを確認
「Pages」とは固定ページのことです。
固定ページのタイトルが一覧で表示されます。
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/c3ea6f45-9d8f-e4a8-5c01-4bcfea5f4db5.png)

サイトのメニュー「Values」をクリックすると、Values ページを確認することができます。
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/be7584b4-d224-3f69-bc18-48ab6d6f6a6e.png)

## 固定ページを編集
トップページを編集するために、「Home Page」をクリックします。
![21b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/32787fb6-b7ce-0c6d-a0de-e1c68311d437.png)

編集画面は、左側が入力欄で、右側がプレビューの構成になっています。
入力欄の変更に合わせて、プレビューがリアルタイムに更新されるので、直感的に編集することができます。

それでは「IMAGE」の編集をするために、「Choose different Image」をクリックします。
![21c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/07a79dc4-f8ce-11db-ab3d-ab45b93d2576.png)

アップロード済みの画像がまとめられているポップアップウインドウが開きます。
画像を選択して、「Choose selected」をクリックします。
![21d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/5ec38587-e265-f895-8bcd-13cbf272f102.png)

「TITLE」と「SUBTITLE」を編集します。
編集が完了したら「Publish now」をクリックします。
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/90df1a8b-97be-8916-9ecc-fed1d4531f1c.png)

デプロイ完了後にサイトへアクセスすると、
編集した内容が反映されていることを確認することができます。
![23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/0a4575c1-bdd9-e443-7791-d5affb830f31.png)

次に、Values ページを編集するために、「Values Page」をクリックします。
![14b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/e15fc762-bc80-91f4-8dd7-7466d1276d51.png)

「VALUES」の内容を編集するために、赤丸の箇所をクリックします。
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/74ac5dad-eee7-7a5c-87f5-2af73f85523c.png)

内容を編集することができます。
![15b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/70d87103-9b5f-fdc3-1681-53d51f1c9160.png)

## 新しい記事を投稿
「Post」の「New Post」をクリックします。
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/1f279522-f496-62ae-06fa-9aa6f88bd605.png)

新規投稿ページが開きます。
![16b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/bd874902-6b8e-c93f-b2f1-69e5f2671670.png)

内容の入力が完了したら、「Publish now」をクリックします。
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/d33012b6-5246-8a52-0d7d-cfec0d0548a1.png)

サイトへアクセスすると、記事が追加されていることを確認することができます。
![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/a4f74d45-5e61-a3e2-0063-2fb79a8878ac.png)

[GitHub](https://github.com/) へアクセスすると、ソースコードも更新されていることが確認できます。
![21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/c7a8ea2b-89d5-d55b-882b-05bcc7869cfc.png)

## 編集権限を持つユーザーの追加
共同編集する場合、ユーザーを追加する必要があります。
[Netlify](https://www.netlify.com/) ページの「Idently」で、「Invite users」をクリックします。
![24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/894a5a3c-770b-1364-11fc-73eeafbb646c.png)

追加するユーザーのメールアドレスを入力して、「Send」をクリックします。
![25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/115536cc-ae4a-f20a-c30d-e5c386fe8b87.png)

追加したユーザー宛に招待メールが届くので、同様の手順で登録します。
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608781/939cdeac-27e0-8a42-5b29-806bf25701bb.png)

# まとめ
[JAMstack](https://jamstack.org/) 構成のWebサイトを短時間でとても簡単に公開することができました。
お好きな静的サイトジェネレーターを選んでカスタマイズしたら楽しいかもしれません。

今回は簡単なご紹介になりましたが、
ヘッドレスCMS を選定の際に、参考にしていただけたら幸いです。

# 謝辞
執筆にあたり、こちらを参考にさせていただきました。ありがとうございます。
[Netlify CMSを試してみた](https://dev.classmethod.jp/articles/try-netlify-cms/)