|
ちなみに、「大量に収録されている」ってどのくらい? |
|
うーんと……単純なメソッド定義の数(別名含む)だけで言えば、Facets 2.9.3現在で1500前後くらいはあるね。 |
|
そんなに!? わたしじゃなくても、その数はさすがに覚えきれないよ!
普段から、Ruby組み込みのメソッドでさえ覚えきれなくて
リファレンスマニュアルをページが擦り切れる勢いでめくってるくらいなのに…… |
|
るびくる、いつもPCでリファレンスマニュアル見てるよね?
さておき、覚えきれなくても大丈夫だよ。
Ruby組み込みのメソッドと同じで、だいたい使用頻度の高いもの(=重要なもの)と、低いものがあるから
自分が特によく使いそうなものだけ、かいつまんで覚えていけばいい。
極端な話、さっきのtryメソッドを使うためだけにFacetsを使うっていうのもありだし
それだけでも十分に有用だしね。 |
|
うーん……でも「自分が特によく使いそうなものだけ」って言うと、簡単に聞こえるけど
それってまず探し出すだけでも、けっこう大変じゃない? |
|
そう、そこが次回以降の話とも絡むんだ。
るびくるの言うとおり、Facetsはメソッドの数自体が多いし、日本語での解説もほとんどないから
便利なライブラリであるにもかかわらず、どんなメソッドがあるのかあんまり知られていないんだよね。
だから次回以降は、Facetsの中でも、使うことが多そうなメソッドや使い勝手が良さそうなメソッドを
少しずつ紹介していこうと思ってるよ。 |
|
なるほど! そうすれば、わざわざ自分で英語のドキュメントやソースコードを熟読しなくても
ある程度どんなメソッドがあるのかわかる! ってことなんだね。 |
|
それじゃ、今回のパート1は「紹介編」だから、ここでいったん終わり。
次回のパート2から、実際にRuby Facetsの中のメソッドを
どんどん説明していくよ! |
パート2:facets/kernel/try編に続きます。
- 注意事項
- 本記事の内容は、Facets 2.9.3 時点での動作を元にしています。
- 本記事内で使用しているアイコン画像は、桜去ほとりさんが制作されたものです。クリエイティブ・コモンズ 表示-非営利 3.0ライセンスのもとで、再配布や変更などを行っていただくことができます。
- 本記事内の文章やソースコードは、CC0ライセンスのもとで、ご自由に利用していただくことができます。
- ツンツク・モモコのお買い物大作戦と形式が類似していますが、本記事側が一方的に参考にさせていただいただけであり、とくに関連性はありません。
RubyGemsってツールで使われてる、Rubyのツールやライブラリをひとまとめにしたパッケージだよ。
最近では、新しいツールやライブラリをインストールするときには、まずgemからインストール! っていうのが定番になってきてるね。
- 参考:
- ライブラリ - Ruby公式サイト
http://pd.appbank.net/m206
をインストールするためのツールで、Ruby 1.9からはRubyに標準で組み込まれてるよ。詳しくはの説明を見てね。
Rubyに標準添付されてるライブラリの1つで、ファイル操作系の便利メソッドをたくさん集めたライブラリだよ。
cd, cp, cp_r, install, ln, mv, などなど……この辺のメソッド名を見たら、Linuxを使ってる人はどんな機能かピンとくるんじゃないかな?
- 参考:
- FileUtilsモジュール - Rubyリファレンスマニュアル
Ruby 1.9.1よりも前、たとえばRuby 1.8ではこのエンコーディング宣言は必要なかったんだよ。だからRuby 1.8だけを使うのならこの宣言もいらないんだけど、先のことを考えるならつけておいたほうが○、ってとこだね。
rakeはRuby 1.8にも対応してるんだけど、ruby本体に標準添付されるようになったのは、基本的にRuby 1.9.1以降なんだ。
ただし、Windows環境でActiveScriptRubyやRumixを使ってrubyをインストールしたのであれば、もしかしたらもうrakeも入ってるかもしれないね。
試しに、コマンドラインでrake
って打ってみると分かるかも。
rakeの最新版はRubyGemsで入手できるから、RubyGemsが入ってる(gemコマンドが実行できる)環境なら、gem install rake
コマンドの実行でOKだよ。
desc 'Create hello-rake.txt'
task :testfile do
open('hello-rake.txt', 'w'){|f|
f.write('Hello Rake world.')
}
end
interactive rubyの略で、小さなRubyコードをサクッと実行できるツール(対話式シェル)だよ。Ruby初心者から上級者まで、みんながお世話になるツールの1つじゃないかな?
最近ではpryっていう強化版も出てるね。
- 参考:
- irb - Rubyリファレンスマニュアル
Rakeの最新版は0.9.2.2なんだけど、最新版があるのはRubyGems.orgだけで、RubyForgeの方にはRake 0.8.7までしか置かれてないよ。
これはgemの標準ダウンロード先が、RubyForgeからRubyGems.orgに移行したからみたい。
- 参考:
- rake | RubyGems.org
パート1でも少しだけ話題に出したけど、ruby 1.8系と1.9系では文字エンコーディングの扱いが大きく違うから、ruby 1.8系と1.9系の両方に対応させようとすると、けっこう面倒な書き方をしないといけないんだよね。
というわけで、ここではサンプルとしての利便性を優先して、ruby1.8系に限定したスクリプトにしてるよ。あしからずご了承ください。
- 参考:
- Ruby 1.9.1の歩き方 - Rubyist Magazine
SQLを実行してデータをとってくるのはeachメソッドもallメソッドも同じなんだけど、eachメソッドではデータベースから1行ずつデータを読みこんで処理するのに対して、allメソッドでは一度に全行のデータを読み込んで、配列の中に格納することになる。
その結果、たとえばデータを一度に10万行も取得したとすると……10万件分のデータをいったんメモリに読み込むallメソッドでは、どうしても分が悪いんだ。
裏で何をやってるのかよくわからないコードだったり、コードをパッと見ただけでは中の動きが想像もつかないくらい複雑だったりするコードに対して、「黒魔術」って呼び方をすることがあるんだ。
とくにRubyは、動的言語で自由度もかなり高いから、いろいろな黒魔術的コードの余地があるし、実際にRailsなんかでは黒魔術的コードが多い(もしくは昔は多かった)ってよく言われるね。
method_missingは黒魔術の入り口。
- 参考:
- Rubyの黒魔術
- Rubyのmethod_missingを使って黒魔術を実装する
を使ってインストールしたは、じつはRubyのバージョンごとに別々に管理されているんだよ。
たとえば、ruby 2.0.0でインストールしたgemは、あくまでruby 2.0.0用にインストールされているだけで、ruby 2.1.0にバージョンアップしたときはもう1回インストールし直さないといけなくなっちゃったりする。なぜかというと、ruby 2.0.0用のgemとruby 2.1.0用のgemが別々に管理されてるから。
ただ、ruby 2.1.0→2.1.3 のように、大きなバージョンの変更がない場合であれば、入れ直さなくて済む場合もあるよ。