【未経験からのRuby on Rails – 第2回】Rubyのプログラムを書いてみる(Mac)


こんにちは。新卒1年目のmatsuariです。

前回はRubyとは何か、簡単にご紹介をしましたが、
今回は実際にRubyファイルを作成して、プログラムを書いてみるところまでご紹介していけたらと思います。

Mac環境のプログラミング初心者向けです。


はじめに、Rubyのプログラムを書くためのファイルを作成します。

 

Rubyファイルを作成する

ここでは、Sublime Textというテキストエディタを利用します。

Sublime Textにはバージョン2と3があり、バージョン3はβ版です。

バージョン2のダウンロードはこちらから
Sublime Text 2 – Download

バージョン3のダウンロードはこちらから
Sublime Text 3 – Download

どちらのバージョンを使うと良いかや、Sublime Textが選ばれている理由については
こちらをご覧ください。
テキストエディター「Sublime Text」の導入 – Build Insider

Sublime Textをダウンロードできたら、Sublime Textを開き、新規ファイルに名前を付けて保存します。

新規ファイルを開いている状態で、「command + s」を押すと「保存」ができます。

【helloworld.rb】という名前のRubyファイルをデスクトップに保存します。

※注:最後に「rb」というRubyの拡張子をつけるのをお忘れなく!

 

ターミナルに“Hello World !”と表示する


Sublime Textを開き、上記のソースコードをファイルに記述します。

これだけで、画面上に“Hello World !”と表示するプログラムが書けました。

次にターミナルを用いて、Rubyのプログラムを実行してみましょう。

[code lang=”shell”]
$ cd Desktop # helloworld.rbファイルがあるDesktopに移動する
$ ruby helloworld.rb # Rubyプログラムの実行
Hello World !
[/code]

 

【helloworld.rb】ファイルがある「Desktop」に移動してからRubyプログラムを実行しないと、エラーが出るので注意が必要です!

rubyコマンドによって、Rubyプログラムを実行することができました。

 

ターミナル上でrubyのプログラムを実行できる「irb」

ここまでで、Sublime Textに”Hello World !”という文字列を記述しましたが、
このような文字や数、時間、色などは、Rubyで扱えるようオブジェクトとしてデータ化します。

Ruby で扱える全ての値はオブジェクトで、文字列はRubyのオブジェクトの1つです。

その他にも、数値、配列、日付、時刻など、たくさんオブジェクトがありますが、
代表的な

  • 文字列オブジェクト
  • 数値オブジェクト

について、詳しくご紹介させていただきたいと思います。

「文字列オブジェクト」と「数値オブジェクト」について説明する前に、ターミナルから簡単なrubyのプログラムを動かすことのできる「irb」をご紹介します。

[code lang=”ruby”]
$ irb
irb(main):001:0> "irb is useful."
=> "irb is useful." # 実行結果
[/code]

ターミナルに、「irb」と入力すると、起動します。

irbを起動した後、上記の例のようにプログラムを入力してEnterキーを押すと実行でき、結果が返ってきます。
ここでは、”irb is useful.”という文字列を生成したため、”irb is useful.”という文字が結果として返ってきました。

irbで日本語を入力すると、文字化けする可能性があるので、注意してください!

[code lang=”ruby”]
$ irb
irb(main):001:0> "irb is useful."
=> "irb is useful."
irb(main):002:0> exit # irbを終了
$
[/code]

irbを終了する時は、「exit」と入力してEnterキーを押します。

irbは、簡単なrubyのプログラムを動かす練習をするのに便利です!

 

文字を表示する、文字列オブジェクト

[code lang=”ruby”]
"Hello World !" # ダブルクオーテーション
‘Hello World !’ # シングルクオーテーション
[/code]

 

文字を「 ”(ダブルクオーテーション) 」 、もしくは「 ’(シングルクオーテーション) 」で囲むことで、文字列を生成することができます。

「 ”(ダブルクオーテーション) 」 、「 ’(シングルクオーテーション) 」
どちらでも文字列を生成することは可能ですが、
「 ”(ダブルクオーテーション) 」のみ、特殊文字と変数展開が使用可能である
という違いがあります。

はじめに、特殊文字とは・・・
テキストとして入力できない、特殊な文字のことで、
代表的な例が「改行」です。

例として、「\n (改行)」を使用すると・・・

[code lang=”ruby”]
# ダブルクオーテーションの場合
a = "Hello \n World"

puts a

Hello
World

# シングルクオーテーションの場合
b = ‘Hello \n World’

puts b

Hello\\n World
[/code]

 

「 ”(ダブルクオーテーション) 」の場合は、改行が正しく反映されていますが、
「 ’(シングルクオーテーション) 」の場合は、改行が反映されません。

その他、「\t(タブ)」「\s(空白・スペース)」「\b(バックスペース)」など、
様々な特殊文字があります。

次に、変数展開とは・・・
変数展開を使用する場合の例を挙げて説明します。

program = “Ruby”という変数を使いたい時・・・

[code lang=”ruby”]
program = ”Ruby”

# ダブルクオーテーションの場合
c = "Hello World, #{program}"

puts c

Hello World, Ruby

# シングルクオーテーションの場合
d = ‘Hello World, #{program}’

puts d

Hello World, \#{program}
[/code]

 

#{ }の波括弧の中に変数名「program」を入れると、
「 ”(ダブルクオーテーション) 」の場合は展開してくれますが、
「 ’(シングルクオーテーション) 」の場合はそのまま出てしまっています。

このように、変数展開を利用することで、文字列の中に変数等を組み込むことができます。

#{ }の波括弧の中には、文字列・数値・演算式・変数・配列などを利用することが可能です。

 

文字列の操作

次に文字列の連結をしてみます。

[code lang=”ruby”]
irb(main):001:0> "Hello" + "World !"  # 文字列を連結する
=> "Hello World !"

irb(main):002:0> "#{"Hello" "World !"}" # 文字列を連結する
=> "Hello World !"
[/code]

 

2つの文字列は、「+」もしくは「#{ }」を使って連結させることができます。

文字列を繰り返す場合は・・・

[code lang=”ruby”]
$ irb
irb(main):001:0> puts "Ruby" * 10
RubyRubyRubyRubyRubyRubyRubyRubyRubyRuby
=> nil
[/code]

 

*(アスタリスク)を使って、文字列を繰り返し表示させることができます。

 

数値の操作

[code lang=”ruby”]
irb(main):001:0> puts 100  # putsを用いて、数値を入力する
100
=> nil

irb(main):002:0> puts -1.11 # 小数、負の値も出力可能
-1.11
=> nil
[/code]

 

数字を入力するたけで、数値オブジェクトを生成することができます。
数字は整数だけでなく、小数や負の値も出力することが可能です。

 

文字列と数字の連結

では、文字と数字を連結するにはどうすれば良いのでしょうか。

[code lang=”ruby”]
irb(main):001:0> puts "This is " + 100.to_s + "yen." # 文字列と数値を連結する
=> "This is 100yen."
[/code]

to_sメソッドを利用することで、文字列と数字を連結することができます。

 

to_sメソッドは、数値オブジェクトを文字列に変換してくれる、数値オブジェクトのメソッドです。つまり、to_sメソッドによって「100」という数値が文字列に変換され、連結されたことになります。

※ 逆に文字列を数字に変換したい場合は、to_iメソッドを使用します!

 

「メソッド」とは何なのか

ところで・・・
to_sメソッドについてお話しましたが、このメソッドについてもご紹介しておきたいと思います。

オブジェクトに何らかの処理を行わせる場合はメソッドとして定義しておく必要があり、メソッドを使ってオブジェクトを操作します。

メソッドによって関数や処理が呼ばれ、処理の終わりに呼び出されて返ってくる値を「返り値」と言います。

「メソッド」、「返り値」は頻出ワードでよく使用します。様々な「メソッド」、「返り値」がありますので、
実際に必要となった時に検索して、覚えて・・・を繰り返していきたいですね!

 

Rubyの演算子

最後に、基本となるRubyの演算子についても書いておきたいと思います。

最低限覚えておくべき、「代数演算子」「比較演算子」について、順に説明していきます。

 

代数演算子

[code lang=”ruby”]
a + b # 加算
a – b # 減算
a * b # 乗算
a / b # 除算
a % b # 剰余(a を b で割った余り)
a ** b # a の b 乗
[/code]

比較演算子

[code lang=”ruby”]
a < b # a は b よりも小さい
a > b # a は b よりも大きい
a <= b # a は b 以下である
a >= b # a は b 以上である
a == b # a と b は等しい
a != b # a と b は等しくない
[/code]

こちらもirbを使って、やってみます!

ここでは、aに「10」、bに「5」を代入してみたいと思います。

 

代数演算子 – irbを使ってやってみる

[code lang=”ruby”]
irb(main):001:0> 10 + 5
=> 15

irb(main):002:0> 10 – 5
=> 5

irb(main):003:0> 10 * 5
=> 50

irb(main):004:0> 10 / 5
=> 2

irb(main):005:0> 10 % 5
=> 0

irb(main):006:0> 10 ** 5
=> 100000
[/code]

それぞれ、計算結果が「返り値」として返ってきます。

比較演算子– irbを使ってやってみる

[code lang=”ruby”]
irb(main):001:0> 10 < 5
=> false

irb(main):002:0> 10 > 5
=> true

irb(main):003:0> 10 <= 5
=> false

irb(main):004:0> 10 >= 5
=> true

irb(main):005:0> 10 == 5
=> false

irb(main):006:0> 10 != 5
=> true
[/code]

値同士を比較する時に使用する比較演算子では、返り値は true / false となります。

式が正しい場合は「true」、式が間違いの場合は「false」が返り値となります。
その他、いろいろな値を代入して、試してみて下さい!

 


以上、今回はRubyファイルを作成し、

irbを使ってプログラムを書いてみるところまでご紹介させていただきました。
基礎ですが大事な内容です!

過去記事


DACエンジニア採用情報

  関連記事

no image
Angular.jsのvalueとfactoryの違いを考える

次のようなHTMLがあったとする。 [code language=”html”] <!doctype html> <html lang="jp" ng-app="App"> <head> <me …

ディープラーニングで「顔が似ているAKB48のメンバーを教えてくれるbot」を構築

概要 こんにちは、システム開発部の中村です。 今回は、Facebook Messenger APIを利用して、 画像をアップロードすると、似ているAKB48のメンバーを教えてくれるbotを実装しました。 尚、ディープラーニングやTensorFlowそのものの解説というより、 「エンジンとしてディープ …

プログラミング初心者がswiftでゲームアプリ的なものを作ってみた。

こんにちは、DAC2年目のkumataです。 普段は素敵な先輩方に囲まれてインフラ周りのお仕事をさせて頂いていますが、 今回は業務とは全く関係ないプログラミングをやってみました。 全く初心者なのですが、swift+Xcodeで簡単にスマホゲーム的なものが作れました。 初心者の目線から作成方法をつらつ …

no image
【小ネタ】Javascriptのconsoleオブジェクトをもっと便利に使う方法

すごく便利なconsoleオブジェクトですが、ブラウザによってサポートされているメソッドが なかったり、そもそもconsoleオブジェクトが使えなかったりと、たまに不便だったりします。 そんなときによく使う便利なコード。 [code language=”javascript” …

Railsたった14行でアドサーバーAPIができた話

こんにちは。駆け出しエンジニアの近江です。 最近Railsにハマっているので、私が2年間担当しているアドサーバの、簡易版をRailsで作ってみました。 広告やキャンペーンを登録する管理画面はある前提で、ここからたった14行追加するだけでアドサーバーのHTTP APIを作りたいと思います。ついでに配信 …

iOS端末情報をTreasureDataに送るアプリをswiftで作ってみた。

はじめまして、2年目のOyamanです。 通常業務とは別のことになりますが、Swiftに触れる機会が少しあったので、スマホ関連の記事を書かせていただきます。 はじめに SwiftとTreasureDataのSDKを使って、 iOSの端末情報をTreasureDataへ送るアプリを作ってみます。 今回 …

no image
【未経験からのRuby on Rails – 第1回】楽しく書けるプログラミング言語 “Ruby” とは

こんにちは、はじめまして。新卒1年目のmatsuari(女子)です。 この度、Rubyの勉強を始めることになりまして、 まずはたくさんあるプログラミング言語の中で、なぜ自分がRubyを学ぶのか? しっかりと把握した上で学習に取り組んでいきたいと考え、『Rubyとは何か?』調べました。 超基礎的なこと …

no image
Polymer core-ajax の使い方

Polymerのcore-ajaxの使い方。 まずは、index.html [code language=”html” title=”index.html”] <!doctype html> <html> <head&gt …

ナイーブベイズで羽生さんと羽生くんを分類してみた

はじめに こんにちは。システム開発部の中村です。 機械学習についての理解を促進するため、 データから分類モデルを自動で構築する古典的な方法である、 ナイーブベイズ分類器を実装してみました。 最近はCloudVisionAPIなど専ら画像解析が流行っていますが、 自分のような初学者には敷居が高そうだっ …

no image
gulp.jsで広告タグの開発環境を整える

SEOの観点から、サイト表示速度の高速化のためJavaScriptファイルから不用な空白や改行、 コメントを除去したりやローカル変数名を短縮するminifyが奨励されていますが、 これはタスクランナーのgulp.jsとプラグインを使って自動化する事が可能です。 ※gulpの基本的な使い方については下 …