Rust 向けのテンプレートエンジン minijinja を使い始めたので

2024/09/15に公開

tl;dr

テンプレートエンジンを探す旅

  • 仕事用に軽量、簡潔なテンプレートエンジンとして、{{ mustache }}bash版 を使っていた
  • 言語に依存しないツールを選定することにしている(仕事によって言語は変わるし依存したくない)
  • ので、bash 実装はチームで利用するには楽だった(インストールしたら教えることがほとんどない)
  • それでも複数の言語やツールで採用されている、言わばデファクトなテンプレートを選定したい欲求
  • mustache はロジックが書けない(書かない)ので、そろそろ変更したい
  • テンプレートエンジン界隈では jinja2 が望ましいと思っている
  • 1バイナリで簡単にインストールできるなら他のツールでもよいのではないか

気にしたこと

  • バージョン差異やインストールの手間が嫌なので、言語環境に依存するツールは不可(LL使用不可)
  • できるだけ docker は不可(dockerでやればなんでもいいじゃんを避けたい)
  • 今年(2024年)に入って更新されていないツールは不可
  • GitHub でのスター数が 1k 以下は不可
  • jinja2 互換であること
  • CLI がラッパー等でも提供されていること(自作不可)
  • 実行環境を選ばないこと(Linux, Mac, できればWindowsも含めて同じように使えること)
  • ここまでで概ね Rust か GO で書かれているものに限定される

GitHub で検索

minijinja

  • minijinja-cli
  • aqua でインストールできたら楽だったけどまあいいや
  • examples にあるコードで十分テスト可
# インストール(cargo使ってもいい。チームに展開する時に rust の準備しているとは限らないので。)
curl -sSfL https://github.com/mitsuhiko/minijinja/releases/latest/download/minijinja-cli-installer.sh | sh

まとめ

  • 技術選定の話のひとつ
  • フロントやバックエンドな方々は使用している言語で使えるエンジンを選べばいいと思うよ
  • til のテンプレートを新しくしたら別途記事にする予定
  • 他にいいテンプレートエンジンがあったら教えてください

Discussion