静的型付け言語原理主義者によるRailsチュートリアル(第1章)
動機
なぜRailsチュートリアルをやろうと思ったか。それは自社プロダクトでRailsを採用しているにも関わらず、自分の主担当がネイティブアプリ開発であるため、Railsを何一つ理解していなくても日々を過ごせてしまうことへの不安や停滞感を解消し、開発者としてもう一歩先へ進みたいと思ったことが大きな要因である。 このブログ記事は、静的型付け言語原理主義者である自分が、Railsチュートリアルに取り組む中でのメモ、発見、所感を垂れ流していくだけのものである。
第1章 ゼロからデプロイまで
1.1 はじめに
- Railsを採用しているプロダクト
- Kickstarterは自分も使っている
- DHHという謎の三文字の人はRailsの人だった(今更)
- サンプルコードの時点で静的型付け言語原理主義脳が拒絶し始める
1.2 さっそく動かす
- Cloud9
- 重そう
- Channel9なら知っている(Microsoft脳)
- ローカルで動かしたい気もするがお勧めにならってCloud9を選択
- AWSアカウントを作る
- ググりつつCloud9用のIAMを作成
- OSはAmazon LinuxではなくUbuntuを選択
- インデントがスペース2つなのが受け入れられない
- AWSアカウントを作る
- Railsインストール
- ドキュメントのインストールで時間を使わないためのオプション
- 昔はVisualStudioのインストール時にMSDNドキュメントのインストールも追加で行うと死ぬほど時間がかかったなあという謎の思い出し
- 最新のRailsは6.0.0だがおとなしくチュートリアルに従い5.1.6を選択
- ドキュメントのインストールで時間を使わないためのオプション
1.3 最初のアプリケーション
rails new
するだけでアプリのスケルトンができる- つよい
- Railsはディレクトリ構成が標準化されているので、別プロジェクトでもどこに何のファイルがあるかわかりやすい
- パッケージを自由に切れる開発環境と比較すると、標準化されているのは確かに良い
- Gemfile
- Gradleみたいなものだろうか?
- バージョン指定は結構細かく制御できる
- Gemはちょっとしたマイナーアップグレードですら問題を引き起こすことがある
- 怖すぎでは
rails new
してbundle install
一発でアプリができてしまった- 簡単すぎて怖い
- そして
rails server
するだけでアプリが起動- 簡単すぎて怖い
- Yay! You’re on Rails!
- これからレールの上を走らされるんですねわかります
- コマンドでRubyとRailsのバージョンを確認
- RailsはMVC
- Controllerにアクションを定義
- routes.rbでリクエストを振り分ける
Rails.application.routes.draw do
root 'application#hello'
end
- これだけで振り分けられるのがすごい(語彙)
- helloアクションで表示される文字列を変更してみる
- 別のアクションを定義してみる
- コンパイルし直さなくてもリロードするだけで結果の変更が確認できるのは確かに便利だ
- 静的型付け言語原理主義者による手のひら返し
1.4 Gitによるバージョン管理
- 普段から使用しているので詳細は割愛
- sshまわりの設定は毎回ググらないとよくわからなくなる
1.5 デプロイする
- 名前は知っていたが触ったことのなかったHeroku
- Webアプリ用のホスティングフレームワーク
- Gitを使用していればRailsアプリを簡単にデプロイできる
- Herokuのセットアップ
- HerokuではPostgreSQLを使用している
- 発音は “post-gres-cue-ell"
- ぽすと ぐれす きゅーえる?知らなかった
- HerokuではSQLiteがサポートされていない
- Gemfile.lockとは?
- Herokuにデプロイする
- コマンド一発簡単デプロイ
- 1分くらい待ったかも
- 色々やっていたら下記エラーに遭遇
$ git push heroku master
remote: ! No such app as xxx-yyy-zzzz.
fatal: repository 'https://git.heroku.com/xxx-yyy-zzzz.git/' not found
- gitのリモートURLを
heroku create
した時のURLに変更し、再度pushで対応
git remote set-url heroku https://git.heroku.com/XXX-YYY-ZZZZ.git
git push heroku master
- pushは成功したが
hello, world!
が表示されない- どうやらプリコンパイルというものが必要??
rake assets:precompile
とは- アセットパイプラインとは
- ググってプリコンパイルで対応
- これで良かったのだろうか
- チュートリアル通りに進まず少しハマったものの、ようやく第1章完了
- アセットパイプライン周りは別途学習が必要
- 今後のRailsチュートリアルの中でも出てくるのだろうか?
所感
Railsはたしかに便利だが、前評判通り強力すぎるなという印象。冒頭に出てきた scaffold
は完全に黒魔術なのではないか。Rubyの記法には徐々に慣れていくと思うが、肝心のRailsとは仲良く慣れないかもしれない。この章では本質的でないところでハマったものの、チュートリアル通りに進まないことで理解が深まるはずなので、ラッキーだったと捉えて先へ進みたい。