見やすい! 読みやすい! 書きやすい! Hamlについて現役Rubyエンジニアが解説します
目次
Hamlとは
Haml(ハムル)は、Rubyプログラミング言語で書かれたマークアップ言語の1つです。
HTMLの代替として設計されており、シンプルで読みやすく、効率的なHTMLコードを生成することができます。
インデントを使ってHTMLやXHTMLをより簡潔に記述するテンプレートエンジンで、可読性が高く、タグの閉じ忘れやネストの問題を防ぐことができます。
例えば、以下のHamlコードはHTMLよりもコンパクトで理解しやすくなります。
<!-- HTML -->
<div class="container">
<h1>Hello, World!</h1>
<p>Welcome to our website!</p>
</div>
# Haml
.container
%h1 Hello, World!
%p Welcome to our website!
Hamlは、特にRuby on RailsなどのRubyベースのWebアプリケーションフレームワークと組み合わせて使用されることが一般的です。
これにより、ビューテンプレートをより効率的に作成できます。ただし、
他のプロジェクトでも使用することが可能であり、Hamlのシンプルな構文が好まれる場合もあります。
haml-rails gemの導入
RailsアプリケーションでHamlを使用するには、haml-rails
gemを導入します。
Gemfileに以下の行を追加し、bundle install
を実行します。
# Gemfile
gem 'haml-rails'
# terminal
bundle install
基本的なHamlの記法
Hamlでは、インデントとシンプルな構文を使ってテンプレートを記述します。タグはインデントされた行に記述され、タグの属性は波括弧 {}
内に記述します。
また、Rubyコードを埋め込む場合は-
を使用します。例えば、以下のコードでは、Rubyの変数を表示しています。
- name = "John"
%h1= "Hello, #{name}!"
結果
Hello, John!
レイアウトの作成
Hamlでは、レイアウトを作成する際にyield
とcontent_for
を使用します。
yield
はコンテンツを挿入するためのマークアップを含む親テンプレートを定義し、content_for
はコンテンツを埋め込む部分テンプレートに記述します。例えば、以下のようなレイアウトテンプレートを考えてみましょう。
# application.haml
!!!
%html
%head
%title My App
%body
= yield
%footer
© 2023 My App
このレイアウトは、各ページのコンテンツをyield
の位置に埋め込んで表示し、共通のフッターを含んでいます。
haml-rails gemの便利な機能
haml-rails gem
は、Ruby on RailsアプリケーションでHamlを使用する際に便利な機能を提供します。
-
ビュージェネレータのサポート
haml-rails gemをインストールすると、新しいビューファイルを作成する際に自動的にHaml形式のファイルが生成されます。
これにより、Hamlのテンプレートを簡単に作成できます。 -
既存のERBテンプレートをHamlに自動変換
haml-rails gemは、既存のERB(Embedded Ruby)テンプレートを自動的にHamlに変換するコマンドを提供します。
これにより、既存のプロジェクトでHamlへの移行が容易になります。 -
コンパクトなレイアウト
Hamlのシンプルな構文により、HTMLよりもコンパクトで読みやすいレイアウトを作成できます。
タグのインデントを自動的に行ってくれるので、視覚的に整形されたコードを生成することができます。 -
Rubyコードの統合
HamlはRubyのコードを埋め込むことができます。haml-rails gemは、ビューテンプレート内で簡単にRubyコードを実行できる機能を提供します。
これにより、動的なコンテンツを生成することができます。 -
ヘルパーメソッドのサポート
Hamlでは、Railsのヘルパーメソッドをそのまま使用できます。
これらの機能により、haml-rails gemを使うことで、Ruby on Railsアプリケーション内でHamlを効果的に利用できるようになります。
Hamlのパフォーマンスと注意点
HamlはコンパイルされたRubyコードとして動作するため、テンプレートのパフォーマンスは高速です。
しかし、コンパイルやキャッシュの仕組みを理解しておくことで、さらなるパフォーマンス向上が可能です。
また、Hamlの可読性を保つために、インデントの管理やタグのネストに注意する必要があります。
まとめ
Hamlとhaml-rails gemを使うことで、RailsアプリケーションのViewの記述がシンプルで効率的になります。是非、Hamlを活用し、開発の生産性を向上させてください。