<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Ruby再入門</title><link>http://blogs.wankuma.com/kazuki/category/1981.aspx</link><description>Ruby再入門</description><managingEditor>k.ota.0130あっとgmail.com(かずき)</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby再入門]条件分岐 その２(case文)</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/10/163300.aspx</link><pubDate>Wed, 10 Dec 2008 15:13:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/10/163300.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/163300.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/10/163300.aspx#Feedback</comments><slash:comments>1115</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/163300.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/163300.aspx</trackback:ping><description>&lt;p&gt;条件分岐で書き漏らしがあった。&lt;br&gt;case文というものが条件分岐で使える。&lt;/p&gt; &lt;p&gt;C系の言語でいうところのswitch文を少し強力にしたようなものになる。&lt;br&gt;簡単に書き方と動きを見てみる。&lt;/p&gt; &lt;p&gt;書き方自体は、Cとかのswitch文と同じような形になってる。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:71497bd0-74c7-42bb-b8ae-c6a22e18a589" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;case 式1
when 式2(必要に応じてカンマ区切りで書ける)
  # 式2 === 式１がtrueのときに実行
when 式3
  # 式3 === 式１がtrueのときに実行
else
  # どのwhen句にも入らないときに実行
end
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;==ではなく===演算子で評価しているのが特徴的だ。&lt;br&gt;この===演算子は、正規表現 === 文字列だと正規表現にマッチするかどうか、範囲 === 値だと値が範囲内にあるかどうかとかいい感じに評価してくれる。文字列 === 文字列だと普通の比較になる。&lt;/p&gt;
&lt;p&gt;ちょっと試してみよう。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:23c70642-a2b0-46d8-a8d7-0cfaf164590b" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;i = 10

case i
when 10
  puts "10です"
when 20
  puts "20です"
else
  puts "その他です"
end
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;これを実行するとiが10になっているので、when 10の部分が実行される。その結果「10です」とコンソールに表示される。&lt;br&gt;iを20にするとwhen 20の部分が実行され、iが10でも20でもないと「その他です」と表示される。&lt;br&gt;カンマで複数の式を指定したり、単純な一致ではなくて、正規表現を使った場合もいける。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:dd5e1cbc-e3bf-4f00-90e3-a63458350c03" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# iの値が10か20の時と、30か40の時と、その他の時で表示されるメッセージが変わる
i = 10
case i
when 10, 20
  puts "10か20です"
when 30, 40
  puts "30か40です"
else
  puts "その他です"
end

# strの値が郵便番号か電話番号のフォーマットに一致する時と、その他の時で表示されるメッセージが変わる
str = "000-0000-0000"
case str
when /^\d{3}-\d{4}$/,      # 郵便番号
     /^\d{3}-\d{4}-\d{4}$/ # 携帯電話番号
  puts "郵便番号か携帯電話番号"
else
  puts "よくわからない"
end&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;最後に、case文も戻り値があるのでa = case 10 .... endみたいに書くことが出来る。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9a17cb2a-d42f-4790-bf6f-fe7f8d0eb614" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;
# iが10か20の時と、30か40の時と、その他の時でjの値が変わる。
i = 10

j = case i
when 10, 20
  "10か20"
when 30, 40
  "30か40"
else
  "よくわからん"
end

# iの値に応じて、10か20, 30か40, よくわからんのどれかが表示される
puts j
&lt;/pre&gt;&lt;/div&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/163300.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby再入門]制御構造（分岐）</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/07/162915.aspx</link><pubDate>Sun, 07 Dec 2008 00:12:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/07/162915.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/162915.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/07/162915.aspx#Feedback</comments><slash:comments>30</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/162915.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/162915.aspx</trackback:ping><description>&lt;p&gt;Rubyも、繰り返し、分岐、順次実行で処理を記述できる。&lt;br&gt;構造化プログラミング大事だよね。OOPも、構造化プログラミングをがっちり抑えてたらそんなに難しくないし（と思ってる）&lt;/p&gt; &lt;p&gt;ということで、一つ一つ見てみる。&lt;/p&gt; &lt;h2&gt;&lt;/h2&gt; &lt;h2&gt;if文&lt;/h2&gt; &lt;p&gt;C#やJavaなんかでは、if文で分岐が出来る。Rubyも同様にif文で分岐を記述することが出来る。&lt;br&gt;書き方としては、以下のような形になる。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b6798c2e-58d1-4f46-abb2-72abcfbfe736" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;if 条件式 then
  処理
elsif 条件式 then
  処理
else
  処理
end&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;条件式がtrueの時に、対応する処理が実行されるようになってる。ここら辺はほかの言語と全く同じ。&lt;br&gt;ifやelsifの条件式の後のthenは省略可能だったりする。個人的には、いつも省略してるので、大体以下のような形になる。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b6750713-06cb-4592-bb58-a0bd45db0760" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;if 条件式
  処理
elsif 条件式
  処理
else
  処理
end&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;ここら辺はお好みで。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Rubyでのtrueとfalse&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;条件式がtrueの場合と書いてあるけど、Rubyでは、nilとfalse以外はすべてtrueに評価される。&lt;br&gt;ここら辺は、Cに近い感じがするけど、Cでは0がfalseだったので微妙に異なる。&lt;br&gt;&lt;br&gt;ついでに、RubyのtrueとfalseはTrueClassとFalseClassのインスタンスだったりする。&lt;br&gt;ここら辺まで、クラスというのは、オブジェクト指向言語だな～と感じてしまう今日この頃。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2&gt;unless文&lt;/h2&gt;
&lt;p&gt;if文のほかにunless文というものもRubyにはある。&lt;br&gt;今まで触れてきたC,C++,C#,Javaでは見たこと無いものだったので最初は戸惑ったが、結局はifの逆の動きをするだけのものになる。&lt;br&gt;ifと違うのは、elsifに対応するものが無いということだけっぽい。書き方としては、以下のようになる。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:5063e11a-4051-439e-b731-2095a1349f2e" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;unless 条件式 then # ifと同様にthenは省略可能
  処理
else
  処理
end&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;ifの逆の動きなので、条件式がfalseの時にunlessの処理が実行される。trueの時にelseの処理が実行される。&lt;/p&gt;
&lt;h2&gt;if修飾子, unless修飾子&lt;/h2&gt;
&lt;p&gt;Rubyには、C系の言語には見られないifやunlessの書き方がある。&lt;br&gt;どうやら呼び方は修飾子というらしい。&lt;/p&gt;
&lt;p&gt;書き方と動きは以下のような感じになる。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9ee13e62-ab22-44bd-8f0c-de2694aadcdf" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# 条件式がtrueの場合処理が実行される
処理 if 条件式

# 条件式がfalseの場合処理が実行される
処理 unless 条件式&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;C#とかだと以下のように書かなければいけないような場合にシンプルに書けるようになってるということだろう。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:193cc8a9-fe71-4b81-b68e-18225f450c90" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;if (条件式) {
    1ステートメントの処理;
}&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;h2&gt;if文、unless文の戻り値&lt;/h2&gt;
&lt;p&gt;実は、Rubyではifもunlessも値を返します。&lt;br&gt;返す値は、ifやunlessの中で最後に実行されたステートメントの結果になる。&lt;/p&gt;
&lt;p&gt;たとえば以下のようなコードがあるとする。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:89afe666-d7cc-4277-83f2-55050ff32a44" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# varの値を変えることで処理結果を変えれる
var = 3

# ifの結果をresultに代入して
result = if var == 1
  "いち"
elsif var == 2
  "にー"
else
  "さん？"
end

# resultを表示する
puts result
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;5行目のresult = if ...あたりが今回のポイントになる。&lt;br&gt;この実行結果は、「さん？」と画面に表示される。varが3なのでelseの部分が実行されるからだ。&lt;br&gt;varを1にしたら「いち」、2にしたら「にー」といった具合に変化する。&lt;/p&gt;
&lt;p&gt;unlessも同様に値を返すことが出来る。&lt;br&gt;ここらへんは、ほかの言語であまり見たことが無い。たまに使ってるのを見て、なんだこれ？って思う書き方です。&lt;br&gt;（Rubyに慣れてないので…）&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/162915.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby再入門]演算子の優先順位</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/06/162908.aspx</link><pubDate>Sat, 06 Dec 2008 18:56:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/06/162908.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/162908.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/06/162908.aspx#Feedback</comments><slash:comments>182</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/162908.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/162908.aspx</trackback:ping><description>&lt;p&gt;今度は演算子について。&lt;br&gt;演算子は、+だとか-だとか*だとか色々あるけれど、全部を列挙するとこれくらいになる。演算子の優先度は表の上にあるほうが高くなる。&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;strong&gt;&lt;u&gt;演算子&lt;/u&gt;&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="200"&gt;&lt;strong&gt;&lt;u&gt;意味&lt;/u&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;::&lt;/td&gt; &lt;td valign="top" width="200"&gt;スコープ&lt;br&gt;ModuleName::ClassNameのように使う&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;[]&lt;/td&gt; &lt;td valign="top" width="200"&gt;インデックス&lt;br&gt;array[0]のように使う&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;**&lt;/td&gt; &lt;td valign="top" width="200"&gt;累乗&lt;br&gt;2 ** 3 # 8になる&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;+, -, !, ~&lt;/td&gt; &lt;td valign="top" width="200"&gt;単項演算子&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;*, /, %&lt;/td&gt; &lt;td valign="top" width="200"&gt;乗算,割り算,剰余&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;+, -&lt;/td&gt; &lt;td valign="top" width="200"&gt;足し算, 引き算&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&amp;lt;&amp;lt;, &amp;gt;&amp;gt;&lt;/td&gt; &lt;td valign="top" width="200"&gt;論理シフトとか&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&amp;amp;&lt;/td&gt; &lt;td valign="top" width="200"&gt;ビットごとのAND&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;|, ^&lt;/td&gt; &lt;td valign="top" width="200"&gt;ビットごとのOR, XOR&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&amp;gt;, &amp;gt;=, &amp;lt;, &amp;lt;=&lt;/td&gt; &lt;td valign="top" width="200"&gt;比較&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;==, ===, &amp;lt;=&amp;gt;, !=, =~, !~&lt;/td&gt; &lt;td valign="top" width="200"&gt;等価, 不等など&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&amp;amp;&amp;amp;&lt;/td&gt; &lt;td valign="top" width="200"&gt;論理AND&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;||&lt;/td&gt; &lt;td valign="top" width="200"&gt;論理OR&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;.., ...&lt;/td&gt; &lt;td valign="top" width="200"&gt;範囲演算子&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;= (含む+=, -=, *= ...)&lt;/td&gt; &lt;td valign="top" width="200"&gt;代入演算子&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;A ? B : C&lt;/td&gt; &lt;td valign="top" width="200"&gt;三項演算子&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;not&lt;/td&gt; &lt;td valign="top" width="200"&gt;論理否定&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;and, or&lt;/td&gt; &lt;td valign="top" width="200"&gt;論理AND, OR&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;今までJavaやC++とかC#をやってきて見慣れないものもいくつかあるものの、大体見覚えのある演算子が並んでいる。&lt;br&gt;Ruby以外ではあまり見たこと無い演算子として、===, &amp;lt;=&amp;gt;がある。&lt;/p&gt; &lt;p&gt;===はcase文での比較のときにつかわれる演算子らしい。==ではないんだね。これによって正規表現と文字列の比較とかもcase文でうまいこといけるようになってるみたいだ。&lt;br&gt;&amp;lt;=&amp;gt;演算子は、左辺と右辺を比較して、等しかったら0, 左辺が小さかったら-1, 左辺が大きかったら1を返す演算子のようだ。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:cc544d53-de4a-4c5c-ae9f-d8e160ad0058" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;puts 1 &amp;lt;=&amp;gt; 2 # -1
puts 2 &amp;lt;=&amp;gt; 1 # 1
puts 1 &amp;lt;=&amp;gt; 1 # 0
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;ほかに珍しいものとしては、and or notなどがある。論理ANDとかという意味では珍しくないけど、andとorの優先順位が同じだったり、代入演算子と比べて優先度が低かったりと特徴的だ。&lt;br&gt;ここらへんは、どういったことがおきるのかTHREE=ONEさんのブログの以下の記事で書かれてる。&lt;br&gt;&lt;a href="http://blogs.wankuma.com/pinzolo/archive/2008/01/29/119700.aspx"&gt;Ruby の論理演算子&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;演算子だけをとってみても奥が深そうだ。&lt;/p&gt;
&lt;p&gt;因みに、演算子のうちのいくつかはメソッドとして呼び出せるみたいだ。&lt;br&gt;例えば+とかは、変数.+(引数)といった形で書いても動く。&lt;/p&gt;
&lt;p&gt;NetBeans6.5のRubyエディタでは、演算子をメソッドとして呼び出すような補間はCtrl+Spaceをしても出てこなかった。&lt;br&gt;&lt;br&gt;&lt;strong&gt;コード補間のリストには+とか-は出てこなかった&lt;br&gt;&lt;/strong&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/04/Ruby_10840/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="138" alt="image" src="http://kazuki.wankuma.com/images/2008/04/Ruby_10840/image_thumb.png" width="243" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;まぁ実質問題はない！&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/162908.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby再入門]変数・定数</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/06/162887.aspx</link><pubDate>Sat, 06 Dec 2008 11:30:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/06/162887.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/162887.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/06/162887.aspx#Feedback</comments><slash:comments>31</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/162887.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/162887.aspx</trackback:ping><description>&lt;p&gt;Rubyもプログラミング言語なので、当然値を入れておくための変数や、不変な値を定義するための定数がある。&lt;br&gt;ざっくり分けると、大体以下のような区分に分けられる。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ローカル変数（小文字かアンダースコアで始まる）&lt;br&gt;メソッド内とかブロック内とかで普通に使う変数&lt;/li&gt; &lt;li&gt;グローバル変数（$ではじまる）&lt;br&gt;いつでも、どこでも、身近に使える変数。使いすぎるとわけわからない状況なって危険。&lt;/li&gt; &lt;li&gt;インスタンス変数（@ではじまる）&lt;br&gt;クラスのインスタンス単位での変数&lt;/li&gt; &lt;li&gt;クラス変数（@@ではじまる）&lt;br&gt;クラス単位での変数&lt;/li&gt; &lt;li&gt;定数（大文字ではじまる）&lt;br&gt;一度代入したら値を変えれない&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;ということで、具体的にどうなるか。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:4831e433-b5fd-4896-a5c6-057dca710f42" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# ローカル変数
local_var = 10
_AAAA = 100

# グローバル変数
$global_var = 100

# インスタンス変数
@instance_var = 10
@INSTANCE_VAR = 100

# クラス変数
@@class_var = 1
@@CLASS_VAR = 1

# 定数
CONST = 100
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;ちょっと紛らわしいのが、@や_や$で始まってたら、残り全部の文字が大文字でも定数にならないという部分。&lt;br&gt;そこさえおさえればOK！&lt;/p&gt;
&lt;p&gt;因みにJRubyで試した感じだと定数って再代入できるっぽいです。以下実験コード。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9a539628-de0b-42c6-8044-1253c60a9dcf" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# 定数AAAAを宣言して100にする
AAAA = 100
# 定数AAAAの値を出力
puts AAAA

# 定数AAAAを200に書き換えて出力
AAAA = 200
puts AAAA
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;これが、普通に100と200が表示される。&lt;br&gt;一応警告は出るっぽい。以下実行結果です。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:96aba9c0-07d5-4d4d-8df4-d56f1de5fecc" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="xml"&gt;100
200
C:\Users\Kazuki\Documents\NetBeansProjects\HelloWorld\lib\main.rb:7 warning: already initialized constant AAAA
&lt;/pre&gt;&lt;/div&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/162887.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby再入門]コメント</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/06/162882.aspx</link><pubDate>Sat, 06 Dec 2008 10:53:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/06/162882.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/162882.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/06/162882.aspx#Feedback</comments><slash:comments>44</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/162882.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/162882.aspx</trackback:ping><description>&lt;p&gt;プログラミング言語と呼ばれるものなら、大体コメントがある。&lt;br&gt;もちろんRubyにも！&lt;/p&gt; &lt;p&gt;コメントは、適時入れることでプログラムの可読性があがると信じている。&lt;br&gt;Rubyのコメントには二種類あって、#ではじまるものと=begin ～ =endで囲うものがある。&lt;/p&gt; &lt;p&gt;#で始まるものは、#から行末までの一行コメントになる。&lt;br&gt;=begin ～ =endは=beginと=endの間全てがコメントになる。=beginや=end等の前にはホワイトスペースとかは入れれない。&lt;/p&gt; &lt;p&gt;ということで、いくつかコメントを書いてみた。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:c78deaaf-238a-4994-9cf9-536c297de38c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# 一行コメント

puts "Hello world" # ここもOK

=begin
複数行コメント
何行でも大丈夫
=end

 =begin
=beginと=endの前にホワイトスペースがあるから駄目
 =end


puts "aaaaa" =begin
こういうのも駄目
=end
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;最初の３つがコメントとして有効なパターンで、最後の２つが駄目なパターン。&lt;br&gt;因みに、NetBeans 6.5のエディタでは、下のように表示されるので駄目な部分はわかりやすい。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/Ruby_9904/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="315" alt="image" src="http://kazuki.wankuma.com/images/2008/Ruby_9904/image_thumb.png" width="397" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/162882.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby再入門]Rubyの予約語</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/03/162587.aspx</link><pubDate>Wed, 03 Dec 2008 20:41:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/03/162587.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/162587.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/03/162587.aspx#Feedback</comments><slash:comments>46</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/162587.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/162587.aspx</trackback:ping><description>&lt;p&gt;Rubyには、いくつか予約語が定義されています。&lt;br&gt;これらは、ほかのこと（変数名やメソッド名など）に使うことが出来なくなっています。&lt;/p&gt; &lt;p&gt;予約語には、以下のものがあります。&lt;/p&gt; &lt;p&gt;BEGIN, END, alias, and, begin, break, case, class, def, defined?, do, else, elsif, end, ensure, false, for, if, in, module, next, nil, not, or, redo, rescue, retry, return, self, super, then, true, undef, unless, until, when, while, yield&lt;/p&gt; &lt;p&gt;いくつか見慣れないものもあるけど、大体多言語と同じような雰囲気をかもし出してると思います。&lt;br&gt;厳密に、暗記する必要はあんまりないと思いますが（使ってるうちに覚えると思うので）なんとなくは覚えておくのが吉です。&lt;/p&gt; &lt;p&gt;因みにNetBeansを使っている場合（というかRuby対応の普通のエディタも）は、キーワードを色づけしてくれるのでわかりやすいです。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyRuby_122E0/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="194" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyRuby_122E0/image_thumb.png" width="156" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/162587.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby再入門]Hello worldの作り方</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/03/162586.aspx</link><pubDate>Wed, 03 Dec 2008 20:32:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/03/162586.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/162586.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/03/162586.aspx#Feedback</comments><slash:comments>69</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/162586.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/162586.aspx</trackback:ping><description>&lt;p&gt;NetBeans 6.5を使うとRubyの開発が簡単に出来るようになっている。&lt;br&gt;普通のRubyプログラムのHello worldを、NetBeans6.5でやるには？ということで、とっかかりのための手順を書こうと思います。&lt;/p&gt; &lt;p&gt;まず、NetBeans6.5のインストールをします。&lt;br&gt;下のサイトからダウンロードできます。&lt;br&gt;&lt;a title="http://ja.netbeans.org/" href="http://ja.netbeans.org/"&gt;http://ja.netbeans.org/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Rubyの開発だけをするなら、RubyのみのパッケージをダウンロードしてインストールすればOK。&lt;br&gt;回線とHDDに余裕があるなら、「すべて」のものをダウンロードして、インストール時にカスタムして入れるのがお勧めです。&lt;br&gt;後で、追加でC/C++入れたりJavaを入れたりも出来るので。&lt;br&gt;私は、「すべて」をダウンロードして、SOA, C/C++, PHP, Java MEをそぎ落としたものをインストールしています。&lt;/p&gt; &lt;p&gt;インストールが終わると、既にRubyの開発が可能なようにセットアップされています。&lt;br&gt;&lt;strong&gt;&lt;u&gt;NetBeansの画面（何回か起動していじったりしてるのでウィンドウのレイアウトは違うかも）&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="185" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Rubyのプロジェクトを作るには、[ファイル]→[新規プロジェクト(W)]を選択します。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="71" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_thumb_3.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;新規プロジェクトのダイアログが出てくるので、RubyカテゴリからRubyアプリケーションを選択して、次へをクリックします。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="73" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_thumb_4.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;プロジェクト名にHelloWorldと入力して、完了ボタンを押します。因みに、NetBeans6.5に入ってるのはJRuby 1.1.4みたいなので、それをそのまま使うことにします。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="114" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_thumb_5.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;今までの手順で、以下のようなプロジェクトが作られるはずです。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="181" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_thumb_6.png" width="215" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;ここで作られたmain.rbにプログラムを書いていきます。&lt;br&gt;ウィザードに従って作ると、なんとHello worldのプログラムが既に記述されているではないですか！？&lt;br&gt;これは…手間が省けた。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;新規作成直後のmain.rb&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:bf715218-d48a-4e87-8425-775e8edd6a6f" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# To change this template, choose Tools | Templates
# and open the template in the editor.

puts "Hello World"
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;後は実行して動きを確認すれば、ハローワールドは終わりです。&lt;br&gt;画面上部にあるツールバーに実行ボタン（緑色の三角）があるので、それをクリックします。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_7.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="85" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_thumb_7.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;F6を押すことでも実行が出来るようなので、クリックかF6を押すかどちらかをすると、出力ウィンドウにHello worldが表示されます。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="81" alt="image" src="http://kazuki.wankuma.com/images/2008/RubyHelloworld_12087/image_thumb_8.png" width="225" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;以上が、超簡単だけど（大事なことだよね）NetBeansを使ったRubyのハローワールドです。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/162586.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Ruby再入門]このカテゴリについて</title><link>http://blogs.wankuma.com/kazuki/archive/2008/12/03/162585.aspx</link><pubDate>Wed, 03 Dec 2008 20:15:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/12/03/162585.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/162585.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/12/03/162585.aspx#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/162585.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/162585.aspx</trackback:ping><description>&lt;p&gt;別にRubyっていうカテゴリがあるけど、思いついたことをつらつらと書いてるだけなので、Rubyを基礎から固めるためにRuby再入門のカテゴリを作ってみた。&lt;/p&gt; &lt;p&gt;といっても普通にRubyやるだけじゃつまらないので、IDEとしてNetBeans6.5を使った感じで出来たらいいな～と思ってる。&lt;br&gt;というか再入門しようと思ったきっかけは、Sun Tech Days 2008 in Tokyo（2日目）に行ってきた際に、The Ruby Wayの第二版を買っちゃったからです…。&lt;/p&gt; &lt;p&gt;思い立ったが吉日ということで、今日からやってみる！！&lt;br&gt;続くかな…続かないような気もする。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/162585.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>