世の中にはたくさんの静的サイトジェネレータが存在します。 StaticGen というサイトでは、静的サイトジェネレータのリポジトリを検索することができ、 GitHubのster数やfork数などから、メンテナンスされているかどうか、利用者がいるかどうかなどを確認することが出来ます。
2015年10月の時点では、Jekyll(Ruby) や Octopress(Ruby)、Hexo(JavaScript)、Hugo(Go)などの人気が高いようです。
ちなみに 私のブログ は Jekyll を用いて管理しています。
静的サイトジェネレータを使い始めて、設定などに手を出し始めると、必然的に実装に用いられたプログラム言語に触れることになります。
というわけで、今回は Scala で実装された静的サイトジェネレータを触ってみることにしました。
StaticGen にて Scalaに限定して検索を行うと、以下の2つが見つかりました。
Static Site Generators では Monkeymanに加えて、
も検索できました。
今回は、Latest commit が一番最近の Scalatic を使ってみることにします。
とりあえず git clone します。
git clone git@github.com:padurean/scalatic.git
リポジトリ内に、テンプレートが用意されているので、まずはこれを動かしてみます。 テンプレートは以下の位置にあります。
$ cd scalatic/src/test/scala/scalatictest
$ tree .
.
├── expected
│ ├── Blog-post-Sample-One-2015-06-15-03-45.html
│ ├── Blog-post-Sample-Two-2015-07-03-23-45.html
│ └── index.html
├── new
│ ├── Blog-post-Sample-One-2015-06-15-03-45.md
│ └── Blog-post-Sample-Two-2015-07-03-23-45.md
└── source
├── cayman.css
├── footer.html
├── github-light.css
├── github-markdown.css
├── header.html
└── normalize.css
3 directories, 11 files
テンプレートをscaffoldする仕組みは存在しないため、実際にサイトを作成する場合には、手動にてディレクトリ構成を用意する必要があります。 newディレクトリに新たな記事を追加すると、ビルド時にsource/postsにmvしてくれるようです。
実行は、Scalaticのproject rootから
sbt "run ./src/test/scala/scalatictest"
を実行します。
jarファイルを作る(またはダウンロード)すれば
java -jar scalatic-0.x.x ./src/test/scala/scalatictest
でも実行できるそうです。DockerのContainerとかでサイトを管理するときに便利かも。
など規模が大きめの静的サイトジェネレータでは標準で実装されていそうな機能が無かったりするので、 この辺りを再発明することで scala 力が上がりそうな気がします。