【感想】『Ruby on Rails 5 アプリケーションプログラミング』読了

Ruby on Rails 5アプリケーションプログラミング

Ruby on Rails 5アプリケーションプログラミング

序文

今週も高田馬場Railsもくもく会に参加してきました。

techdrive.connpass.com

今週もほとんどもくもくしてましたが、ひとつだけ質問しました。進歩したぞ。

ちょうど1ヶ月かけて山田祥寛氏の「Ruby on Rails 5 アプリケーションプログラミング」を学習しましたので感想を記載しておきます。

取り組んだ動機

昨年から今年にかけて、Railsでユーザー入力などがないWebアプリを作ってみたのですが↓(宣伝)

jockey.kankeli.net

体系的な知識がまったくついていなかったので、知識の確認を兼ねて本書に取り組みました。

学習方法

「基本編」の1章~6章までと、「応用編」8章の「テスト」について学習しました。
ちなみに巷で評判が良いRailsチュートリアルはやってません。

とりあえず結論

  • Railsの基本的な機能が網羅的かつ簡潔にまとまっていて良い
  • ただし、ある程度の前知識が要求されるので最初の1冊としては不向き
    おすすめ度:★★★★★ 難易度:★★★☆☆

Railsの基本的な機能が網羅的かつ簡潔にまとまっていて良い

環境構築、「Hello, world!」的なアプリの作成(1~2章)から始まり、Scaffolding機能で生成されるコードを読み解いてRailsの概要把握(3章)、それからビュー、モデル、コントローラーの機能解説へ進むというRails学習の王道的な構成になっています。

一応全編に渡って、ひとつのアプリ(ログイン機能のある書籍情報管理アプリ)を作っていくという流れにはなっていますが、たとえば掲示板を実装するといった具体的な内容には踏み込んでいないので、とりあえず動くものを作りたいといった即効的な知識の習得には向いていないと思います。

本領はやはり4~6章のビュー、モデル、コントローラー関連の機能の解説の部分でしょうか。
さまざまな機能やメソッドについて詳細かつ簡潔に解説されており、リファレンス的な利用価値は相当高いと思います。

また、細かいメソッドなどはインターネットだけではなかなか存在自体に気づくことが難しいので、網羅的に説明してくれるのはとてもありがたかったです。

学習だけでなく、今後実際にRailsアプリを制作するにあたっても大いに役立つ良書だと思います。

最初の1冊としては不向き

ただしRailsおよびRubyについては最低限の知識を持っていないと、なかなか理解して読み進めていくことは難しいかもしれません。

具体的には参考書のソースコードをそのまま写すだけでは正しく動作しない箇所が多くあり、Railsに適切なルーティングやフィルターの設定、あるいはコメントアウトなどを自力で設定する能力が必要とされます。
とはいえ大半はRailsのエラーコードを読めば対処できるものですので、Railsに関しては最低限の知識さえあれば読み進めていくことはそれほど難しくないと思います。

参考までに私は以下の書籍をRails学習の1冊目として使用しました。
幅広いジャンルで初心者向けの書籍を多く書かれている掌田津耶乃氏の書籍なので、細かい点についてはいろいろ指摘される点もあるようですが、Railsの概観を掴むには悪くない書籍だと思います。

Ruby on Rails 5 超入門

Ruby on Rails 5 超入門

むしろ障害になるのはRubyの独特な記法のほうかもしれません。

私は長年C#の記法に馴染んできたので、ブロックやシンボルといった概念やreturnすら省略してしまう独特の記法にはかなり面食らいました。
Rubyの文法を知らなくてもRailsの機能やRubyの「寛容さ」でなんとなく動いちゃうんですよね…)
しかも記号を多用するのでインターネットで調べることも難しく、さらに同じ機能を実現するにも複数のメソッドや記法が許容されていたりするので、人によってコードの雰囲気が全然違っていたりして、かなり混乱しました。
今後初心者用の言語としてRubyをすすめている人を見かけたら呪おうと思います。

なんとなくでRailsを触ってきた人は手元に1冊信頼できるRubyのリファレンスを持っておくことをおすすめします。
私は以下の書籍を併用してRailsの学習を進めました。
若干かゆいところに手が届かない感覚はありますが、とりあえずのリファレンスとして使用するには十分だと思います。

カロリーメイトください。

BGM

揺れ / KICK THE CAN CREW

www.youtube.com

『Ruby on Rails 5 アプリケーションプログラミング』を学習する31

Ruby on Rails 5アプリケーションプログラミング

Ruby on Rails 5アプリケーションプログラミング

序文

Ruby on Rails 5 アプリケーションプログラミング」学習31日目。
テスト編終了。
まだ手のついていない部分もあるんですが、とりあえずここまででこのシリーズはひとまず終了します。
せっかくなのでと、ブログのスタイルもいろいろ試行錯誤しています。

GitHub

github.com

進捗

  • 第8章 テスト
    • 8.3 Functionalテスト
    • 8.4 Integrationテスト
      (学習時間:2.5時間)

コード実装部分(一部)

  • シンプルなFunctionalテストの例
    \test\controllers\hello_controller_test.rb
require 'test_helper'

class HelloControllerTest < ActionDispatch::IntegrationTest
  # Functionalテストの例
  test "list action" do
    # GETのHTTPリクエストを生成
    # POSTなども利用できる
    get '/hello/list'
    # インスタンス変数@booksを取得し、要素数が10であるかを検証
    assert_equal 10, assigns(:books).length, 'found rows is wrong.'
    # 正常なステータスコード(:successは200)が返されたかを検証
    assert_response :success, 'list action failed.'
    # 正常なテンプレートが選択されたかを検証
    assert_template 'hello/list'
  end
  # 省略
end

実行結果

  • テスト実行結果 f:id:yjkym:20180423155116p:plain

感想

今日はFunctional(機能)テスト、およびIntegration(統合)テストについて。
Functionalテストとはコントローラーの動作を確認するテスト、Integrationテストとは複数のコントローラーにまたがったユーザーの操作を擬似的に発生させて行うテストのこと。

今まであんまりテストとか具体的に考えたことなかったので、内容が理解できるか不安だったんですが、簡潔にまとまっていて理解しやすかったと思います。

明日、書籍についての感想をまとめて次の参考書の勉強に進みたいと思います。
GW? なにそれ。

カロリーメイトください。

BGM

GOOD MUSIC / KICK THE CAN CREW

www.youtube.com

『Ruby on Rails 5 アプリケーションプログラミング』を学習する30

Ruby on Rails 5アプリケーションプログラミング

Ruby on Rails 5アプリケーションプログラミング

序文

Ruby on Rails 5 アプリケーションプログラミング」学習30日目。
テスト編2日目。
いろいろいじりすぎておかしくなったのか、うまく動かなくなったので新しいリポジトリを作成。

GitHub

github.com

進捗

  • 第8章 テスト
    • 8.2 Unitテスト
      (学習時間:2時間)

コード実装部分

GitHub見てね

github.com

実行結果

・Unitテスト

www.youtube.com

感想

今日はUnitテストについて。
よりにもよってテストというなんの見栄えもしない内容で動画を作成。

テストの具体的なやり方はわかったけど、どういうふうに設計したらいいかよくわかんないねぇ。

カロリーメイトください。

BGM

TORIIIIIICO! / KICK THE CAN CREW feat. CASSETTE VISION

www.youtube.com

年齢がばれるシリーズ。

『Ruby on Rails 5 アプリケーションプログラミング』を学習する29

Ruby on Rails 5アプリケーションプログラミング

Ruby on Rails 5アプリケーションプログラミング

序文

Ruby on Rails 5 アプリケーションプログラミング」学習29日目。
基本編が終了したので、Railsのテスト方法について勉強。

GitHub

github.com

進捗

  • 第8章 テスト
    • 8.1 テストの基本
      (学習時間:1時間)

コード実装部分

GitHub見てね
github.com

実行結果

・テスト環境準備(見なくていい)
www.youtube.com

感想

今日から「応用編」。「テスト」の部分だけさらっとやろうかなと思っている。
頑張って、動画を録ってみたんだけど、小さすぎて何やってるのか全然わからねぇ!
少しずつ改善していきます…。

カロリーメイトください。

BGM

厚底 / 坂口有望
www.youtube.com

『Ruby on Rails 5 アプリケーションプログラミング』を学習する28

Ruby on Rails 5アプリケーションプログラミング

Ruby on Rails 5アプリケーションプログラミング

序文

Ruby on Rails 5 アプリケーションプログラミング」学習28日目。
基本編終了。

GitHub

github.com

進捗

  • 第6章 コントローラー開発
    • 6.6 アプリ共通の挙動を定義する - Application コントローラー
      (学習時間:3時間)

コード実装部分

GitHub見てね
github.com

実行結果

f:id:yjkym:20180420164236p:plain

感想

本日で「基本編」終了。お疲れ様でした。
応用編はどこまでやるか考えているんだけど、とりあえず8章のテストの部分はさらっておきたいかなぁという気がしている。

少ないながらもアクセスしてくれる人がいるようなので、↑実行結果の部分を簡単な動画にでもできないかなぁと思って、試行錯誤してみたのだけど、なかなか直感的に作業できなくてひとまず断念。
週末にちょっと勉強してみようと思います。

カロリーメイトください。

BGM

NEW RULE feat. LITTLE / TOC
www.youtube.com

『Ruby on Rails 5 アプリケーションプログラミング』を学習する27

Ruby on Rails 5アプリケーションプログラミング

Ruby on Rails 5アプリケーションプログラミング

序文

Ruby on Rails 5 アプリケーションプログラミング」学習27日目。
間もなく「基本編」が終わるのだけど、「応用編」をどこまでやろうかなと考え中。

GitHub

github.com

進捗

  • 第6章 コントローラー開発
    • 6.5 フィルター
      (学習時間:3時間)

実行結果

f:id:yjkym:20180419163914p:plain

感想

今日はフィルター(アクションメソッドの前後に自動的に行われる処理)について学習。
というか、難しい部分の大半は認証処理について…。

これはフィルターと一緒にやるんじゃなくて、独立した項目として解説してほしかったなぁ。
なんとなく理解できた気になってるけど、多分あんまり分かってない…

カロリーメイトください。

BGM

Japanese Boy / □□□
www.youtube.com

コード実装部分

GitHub見てね

github.com

『Ruby on Rails 5 アプリケーションプログラミング』を学習する26

Ruby on Rails 5アプリケーションプログラミング

Ruby on Rails 5アプリケーションプログラミング

序文

Ruby on Rails 5 アプリケーションプログラミング」学習26日目。
前から読まなきゃなーと思ってたリーダブルコードという本を買いました。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

Railsの勉強に飽きてきたので(おい)、早くこちらの学習に移れるようにがんばります。

GitHub

github.com

進捗

  • 第6章 コントローラー開発
    • 6.4 状態管理
      (学習時間:2.5時間)

実行結果

f:id:yjkym:20180418160849p:plain

感想

今日はクッキーやセッション管理について学習。
N予備校ではここらへんは割と詳しく仕組みから勉強した気がするけど、こちらでは使い方を中心に割とさらっと学習。

…というか端折りすぎてて、もうちょっと詳しく説明してほしかった。

紙面ではCookieStoreを利用して、クライアントサイドにデータを保存する方法を中心に説明していたのだけど、サーバーサイドで保存する方法もやっておきたかったので、以下のサイトを参考にしてActiveRecordSessionStoreを利用する方法もやってみた。

shindolog.hatenablog.com

…多分できたと思うんだけど、細かいところがちょこちょこ違っててあんまり自信はない。

カロリーメイトください。

BGM

Japanese Boy / □□□
www.youtube.com

コード実装部分

GitHub見てね

github.com