ただ単に画面に「Hello World!」と表示させるだけではつまらないので、コマンドライン引数を使って、任意の文字列を表示できるように改良してみましょう。
お好みのテキストエディターで、以下のように記述して「hello_xxx.rb」というファイル名で保存してください。
#!/usr/bin/env ruby # encoding: utf-8 puts "Hello #{ARGV[0]}!"
早速実行してみましょう。
$ ruby hello_xxx.rb Alice
すると、以下のような出力が得られます。
Hello Alice!
コマンドライン引数は、「ARGV」という名前の配列に格納されており、「ARGV[0]」で1番目の引数、「ARGV[1]」で2番目の引数…… という規則で引数を取り出すことができます。
「hello_world.rb」との違いは4行目のみです。文字列リテラル中の、「#{}」の中括弧の中はRubyのコードとして実行され、その評価結果に置換されます。ここでは、「ARGV[0]」はコマンドライン引数の1番目の文字列を返し、その文字列で置換されます。
文字列リテラルについては、次回詳しく説明します。
「irb」(Interactive Ruby)を使うと、対話的にRubyを使うことができます。わざわざスクリプトを書いて実行するほどでもないときや、思いついた記述を手軽に試すときに役立ちます。
irbを起動するには、以下のコマンドを実行してください。
$ irb
すると、シェルのプロンプトがirbのプロンプトに変わります。デフォルトの状態では、以下のようになっています。
2.1.1 :001 >
では、irbを使って簡単な計算をしてみましょう。「21 + 21」と入力して[Enter]キーを押してください。
2.1.1 :001 > 21 + 21 => 42
「=>」に続いて、式を評価した結果が表示されます。
変数を使うこともできます(変数については次回に詳しく解説しますが、他のプログラミング言語の経験があれば、何となく分かっていただけると思います)。
2.1.1 :002 > x = 21 => 21 2.1.1 :003 > y = 2 => 2 2.1.1 :004 > x * y => 42
メソッドを定義することもできます(メソッドについても、変数と同様に連載中に詳しく説明します)。
2.1.1 :005 > def rabbit_say 2.1.1 :006?> "pyon pyon!" 2.1.1 :007?> end => :rabbit_say 2.1.1 :008 > rabbit_say => "pyon pyon!"
ここでは、「rabbit_say」というメソッドを定義して(:004〜:006)、実際にそのメソッドを呼び出して(:007)、「pyon pyon!」という文字列を得ています。
アンダースコアを使うことで、前回の評価結果をそのまま流用することもできます。
2.1.1 :009 > 16.8 / 2 => 8.4 2.1.1 :010 > _ / 2.0 => 4.2
組み込みライブラリのクラスやメソッドを呼び出すこともできます。ここでは例として、時刻を扱う「Time」というクラスを使って、現在時刻を表示しています。
2.1.1 :011 > Time.now => 2014-02-03 15:17:20 +0900
irbはRubyを学習する際に強力なツールです。本連載でも、通常のスクリプトとirbを併用して学んでいくスタイルを取ります。
さらにirbを深く知りたい場合は、リファレンスマニュアルのirbのページを参考にするとよいでしょう。
本稿の最後に、Rubyを学ぶに当たって役立つ書籍やドキュメントを挙げておきます。ドキュメントを上手に活用して、一流のRubyプログラマーを目指しましょう。
基本となるリファレンスです。言語仕様や標準ライブラリについて簡潔にまとまっています。
上述の2つの書籍は1.9向けに書かれていますが、最新の2.1においても十分通用する内容です。一通り読んだ後に、1.9系と2.X系との差分をキャッチアップすればよいでしょう。一つ一つ丁寧に解説されているので、深く学びたい方にお薦めです。
強力なメタプログラミングの技法が、分かりやすく、そして愉快な語り口で解説されている一冊です。さらなるステップアップを目指す方にお勧めです。
今回は、主に4つのトピックについて学びましたが、いかがでしたでしょうか。
次回はRubyの文法基礎と称して、式や演算子、リテラル、コメント、制御構文などについて学びます。お楽しみに!
麻田 優真(Rails技術者認定シルバー試験問題作成者)
イタリア、ローマ生まれ。中学生のころHSPに初めて触れ、プログラミングの楽しさを知る。オープンソースやハッカーカルチャーを好む。C#からRubyに転向したときに、動的型付け言語の柔軟性やメタプログラミングの魅力に感動し、Rubyとともにプログラマーとしての人生を歩む決意を固める。
現在は奈良先端科学技術大学院大学で学生として所属するかたわら、株式会社アジャイルウェアでプログラマーとして従事。Ruby on Railsによるコンシューマー向けのWebサービスの開発などに尽力している。
好きなメソッドは、define_method。
Twitter:@Mozamimy、ブログ:http://blog.quellencode.org/
山根 剛司(Ruby業務開発歴7年)
兵庫県生まれ。1997年からベンチャー系のパッケージベンダーで10年間勤務。当時、使用していた言語はJavaとサーバーサイドJavaScript。
2007年よりITコンサル会社に転職し、Rubyと出会って衝撃を受ける。基幹システムをRuby on Railsで置き換えるプロジェクトに従事。それ以来Ruby一筋で、Ruby on Railsのプラグインやgemも開発。
2013年より、株式会社アジャイルウェアに所属。アジャイルな手法で、Ruby on Railsを使って企業向けシステムを構築する業務に従事。
Ruby関西所属。
Twitter:@spring_kuma、Facebook:山根 剛司
Copyright © ITmedia, Inc. All Rights Reserved.