Hugoの導入について考える

以前からゲーム関係のメモを整理して、公開して後悔したいと考えている私です、ども。

巷には、ゲーム攻略に関するwikiが多々あって、多くが記事が集まっていないというさんざんな状況にあるわけですが、そういう私もゲーム関係のメモを公開したいなとは考えているものの、それをうまく管理する方法が未だに見いだせないという長年の課題を抱えています。

あ、コンテンツを更新する気力がないとかそういうのは、課題にしていません。ええ。

やはりそういうのは、wikiが望ましいと思うんですが、現在このサイトが動いているサーバでwikiを動かしたくはないと考えています。サーバーサイドのwikiって結構重いんですよね・・・。

で、考えている(探している)のが、ローカルでwikiを動かし、静的HTMLを出力して、出力されたHTMLファイルをアップロードするかたちです。

なので基本的なコンセプトとしては、公開サーバサイドでは、プログラム類はひとつも動かしたくはありません。

かといって、ローカルでMySQLのようなDBを動かしたいとも思いません。邪魔くさいし。Webサーバだって動かしたくありません。邪魔だし。

静的HTML出力を基準にいろいろと探していたら、Hugoというプログラムがわりかしやりたい事に近いかなという印象を受けたので、今日はHugoについて考えます。

本題に入るまで長かったなー。

静的HTMLジェネレータの復権

まず、Hugoというのは静的HTMLジェネレータに分類されるプログラムになります。

Hugo
http://gohugo.io/

広義の見方をすれば、CMSの一種と言えるでしょう。静的HTMLジェネレータの歴史は割と長くて、いってしまえば、rtfファイルをhtmlファイルに変換するとか、そういうのを考えれば、htmlが制定された頃からあるんじゃないですかね。

そういえば、昔はblogツールで主流だったMovable Typeも静的HTMLを出力してましたね。1000ページ出力すると、サーバタイムアウトしてたけど。

ここ数年(片手で数えるぐらい)で、静的HTMLジェネレータの情報が多くなってきたようで、wordpressからHugoに乗り換えたという方がそこそこ見受けられます。

プログラム自体はGo言語で書かれていて、必要な環境としては

  • Git
  • Mercurial
  • Go 1.3+ (Windows環境下ではGo 1.4+)

となっていて、サーバ系プログラムは必要がないです。
コンテンツはすべてテキストファイルで管理され、データベースも必要がありません。

個人的にはこういうの好きです。

テキストファイルだけで管理出来るなら、バックアップやらも非常に楽ですし。

とりあえず、手元のMacな環境にHugoを動かすところまでやってみたんですが、しっくりくるような、しっくりこないような。

コンテンツ自体は、markdownで記述する事になるんですが、画像の挿入が面倒だと思います。ええ。

wordpressであれば、Windows Livewriterや、MarsEditなんかで画像を簡単に挿入できますし、事によってはサムネイル画像も生成してくれます。Webの管理画面からは、画像の管理も出来ます。

一方、Hugoに限らずこの手の静的HTMLジェネレータでは、画像の管理は自分で全部やらないといけないし、画像挿入もテキストファイルにがしがし書いていかないといけません。ここが一番の課題になるかと思います。

というわけで、画像を多用するようなサイトでは向かないと思います。

一方で、テキストを中心とするサイトでは、わりかし便利なのかなと。と言っても、プログラマのような技術系の人間で、なんでもテキストファイルで処理したがるような人には向くのであって、一般的には難しいと思います。コンテンツを処理するにも、コマンドを打たないといけませんし。

個人用wiki的に使うにはどうしたら?

結論から言うと、まだ見いだせていません。

サイトの構成を考えると、http://rico.waterblue.biz/ がwordpressで管理され、その下にgame1というディレクトリあるとすると、http://rico.waterblue.biz/game1/ がHugoで管理されるということになりますが、じゃー次のゲームってなったときに、http://rico.waterblue.biz/game2/ はまた別のHugoでサイトを作らないといけないのか?という疑問が残ります。

まー間に一個ディレクトリを挟んで、http://rico.waterblue.biz/g/game1/とか、にすれば1つのHugoサイトで管理出来そうですけど、それはそれでまた問題が出てくるのかなと。

というのも、wiki的にしたい理由の1つが、サイドバーにあります。pukiwikiでいうところのsidebarです。そのままですが。

これをgame1とgame2で内容を分けたいとなると、名前空間で分けてカテゴリ分けのようにしたいと思うのです。ね、面倒くさいでしょ。

docuwikiだとこういうこと出来たと思うんですけど、記憶が曖昧です。覚えがない。

まずは慣れるところから、HugoでHugoのページでもお勉強がてらに作ってみますかねー。(どこまでモチベーションが続くか)