Ruby/Rails初中級者おすすめ本とサイト

# Railsチュートリアル （Rails tutorial）

* https://railstutorial.jp/ (日本語版 / Japanese version)
* https://www.railstutorial.org (English version)

ministest と fixtures が使われているが、実プロジェクトでは rspec と factory_bot を使うことが多い。
ministest and fixtures are used in RailsTutorial, but rspec and factory_bot are more widely used in the real world. So you don't need to study minitest and fixtures. But please learn the concept for testing.

学び方の一例としては、↑の「Railsチュートリアル」をやってみてから、実務でRailsの開発を行いつつ、以下の本やサイトに目を通す。

# 本・サイト （Books / Web Sites）
## Ruby
* 初級 
   * [プロを目指す人のためのRuby入門](https://www.amazon.co.jp/dp/4774193976)
* 中級
   * [プログラミング言語Ruby (日本語版 / Japanese version)](https://www.amazon.co.jp/dp/4873113946)
   * [The Ruby Programming Language (English version)](https://www.amazon.co.jp/dp/0596516177)
   * [Effective Ruby](https://www.amazon.co.jp/dp/4798139823)

## Rails
* るびま
  * [Ruby on Rails： The Bad Parts](https://magazine.rubyist.net/articles/0041/0041-RailsTheBadParts.html)

## 一般

* [リーダブルコード](https://www.amazon.co.jp/dp/4873115655)

## スタイルガイド（Style Guide）

実務に携わったタイミングで、早めに目を通しておくこと。覚える必要はなく、開発時には[rubocop](https://github.com/rubocop-hq/rubocop)を使う。 

* Ruby/Rails
  * [Ruby Styleguide](https://github.com/fortissimo1997/ruby-style-guide/blob/japanese/README.ja.md)
  * [Rails Styleguide](https://github.com/satour/rails-style-guide/blob/master/README-jaJA.md)

* Rspec
  * [RSpec Style Guide](https://github.com/rubocop-hq/rspec-style-guide)
  * [Better Specs](http://www.betterspecs.org/) ([Ja](http://www.betterspecs.org/jp/))

## オブジェクト指向設計（Object Oriented Programming)
* [オブジェクト指向設計実践ガイド (日本語版 / Japanese version)](https://www.amazon.co.jp/dp/B01L8SEVYI)
* [Practical Object-Oriented Design in Ruby: An Agile Primer (English version)](https://www.amazon.co.jp/dp/0321721330)

## テスト（Test）
* [RSpecによるRailsテスト入門](https://leanpub.com/everydayrailsrspec-jp)

## メタプログラミング（Meta Programming）

* [メタプログラミングRuby (日本語版 / Japanese version)](https://www.amazon.co.jp/dp/4873117437)
* [Meta Programming Ruby (English version)](https://pragprog.com/book/ppmetr2/metaprogramming-ruby-2)

## リファクタリング（Refactoring）

※ fat controllerを避けることは大前提。

* Fat Modelのリファクタリング（Refactor fat model）  
   * [7 Patterns to Refactor Fat ActiveRecord Models (English version)](http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/)
   * [肥大化したActiveRecordモデルをリファクタリングする7つの方法 (日本語版 / Japanese version)](https://techracho.bpsinc.jp/hachi8833/2013_11_19/14738)
* [サービスオブジェクト](https://techracho.bpsinc.jp/hachi8833/2017_10_16/46482)
* リファクタリング全般（Refactoring in general）
   * [リファクタリング:Rubyエディション (日本語版 / Japanese version)](https://www.amazon.co.jp/dp/4048678841)
   * [Refactoring: Ruby Edition: Ruby Edition (English version)](https://www.amazon.co.jp/dp/B002TIOYWG)

## デザインパターン（Design Patterns）
* [Rubyによるデザインパターン (日本語版 / Japanese version)](https://www.amazon.co.jp/dp/4894712857)
* [Design Patterns in Ruby (English version)](https://www.amazon.co.jp/dp/B004YW6M6G)

# リファレンス （References）

* https://railsguides.jp/ （日本語版 / Japanese version）
  * 特に [Active Support コア拡張機能](https://railsguides.jp/active_support_core_extensions.html) は早めに抑えておく。
* https://guides.rubyonrails.org （English version）

# Gems

よく使われているか？メンテナンスされているか？というのを比較する用。
You can see which gem is popular, well maintained, etc.

* [The Ruby Toolbox](https://www.ruby-toolbox.com)
* [Awesome Ruby (github)](https://github.com/markets/awesome-ruby)
* [Awesome Ruby (https://ruby.libhunt.com)](https://ruby.libhunt.com/)
* [Awesome Rails Gem](https://github.com/hothero/awesome-rails-gem)

## Gemを使おうと思ったときには、以下のことを気にかけること
* Gemを使おうと思ったときには、一度考え直してみる。Gemを使えば簡単だが、しかし、、、
  * メモリフットプリントが増える。
  * アップグレード時にハマるかも。
     * Railsのアップグレード時
     * Gem自体のアップグレード時 
  * Gemの動作をきちんと理解していないと、ブラックボックスになりうる。
  * 動作はGem任せなので、ちょっとした変更が難しくなることも （Gemにモンキーパッチを当てることは止めたほうがいい。Gemのアップグレード時に苦労する）。
* 機能はニーズを満たしているか？逆に、Gemの機能がニーズに対して過大な場合は、自分で実装することも考える。
* ドキュメントはよく書かれているか？
* Githubの `Used by`、`Star`の数と、`Latest commit`（メンテナンスされているか）。

# サイト （Web Sites）

* http://railscasts.com
  長年アップデートされていない点は注意が必要だが、まだ有益な情報はある。
  You can know more in details by referring this site. It has not been updated for a while and some content is out of date. But some contents are still worth to take a look.

* https://techracho.bpsinc.jp/
  定期情報収集用。

# References For SaaS

* https://12factor.net/ja/ （日本語版 / Japanese version）
* https://12factor.net/ （English version）