【現場で使える Ruby on Rails 5速習実践ガイド】の感想・気づき(6・7章)

-2018.12.23 -書籍
-, ,

スポンサーリンク

現場で使える Ruby on Rails 5速習実践ガイドとは?

10月に発売されたRailsの技術書で、
Ruby・Railsの開発支援をされている株式会社万葉の方々が監修している書籍です。

通称現場Railsと呼ばれています。

2018年12月現在の最新のRails技術書ということもあり、Rails5.2に対応しています。

読書対象者としては他言語でのWEBアプリケーション開発や、オブジェクト指向プログラミングについての知識・経験がある方と明記されていたので全くの初学者向けではない書籍にはなっています。

6, 7章を読み終わったので内容を振り返ってまとめてみました。

6章:Railsの全体像を理解する

Railsを取り巻く世界

Railsを組み上げている関連技術・Railsに影響を与えたアイディアがp. 226で一つの図にまとまっていることはとても良いと思いました!

これまで独学を主として勉強してきた身としては、はじめにこの図で俯瞰的・体系的に理解ができていればハマらずに済んだことがとても多いです。。

  • RDB、ERB、RubyGems、bundler
  • HTTP、HTML、JavaScript、ブラウザ
  • RSpec、minitest、CI、Lint
  • Capistrano、Docker、デプロイ、運用
  • MVC、オブジェクト指向、自動テスト、RESTful

など単語として頭にインデックスされているだけでも支えになるでしょう。

もっと早くに現場Railsに出会いたかった。。

国際化

I18nによる国際化についてとりあえず利用して、コントローラー・ビューでは極力ymlファイルの翻訳情報を呼んでいましたが、サービスが国内に留まるのかどうかによって使い分けても良いとは思いました。

日時の扱い方

モデルから取得した日付オブジェクトは ActiveSupport::TimeWithZone オブジェクトとなりますが、
オブジェクトのタイムゾーンをどこにするか?
実際にDBのに保存する際のタイムゾーンをどこにするか?
は別物であり指定の仕方が異なる

ということも早く知っておきたかったことの一つです。

セキュリティを強化する

  • ストロングパラメータ
  • CSRF対策
  • クロスサイトスクリプティング
  • SQLインジェクション
  • sendとevalの注意点

などの脆弱性にまつわる用語の説明とRailsがデフォルトで備えているセキュリティについてここまでまとまっている情報はそうないと思います。これだけでもWEBに関わる人は目を通しておいて損はないです。

アセットパイプライン

なんでCSS・JSが反映されなんだ?!?!

とプリコンパイルを理解するまで何度ハマったか。。と思い出すテーマです。

  • アセットパイプラインの役割
  • マニフェストファイルとは?
  • アセットの探索パス
  • develop環境とproduction環境の違い
  • プリコンパイルとは?

について図解で分かりやすく説明しています。

6章は写経ではなく読み物としての箸休め的な立ち位置ですが、非常に大切な部分をわかりやすくまとめてくれていると思います。

7章:機能を追加してみよう

確認画面の実装

ある案件に取り組まさせていただいたときにも要件に含まれていたものです。

通常のCRUDだとnewアクション⇒createアクションとなってしまうので確認画面が存在しません。

この話題について例を示して取り上げているので助かります。
確認画面から修正するための導線におけるデータ保持についても言及されています。

「確認画面がある方が良いとは限らない」というコラムも参考になります。

Ransackを用いた検索機能

検索機能を提供する有名なgem Ransackについてです。

一般的な使い方に加えて、ransackable_attributes, ransackable_associationsを用いることで

class Task < ApplicationRecord
  class << self
    def ransackable_attributes(_auth_object = nil)
      %w[name created_at]
    end

    def ransackable_associations(_auth_object = nil)
      []
    end
  end
end
  • 検索対象とするカラム:tasksテーブルのname・created_atのみ
  • 検索対象とする関連テーブル:なし

と狭めることができセキュリティ対策になることも解説されています。

Active Storageを用いたファイルアップロード

Rails 5.2から導入されたActive Storageも取り上げられています。

5.2系を触るのが初めてなのでActive Storageも初めてなのですが、Carrierwaveやfogよりも簡単に利用できたので良い印象です。

追加で気になったので調べてみると、画像のリサイズにはvariantというメソッドとmini_magickを用いて行うようです。
Railsガイド Active Storage の概要

CSVエクスポート・インポート

こちらもある案件でエクスポートのみ実装を担当させていただきました。

大量のデータを扱うようになると非同期処理・バルクインサートなど考え始めないといけないのでしょうが、
本章を読めば一般的なCSVエクスポート・インポートは実装できるようになるでしょう。

仕様に盛り込まれることも多そうな気がします。

その他

  • メール送信機能
  • kaminariを用いたページネーション
  • Sidekiq・Redisを用いた非同期処理

についても準備から実装までそれぞれ取り上げられており「機能を追加してみよう」というタイトルの通り良いチャプターでした。

          
    

スポンサーリンク

  
Scroll Up