はじめに
以前から興味があった静的サイトジェネレーター「Gatsby.js」でお試し的にブログを作ってみました。
高品質な Gatsby 製サイトとの出会い
これまでも巷で静的サイトジェネレータが話題になることがありました。その度に手を出してみようと思ったものの、すでに WordPress 製のブログがあることから実行には移りませんでした。ブログというアウトプット手段に時間をかけるなら、アウトプット自体に時間をかけたほうがいいのでは、という理屈です。
少し前に非常に品質の高い Gatsby 製サイトと出会いました。 takumon さんが開発されたものです。
まずサイトの品質に驚きました。 どうしても静的サイトジェネレーター製のサイトは使えるテーマの成熟度から WordPress 製と同等のレベルに持っていくのは大変かと思います。上のブログは全体的なデザインはもちろん SNS の共有機能、Qiita との連携など、見た目も機能も非常に高いレベルでした。
加えて特に惹かれたのは、ブログのソースコードが GitHub でMIT ライセンスで公開されていることです。コードを自分用にカスタマイズして公開することが可能です。このレベルのコードを利用させてもらえるのは大変ありがたかったです。
Takumon さんとのブログとの出会いに後押しされ、静的サイトジェネレーターでブログを作ってみました。
構成
オリジナルから少し見た目とホスティングサービスを変更したことに加え、CI/CD を強化するためインフラ面も多少改良しました。
Qiita との連携
Qiita にも多少記事を投稿しているため、ブログと Qiita との連携機能は個人的にマストでした。一番気にしていた点でしたが、Takumon さんが開発している Gatsby プラグインを使えば簡単に実現できます。
公式ドキュメントや Takumon さんのブログのコードが参考になります。
Netlify での公開
ブログのホスティングサービスはオリジナルは GitHub Pages を利用しているようでした。こちらも手軽にデプロイできるいいサービスですが以下の点から Netlify を利用しました
- 読み込み速度 (参考情報:比較記事)
-
- HTTP リクエストを投げると GitHub の最新コードでビルド&デプロイが可能
- ビルド環境の統一
Qiita 更新時の自動反映
Qiita と連携し Qiita 記事をブログで表示するのであれば、常に最新の記事を取得、反映したいというもの。そこで IFTTT を使い対応しました。IFTTT の Feed トリガーを用いて Qiita の RSS(Atom)を監視し、新しい投稿が検出された際には Netlify の Build Hooks にリクエストを投げる仕様です。
感想
実際に作ってみた感想をまとめます。 比較対象はこれまで運用していた WordPress です。
パフォーマンス
-
⭕: 読み込み速度
- Netlify はフリープランでの CDN から配信
- Gatsby による仮想 DOM、Prefetch
- 静的配信によるサーバ側の計算コスト削減
- lighthouse スコアも向上
カスタマイズ性
-
⭕: ブログ全体をコードレベルで把握できる
- 変更が容易
-
⭕: Node によるパッケージ導入の容易さ
- Material UI の導入もスムーズ
-
⭕: Gatsby のプラグインやテーマが豊富
- 導入後の調整作業は多少必要
- ❌: テーマの豊富さ、反映までの速度感では WordPress に軍配
機能面
- ❌: プラグインの充実度では WordPress に軍配
-
❌: WordPress の方が PHP の動的処理で記事ランキングの実装が容易
- Gatsby でも実現はできなくないが、別途アクセス管理サービスが必要
- ❌: 簡単な修正をしたいときにスマホからは困難 (GitHub に push できない)
開発環境
- ⭕: CI/CD
- ⭕: GitHub によるコード管理
- ⭕: ローカル環境でのコーディング、デバッグ
セキュリティ
- ⭕: WordPress のような動的サイト故のセキュリティホールが無い