awesometaro

Hugoでサイトを作ってみる

エンジニアからポスドクになる。 エンジニアの頃からフレームワークの素振りでブログなどのwebページやアプリを作って公開してきた。 ポスドクでは自分のことを知ってもらうことも重要であるから、その手段としてポートフォリオサイト的なのを作ってみるのが良いと思った。 デプロイ先は自宅のRaspberry Piで、cloudflare tunnelを使っている。 昨今のセキュリティ問題が怖いので、比較的攻撃に強いとされる静的サイトでサクっと作りたい。 これらのニーズに一致するのは、Hugoかなと思った。

Astroも良いが自由度が高くて、ちょっと管理が大変かなと思ったのと、Hugoはデフォルトで org ファイルにも対応しているのが良いと思った。最近は emacs でなんでもやっているので、 org ファイルの方が都合が良いことが多い。

私はomarchyをOSとして利用しているので、hugoは以下のようにしてインストールした。 archlinuxであれば同じようにインストールできる。

  sudo pacman -S hugo

使い方は公式のドキュメントを見たりAIに聞いたりしたらすぐに分かった。 作りがシンプルなので理解しやすい。

ポスドクでは論文を執筆していくことになるはずで、出版したものをトップページにまとめておくといいかなと思った。 他の研究者が bib ファイルからhtmlにビルドしてページを生成しているのを見て、これは良いと思った。 まず、bibファイルのみを管理しておけば、 html が自動で生成されるからだ。二重管理はできるだけしたくない。 次に、プロジェクトに自分が執筆した論文の一覧が配置されることも良い。 エンジニアからポスドクに転職する際に、過去の研究業績の提出を求められたが、エンジニアのころはそんなものは必要なかったので作っていなかった。研究職はなにかと業績の一覧化が必要になるので、ホームページ運用の中に業績一覧を組み込むことによって業績一覧ファイルをメンテナンスするインセンティブになって良いと思った。

Hugoではjsonをコンテンツ元のデータとして扱うことができる。 なので、 pandoc でbibファイルを一度 json ファイルに変換して、それをhtmlとして表示するのが良さそうだ。 pandoc を利用して以下のコマンドで bib ファイルを json に変換できる。

  pandoc references.bib -f bibtex -t csljson -o data/publications.json

このコマンドを以下のように Makefile に組み込んでやれば、文献情報とページを生成できる。

.PHONY: build serve
build:
    mkdir -p data
    pandoc references.bib -f bibtex -t csljson -o data/publications.json
    hugo minify

serve:
    mkdir -p data
    pandoc references.bib -f bibtex -t csljson -o data/publications.json
    hugo server
Back