PHPerのためのRuby(Rails)入門
間違いとかあれば About the Author & Contact から連絡をお願いします。
最終更新 2021/02/28
公式ドキュメント集
ruby関係の公式ドキュメントは、揃いも揃ってSEOが激しく弱い(公式が弱いと言うより公式でないものが強いと言う方が正しい?)ので、普通にググっても公式ドキュメントに辿り着くのが難しい。その結果として、信頼できるかどうかわからない情報を参照して開発することになり、精神的に安定せず、rubyを使おうという気持ちが消える。ここのリンクから辿って公式を見て、理解できない時はググって非公式の情報にあたると良い。こうやって信頼できる情報に辿り着けるならば、rubyは(型の取り扱いに目を瞑れば)最高の言語の一つだと言える!!
- 本家の公式ドキュメント(日本語、一部英語)
- その中でも「他言語からのRuby入門」の中にある PHPからRubyへ はPHPerには必読
- 実は筆者はJavaの方が馴染みがあったりするので JavaからRubyへ も役立ったりする
- 各バージョンの言語仕様のリファレンスマニュアルへのリンクもすぐに見つかる
- 「コアリファレンス」や「標準ライブラリリファレンス」という名で ruby-doc.org へのリンクもある
- 英語版 なんか日本語のと情報量に差があるように見える。困ったら日本語と英語両方見るのが良いかも?
- その中でも「他言語からのRuby入門」の中にある PHPからRubyへ はPHPerには必読
- rbenv(GitHub)
- gemコマンド
- bundlerの説明へのリンクもあるよ
- gem検索サイト rubygems.org
- Rails公式 rubyonrails.org
- RDoc
- YARD
- slimテンプレートエンジン
信頼できるドメインたち
上記の情報を言い換えると、 ruby / rails の情報をググった結果としてこれらのドメイン(またはそのサブドメイン)のページが出てきたら勝利。 site:
入れて検索しろよって話はあるかもしれないが…。(公式サイト以外の情報からrubyに入門すると、どれが公式サイトなのかわからんようになる。)
ruby-lang.org
ruby言語公式サイトruby-doc.org
クラスライブラリ(という言い方が正しいのかどうかは知らない)のリファレンスrubyonrails.org
rails公式サイト
ローカル開発環境構築
rbenv
で指定バージョンのrubyを入れて管理するのが楽。- Macなら HomeBrew からrbenvを入れる。
gem
: ライブラリのこと、またはライブラリをインストールするコマンドのこと。rubyをインストールすると一緒に入る。- rubygems.org で検索してきて、いいかんじ かつ 目的に合致するもの を入れる。
bundler
: Gemfile(PHPの composer.json のような役割。同様にlockファイルもあるよ)を司る者。gem install bundler
でインストール。global install するのが非常に気持ち悪いけど、rbenvでrubyバージョンごとにわかれたところのglobalに入るだけだから、気にしたら負け!- MySQLをデータベースとして使うのなら、MySQLをインストールしとく。さもなくばMySQLドライバ(
mysql2
)のインストールでエラーになる。 rails
gem を global install :gem install rails -v {バージョン番号}
- railsのバージョンのリスト in rubygems.org
- 既存のリポジトリのものを触るだけなら、この
rails
の global install は不要かも。bundlerの働きによってリポジトリの中に rails のgemが入るっぽいので。新規にRailsアプリを作るときはrails new
コマンドを実行するために必須。
nodenv
か何かでNodeJSをインストールしとく
基本文法
あとで書く。リファレンスマニュアル見とけ。
使うコマンドたち。
irb
rubyの対話型コンソール(REPL)rails new
新規にRailsアプリを作る
以下は、既存のRailsアプリの中での話。
bin/rails
だけで実行すると、コマンドの一覧が出てくる。以下のものも含む。bin/rails s
=>bin/rails server
puma(php-fpmみたいな位置付け?でもHTTPリクエスト直接処理できるよ)を起動。Ctrl-Cで終了。bin/rails c
=>bin/rails console
Railsでの対話型コンソール(REPL)。そのアプリのModelのコードとか呼べる。bin/rails db:migrate
migration実行bin/rails db:rollback
migrationの切り戻し(1世代)bin/rake routes
routing設定の一覧を得る。動作は遅いけどデバッグには超お役立ち。
RDocとYARD
RDocは標準のドキュメントツール。JavaDoc的な。
なぜか知らないけどもRDocでは引数や返り値の型情報を書けないっぽい。YARDだとそれができて良い意味で PHP Doc っぽい type hinting ができる。YARDのドキュメントとしてビルドしなくてもRubyMineはYARDの指示を読み取ってコーディングを助けてくれるらしい(未確認)。
YARD Features のページにある @param
と @return
を書けるだけでも、rubyが最高の言語に化ける。
# Reverses the contents of a String or IO object.
#
# @param [String, #read] contents the contents to reverse
# @return [String] the contents reversed lexically
def reverse(contents)
contents = contents.read if respond_to? :read
contents.reverse
end
このコード例は上記の YARD Features からの引用。
erbテンプレートエンジン
erb = Embedded Ruby の略。 HTMLの中にrubyのコードを埋め込む感じ、つまり古来のPHPみたいな感じで書ける。Railsのデフォルト(執筆時点)。PHPerにとって直感的。
<%= (式) =>
式の内容を出力<% (コード) %>
コードを実行<%# (コメント) %>
コメント<%%
これで<%
を出力%%>
これで%>
を出力
slimテンプレートエンジン
タイプ数が少なくなるのは確かだが、覚えるべきことが多い。採用されていることは多いようなので頑張らないといけない。 HTMLを直接書くことができるので、理論上、表現できないものというものは無い。 公式リファレンスを見て慣れろ!!
よく使うもの
- 基本、1行で1つの HTML Element
- 最初のtoken : element名(タグ名)
- attributeは name=value 形式で書く。例
input type="text" disabled=true
-
で始まる行 : rubyコードの実行- bashとかと同じで、 ` \ ` で行の継続
=
で始まる行 : rubyの式の値を出力- elementに入れる text content (HTML content かも? XSS注意) の書き方
- attributeが何も無いとき
p ほげほげ
- attributeが何かあるとき
p id="hoge" ほげほげ
- attributeが何かあるとき2
p id="hoge" = ruby_expression
- 次の行に
=
始まりで書く方法もある(インデントの深さに注意しないと、DOMツリー上のchildじゃなくてsiblingになったりするかも)
- attributeが何も無いとき
- 他にもslimの公式ページにいろいろ書いてある。日本語版もそれなりに情報量があるので、まず日本語版を見るでも良さそう。
XSS対策(PHPで言うところの htmlspecialchars
に相当)がいつ動いて、いつ動かないのか?は、注意。開発時に真っ先にテストすると良いだろう。
unit test
(まだ書いてない)