Slim
表示
Slim ハンドブック
[編集]Slimは、Rubyベースのテンプレートエンジンの一つで、簡潔で読みやすい記法を特徴としています。HTMLの冗長な構文を排除し、コードの保守性を向上させることを目的としています。
基本構文
[編集]Slimは、インデントベースの文法を採用しており、HTML要素や属性を簡潔に記述できます。以下は基本的な構文の例です:
doctype html html lang="ja" head meta charset="UTF-8" title = @title link rel="stylesheet" href="/styles/main.css" body header.main-header nav ul li: a href="/" ホーム li: a href="/about" 概要 li: a href="/contact" お問い合わせ main.content h1 ようこそ #{@username} さん! - if @messages.any? ul.message-list - @messages.each do |message| li = message - else p メッセージはありません
使用方法
[編集]Slimテンプレートを使用するには、Slim::Template
クラスを使用します。
require 'slim' # テンプレート文字列 template = <<~SLIM doctype html html head title = title body h1 = greeting SLIM # Slimテンプレートのレンダリング title = "マイページ" greeting = "こんにちは、世界!" output = Slim::Template.new { template }.render(binding) puts output
レイアウトと部分テンプレート
[編集]Slimでは、レイアウトと部分テンプレートを活用してコードの再利用性を高めることができます。
レイアウトの例
[編集]# layout.slim doctype html html head title = @title || 'デフォルトタイトル' body header h1 サイトヘッダー main == yield footer p © 2025 サイト名
部分テンプレートの例
[編集]# _user.slim div.user h2 = user[:name] p = user[:email]
使用例:
@users = [ { name: "山田太郎", email: "taro@example.com" }, { name: "鈴木花子", email: "hanako@example.com" } ] @users.each do |user| puts Slim::Template.new("_user.slim").render(Object.new, user: user) end
Slimの特徴
[編集]- 簡潔な記法: インデントベースの構文で、HTMLの冗長な記述を削減
- Rubyとの親和性: Rubyコードを簡単に埋め込める
- 高速なレンダリング: 他のテンプレートエンジンに比べてレンダリング速度が速い
- 柔軟性: レイアウトや部分テンプレートでコードを再利用可能
セキュリティ
[編集]Slimでは、Ruby on Railsと組み合わせる場合、デフォルトでHTMLのエスケープが有効になっています。これにより、XSS攻撃などのセキュリティリスクを軽減できます。
p = @user_input # エスケープされる p != @raw_input # エスケープされない
メリットと制限
[編集]- メリット:
-
- 記法がシンプルで可読性が高い
- HTML記述が少なく済む
- 他のテンプレートエンジンよりも高速
- 制限:
-
- インデントに依存しているため、コードの整形ミスが発生する可能性がある
- Slim独自の記法に慣れる必要がある
結論
[編集]Slimは、シンプルかつ効率的なテンプレートエンジンとして、Ruby開発者にとって強力なツールです。特に、HTMLの記述を最小限に抑えたい場合や、高速なレンダリングを求める場合に最適です。