ブログ構築するSSGをHexoに決めた理由
静的サイトジェネレーター(SSG)は数多く出回っていますが、、私がブログ用としてHexoに決めた理由をご紹介します。
ローカルサーチ
Hexoには、サーチ機能を追加できるプラグイン「hexo-generator-searchdb」があります。投稿「posts」、固定ページ「pages」の両方を検索対象とすることができ、文字単位でインクリメンタルサーチが可能で、日本語にも対応しています。
サーチ機能をブログに導入するには、algoliaやlunrといった外部サービスを利用するのがSSGの世界では主流のようです。
ただ、algoliaには無料プラン、有料プランがあり、無料プランには色々な制限があります。
また、lunrは無料で、インクリメンタルサーチはあるものの、日本語で検索すると、文字単位でなく単語単位しか結果表示されません。
参考情報ですが、HexoでなくHugoのテーマ「zzo」でもローカルサーチは可能なようです。
ダイナミックTOC
目次の機能で次の5つを実装できるテーマが私の条件でした。
サイドバーに目次表示
サイドバーの目次をコンテンツ部がスクロールしても固定表示
コンテンツ部のスクロールに応じて、表示されている目次をハイライト表示
目次の項目多く画面外まで目次がある場合でも、コンテンツ部表示に合わせて、サイドバーの目次も追従スクロール
目次の第二階層以下を折りたたみ表示でき、かつコンテンツ部の箇所は展開表示
色々なSSGを調べたところ、Hexoのテーマでは「Butterfly」と「Next」、Hugoのテーマでは「zzo」と「Next」がこの条件に当てはまりました。
このうち、Hexoの「Butterfly」だけが、動作安定、ドキュメント充実、更新継続中なので、採用決定。
Hexoの「Next」はダークモードが機能しないなど、動作が不安定でした。
Hugoの「Next」はHexoからの派生テーマでドキュメントが未熟です。
「zzo」は更新が数年前から停止しており、Hugo公式サイトのテーマ紹介から外されています。
数式表示が可能となる「MathJax」がSSRで利用可能
Hexoのテーマ「Butterfly」や「Next」には、MathJaxの機能が取り込まれています。(Hexo本体にはMathJaxの機能がついていません。)
更に、プラグイン「hexo-filter-mathjax」を使えば、サーバーサイドレンダリング(SSR)も可能で、より高速に数式を表示させることが可能です。(ただし、Retinaディプレイで表示するとエッジがやや粗く表示されます。)
HugoはデフォルトでMathJaxが利用可能であるが、SSRを実装するプラグインはありません。
Gatsbyには、SSRのプラグインがあるようです。(ただし、後述のとおりGatsbyはビルドが遅いので不採用としました。)
サイドバーの左表示
右サイドバーの場合、「コンテンツ部のスクロールバー」と「目次部のスクロールバー」が隣会ってしまうため、見づらくなります。よって、左サイドバーが私にとって必須です。
Hexoのテーマ「Butterfly」には、サイドバーを右または左に設定するオプションがあります。
ドキュメントサイトを作成するためのSSG「Sphinx」や、その他のSSGのドキュメントサイト用テーマでは、左サイドバーを表示させるものが多いのですが、残念ながら記事の目次でなく、記事のタイトル一覧となります。
ドキュメントサイト用のSSG「MKDocs」では、左サイドバーに記事一覧、右サイドバーに目次となる仕様ですが、両側にサイドバーがあることでコンテンツ幅が狭くなり、画像などが見づらい印象です。
パーマリンクの設定
Hexoは、パーマリンクの設定の自由度が高く、投稿ごとのFront-matterで指定できます。
特に、HTMLデータを構成するツリー構造のフォルダ名などをパーマリンクから省くことができる点が秀逸です。
私は、サイトの構成(フォルダ構成やフォルダ名、投稿のカテゴリ)をいつでも自由に変えられるようにサイトURLの直下に投稿のパーマリンクとなる設定にしています。
URLの下にフォルダ名やカテゴリー名が入ってしまうと、サイト構成を修正しづらくなってしまうので長期的なサイト運営には不向きです。
アップデートの頻度
Hexoは2022年に3回、2023年では3月と7月の2回アップデートされています。(2023年8月時点)
また、人気テーマの一つ「Butterfly」は、2023年は毎月アップデートされています。
どちらも個人(中国語を使う方)がアップデートしているようですが、中国でのユーザー数が多いようなので、しばらくはアップデートされ続けるように思われます。
なお、Hexo公式サイトによれば、2012年にTommy Chen氏によりHexoはリリースされて、現在はAbner Chou氏によりメンテされています。
SSG本体とテーマのドキュメント
Hexoのドキュメントは英語で丁寧に書かれており、GitHub Pagesなどのデプロイ先の説明もあります。
また、テーマのドキュメントは、中国語のものが多いですが、Butterflyは2023年7月に英語版ドキュメントが公式サイトに掲載されました。
ただ、最近のブラウザ(Chrome)には、優秀な翻訳機能が備えついており、中国語でも英語でも翻訳すれば、導入はそれほど苦労しません。
ビルドの速さ
Hexoのビルドの速さは、Hugoほどではありませんが、サイトを運営管理するには及第点です。
Gatsbyは、Hexoと同様Javascriptであり、テーマやプラグインが多いのですが、ビルドに時間が掛かりすぎるが難点です。
決め手は、「Butterfly」という要求をすべて満たすテーマを見つけられたことですね。
私のメモ程度の記事ですが、皆さんの参考になれば幸いです。