【未経験からの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のプログラムを実行してみましょう。

$ cd Desktop          # helloworld.rbファイルがあるDesktopに移動する
$ ruby helloworld.rb  # Rubyプログラムの実行
Hello World !

 

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

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

 

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

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

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

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

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

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

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

$ irb
irb(main):001:0> "irb is useful."
=> "irb is useful."                # 実行結果

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

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

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

$ irb
irb(main):001:0> "irb is useful."
=> "irb is useful."
irb(main):002:0> exit              # irbを終了
$

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

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

 

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

"Hello World !" # ダブルクオーテーション
'Hello World !' # シングルクオーテーション

 

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

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

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

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

# ダブルクオーテーションの場合
a = "Hello \n World"

puts a

Hello
 World

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

puts b

Hello\\n World

 

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

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

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

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

program = ”Ruby”

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

puts c

Hello World, Ruby

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

puts d

Hello World, \#{program}

 

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

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

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

 

文字列の操作

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

irb(main):001:0> "Hello" + "World !"    # 文字列を連結する
=> "Hello World !"

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

 

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

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

$ irb
irb(main):001:0> puts "Ruby" * 10
RubyRubyRubyRubyRubyRubyRubyRubyRubyRuby
=> nil

 

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

 

数値の操作

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

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

 

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

 

文字列と数字の連結

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

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

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

 

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

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

 

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

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

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

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

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

 

Rubyの演算子

最後に、基本となる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 よりも大きい
a <= b # a は b 以下である
a >= b # a は b 以上である
a == b # a と b は等しい
a != b # a と b は等しくない

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

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

 

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

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

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

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

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

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

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

 


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

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

過去記事


DACエンジニア採用情報

  関連記事

chain
PyStanによるはじめてのマルコフ連鎖モンテカルロ法

はじめに こんにちは。システム開発部の中村です。 社内で行っている『データ解析のための統計モデリング入門』(所謂緑本)の輪読会に参加した所、 大変わかりやすい本だったものの、Macユーザには悲しい事に実装サンプルがWinBUGSだったため、 9章の一般化線形モデルのベイズ推定によるアプローチをPyt …

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

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

curry
【小ネタ】JSで要素の組み合わせを列挙する

下記のような、キーの数や要素数が可変のデータの組み合わせを、列挙するjavascriptコードです。 pythonにはitertoolなどの順列・組み合わせ計算を行う定番ライブラリがあるようです。 やっている事ですが、イメージとしては組み合わせを数列に置き換えています。 1桁目が2進数、3桁目が3進 …

index
Android 非同期処理についてまとめてみた

Androidには、UIに影響を与えないよういくつか非同期処理が用意されています。 今回は非同期処理の代表的な ・Service ・IntentService ・HandlerThread について違いを踏まえながらまとめます! 非同期処理について(http://codezine.jp/articl …

4
【未経験からのRuby on Rails – 第4回】Railsアプリケーション開発をしよう! 〜開発の準備編〜

こんにちは。新卒のmatsuariです。 Rubyについてまだまだ知るべきことはたくさんありますが、とにかく早くアプリを作りたい! ということで、今回はアプリ開発の準備に取り掛かっていきます。 Rubyはアプリを作成しながら、同時に学んでいきたいと思います。 Railsアプリケーション開発の準備《 …

スクリーンショット 2015-07-31 16.41.25
【未経験からのRuby on Rails – 第3回】変数と定数

こんにちは。新卒1年目のmatsuariです。 今回はRubyに限らずプログラミングを学ぶ上で非常に重要となる「変数と定数」について、ご紹介していきます。 変数とは・・・ オブジェクトを一時的に格納しておく箱で、オブジェクトを識別するために利用します。 言葉だけでは理解が難しいかと思いますので、まず …

no image
Polymer on Rails

Web Componentsをご存知だろうか。これが普及すればWebの開発は画期的に変わるだろう。 説明すると長くなるので、LIGさんのにその辺はお任せして。(この記事読んでください。) 簡単に言えば、下記にあるような新たに提案されたブラウザ向けAPIの総称。 Custom Elements, 説明 …

androidsdk10
SDKってどうやって作ってるの?【Android編】

こんにちは。4度目の投稿です。 現在私はAndroidのSDKを開発しています。 javaにもAndroidにもSDKにも手を出したのは初めてなので、最初はそもそもSDKのイメージが湧かず、ふわふわした状態で始めました。 SDKと調べても「あるソフトウェアを開発するために必要なプログラムや文書などを …

promise
ECMAScript6を使ってみた ~「Promise」編

ECMAScript6とは 一応ちょっとだけ説明しておくと、 ECMAScript(エクマスクリプト)は、Ecma Internationalによって標準化されたスクリプト言語で、バージョン6が2015 年 6 月 17 日に標準仕様として発行されました。(以下、ES6と呼びます) ES6ではcon …

14391226325_8c35c2a652_z
D3.jsとその活用事例について

D3.jsとは? D3とは「Data Driven Document」の略で、データに基づいてドキュメントを操作するための JavaScript ライブラリです。 ご存知の方も多いと思いますが、ちょっとだけD3.jsの基本的な使い方、そして弊社プラットフォームでの利用についてご紹介したいと思います。 …