Top > Ruby > Hello, world!

このページの概要

  • Ruby でさまざまな "Hello, world!" を。
    • とりあえずコンソール(コマンドプロンプト)上に何か表示する、世界一有名なプログラムを書いてみます。
    • puts "ほげほげ" と書けば、ほげほげがコンソールに表示される、というのが基本です。
    • このページの後半は変数代入、条件分岐、オブジェクトの拡張等と「基本をかなり逸脱」していますが、わからなくても気にしないでください (^^;
  • 動作確認環境 : Ruby 1.8.4

.rb ファイル無しの Hello, world!

Ruby は、1行スクリプトを -e オプション付きで直接実行させることができます。

  • for Windows
    C:\> ruby.exe -e 'puts("Hello, world!")'
    Hello, world!
    
    C:\> _
  • for Zaurus
    $ ruby -e 'puts("Hello, world!")'
    Hello, world!
    $ _

環境依存しない上に表示結果が変わらないので、以下、for Zaurus の書式で出力結果省略に統一。

そして、別解。

  • かっこ無し
    $ ruby.exe -e 'puts "Hello, world!"'
  • printf版
    $ ruby -e 'printf("Hello, world!")'
  • display版
    $ ruby -e '"Hello, world!".display'
  • p 版 (変数に格納しないと使えないっぽいです)
    $ ruby -e 'hello = "Hello, world!"; p hello'

hello.rb ファイルを作る

  0
  1
#!/usr/bin/env ruby
puts("Hello, world!")

これを、以下の通りにすれば動きます。Zaurus なら実行属性を与えて(chmod a+x ./hello.rb) ./hello.rb で実行可能です。

$ ruby hello.rb

hellojpn.rb ファイルを作る

表示メッセージを「はろー、わーるど!」に書き換えてみます。

  0
  1
#!/usr/bin/env ruby
puts("はろー、わーるど!")

Zaurus なら EUC コードで、Windows なら Shift-JIS コードで作成すれば、ちゃんと「はろー、わーるど!」が表示できます。

文字コードを間違えてしまうと動きませんが、ちょっと手を加えてやれば動くようになります。 kconv を使って、tosjis (ShiftJIS変換)や toeuc (EUC変換) を行えるようにします。

  • Windows
    • tosjis使用です。
        0
        1
        2
      
      #!/usr/bin/env ruby
      require 'kconv'
      puts("はろー、わーるど!".tosjis)
  • Zaurus
    • toeuc使用です。
        0
        1
        2
      
      #!/usr/bin/env ruby
      require 'kconv'
      puts("はろー、わーるど!".toeuc)
  • Windows / Zaurus 両方に対応してみる (手続き型的解決方法)
    • プラットフォームを格納している定数 RUBY_PLATFORM*1win があったら Windows と見なしています。 mswin などの文字列がある場合は Windows と見なしています*2。Mac OS X の環境は持ち合わせていないため未確認です。申し訳ないm_ _m (..;
        0
        1
        2
        3
        4
        5
        6
        7
        8
        9
       10
      
      #!/usr/bin/env ruby
      require 'kconv'
      hello = "はろー、わーるど!"
      platform = RUBY_PLATFORM.downcase
      if(platform =~ /mswin(?!ce)|mingw|cygwin|bccwin/)
        hello = hello.tosjis
      else
        hello = hello.toeuc
      end
       
      puts(hello)
  • Windows / Zaurus 両方に対応してみる (オブジェクト指向的解決方法)
    • String 型に topf (プラットフォームごとの文字列変換) メソッドを追加した解決法。
    • ここまでくるとマルチプラットフォームな「はろー」スクリプトですが、シンプルさは相当失われています (^^;
        0
        1
        2
        3
        4
        5
        6
        7
        8
        9
       10
       11
       12
       13
       14
       15
       16
       17
      
      #!/usr/bin/env ruby
      require 'kconv'
       
      class String
        def topf
          platform = RUBY_PLATFORM.downcase
          if(platform =~ /mswin(?!ce)|mingw|cygwin|bccwin/)
            return self.tosjis
          else
            return self.toeuc
          end
        end
      end
       
      begin
        hello = "はろー、わーるど!"
        puts(hello.topf)
      end

*1 Rubyリファレンスマニュアル - 組み込み定数によると、RUBY_PLATFORM は 「プラットフォームを示す文字列。」と説明されています。疑問に思ったら、とりあえず「ruby -e 'p RUBY_PLATFORM'」コマンドで何が表示されるか、確認してみましょう。
*2 MacOS X が Darwin ということで誤認の可能性があるみたいです。詳細は http://d.hatena.ne.jp/mzp/20070913/platform ならびに http://jp.rubyist.net/magazine/?0017-CodeReview を参照

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Fri, 22 Jul 2011 21:57:52 JST (1525d)