Middlemanでwikiっぽいことができたら便利だなと思ったからmiddleman-tansu v0.1.0をリリースした

tansu top

静的サイトのwikiっぽくページ間リンクをアレする何かを作っている | e2esound.com業務日誌

リンク先の記事の中で使っていたものを昨年中に update して, 1月中にだらだらとライブラリ化, そして 1/20 くらいから gem 化。先週の時点ですでに v0.0.1 以上を公開していました。それに手を加えて v0.1.0 をリリースしました。Middleman のプロジェクトテンプレートとして作られているので init する時に指定して使うことができます。

$ middleman init PROJECT --template tansu

その他の事項については README と init した後にサーバを立ち上げると細かい話が書かれています。現在 Middleman v4 beta に向けて開発が進んでいますが, 残念ながら今のところ v3 系限定の対応です。

tansu sample page

学んだこと(v3系)

  • 1 つの gem でテンプレート, 拡張機能, テンプレートヘルパを提供する方法
  • 専用のコマンドを追加したが, bundler 経由($ bundle exec をつけて実行)じゃないとファイルが読み込まれないので呼び出すことができない
  • コマンドからは config.rb の設定を簡単に呼び出す、ようなことはできない模様(私が理解できていないだけの可能性もある)
  • module の中にメソッドを定義しそれを拡張機能で Middleman 本体に登録してヘルパとして使う方法
  • 動的ページ(proxy) の威力
  • コールバック(フック) の詳細と利用方法への理解が深まった
  • Sitemap 機構の理解が深まった(そして謎も深まった)
  • 大抵のテストで利用するステップ定義は aruba または middleman-core に定義されていること
  • Middleman の細かい仕様による制限または不便な部分
  • Middleman と他の Static Site Generator の大きな違い

副産物

  • middleman-gemoji
    • 絵文字を tansu で使うために作った
    • 絵文字も使える github flavored markdown なら後で esa.io にブチ込めるのでは? という魂胆に起因

作ってみた感想

  • 機能自体は単純に作れたが, 機能とそれに付随するどのパラメーターをオプション値として扱うのか悩んだ
  • Rubocop はもう少し早い段階で使ったおきたかった
  • 依存する gem の数が多いので, アップデートの影響を受ける可能性がある。対応を考えたい(Tachikoma.io使うといいのではと思っている)
  • コード書きながらテンプレートのデザインのこと考えるのは辛かった。デザイナさん欲しかった
  • メタプログラミング Ruby をもう 1度読みたい

おわりに

Markdown で静的サイトで情報をまとめて管理したい, 例えばコードスニペットをまとめておきたいような方にはオススメです。変な動作にお気づきの方はお手軽に issue 上げていただけると助かります。

yterajima/middleman-tansu