コンテンツにスキップ

テンプレートエンジン/Ruby

出典: フリー教科書『ウィキブックス(Wikibooks)』

Rubyで使用できるテンプレートエンジンには、用途やプロジェクトの要件に応じたさまざまな選択肢があります。以下に、主要なテンプレートエンジンをまとめました。それぞれの特徴と使用例を参考に、プロジェクトに最適なエンジンを選んでください。

ERB (Embedded Ruby)

[編集]
  • 特徴:
    • Ruby標準ライブラリとして提供されるテンプレートエンジン。
    • .erb ファイルで使用され、Railsのビューとしても一般的。
  • 利点:
    • 標準ライブラリのため追加インストールが不要。
    • シンプルな構文でRubyコードを埋め込める。
  • :
    <h1>Welcome, <%= @user.name %>!</h1>
    <% if @user.admin %>
      <p>You have administrator privileges.</p>
    <% else %>
      <p>You are a regular user.</p>
    <% end %>
    

Haml (HTML Abstraction Markup Language)

[編集]
  • 特徴:
    • インデントベースの構文でHTMLを簡潔に記述可能。
    • Railsで広く使われている。
  • 利点:
    • HTMLの構造が明確で、読みやすい。
    • タグやクローズタグを省略可能。
  • :
    %h1 Welcome, #{@user.name}!
    - if @user.admin
      %p You have administrator privileges.
    - else
      %p You are a regular user.
    

Slim

[編集]
  • 特徴:
    • 高速で軽量なテンプレートエンジン。
    • Hamlの代替として利用されることが多い。
  • 利点:
    • シンプルでパフォーマンスが高い。
    • 必要最小限の構文で効率的なコーディングが可能。
  • :
    h1 Welcome, #{@user.name}!
    - if @user.admin
      p You have administrator privileges.
    - else
      p You are a regular user.
    

Liquid

[編集]
  • 特徴:
    • Shopifyが開発したセキュアなテンプレートエンジン。
    • 直感的で初心者に優しい構文。
  • 利点:
    • ユーザー生成コンテンツに対して安全性が高い。
    • フロントエンドとバックエンドを分離しやすい。
  • :
    <h1>Welcome, {{ user.name }}!</h1>
    {% if user.admin %}
      <p>You have administrator privileges.</p>
    {% else %}
      <p>You are a regular user.</p>
    {% endif %}
    

Mustache

[編集]
  • 特徴:
    • ロジックレスなテンプレートエンジン。
    • Rubyで利用する場合は mustache Gem を使用。
  • 利点:
    • ロジックをテンプレートから分離。
    • 軽量でシンプル。
  • :
    <h1>Welcome, {{name}}!</h1>
    {{#admin}}
      <p>You have administrator privileges.</p>
    {{/admin}}
    {{^admin}}
      <p>You are a regular user.</p>
    {{/admin}}
    

Tilt

[編集]
  • 特徴:
    • 複数のテンプレートエンジンを統一的に扱えるインターフェース。
    • SlimやHaml、ERBなどを抽象化して利用可能。
  • 利点:
    • プロジェクトで複数のテンプレートエンジンを使いたい場合に便利。
  • :
    require 'tilt'
    template = Tilt.new('template.erb')
    puts template.render(Object.new, name: 'John')
    

Markaby

[編集]
  • 特徴:
    • RubyコードでHTMLを生成できるDSL。
    • マークアップの記述がRubyに統合される。
  • 利点:
    • 純粋なRubyコードでテンプレートを記述。
  • :
    Markaby::Builder.new do
      h1 "Welcome, #{@user.name}!"
      if @user.admin
        p "You have administrator privileges."
      else
        p "You are a regular user."
      end
    end
    

選び方のポイント

[編集]
  • ERB: Railsや標準的なRubyプロジェクトでシンプルなテンプレートを使いたい場合に最適。
  • Haml: HTMLを簡潔かつ見やすく書きたい場合。
  • Slim: Hamlの軽量・高速版を求めている場合。
  • Liquid: ユーザー生成コンテンツが多く、安全性が重要なプロジェクトで。
  • Mustache: テンプレートからロジックを分離したい場合。
  • Tilt: 複数のテンプレートエンジンを一元的に扱いたい場合。
  • Markaby: Rubyコードで直接HTMLを生成したい場合。