Rubyをやります。とりあえず駆け足で周辺知識と言語仕様の浅いとこまで
ドキュメント
rubyの特徴として第一に日本産だから日本語情報いっぱいあるというのはよく目にする。確かに公式ドキュメントをのぞいてみると、これほどまでにこなれた日本語(これが原文だろうし当然だが)で網羅されている(ふつうは訳がどこかで息切れるのが多いイメージ)。
用語
読んでいくうちに当たり前のように使っているところに遭遇したよく出てくる用語。初学者が遭遇してわかりにくいかつ重要そうな用語を網羅した記事がほしい。
環境に関しての用語
rbenv
rubyのバージョン管理ツール。昔はRVMたらいうのがあったらしい。condaのcreate
とかのようにディレクトリとバージョンと環境名とかを指定して開発環境を一発で作ってくれるのではなく、単に本当にバージョンをグローバル/ローカルで管理してくれるだけらしい。
gem
rubyのライブラリ・パッケージ管理ツール。使い方はよくわからん
Bundler
gemの依存関係をいい具合にしてくれるツール。requirements.txtみたいなもん?よくわからん
Rake
makeのruby版。makeがなんなのかは知らなかったが、ソースコードをビルドするためのコマンドらしい。よくわからん。
Shim
なんかrubyを実行したり操作したりするときのrubyコマンド集が入ってるらしいんだけどまったくわからん。user/.rbenv/shims
にある。shim自体はruby固有の概念じゃなくて(こういうツールは総称してなんていうのか知らないが)他のプログラミング言語でも便利に使われているらしい。
ruby-build
ruby install
を提供するrbenvのプラグイン。なのでrbenvを入れたら一緒に入ってくる(入ってきた)。どう使って何が嬉しいのかわからん
irb
interactive ruby。対話的に実行できる。rubyインストールしたら入ってきた。
言語に関しての用語
ruby独特の文法とかクセがあるので注意。とくに気になったやつなど
シンボル
オブジェクトが作られる際に振られる固有のIDみたいなもんで実態は数値。ハッシュのキーとして使うと探索効率良くなる。immutable。
特異メソッド
インスタンス単位で追加したメソッド(多分)
unless文
条件式が偽の場合に処理する。forの裏みたいなやつ。elsifとかは使えない。
until文
条件式が義の間処理する。whileの裏みたいなやつ。
case~when
whichに相当するやつ。
範囲オブジェクト
大小比較できる値を任意の範囲で順につくってまとめたオブジェクトで実態はRangeクラス
のオブジェクト。リテラルは、たとえば1..4
は1から4まで、1...4
は1から3まで。同様にRange.new(1, 4, true)
も1から4まで。アルファベットもいける。ただし試したところ降順はオブジェクトとしては作れるしエラーとかは出ないがfor文でイテレーションとかはできない
eachメソッド
Range
クラスに使える。イテレーションする。
for i in 1...5 puts i end
と
(1...5).each do |i| puts i end
は同じ。
times, upto, downtoメソッド
いずれもIntergerクラスのメソッドで、for文の代わりみたいなのができる。それぞれ1単位での繰り返し、インクリメント、デクリメントみたいな感じ
stepメソッド
IntergerクラスやFloatクラスの上位クラスであるNumericクラスのメソッドで、for文の代わりみたいなのができる。limitを越えるまでオブジェクトにstepを加算する感じの使い方
loopメソッド
Kernelクラス
のメソッドで、無限ループする。抜けるにはたぶんbreakしかない
next
いわゆるcontinue
redo
nextはそのタイミングで次のループに移るやつだが、redoは今の処理の初めに戻る。
Array.nitems
rubyでは配列のサイズはArray.lengthで取れるが、これは要素nilを含んだものになる。含まない場合はArray.nitems
を使う
アクセスメソッド
setter, getterのリテラルみたいなもん。
attr_reader:変数名
, attr_writer:変数名
, attr_accessor:変数名
みたいな感じでやる。
その他
$
から始まるのはグローバル変数、@
から始まるのはインスタンス変数、@@
から始まるのはクラス変数。
メソッド名には最後に?
をつけてもいいことになっている(構文自体に意味はない)。条件演算子でも使われるのでちゃんと空白あける。
インスタンスメソッドは.
(ドット)だけでなく::
(コロン二つ)でも使える
インストール
公式のやつを参考に。
デフォルトのバージョンを確認
ruby -v
2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]
なるほど。
brew install rbenv
なんか依存しているopenssl
やruby-build
も一緒にインストールされるrbenv init
初期設定に必要らしい。打ち込んだら、``` # Load rbenv automatically by appending # the following to ~/.bash_profile:
eval "$(rbenv init -)" ```
などと出て、これ自動でやってくれてるのかなと
cat ~/.bash_profile
したら無かったので手動でやりました。echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
これでちゃんと設定完了かな- 設定を反映するためターミナル再起動。もしくは
source ~/.bash_profile
自分は公式に沿って再起動しましたが。 ちゃんと設定できてるか検証のため
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
すると、なんか大丈夫そうです。実際にいれてみます。ここからはinstalling-ruby-versionsを参考に。
rbenv install -l
でrbenvで設定できるrubyのバージョンの一覧がでるらしいのでやってみると、jrubyとかmaglev, mrubyとかの文字が並んでいます。調べるとJavaによる実装だったり組込み用だったりするらしい。そういうのも一元的に扱える懐の深さがすごい。一覧は
. . . 2.5.0-rc1 2.5.0 2.5.1 2.6.0-dev 2.6.0-preview1 2.6.0-preview2 jruby-1.5.6 jruby-1.6.3 . . .
となっていたので、公式の最新verは2.5.1っぽい。
rbenv install 2.5.1
それなりに時間がかかる。
チュートリアル
公式ドキュメントのチュートリアル「20分ではじめるRuby」をやってみます。インタラクティブモードから入り、クラスやら条件分岐やらを経て.rb
ファイルを作ってruby
コマンドで実行というところまで。プログラミング用語とか文法とか概念は特に詳しく説明されてないのでまったくの初心者は20分ではきかないと思われる。
Ruby入門はインストールは最新版をおっているが、チュートリアルの中身が古い箇所がある($KCODE
はruby1.9で廃止になっている、等)。ざっと読んで概要をつかんでおく。
文化
まだわからん