from Grav to Hugo

このホームページのCMSにはGravを使っていたが,Hugoに変えた。 Gravラブだったが,セキュリティ確保のための学内方針で静的サイトに移行しないといけないため,止むを得ずというところ。

Gravは使いやすいように非常によく設計されており,不具合も少なく,カスタマイズもしやすい。 これまでに少しずつテーマのカスタマイズもしてきたので,Gravで生成したサイトを静的サイトに変換する方法も検討したが,blackholeはblogページのページ分けができず,httrackでのダンプも試したがやたら時間がかかる。

Hugoを選択した理由は以下の通り。

  1. Markdownで書き溜めたGravのコンテンツを,少しヘッダを修正すれば使える
  2. HugoのテーマAcademicが割とよく出来ていて,gravからの移行もしやすそうだった。
  3. Gravのテーマlearn2も使っていたが,Hugoにはこれのレプリカ版のテーマLearnがあったので,こちらのコンテンツの移行も楽そうだった。

Hugoのテーマいじりにはあまり時間をかけないように…と思っていたが,Gravで簡単に使えた機能がHugoではすぐにできないことがいろいろあったのが残念で,結局テーマの修正にも時間がかかり,少しずつ修正を続けている。以下は困った点(もしくは,困っている点)。

  1. mathjaxで処理するlatexコマンドに_*など,Markdownの書式設定用の記号が入っているとmathjaxの処理がされない。例えばa_{12}\begin{align*}はだめ。a\_{12}としたり,displayMathなら<div>..</div>で囲ったりする。詳細はこちら。(注: academicテーマでは,ver4.4からこの問題がなくなったらしい。)
  2. baseURLにhttp://baseurl/~someone/のようにディレクトリ名が入っていると,baseURLの指定をしてもメニュー等のリンクがおかしくなることがある。特に多言語サイトにしたとき,{{ .URL | relLangURL }}などとrelLangURLでURLの変換をすると,なぜか/~someone/がbaseURLに追加されてhttp://baseurl/~someone/~someone/となる。 “このページ”には,
RelativeURLs=true
CanonifyURLs=true

の指定で大丈夫とあるが,relLanURLの振る舞いは変わらないのでこちらは不採用。試行錯誤で見つけた方法は以下のとおり。 - メニュー項目のurl指定の頭には/はつけない。(参考1,参考2) - baseURLには/~someone/のみを指定 3. Gravでは任意のフォルダのコンテンツをトップページに指定でき,コンテンツのフォーマットの変更も簡単。Hugoはコンテンツをおく位置や名称で,そのフォーマットや役割(トップページとかblogページとか)を決めるのが原則なので,それをちょっと変えようとすると結構面倒。例えば,academicテーマの場合,トップページのコンテンツはcontent/home/, blog用のページはcontent/post/に決め打ちで,これを変更しようとすると四苦八苦する。関連情報はこちら。 4. Gravでは良きにはからってくれることが,Hugoではなかなかうまくいかないことが多いが,Hugoが使い勝手が悪いというよりは,Gravの設計が非常によく出来ているという印象。