苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

30
テーマ 2 Rubyで遊ぼう (1) 2015/07/08 苫小牧高専 ソフトウェアテクノロジー部

Transcript of 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

Page 1: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

テーマ2 Rubyで遊ぼう

(1)2015/07/08

苫小牧高専 ソフトウェアテクノロジー部

Page 2: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

今日の予定1. Rubyとは

2. Rubyのインストール

3. はじめてのRubyプログラミング

4. Magical Ruby Tour

Page 3: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

Rubyとは

Page 4: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

Rubyとは• オープンソースのオブジェクト指向スクリプト言語。

• インタプリタ言語である。→ C言語のようにコンパイルする事なく  サクッと書いてサクッと動かせる。

• 変数の型付けが柔軟である。変数宣言が不要である。→ 変数の型について心配する必要が無く、  手軽にプログラミングできる。

https://www.ruby-lang.org/ja/

Page 5: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

どんな所で使われているの?• ちょっとしたツールから大規模Webサイトまで。

COOKPAD(http://cookpad.com)

GitHub(https://github.com)

Page 6: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

こんなの作りました :)• クローラー→ Webサイトからデータを収集してデータベース化したりするプログラム。

• Webサイト→ 単なる自己紹介ページとしての役割以外に、ちょっとしたネタアプリを組み込んだりした。

• Twitter Bot→ 苫小牧高専News Botや、新着図書通知Botなど。

Page 7: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

最終的に

• 夏休みの合宿で、部内プロコンをやりたいと思っています。

• その時にRubyを使ってみたいなという所存。

Page 8: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
Page 9: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

Rubyのインストール

Page 10: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

Rubyのインストール• 今回は、学科内サーバー(jocalc1)にRubyをインストールします。

• TeraTermからjocalc1へログインしてください。

• 自分のPCを使う人は、各自インストールしておいてください。

Page 11: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

Rubyのインストール• インストール方法をブログにまとめておいたので各自やってください :)http://mktakuya-dev.hatenablog.com/entry/2015/06/18/183331

• ユーザ名に注意! (Windowsにログインする時のユーザ名と同じです。)

• わからないことがあったら気軽に聞いてください。

Page 12: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
Page 13: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

Hello, Ruby!

Page 14: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

Hello, Ruby!その前に

• ホームディレクトリに softech_ruby というディレクトリ(フォルダ)を作成しよう。

$ cd ~/ $ mkdir softech_ruby $ cd softech_ruby

• これから作るコードはここに保存していきましょう。

• cd コマンド: ディレクトリを移動するコマンド       ~/ はホームディレクトリを表す。

• mkdir コマンド: ディレクトリを作成するコマンド

Page 15: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

Hello, Ruby!• エディタを開いて以下のコードを入力し、hello.rbで保存。

puts "Hello, Ruby!"

• ruby hello.rb でコードを実行!

• C言語でやったHello, Worldと比べて サクッと書けてサクッと動くでしょ? :)

Page 16: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

irbを使ってみよう• Rubyの実行方法はひとつじゃない!

• irbを起動してみよう。

$ irb irb(main):001:0> puts "Hello, Ruby!"

• サクッと書いてサクッと動くので、ちょっとしたコード片を実行するのに便利!

Page 17: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
Page 18: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

Magical Ruby Tour

Page 19: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

Magical Ruby Tour• これからしばらくRubyの基礎をやっていきます。

• irbを起動しよう!

• コード中の#=> hogehogeは、出力結果を表します。

Page 20: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

画面に出力する• 画面に出力する方法もひとつじゃない!

# 改行付き puts "Hello, Ruby!”

# 改行なし(自分で ”¥n” を入れなければならない) print “Hello, Ruby!”

• 他にはp, printfなどもある。(pは後で触れる。)

Page 21: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

変数を使ってみる 1• C言語とは違い、変数宣言、型指定が不要。

name = “Takuya” puts name

age = 19 puts age

Page 22: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

変数を使ってみる 2• C言語でいうprintf的な事もできます。

name = “Takuya” age = 19

puts “私は#{name}です。年齢は#{age}です。”

• puts 変数名 や、puts “#{変数名}” で変数の中身を出力できます。

Page 23: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

変数を使ってみる 3• Rubyでは型についてのルールがゆるいので、変数名を的確につけてやらないとあとでコードを読む時に不便です。

• 適当にxやyと変数名をつけるのはやめて、nameやage、school_nameなど変数が何を示しているかわかるように命名しましょう。

• 変数名は以下のルールを守ること。

• 1文字目が英小文字、または ”_” で始まること。

• 予約語と呼ばれる、Ruby側ですでに定義されている単語は使えない。(ifやfor、endなど)

school_name = “苫小牧高専” end = 1535 # エラー! end_time = 1535

Page 24: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

四則演算 1• 数値の四則演算ができます。

a = 8 b = 5

puts a + b puts a - b puts a * b puts a / b puts a % b

Page 25: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

四則演算 2• 実数の四則演算もできます。

a = 8.0 b = 5.0

puts a + b puts a - b puts a * b puts a / b puts a % b

• ちょっとした電卓として使えます。

Page 26: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

Rubyのクラスについて• RubyではC言語のように型を指定して変数を宣言する必要はないが、 クラスと呼ばれる型のような物がある。

• Rubyプログラミングで扱うものはすべてオブジェクトである。 クラスとは、オブジェクトの種類のことである。

name = “Takuya” age = 19 height = 168.5

name.class # 文字列クラス #=> String

age.class # 整数クラス #=> Fixnum height.class # 実数(浮動小数点数)クラス #=> Float

Page 27: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

文字列について• “” や ‘’ で囲った表現は、文字列とみなされる。

• C言語では “” と ‘’ とで意味が違うが、Rubyではほとんど同じ。

name = “Takuya” puts name

name = ‘Takuya’ puts name

puts “My name is #{name}”

• “#{変数名}” の記法を使いたい場合は、 “” を使う。

Page 28: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

文字列について• 文字列は、足し算や掛け算ができる。first_name = “Takuya” last_name = “Mukohira”full_name = first_name + “ “ + last_name puts full_name

message = “Go!” puts message * 5 # “Go!Go!Go!Go!Go!” と表示される

Page 29: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

メソッド呼び出しをやってみる• Rubyでは扱うすべての物がオブジェクトである。各オブジェクトはメソッドを持つ。

name = “Takuya” # Stringクラスのオブジェクト

name.length() #=> 6

name.reverse #=> ayukaT

age = 19 # Fixnumクラスのオブジェクト age.odd? # age は 奇数かどうか調べる(true/false)#=> true

Page 30: 苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1

標準入力で遊んでみる• C言語でいうscanf的なものもある。

• nameの末尾には、改行が含まれるので、 文字列の末尾の改行文字を取り除く chomp! を使う。

name = STDIN.gets name.chomp!

puts “Hello, #{name}! How are you?”