hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

フロント実装〜Haml〜

Hamlを導入

まずは、HTMLをより効率的に書けるようになるビューのテンプレートエンジンを導入する

Hamlとは

Hamlとは、HTMLよりも簡単に書くためのビューテンプレートエンジン。公式サイトによると「マークアップは美しくあるべき」という原則に基づいて開発された。Hamlを使用することで、「綺麗に」、「読みやすく」、「生産的に」ビューを作成することができる。
今のところはHamlの記法に従って書くと、より少ない労力でHTMLを書くことができるという認識で構わない。

HamlのGemについて

Railsでは、Haml記法を可能にするhaml-railsというGemが提供されている。このGemをプロジェクトにインストールすることで簡単にHamlを導入することができる。また、既存のerbファイルをHaml記法に変換することもできる。具体的な使い方はHamlの公式ページやGithubリポジトリを見てみる。

環境ごとにインストールするgemを指定する

開発中にのみ使い本番環境ではインストールしたくないgemや本番環境のみで使用するgemなどgemの記述位置によって環境の指定をすることができる。

【例】Gemfileに記載するGemは適用する環境ごとに指定できる
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#いずれの環境でも必要
gem 'devise'

#開発環境にのみ必要
group :development do 
     gem 'rspec'
end

#テスト環境にのみ必要
group :test do 
     gem 'rspec'
end

#本番環境にのみ必要
group :production do 
     gem 'unicorn'
end

 問題1:ChatSpaceにHamlを導入する

ヒント:application.html.erbのようなすでにあるerbファイルも、Hamlに変換
ヒント:Hamlへの変換はあるコマンドを実行することで、一括で変換することができる。どのように一括で変換するのか調べる

作業ファイル:Gemfile、application.html.erb、mailer.html.erb、mailer.text.erb

模範解答

Gemfile
1
  gem 'haml-rails'
application.html.haml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
!!!
%html
  %head
    %meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
    %title ChatSpace
    = stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true
    = javascript_include_tag 'application', 'data-turbolinks-track' => true
    = csrf_meta_tags
  %body
    = yield
mailer.html.haml
1
2
3
4
5
6
7
8
!!!
 %html
   %head
     %meta{:content => "text/html; charset=utf-8", "http-equiv" => "Content-Type"}/
     :css
       /* Email styles need to be inline */
   %body
     = yield
mailer.text.haml
1
= yield

解説

まずはHamlを導入する。

今回はすべての環境で導入したいので、Gemfileの一番下に記述する。
その後、忘れずにbundle installする。

次に、拡張子がerbのファイルをhamlに変換する。
ターミナルで下記のコマンドを実行すれば一括で変換できる。

ターミナル
1
$ rails haml:erb2haml

コマンドを実行すると途中で

ターミナル
1
Would you like to delete the original .erb files? (This is not recommended unless you are under version control.) (y/n)

と聞かれるが、今回はアプリケーションの初期段階であるため、yを選択する。すると、デフォルトで作成されたerbファイル(例えば、application.html.erbなど)がhamlに変換されていることが確認できる。

テキストエディタを拡張する

Haml,SCSSは、テキストエディタ拡張機能を入れることで効率的に記述することができる。
SCSSはHTML Snippetsに補完機能がついているので、今回はHaml拡張機能を追加する。

①起動したウィンドウ画面左側の、アイコンメニュー内にある四角のアイコンをクリック
スクリーンショット 2019-04-05 11.23.09のコピー.png

②左上の「Search Extensions in Marketplace」に「Better Haml」と入力し、Better Hamlをインストール。
スクリーンショット 2019-04-05 18.46.41.png

③このようになっていれば完了。
スクリーンショット 2019-04-05 18.52.31.png

拡張機能がインストールされるとHamlで記述したコードに色がつくようになる。
スクリーンショット 2019-04-08 12.47.01.png

Haml,SCSSに限らず、新しい言語を使うときにテキストエディタに不便さを感じたら拡張機能を探してみるとよい。
テキストエディタのカスタムの仕方は検索するとたくさん出てくる。必要に応じて自分でカスタマイズできるように。