- 「言語のしくみ」を読んで、MatzさんとRubyに改めて興味を持ったので、Rubyエンジニアの方に聞いたら「Rubyは作りたいものを作りやすい」とのことでした。
- 「初めてのRuby」を以前買っていたので読み直しました。
- 他の言語経験者向けの入門書で、他の言語や一般的な言語の作りと比較してRubyの基本を説明しています。リファレンスを読みながら進められるところまで。
- 「1章 ようこそ、Rubyのある生活へ」で気になったところをまとめました。
- コラムでは、「文字列の変更可能性」や「型変換」など、簡潔に他言語との比較で、はまりそうなポイントを説明していて気に入ってます。
- バージョンが1.8, 1.9対応だったのが難ですが、それ以外はおすすめです。
1章 ようこそ、Rubyのある生活へ
- Rubyの主要概念が書いてある。
- バージョンナンバーの振り方や、開発環境/実行環境など一通り書いてある。
- Rubyの文脈を理解してRubyらしいコードを書くとよい。
Rubyの特徴的な部分で気になったところ
- 動く擬似コード
- ほぼ擬似コードのまま動く
- 処理の本質的な記述に集中できる。
- 高階関数
- コードブロックというオブジェクトをやりとりすることができる。無名関数のように使える。
- コードブロックを受け取るメソッド(=高階関数的に動く) => ブロック付きメソッド
- コードブロックはクロージャとして機能するが、メソッドはそうではない。
- DSL
- 言語内DSL
- カスタム言語を追加する => それを使ってソフトを作る。
- このスタイルがRubyでは一般的になっている。
- 動的
- 実行時にクラス定義を処理する。
- メリットはクラス定義まで通常の制御で管理できる。
- デメリットはクラス名がずれたりしても、実行時エラーにしかならない。
- どちらにしろ単体テストかくのだから、そのあたりは問題ないという考え方も。
- メタプログラミング
- DSL/動的な機能を使って、かなりの部分をパラメータ化できる。
- それをしようとしたときに、特別な宣言等をする必要なく、シームレスに言語を拡張できる。
- クラス定義が実行時に行われるため。
機能探索順
- 専用の文法
- 組み込み関数
- 組み込みクラス
- 標準ライブラリ
- 外部ライブラリ
- 自作
構成
- 言語本体
- 組み込みライブラリ
- 組み込み定数
- 組み込み変数
- 組み込み関数
- 組み込みクラス
- 標準添付ライブラリ
外部ライブラリ
- 標準添付ライブラリ
- 追加インストール不要。
- ユーザプログラムからインクルード必要。
- 外部ライブラリ
- 基本はRubyで書かれている
- 拡張ライブラリ(C言語等で書かれたネイティブライブラリ)
実行環境
対話
irb
スクリプト実行
ruby hello.rb
デバッガ
ruby -rdebug hello.rb
- リファレンス
コマンドライン
ri String
irb
irb help
あると便利
- irbでタブ補完
コード整形
gem install ruby-beautify
- Test Ruby標準のテスティングフレームワークで手軽にテストコードを書く方法
型(クラス)確認方法 Ruby オブジェクトのクラスを調べるには?
# classメソッドを使う s = "str" s.class