OVERFLOW: AUTO;

Aiming to be modern, practical skilled front-end engineer.

Nuxt + TypeScript + GraphCMS でブログサイトを作る_04

f:id:show-hei:20200717003530p:plain

前回までで Nuxt + TypeScript の基本的なセッティングを終え、簡単な ToDo アプリを作って nuxt-typed-vuex プラグインの使い方を確認しました。

今回は GraphCMS の設定を行っていきます。

GraphCMS とは

詳しい説明は他のサイトに譲りますが、簡単に言うとこれから作るブログサイトの記事を保存するサービスです。ブログの記述は GraphCMS のウェブサイト上で行い、保存した記事データはフロントエンドからリクエストを送ることで受け取ることができます。

GraphCMS のアカウント作成

GraphCMS のサイトから Sign Up で新規アカウント作成ページへ行きます。

f:id:show-hei:20200717000324p:plain

Facebook, Github, Google もしくはメールアドレスでアカウントを作成します。

f:id:show-hei:20200717000553p:plain

いくつかプリセットのテンプレートが存在するので、今回はちょうど良さそうな名前の Blog Starter を選択します。

f:id:show-hei:20200717000712p:plain

GraphCMS 上で使うプロジェクト名を入力し、地図で Asia (Tokyo) (東京リージョン) を選択したら Create Project をクリックします。

f:id:show-hei:20200717000905p:plain

次のページでは利用するプランを聞かれますが、ここでは無料プランを選択します。

あとはしばらく時間を置くとダッシュボードへ遷移するので待ちましょう。

※ エラーなのか自動遷移しないことがありました。3~4分経っても画面が変わらないときはリロードしてみたらうまくいくかもしれません。

GraphCMS のスキーマ設定

スキーマとは

スキーマとは、一つのカテゴリに含まれる項目の組み合わせのようなものです。

カテゴリとは、例えば「著者」「記事」です。

カテゴリに含まれる項目とは、「著者」というカテゴリ内であれば「名前」「メールアドレス」「著者の書いた記事」などが該当します。

「記事」というカテゴリ内であれば「タイトル」「投稿日」「最終更新日」「アイキャッチ画像」「著者名」などです。

モデルの設定

上で書いたカテゴリを GraphCMS ではモデルと呼びます。ここでは記事のモデルを作っていきます。モデル名は Post です。

左のサイドメニューで菱餅みたいなアイコンをクリックするとスキーマページへ遷移します。するとすでに Post の Model が存在しているのが分かります。テンプレートから自動で作ってくれているのでこれを使いましょう。

今回は最小限の実装で済むように、以下のフィールドを削除して使います。削除したいフィールドにカーソルをもっていくと赤いボタンで Delete Field という表示が出るのでそれをクリックします。

  • Slug (記事の URL に任意の文字列を設定する目的だが不要。)
  • Excerpt (記事から文字を抜粋して一覧の表示時に見せる目的だが不要。)
  • Author (記事の著者名。今回は自分一人が管理者なのでそもそもいらない。)
  • Tag (実装めんどくさいから消す。)

もう一点、これは好みですが Content がリッチエディタだと使いづらいのでマークダウン記法で書けるように以下の手順で設定します。

  1. Content フィールドを削除する。
  2. 右のフィールドリストから Markdown を選択する。
  3. フィールド名を Content にして決定。

これらを終えたら、Title、Date、Cover Image、Content、Author が残ると思うのでこれで OK です。

では早速記事を書いてみます。

コンテンツを作成

サイドメニューで、先ほどの菱餅アイコンの下に Content を示すアイコンがあるので、それをクリックして遷移します。

Post モデルを選択しページが変わるとすでにいくつかコンテンツが入っていることが分かります。テンプレート選択した際に作られたダミーデータです。では新たにコンテンツを加えてみましょう。

項目を入力

Title、Date、Cover Image、Content を入力しました。

f:id:show-hei:20200717010454p:plain

Author の入力をしようとしますが、ちょっと入力の勝手が違いますね。ここでは Author を選択するか、新しく Author を作成するかの二択があります。

これは Author モデルと紐付いているため、作成された Author のコンテンツを選択する形式となるためです。ここでは Select Author をクリックしてダミーデータとして登録されているものを使いましょう。

f:id:show-hei:20200717012410p:plain

右上の Save and publish ボタンを押してコンテンツ作成を完了させます。

API Playground でデータの確認

この後、フロントエンドから API リクエストで記事データを取得するわけですが、GraphCMS がどのようにデータを返すかを確認してみます。

Post のコンテンツ一覧の上部の三点リーダーをクリックして Preview in Playground を選択すると API のプレビューページへ遷移します。

f:id:show-hei:20200717013238p:plain

遷移したページの左側にあるのが GraphQL のリクエストクエリの記法です。ページ中央にある再生ボタンみたいなのをクリックすると右側にデータが JSON で返ってきます。

f:id:show-hei:20200717013740p:plain

今回はここまで。