Hexoでブログに再入門

Advent Calendar用に久々にブログを立てて見ました。
以前にパブリックに書いたのは多分10年以上前のような気がします。
レンタルーサーバ借りてドメイン取ってRubyで動く何かを使って立てた気がするけど、よく思い出せません・・・

まぁ、過去のことは置いておいてせっかく立てたので、何か役立ちそうなことをメモしていきたいと思います。

Hexoとは

とりあえず今回このブログは、Hexo使って立ててみました^1
Hexoはブログを書くためのフレームワークですが、WordPressのような従来型のブログサービスとの一番の違いは、静的にブログを生成するか、動的に生成するかです。

静的サイトジェネレータ

Hexoは静的サイトジェネレータというツールに分類されていて、あらかじめ用意したブログのテキストや画像等から、ブログの表示に必要なHTML,CSS,JavaScriptなどの静的ファイルを生成してくれます。Hexoがやってくれるのはここまでで、あとはHexoが生成したファイルをお好みのWebサーバに公開すればブログが表示されると言う仕組みです。
WordPressはこれとは違い、Webにアクセスが来るごとにWebページをサーバサイドのプログラムが動的に生成してブラウザに返しています。

静的サイトジェネレータの長所

どちらにも一長一短があって、静的サイトジェネレータの良いところはローカルで確認してから、チェックが完了してからWeb公開できる点です。このローカルで確認できると言うのはすごい強みで、画像のアップロードも不要だし、テキストやCSSの修正も手元で直してすぐ確認できると言うのが非常に心地いいです。
これが動的サイトだと一度サーバにアップロードして確認と言う手間が一つ入るため、色々と面倒臭くなります。

また、静的サイトジェネレータの場合、サイトの生成に必要なファイルは必然的に手元で管理することになるので、Gitなどのバージョン管理システムと相性が良いです。これは非常に安心感があって、こまめにコミットしておけば様々な理由による『ブログの消失』を未然に防ぐことができます。動的サイトの場合も手元にファイル等の形で残しておけば、バージョン管理することができますが、ちょこっとした修正をサーバにアップロードして、バージョン管理用ファイルに反映し忘れるという事故が起き易いです。

セキュリティ的に安心というのも魅力の一つですね。サーバサイドの処理がないので攻撃パターンが限られますし、特にWebサーバにホスティングサービスを使っている場合、自分ではほぼ何もセキュリティについて考えることはないです。少ない懸念点の一つとしてあげるならばJavaScriptを使ってる場合です。まぁ最近は大抵知らずのうちに使われてると思いますが、特に怪しいライブラリを使っている場合に勝手にマイニングされたり、踏み台にされる場合もあるので、気をつけた方が良いかもしれません^2

静的サイトジェネレータの短所

このようにHexoのような静的サイトジェネレータ型のブログツールには利点がたくさんあるのですが、もちろん欠点もあります。
一番目立つのは、非エンジニアにとって利用するのにハードルが高いということです。
例えば、Hexoのトップページには「Simple」と謳いながら、以下の導入時のコマンドが載っています。

1
2
3
4
5
$ npm install hexo-cli -g
$ hexo init blog
$ cd blog
$ npm install
$ hexo server

これを見て「簡単そうだな、やってみようかな」と思える人は世の中に1%もいないと思います。
もちろん現役のWebフロントエンドエンジニアなら、これを見てお湯を注いだカップラーメンができるより早くブログサイトを構築できるでしょう^3
つまり、現在のところ静的サイトジェネレータはGitが分かるフロントエンドエンジニアにとって、非常に使い易いツールだけど、それ以外の人は、まぁ覚悟して取り組んでくださいとしか言いようがないですね。。。
もちろん将来的にはシンプル詐欺などではなく本当に非エンジニアでも無理なく使えるツールが出てくるかもしれないので、この点は静的サイトジェネレータ固有の短所というよりもまだ成熟途中の技術の特徴ということになります。

あと当然ですが、静的サイトジェネレータ単体ではサーバサイドという概念がないのでRDBと連携して、大量データの検索とかテーブルの結合とかそういった処理も基本できません。カウンタやトラックバックやコメント機能などのブログにおなじみの機能もデフォルトではありません。このような場合はWebサービスと連携するのが常套手段ですが^4、複雑になりそうなら最初から動的サイトやSPAやSSR等の構成[^5]を検討した方が良いでしょう。逆に考えると静的サイトジェネレータの一番の使い道はこのような処理が基本的に不要な場合のプライベートなブログで、まさにHexoはこのサイトにうってつけなのでしょう。

[^5]: SPA = Single Page Application, SSR = Server Side Rendering

なぜHexoを選んだのか?

まさしく、前掲のコマンドを見て簡単そうに思えたからです(笑)。つまりそれをコピペして実行するだけで試せる環境と知識をすでに有していたからということになります。
あとはHexoと言うより静的ジェネレータの利点の方が大きいですね。最初はVPSやパブリッククラウド上に、以前のように動的サイトを構築しようと考えていましたが、構築コストやセキュリティのことを考えるとだんだん気が重くなってきました。ブログサービスも検討しましたが、ソースは全てGit管理したかったのと手元で表示確認がすぐにできないので却下しました。
つまりGit管理と親和性があって手元ですぐにサイトの表示が確認できて、セキュリティーの心配をあまり心配しなくてもいい記事投稿が簡単にできるブログツールを探していたということになります。
その中で一番最初に目に付いたのがHexoだったというだけです。記事がMarkdownでかけるのもいいですね。
なのでもっといいツールが見つかれば移行するかもしれませんが、しばらくはHexoと仲良くやって行こうと思っています。
目下の悩みはテーマをどうするかです。デフォルトのlandscapeも拡張しやすくて悪くはなかったのですが、せっかくこれだけのテーマが公開されているので色々と試したいと思っています。^6

まとめ

まとめです。Hexoの箇所は静的サイトジェネレータに置き換えても大体合ってます。
3行を目指しましたが、なかなか難しいですね。

  • Hexoは静的サイトジェネレータ型のブログツール
  • Hexoはローカルで編集して、すぐに実際の表示が確認ができるので、心地よい
  • Hexoはバージョン管理と相性が良く、こまめにコミットで安心できる
  • Hexoはセキュリティ的に動的サイトに比べて安心
  • Hexoは非エンジニアに基本向かない
  • Hexoではカウンタやコメント機能等、サーバサイドの処理が必要なものは基本使えない

補足

前述の通りでHexoを最初に選んだのは私にとって簡単そうに見えたからです。
だけどそう見えたのは私の好みや経験という色眼鏡があったからなので、申し訳ないですがこのブログを読んでくれた方に当てはまるかどうかは分かりません。
もちろん世の中にはHexo以外にも山のように静的サイトジェネレータがあるので、余力のある人にはぜひStaticGenを参考に自分にあった運命の静的サイトジェネレータを探し出して欲しいです。。。^7

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×