山田と申します。
以前Railsを使ったプロジェクトに参加し、そこで初めてRubyを使いました。 それまでは主にDB関連のバッチ処理、PL/SQLなどを書くことが多かったため、オブジェクト指向な言語を(本格的に)使うことも初めてでいろいろ戸惑いました。 正直Railsだけでも結構お腹いっぱいな上に、他にもMongoDBやSolrを使ったり、そもそも開発スタイルが今までと全然違ったりと、なかなか大変でしたね。 でも、こういったことが得意だったりやる気のある方には非常に面白いかと思います。 弊社では、そんな方を絶賛募集中です。
Ruby=Rails的な風潮もありますが、Rubyだけでもいろいろできます。 また、必要に応じてgem(ライブラリ)を利用すれば、先人の知恵をお手軽に拝借できたりもするわけです。 うまく使えば、あなたの作業が全自動化できる!かもしれない。 というわけでおすすめです、Ruby。
あとは他言語を使っていて、
- あーメソッド名長いなー
- いちいち変数定義するのめんどくさいなー
- カッコ書くのめんどくさいなー
- 行末にセミコロン打たないといけないとかめんどくさいなー
なんてお思いのそこのあなた、きっと向いています。 (別に静的なのが悪いわけではなく、あくまで性に合うかどうか、好みの問題です)
どうやって学ぶ?
近頃は、ネット上で「Ruby 入門」みたいな検索すれば、星の数ほど出てきます。 無料でできるし、まずは何か実践してみるのがいいんじゃないでしょうか。 例えばドットインストールとか。
書籍だったら、個人的には下記が入門にはいいと思います。
で、何で書く?
お好きなエディタでテキストファイルの編集ができれば大丈夫です。そう、メモ帳でも。 でも最低限シンタックスハイライトができるものがいいですよ。 最初のうち、特に入門書のちょっとしたスクリプトを試すなら下記で紹介するREPLがおすすめです。
どうやって動かす?
入門書だと、エディタでファイル編集して、そのファイルをコマンドでruby app.rbのように実行しましょう、とあったりします。
ですが……
ちょっとめんどくさいんですよね。 たとえば、数値オブジェクトを文字列に変える#to_sというメソッドがあるのですが
puts 1.to_s
と書いて、ファイルを保存して、コマンドプロンプトやターミナルに移動して、そこで
ruby app.rb
とコマンド実行して、実行結果を眺めて、間違ってたらまた修正して、保存して、、、
やってられない!!となります(なりました)。 入門書の特に序盤の方だとワンライナー(1行処理)が多く、それだったらさくっとコマンドのように入力して試したいものです。 ただでさえ、本とPCを行き来するだけでも大変なのに!
じゃあ、結局どうやって動かす?
そんなあなたにirb
またはpry
をおすすめします。
irb
Rubyに標準でついてくるREPLです。
irb
コマンドで起動します- Rubyのプログラムを書きます
- 改行するとその行が実行され、実行結果(戻り値)が表示されます(
=> "1"
の部分) - いちいち
puts
を使わなくても結果が表示できます。それだけでも便利!
pry
irb
の高機能版。
gemとして提供されているので下記のコマンドを実行してインストールが必要です。
gem install pry
その後irb
と同じように起動します。
画像だけ見ると、カラーになってるだけ?
という気もしますが、ほかにもいろいろ便利な機能があるのです。
ls 1
とすれば、Fixnumクラスのメソッドや定数が表示できたり、cd Fixnum
とすれば、そのクラスの中に入れてしまいます。
(このあたりは、最初は自分でもよくわからなかったのですが、覚えておくと後々効いてきます)
もし気になる方は下記の記事も見てみてください。ほかにも「ruby pry 使い方」とかで検索すればいろいろ出てくると思います。
pryを使う - Qiita http://qiita.com/k-ta-yamada/items/04be1e8721ceb58387d8
まとめ
とりあえず、pry
を使って、いろいろなオブジェクトのいろいろなメソッドをどんどん実行すると慣れるのが早いと思いますし、
本を読みながら試すのも苦ではなくなるかと思います。
また、いろいろなオブジェクト、と簡単に言いましたが、まずは下記の代表的なものを試してみるといいのではないでしょうか。
このあたりのクラス(およびそのメソッド)が使えて、
あとはArrayやHashで#each
や#map
を使って繰り返し処理を書けるようになると、できることが広がりますよ。
文字列:String
言わずと知れた文字列型
数値:Fixnum
数値型
+
もメソッドなんです
配列:Array
異なるクラスの要素が混在してもOK
ハッシュ:Hash
JavaScriptだと連想配列っていうんですかね