当サイトでは、Rubyに関するさまざまな記事をご用意しています。本記事では、他の記事を読むために必要となる前提知識、複数の記事に共通の基礎知識をまとめました。
以下のような方を想定しています。
・ある程度プログラミング言語の学習をした。
・他言語の経験がある。
これから記事を読もうとされている方、または基本を思い出したい方は、ぜひ本記事を読んでください。それ以外にも「Rubyって、実際どんなソースコードなんだろう?」「これからプログラミングしたいけど、本をガッツリ読むのもなあ・・・」といった方にも、もちろんオススメです。
「とにかく手を動かしたい」を目標にしているので、高度な内容は触れていません。
[linkPoteCan word=3ヶ月間のRuby実践研修プログラムはこちら ]
まずはRubyの変数や式について
変数の型と宣言
変数の宣言時に、型を指定する必要はありません。初期化したときに代入する値によって決まります。
「x = 0」とすれば変数xは数値、「y = “0”」とすれば文字列となります。「x + y」を実行するとエラーになります。
x = 0 y = "0" puts x + y
[実行結果]
`+': String can't be coerced into Fixnum (TypeError)
putsというのは、処理結果を画面に出力するメソッドです。一般的に「プットエス」と呼ばれています。
あえて「型」という表現を避けたのは、Rubyではすべてがオブジェクトなので、型という表現は不適切だからです。ただし学習をスタートしたばかりの時点では型と理解してかまいません。
すべてがオブジェクトなので、以下のような式が書けます。
10.times do |i| puts i end
[実行結果]
0 1 2 3 4 5 6 7 8 9
数値もオブジェクトなので、数値にドット「.」をつけてメソッドを呼び出すことも可能です。
(putsメソッドは、1つの結果を出力するたびに自動的に改行を入れてくれることを補足しておきます。)
最低限のRuby演算子
四則演算はほぼ他言語と同じです。
その他のものは都度説明しますので、今のところはこれだけ覚えていただければ大丈夫です。
[linkPoteCan word=Rubyへのスキルチェンジを目指すなら! ]
メソッド
メソッドは以下の種類に分類できます。
・インスタンスメソッド
・クラスメソッド
・関数的メソッド
複雑なものは各記事で都度説明をしますが、ここでは変数やオブジェクトの中身を表示するputsメソッドを説明します。すでに本記事で出てきたものです。
関数的メソッドは「メソッド名(引数)」が基本ですが、「メソッド名 + 引数」とカッコを省略できます。
putsを使って変数strの中身を表示させるには、以下のようにします。
str = "aaa" puts str
[実行結果]
aaa
破壊的メソッド
メソッドは、中身を変えてしまう破壊的メソッドというものがあります。配列でいうと、配列の中身はそのままで表示だけ変えるものと、中身自体を変えてしまうものがあります。後者を破壊メソッドといいます。
例えば、配列arrayの中身を昇順に並べるsortを見てみましょう。1行目でsortメソッドを実行、2行目で元のarrayを表示しています。
array = ["b","a","d","e","c"] p array.sort p array
[実行結果]
["a", "b", "c", "d", "e"] ["b", "a", "d", "e", "c"]
表示だけ変わり、arrayはもとのままです。では、sort!を使いましょう。
array = ["b","a","d","e","c"] p array.sort! p array
[実行結果]
["a", "b", "c", "d", "e"] ["a", "b", "c", "d", "e"]
中身まで変わってしまいました。破壊的メソッドは中身を書き換えてしまうもので、メソッド名に!が付くと覚えておきましょう。
メソッド名に?が付くもの
メソッド名に?が付くものは戻り値が論理値(true, false)が返ってくることを表します。例えば、変数名がnilかどうかを判断するにはnil?というメソッドがあります。例えば、変数strがnilかどうかを調べるには「str.nil?」と記述します。
str = "abcde" puts str.nil?
[実行結果]
false
nilかどうかを問い合わせて、中に文字列が入っているのでfalseとなりました。
[linkPotefuri word=フリーランス案件をお探しの方はこちら ]
Rubyのnilはnullと何が違う?
先ほど、nilというものが出てきました。他言語で使うnullとはちがうの?と思われた方は多いでしょう。同じのようで微妙に違います。同じなのは、オブジェクトの参照先がない場合はnilという点です。
変数strがnilというのは、strが指す先がないことを示します。
難しければ、今のところは変数の中身が空ならnil、という理解で結構です。ただしいつかはオブジェクト指向の考えに基づき、参照先がない場合がnilと理解してください。でないと説明できないことがいろいろと出てきます。
異なるのは、nil自体がメソッドを持つのと、nilを条件判断に使えるという点です。前者は先ほど説明した「str.nil?」のことです。後者は、以下のとおりです。
Rubyでは、falseとnilを偽として扱います。trueとその他nil以外は全て真です。
str = "aaa" if str print "変数の中身は何か入っています" else print "変数strの中身はカラです" end
[実行結果]
変数の中身は何か入っています
strがtrueと判断されて、ご覧のような結果になりました。つまり、strの中身がnilならfalseです。中身が何か入っていればtrueです。メソッドを使って条件式をつくる必要はなく、直接strと指定するだけで良いのです。
Rubyのコメント
Rubyの公式マニュアルや書籍、ポテパン以外のサイトの解説では、以下のような記述をよく見かけます。
array = ["b","a","c"] puts array.sort # => b,a,c
Rubyのコメントは、#以降に書きます。つまり、=>からすべてコメントです。このプログラムは「実行するとb,a,cと表示されます」という意味になります。ですから、実行する時は
array = ["b","a","c"] puts array.sort
だけでよいのです。#以降は入力する必要はありません。もちろん、#以降がそのままでも動作には影響ありません。
記事のコードをコピーする方法
最後に、掲載されているコードをコピーする方法について触れておきます。
コピーしたいコードにマウスをあてるとバーが出てくるので、右から3つ目のボタンをクリックします。
この状態になったら、Macなら「Command+C」、Windowsなら「Ctrl+C」を押してください。以下はMacの画像です。
コードがクリップボードにコピーされるので、それ以降は開発環境でペーストしてお使いください。
まとめ
本記事では、まずは手を動かしたい、Rubyの雰囲気を知りたいという方に対する解説をしました。
もちろんRubyの必要となる基礎知識はその他たくさんあります。順次記事をアップしていきますので、より深く知りたい方は関連する記事を読んでみてくださいね!