Gatsby を選んだ理由と初期設定

2021-05-16Gatsbywebsite

Gatsby を選んだ理由

ウェブサイトを開設するにあたり、今まで触ったことがある WordPress ではなく、全く新しい Gatsby を選んだ理由として、次の点が挙げられる。

  • 高いパフォーマンス
  • React の勉強がてら
  • CSS 練習の取っ掛かり
  • Markdown で記事が書ける
  • 既に高い人気を誇る

都度データベースにアクセスして動的にページを生成する代わりに、事前に全てのページを生成しておくという SSG (Static Site Generator) の高いパフォーマンスは、まず何よりも最大の魅力だ。

そして SSG の中でも React ベースの Gatsby を選ぶことで、最近勉強している React の良い実践の場が得られるのも大きい。何事でも習熟には練習が不可欠だと思うので、これを機により多くの経験を積みたい。また、Gatsby のサイト・テンプレートはシンプルなものが多いので、CSS でのスタイリングに苦手意識がある僕にとって、敷居が低い取っ掛かりとなる事も期待したい。

あと、普段から日記やノートを Markdown で書いているので、それらがシームレスに活かせるという利便性の高さも大切。何となくサイト運営を続けて行けそうな、気にさせてくれる。

Gatsby は GitHub で 50.2k のスター数(一方 WordPress は 15.9k)を獲得しており、業界で既にかなり受け入れられているようだ。次のデファクト・スタンダードになる可能性を念頭に、今から慣れ親しんでおく価値は十分にある思う。

初期設定

スターターは、今後のカスタマイズのやりやすさを考えて、シンプルな Gatsby Starter Blog を選んだ。

設定作業では、下記の記事を参考にさせて頂きました!

サイト全体の属性情報

  • gatsby.conf
  • Seo コンポーネント (src/components/seo.js)
    • lang のデフォルト値を “ja” に変更

favicon は https://favicon.io/favicon-generator/ を利用して作成

Symbol of Mathematical Small Zeta

プロフィール表示(Bio コンポーネント)

トップページのヘッダや各記事のフッタに表示されるプロフィールを、自分用に変更する。共に Bio コンポーネント (src/components/bio.js) から生成される。

  • プロフィール画像(39 行目)
    • src/images/profile-pic.png (400x400) を変更
  • About(はじめに)ページへのリンクを追加(49 行目〜)
  • SNS へのリンク(49 行目〜)
    • Twitter はまだやってないので、とりあえず Facebook と GitHub へのリンクを表示するように変更
{
  author?.name && (
    <p>
      Written by <strong>{author.name}</strong> {author?.summary || null}
      {` `}
      <Link to="/about">About</Link>
      {` / `}
      <a
        href={`https://facebook.com/${social?.fb || ``}`}
        target="_blank"
        rel="noopener noreferrer"
      >
        Facebook
      </a>
      {` / `}
      <a
        href={`https://github.com/${social?.github || ``}`}
        target="_blank"
        rel="noopener noreferrer"
      >
        GitHub
      </a>
    </p>
  );
}

日本語対応

日本語で記事を書くと 要約が表示されない問題 を修正して( cf. Excerpts for non-latin languages)、日付表示 を日本で馴染みの記法に直す。

インデックページ・コンポーネント (src/pages/index.js)

  • 記事の要約が正しく表示されるように修正(77 行目)
    • excerptexcerpt(truncate: true)
  • 日付表示の変更(82 行目)
allMarkdownRemark(sort: { fields: [frontmatter___date], order: DESC }) {
  nodes {
    excerpt(truncate: true)
    fields {
      slug
    }
    frontmatter {
      date(formatString: "YYYY-MM-DD")
    // 省略

記事のテンプレート (src/templates/blog-post.js)

  • meta description のデフォルト値がとして、記事の要約が正しく取得されるように修正(82 行目)
  • 日付表示の変更(86 行目)
markdownRemark(id: { eq: $id }) {
  id
  excerpt(truncate: true, pruneLength: 160)
  html
  frontmatter {
    title
    date(formatString: "YYYY-MM-DD")
    description
  }
  // 省略

SEO 対策

スタイル

とりあえずフォントを @fontsource/noto-sans-jpNoto Sans JP に変更した。今後少しずつカスタマイズしていく予定。

結果

無料の Gatsby Cloud にデプロイして Lighthouse で評価してみた。上は自分が WordPress で運営している別のウェブサイト、下が今回 Gatsby で新しく作ったサイト。

Lighthouse Score for WordPress

Lighthouse Score for Gatsby

おぉ、確かに目覚ましい改善が確認できた!!

今後の展開

  • 見栄えに個性を出す
  • ナビゲーション・メニュー
  • 記事のタグ
  • 記事に目次を追加
  • サイト内の検索