4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Rails] Viewが捗るgem 'haml-rails' について

Last updated at Posted at 2023-08-09

見やすい! 読みやすい! 書きやすい! Hamlについて現役Rubyエンジニアが解説します

目次

Hamlとは

Haml(ハムル)は、Rubyプログラミング言語で書かれたマークアップ言語の1つです。
HTMLの代替として設計されており、シンプルで読みやすく、効率的なHTMLコードを生成することができます。
インデントを使ってHTMLやXHTMLをより簡潔に記述するテンプレートエンジンで、可読性が高く、タグの閉じ忘れやネストの問題を防ぐことができます。
例えば、以下のHamlコードはHTMLよりもコンパクトで理解しやすくなります。

.html
<!-- HTML -->
<div class="container">
  <h1>Hello, World!</h1>
  <p>Welcome to our website!</p>
</div>
.haml
# 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の変数を表示しています。

.haml
- name = "John"
%h1= "Hello, #{name}!"

結果
Hello, John!

レイアウトの作成

Hamlでは、レイアウトを作成する際にyieldcontent_forを使用します。
yieldはコンテンツを挿入するためのマークアップを含む親テンプレートを定義し、content_forはコンテンツを埋め込む部分テンプレートに記述します。例えば、以下のようなレイアウトテンプレートを考えてみましょう。

.haml
# application.haml
!!!
%html
  %head
    %title My App
  %body
    = yield
    %footer
      © 2023 My App

このレイアウトは、各ページのコンテンツをyieldの位置に埋め込んで表示し、共通のフッターを含んでいます。

haml-rails gemの便利な機能

haml-rails gemは、Ruby on RailsアプリケーションでHamlを使用する際に便利な機能を提供します。

  1. ビュージェネレータのサポート
    haml-rails gemをインストールすると、新しいビューファイルを作成する際に自動的にHaml形式のファイルが生成されます。
    これにより、Hamlのテンプレートを簡単に作成できます。

  2. 既存のERBテンプレートをHamlに自動変換
    haml-rails gemは、既存のERB(Embedded Ruby)テンプレートを自動的にHamlに変換するコマンドを提供します。
    これにより、既存のプロジェクトでHamlへの移行が容易になります。

  3. コンパクトなレイアウト
    Hamlのシンプルな構文により、HTMLよりもコンパクトで読みやすいレイアウトを作成できます。
    タグのインデントを自動的に行ってくれるので、視覚的に整形されたコードを生成することができます。

  4. Rubyコードの統合
    HamlはRubyのコードを埋め込むことができます。haml-rails gemは、ビューテンプレート内で簡単にRubyコードを実行できる機能を提供します。
    これにより、動的なコンテンツを生成することができます。

  5. ヘルパーメソッドのサポート
    Hamlでは、Railsのヘルパーメソッドをそのまま使用できます。

これらの機能により、haml-rails gemを使うことで、Ruby on Railsアプリケーション内でHamlを効果的に利用できるようになります。

Hamlのパフォーマンスと注意点

HamlはコンパイルされたRubyコードとして動作するため、テンプレートのパフォーマンスは高速です。
しかし、コンパイルやキャッシュの仕組みを理解しておくことで、さらなるパフォーマンス向上が可能です。
また、Hamlの可読性を保つために、インデントの管理やタグのネストに注意する必要があります。

まとめ

Hamlとhaml-rails gemを使うことで、RailsアプリケーションのViewの記述がシンプルで効率的になります。是非、Hamlを活用し、開発の生産性を向上させてください。


4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?