Enviar búsqueda
Cargar
Summary of Ruby
•
0 recomendaciones
•
1,417 vistas
Tamotsu Furuya
Seguir
Rubyの概要
Leer menos
Leer más
Denunciar
Compartir
Denunciar
Compartir
1 de 48
Descargar ahora
Descargar para leer sin conexión
Recomendados
さくルビー.Net誕生
さくルビー.Net誕生
三七男 山本
Rubyな日々
Rubyな日々
Kazuhiro Nishiyama
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
hiroshi oshiba
osc_tokyo20100226
osc_tokyo20100226
Shoken Fujisaki
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
宏治 高尾
Tremaとtrema edgeの違い
Tremaとtrema edgeの違い
hiroshi oshiba
JavaScript.Next Returns
JavaScript.Next Returns
dynamis
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
Takuya Mukohira
Recomendados
さくルビー.Net誕生
さくルビー.Net誕生
三七男 山本
Rubyな日々
Rubyな日々
Kazuhiro Nishiyama
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
hiroshi oshiba
osc_tokyo20100226
osc_tokyo20100226
Shoken Fujisaki
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
宏治 高尾
Tremaとtrema edgeの違い
Tremaとtrema edgeの違い
hiroshi oshiba
JavaScript.Next Returns
JavaScript.Next Returns
dynamis
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
Takuya Mukohira
Management of Gems using Bundler.
Management of Gems using Bundler.
Tamotsu Furuya
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
Integration Technology of Ruby and DB.
Integration Technology of Ruby and DB.
Tamotsu Furuya
Ruby on RedHat Enterprise Linux
Ruby on RedHat Enterprise Linux
Tomoya Kawanishi
2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料
shogo yamada
Ruby Enterprise Environment
Ruby Enterprise Environment
Tomoya Kawanishi
mrubyでゲームを書いてみた
mrubyでゲームを書いてみた
Yousuke Kuroda
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
Uchio Kondo
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloud
Kazuki Aranami
mruby for embedded systems
mruby for embedded systems
masayoshi takahashi
Ruby Introduction
Ruby Introduction
YushiroDodo
20080730-WelcomeToLifeWithRuby
20080730-WelcomeToLifeWithRuby
Koji SHIMADA
VMを改めて学んで見る
VMを改めて学んで見る
kishima7
Mrubyの始め方
Mrubyの始め方
Masaki Muranaka
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Tomoya Kawanishi
Ruby on Rails3 Tutorial Chapter1
Ruby on Rails3 Tutorial Chapter1
Sea Mountain
JRuby on Rails
JRuby on Rails
Yoichiro Tanaka
mruby/c機能紹介20160329
mruby/c機能紹介20160329
shimane-itoc
PHPer のための Ruby 教室
PHPer のための Ruby 教室
higaki
Rumpを使ってみる
Rumpを使ってみる
Masaru Oki
Más contenido relacionado
Similar a Summary of Ruby
Management of Gems using Bundler.
Management of Gems using Bundler.
Tamotsu Furuya
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
Integration Technology of Ruby and DB.
Integration Technology of Ruby and DB.
Tamotsu Furuya
Ruby on RedHat Enterprise Linux
Ruby on RedHat Enterprise Linux
Tomoya Kawanishi
2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料
shogo yamada
Ruby Enterprise Environment
Ruby Enterprise Environment
Tomoya Kawanishi
mrubyでゲームを書いてみた
mrubyでゲームを書いてみた
Yousuke Kuroda
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
Uchio Kondo
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloud
Kazuki Aranami
mruby for embedded systems
mruby for embedded systems
masayoshi takahashi
Ruby Introduction
Ruby Introduction
YushiroDodo
20080730-WelcomeToLifeWithRuby
20080730-WelcomeToLifeWithRuby
Koji SHIMADA
VMを改めて学んで見る
VMを改めて学んで見る
kishima7
Mrubyの始め方
Mrubyの始め方
Masaki Muranaka
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Tomoya Kawanishi
Ruby on Rails3 Tutorial Chapter1
Ruby on Rails3 Tutorial Chapter1
Sea Mountain
JRuby on Rails
JRuby on Rails
Yoichiro Tanaka
mruby/c機能紹介20160329
mruby/c機能紹介20160329
shimane-itoc
PHPer のための Ruby 教室
PHPer のための Ruby 教室
higaki
Rumpを使ってみる
Rumpを使ってみる
Masaru Oki
Similar a Summary of Ruby
(20)
Management of Gems using Bundler.
Management of Gems using Bundler.
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Integration Technology of Ruby and DB.
Integration Technology of Ruby and DB.
Ruby on RedHat Enterprise Linux
Ruby on RedHat Enterprise Linux
2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料
Ruby Enterprise Environment
Ruby Enterprise Environment
mrubyでゲームを書いてみた
mrubyでゲームを書いてみた
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloud
mruby for embedded systems
mruby for embedded systems
Ruby Introduction
Ruby Introduction
20080730-WelcomeToLifeWithRuby
20080730-WelcomeToLifeWithRuby
VMを改めて学んで見る
VMを改めて学んで見る
Mrubyの始め方
Mrubyの始め方
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby on Rails3 Tutorial Chapter1
Ruby on Rails3 Tutorial Chapter1
JRuby on Rails
JRuby on Rails
mruby/c機能紹介20160329
mruby/c機能紹介20160329
PHPer のための Ruby 教室
PHPer のための Ruby 教室
Rumpを使ってみる
Rumpを使ってみる
Summary of Ruby
1.
Rubyの概要 Rubyの概要 Summary of Ruby as Programming Language 2011年05月26日 鹿児島大学 学術情報基盤センター 学術情報処理研究部門 古屋 保 furuya@cc.kagoshima-u.ac.jp May 26, 2011 © Tamotsu FURUYA, All rights reserved. 1
2.
Rubyの概要 内容 1. Rubyとは 2. Rubyの処理系 3. Rubyのセットアップ 4. スクリプトの作成と実行 5. 基本文法 6. クラスについて 7. Ruby on Rails 8. おわりに May 26, 2011 © Tamotsu FURUYA, All rights reserved. 2
3.
Rubyの概要 1. Rubyとは ● Rubyとは – まつもとゆきひろ(通称Matz)さんによって開発されたオブ ジェクト指向スクリプト言語 – 1993年開発開始〜1995年12月にfj上で発表された. – 主な適用分野 テキスト処理 システム管理 ネットワーク・プログラミング Webアプリケーション開発 (Ruby on Rails) – もちろんフリーソフトウエア 出典: オブジェクト指向スクリプト言語 Ruby, URL http://www.ruby-lang.org/ja/ May 26, 2011 © Tamotsu FURUYA, All rights reserved. 3
4.
Rubyの概要 1. Rubyとは ● Rubyの特徴 – オブジェクト指向言語 数値などプリミティブなものも含めて,すべてのデータがオブ ジェクトである. 多重継承に代わるMix-in機能を持つ 豊富なクラスライブラリ – マルチスレッド,GC,正規表現のサポート – 簡潔な文法 型宣言が不要 ブロック付きメソッド,イテレータ 「より良いPerl」,「ALGOLの皮を被ったLisp」などと呼ばれる 「より良いPerl」,「ALGOLの皮を被ったLisp」などと呼ばれる 参考: Yugui,初めてのRuby,オライリージャパン May 26, 2011 © Tamotsu FURUYA, All rights reserved. 4
5.
Rubyの概要 2. Rubyの処理系 ● Rubyの処理系 – MRI(Matz's Ruby Implementation) Matz自身によって開発されていた公式実装 C言語による実装(CRuby)で最も使用されている バージョン1.8系統と1.9系統が混在中 – YARV(Yet Another Ruby VM) 笹田耕一氏(東大大学院)により開発された処理系 バイトコードインタプリタ ● JIT方式でバイトコードにコンパイルされ,VM上で実行 Ruby 1.9以降よりMRIに正式組込み May 26, 2011 © Tamotsu FURUYA, All rights reserved. 5
6.
Rubyの概要 2. Rubyの処理系 ● 主なその他の実装 – JRuby Javaベースの実装のためプラットフォーム非依存 (JavaでRubyランタイムインタプリタを実装) JavaだけでRubyスクリプトが実行可能 RubyからJava APIが使用可能 – IronRuby .NET Framework上で動作する実装(JScriptと同様) DLR(Dynamic Language Runtime)上でRubyをサポート – MacRuby Objective-Cで書かれた実装(Mac OS X上で動作) May 26, 2011 © Tamotsu FURUYA, All rights reserved. 6
7.
Rubyの概要 2. Rubyの処理系 ● MRIバージョン体系 – 1.8系統 2003年8月に1.8.0をリリース,2011年5月現在1.8.7 現在広く利用されている,1.8系でしか動作しないライブラリも 存在 – 1.9系統 2007年12月に1.9.0をリリース,2011年5月現在1.9.2 評価器を書き直すことで実行効率を向上 Multilingualization(M17N)多数の文字エンコーディング RubyGems,Rakeが標準添付 「夢のRuby2.0」への足がかり May 26, 2011 © Tamotsu FURUYA, All rights reserved. 7
8.
Rubyの概要 2. Rubyの処理系 ● 実行モデル – 1.8系統 ソースコードを解析して構文木を構築 構文木を巡りながらプログラムを実行 – 1.9系統 ソースコードを解析して構文木を構築 構文木をバイトコードに変換する 独自の仮想マシン(YARV)で実行 参考: Yugui,初めてのRuby,オライリージャパン May 26, 2011 © Tamotsu FURUYA, All rights reserved. 8
9.
Rubyの概要 3. Rubyのセットアップ ● Windows用 RubyInstaller – サイトURL http://rubyinstaller.org/ May 26, 2011 © Tamotsu FURUYA, All rights reserved. 9
10.
Rubyの概要 3. Rubyのセットアップ ● yum – RPM系Linux(RedHat Linux,Fedora,CentOS等) – # yum install ruby ● apt – Debian GNU Linux ,Ubuntu Linux,Vine Linux等 – $ sudo apt-get install ruby ● MacPorts – $ sudo port install ruby19 +nosuffix – $ /opt/local/bin/ruby -v ==> Ruby 1.9 – $ /usr/bin/ruby -v ==> システムのRuby(Ver.1.8) May 26, 2011 © Tamotsu FURUYA, All rights reserved. 10
11.
Rubyの概要 3. Rubyのセットアップ ● RubyGems – Rubyのパッケージ管理システム – Ruby 1.9より標準添付(1.8系では別パッケージ) – PerlのCPANに似ている – 外部ライブラリを簡単に導入,管理可能. # Railsライブラリをインストールする $ gem install rails # インストール済みのライブラリを表示する $ gem list # ライブラリを検索する $ gem list -r sqlite May 26, 2011 © Tamotsu FURUYA, All rights reserved. 11
12.
Rubyの概要 3. Rubyのセットアップ ● RVM(Ruby Version Manager) – 複数のRuby環境を構築できるツール – 1.8系統と1.9系統の環境を簡単に切り替え可能 – RVMのインストール方法 Webサイト(http://rvm.beginrescueend.com/)に記載 # RVMを使用して1.9系統をインストール $ rvm install ruby-1.9.2 # RVMを使用して1.8系統をインストール $ rvm install ruby-1.8.7 # 1.9系統環境を利用する $ rvm use ruby-1.9.2 # 1.8系統環境を利用する $ rvm use ruby-1.8.7 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 12
13.
Rubyの概要 4. スクリプトの作成と実行 ● 簡潔な文法 – おまじない一切なし,いきなり書き始められる. – Javaと異なり,必ずしもクラスを定義する必要はない. – 式と式の区切りは改行だけでOK.(一応,セミコロン「;」 も利用可能) – 自動的にファイルを閉じる(ブロック付きメソッド). #!/usr/bin/ruby # -*- coding: utf-8 -*- puts "Hello World!" "こんにちは,世界!n".display ※1行目の「#!/usr/bin/ruby」はSheBang ※2行目は文字エンコーディングにUTF-8を指定している(マジックコメント) May 26, 2011 © Tamotsu FURUYA, All rights reserved. 13
14.
Rubyの概要 4. スクリプトの作成と実行 ● Rubyの実行 – インタプリタの実行 シェル上で実行する – 対話的実行環境(irb: interactive ruby) # Rubyプログラムの実行 $ ruby hello.rb # irbの実行 $ irb irb(main):001:0> Time.now => 2011-05-23 11:22:55 +0900 irb(main):002:0> quit $ May 26, 2011 © Tamotsu FURUYA, All rights reserved. 14
15.
Rubyの概要 4. スクリプトの作成と実行 ● プログラムの簡潔さについて – 次の課題をJava,Rubyそれぞれで実現させる場合のソースを 比較してみる. 課題1行ごとに数値が記録されている任意のテキストファイルを 読み込み,そこに記録されている数値をすべて2倍にした値を画 面に出力させなさい. テキストファイル例(data.txt) 実行例 10 $ PROG data.txt 20 20 30 40 40 60 50 80 100 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 15
16.
Rubyの概要 4. スクリプトの作成と実行 ● プログラム例(Javaの場合) import java.io.*; class Hoge { public static void main(String[] args) { String fname = args[0]; try{ BufferedReader br = new BufferedReader( new FileReader(fname)); while ((String line = br.readLine()) != null) System.out.println(Integer.parseInt(line) * 2); br.close(); } catch (IOException e) {} } } May 26, 2011 © Tamotsu FURUYA, All rights reserved. 16
17.
Rubyの概要 4. スクリプトの作成と実行 ● プログラム例(Rubyの場合) fname = ARGV[0] File::open(fname) { |f| f.each do |line| puts line.to_i * 2 end } $ ruby hoge.rb data.txt 20 40 60 80 100 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 17
18.
Rubyの概要 5. 基本文法 ● 型宣言が不要(動的型付け言語) – ポリモーフィズム(多様性,多態性) データ型が異なっても同様に処理が可能 # 変数 i に整数を代入する i = 6 # 文字列の代入も可能 i = "Hello" # 文字列の長さを求める puts i.size #=> 3 # 配列の代入も可能 i = [1, 2, 3, 4, 5] puts i.size #=> 3 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 18
19.
Rubyの概要 5. 基本文法 ● すべてのデータがオブジェクト – 数値や文字列等の基本的なデータもオブジェクト # 通常の変数への文字列の代入 str1 = "hello" str2 = "hello" # それぞれのオブジェクトIDを確認 str1.object_id #=> 2152236160 str2.object_id #=> 2152228620 # 文字列の中身自体は等しい str1 == str2 #=> true # オブジェクトは異なる str1.equal?(str2) #=> false May 26, 2011 © Tamotsu FURUYA, All rights reserved. 19
20.
Rubyの概要 5. 基本文法 ● ブロック付きメソッド – メソッドの呼び出しの後にブロックを付ける事が可能 object.method名 ( 引数1, … ) do | 変数 | …中略… end object.method名 ( 引数1, … ) { | 変数 | …中略… } a = [1,2,3,4] a.each do |i| a = [1,2,3,4] puts i b = a.map {|i| i * 2} end May 26, 2011 © Tamotsu FURUYA, All rights reserved. 20
21.
Rubyの概要 5. 基本文法 ● データ型について – 基本的なデータ型に加えて,配列型,範囲型,ハッシュ型が ある. a = 100 # 数値型 b = "Hello" # 文字列型 c = [1, 2, 3] # 配列型 d = 1..3 # 範囲型 # ハッシュ型 e = {"Apr" => 4, "May" => 5, "Jun" => 6} e = {:Apr => 4, :May => 5, :Jun => 6} puts e[:May] #=> 5 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 21
22.
Rubyの概要 5. 基本文法 ● 数値リテラルについて – 多倍長整数をサポート(メモリが許す限り幾らでも大きな整 数を表現可能) – 実数値はIEEE754の倍精度浮動小数点数(少なくとも仮数部 52bit,指数部11bitの精度) – 整数のサイズ,実数の精度,共にシステムに依存 a = 2**64 # 2の64乗 puts a #=> 18446744073709551616 a = 1.0 / 3 printf("%.20fn", a) #=> 0.33333333333333331483 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 22
23.
Rubyの概要 5. 基本文法 ● 文字列リテラルとシンボル(唯一性を維持) # 結合と反復 puts "hello " + "world!" #=> "hello world!" puts "hello " * 3 #=> "hello hello hello " # 通常の変数への文字列(シンボル)の代入 str1 = :hello str2 = :hello # 値(文字列)は等しい str1 == str2 #=> true # オブジェクトも等しい(同一) str1.equal?(str2) #=> true May 26, 2011 © Tamotsu FURUYA, All rights reserved. 23
24.
Rubyの概要 5. 基本文法 ● 変数について – 接頭文字により,インスタンス変数やクラス変数等を識別. – 変数は値ではなくオブジェクトへの参照を保持する. VAR = "constant" # 定数 $var = "global variable" # グローバル変数 var = "local variable" # ローカル変数 @var = "instance variable" # インスタンス変数 @@var = "class variable" # クラス変数 デフォルト値について ● インスタンス変数とグローバル変数は,nil(値がないことを示す値) ● 他の変数はすべて参照する前に代入が必要 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 24
25.
Rubyの概要 5. 基本文法 ● 配列について – 配列は変数同様オブジェクトへの参照を保持する. – v[0]は,実際はv[](0)というArray#[]メソッドである. v = [31,"foo",7,"hoge"] # 配列リテラル p v[1] #=> "foo" …添字参照 p v[-2] #=> 7 …負の添字も可能 v[1] = "boo" #=> [31,"boo",7,"hoge"] …添字代入 v[1,2] = "zoo",5 #=> [31,"zoo",5,"hoge"] arr = ["C","D","B","A"] p arr.sort #=> ["A","B","C","D"] arr.sort! #=> ["A","B","C","D"] 破壊的メソッド May 26, 2011 © Tamotsu FURUYA, All rights reserved. 25
26.
Rubyの概要 5. 基本文法 ● イテレータ – for文,while文よりもイテレータを多用. – each,times,upto,loop等がある. eachメソッド timesメソッド [1, 2, 3].each do |i| 3.times do |i| puts "Hello.#{i}" puts "Hello.#{i}" end end May 26, 2011 © Tamotsu FURUYA, All rights reserved. 26
27.
Rubyの概要 5. 基本文法 ● メソッド – すべてのメソッドは少なくとも1つのオブジェクトと対応 メソッドの定義例 メソッドの定義例(多値の返却) def kasan(x, y) def my_method(x) x + y return x, 1, 2 end end puts kasan(3, 5) a, *b = my_method(0) May 26, 2011 © Tamotsu FURUYA, All rights reserved. 27
28.
Rubyの概要 5. 基本文法 ● メソッド – ブロック付きメソッド ブロック付きメソッドの呼び出し例 ブロック付きメソッドの定義例 a, b = "apple", "banana" def my_method [1,2,3].each do |a| yield "apple" a, b = 1, 2 yield "banana" end end puts a, b my_method do |i| p i #=> "apple" end 2 #=> "apple" "banana" May 26, 2011 © Tamotsu FURUYA, All rights reserved. 28
29.
Rubyの概要 6. クラスについて ● クラスの定義 – クラス階層は単一階層(トップはObjectクラス※) – コンストラクタは initialize メソッド class Person def initialize puts "INIT." @b_year = 1986 end def foo puts @b_year end end p1 = Person.new #=> "INIT." p1.foo #=> 1986 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 29
30.
Rubyの概要 6. クラスについて ● 継承(サブクラス化) – class文に「<」とスーパークラス名を追加 class Person def foo puts "Hello!" 「Person」クラスの end サブクラス「Worker」 end を定義 class Worker < Person end w1 = Worker.new w1.foo #=> "Hello!" May 26, 2011 © Tamotsu FURUYA, All rights reserved. 30
31.
Rubyの概要 6. クラスについて ● (継承ではなく)クラス定義を追加可能. class Person def foo puts "Hello!" end 以前のクラス定義を end 破棄する事なく, class Person 新たな機能を追加定義 def foo することが可能 puts "Good bye" end end p1 = Person.new p1.foo #=> "Good bye" May 26, 2011 © Tamotsu FURUYA, All rights reserved. 31
32.
Rubyの概要 6. クラスについて ● オープンクラス – 既に定義されているクラスに後から機能を追加可能. – (場合によっては)標準クラスも書き換え可能. class String まずは「length」メソッド undef length は無かったことにする. def lengchu return 12345 新たに「lengchu」メソッ end ドを追加してみる. end p "hello".length #=> エラー p "hello".lengchu #=> 12345 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 32
33.
Rubyの概要 6. クラスについて ● モジュール – Mix-inとして使用される(多重継承の代わり) module SatsumaImo モジュールの定義 def msg (インスタンス化は不可) puts "..Imo.." end end モジュールを使用する際は include する class Shouchu < Osake include KomeKouji, SatsumaImo end s1 = Shouchu.new s1.msg #=> "..Imo.." May 26, 2011 © Tamotsu FURUYA, All rights reserved. 33
34.
Rubyの概要 7. Ruby on Rails ● Ruby on Rails(以下,Rails)とは – RubyによるWebアプリケーションフレームワーク – ライブラリとユーティリティプログラムのパッケージ – デンマークのDavid Heinemeier Hansson氏(通称DHH)によっ て開発 – MVC(Model-View-Controller)アーキテクチャをサポート – オープンソースウエアである – RubyGemsにより配布されている – Twitter※注,Groupon,楽天 参考: Ruby on Rails URL http://rubyonrails.org/ ※注 最近ではバックエンドやインフラを「Scala」に置き換えている May 26, 2011 © Tamotsu FURUYA, All rights reserved. 34
35.
Rubyの概要 7. Ruby on Rails ● Railsの全体概要 Railsは,これら複数のライブラリからなる フルスタックフレームワークである. May 26, 2011 © Tamotsu FURUYA, All rights reserved. 35
36.
Rubyの概要 7. Ruby on Rails ● Railsアプリケーション作成概要 – まずは,railsコマンドでスケルトン作成 – コマンド「rails new アプリケーション名」で作成可能. # Railsアプリケーションのスケルトン作成 $ rails new blog create create README create Rakefile create config.ru create .gitignore create Gemfile create app create app/controllers/ : May 26, 2011 © Tamotsu FURUYA, All rights reserved. 36
37.
Rubyの概要 7. Ruby on Rails ● Railsアプリケーション作成概要 – Webサーバ機能 コマンド「rails server」でRails付属のWebサーバが起動. # 作成されたディレクトリに移動 $ cd blog # アプリに必要なGemをインストール $ bundle install # Webサーバの起動 $ rails server => Booting WEBrick => Rails 3.0.4 application starting in ... => Call with -d to detach => Ctrl-C to shutdown server : http://localhost:3000/ May 26, 2011 © Tamotsu FURUYA, All rights reserved. 37
38.
Rubyの概要 7. Ruby on Rails ● Railsアプリケーション作成概要 – Scaffold データベース内のデータの登録,読み込み,更新,削除(CRUD 操作)のために必要なコード(モデル,コントローラ,ビュー のセット)を生成するしくみ # Railsコマンドでscaffoldを利用する $ rails generate scaffold Post name:string title:string content:text invoke active_record create db/migrate/20110309010212_create_posts.rb create app/models/post.rb invoke test_unit create 15個程度のファイル(モデル test/unit/post_test.rb : やビューなどのプログラム コード)を作成 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 38
39.
Rubyの概要 7. Ruby on Rails ● Railsアプリケーション作成概要 – rake(ビルドツール,MakeのRuby版)でデータベースのマイ グレーションを行う. # rakeコマンドでDBマイグレーションの実行 $ rake db:migrate == CreatePosts: migrating ================ -- create_table(:posts) -> 0.0021s == CreatePosts: migrated (0.0022s) ======= postsテーブルを自動生成 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 39
40.
Rubyの概要 7. Ruby on Rails ● O/Rマッピング – DBのレコードとRubyのオブジェクトをマップする. – テーブルのフィールドが,オブジェクトの属性となり,フィー ルド名がそのままアクセサとして定義される. – ActiveRecord(DB抽象レイヤモジュール)の機能 Postオブジェクト postsテーブル May 26, 2011 © Tamotsu FURUYA, All rights reserved. 40
41.
Rubyの概要 7. Ruby on Rails ● Railsアプリケーション作成概要 – 既にCRUDアプリケーションは完成している. http://localhost:3000/posts May 26, 2011 © Tamotsu FURUYA, All rights reserved. 41
42.
Rubyの概要 7. Ruby on Rails ● Railsアプリケーション作成概要 – 既にCRUDアプリケーションは完成している. 実際のテーブルには, レコード追加時のタイム スタンプまで保存されて いる. $ rails dbconsole SQLite version 3.7.4 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> select * from posts; 1|鹿児島太郎|はじめまして|こんにちは,初めての書き込み.|2011-05-24 09:43:31.... 2|薩摩花子|こんにちは|よろしくお願いします.|2011-05-24 09:44:02.458322|201.... sqlite> May 26, 2011 © Tamotsu FURUYA, All rights reserved. 42
43.
Rubyの概要 8. おわりに ● Rubyの利用状況 – 2010年10月現在,デプロイ されているRubyのバージョ ンの統計 – 1.9系への移行メリット 多言語化 VMによる高速化 – 懸念材料 1.9未対応のライブラリが 存在する. 出典: RailsLab .:. State of the Stack: A Ruby on Rails Benchmarking Report - 05 October 2010 URL http://railslab.newrelic.com/2010/10/05/state-of-the-stack-a-ruby-on-rails-benchmarking-report-05-october-2010 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 43
44.
Rubyの概要 8. おわりに ● Railsの利用状況 – 2010年10月現在,デプロイ されているRailsのバージョ ンの統計 – Rails3への移行メリット HTML5へのいち早い対応 jQueryも正式サポート Ruby1.9への本格対応 パフォーマンスの向上 柔軟なカスタマイズ性 参考: 松田明著「詳解Rails3」WEB+DB PRESS Vol.58 技術評論社 出典: RailsLab .:. State of the Stack: A Ruby on Rails Benchmarking Report - 05 October 2010 URL http://railslab.newrelic.com/2010/10/05/state-of-the-stack-a-ruby-on-rails-benchmarking-report-05-october-2010 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 44
45.
Rubyの概要 8. おわりに ● まとめ – Rubyは純粋なオブジェクト指向言語である. – すべてのデータがオブジェクトである. – 予約語あるいは演算子の様で実はメソッド (例 include, 1+2, a[0],等) – Conversion over Configuration(設定より規約) – Ruby1.8からRuby1.9へ,Rails2からRails3へのバージョン移行の 問題 – 公式実装MRI(cRuby)が先を行っているが,JRubyも気になる 存在. – とにかく,プログラミングしていて楽しい! May 26, 2011 © Tamotsu FURUYA, All rights reserved. 45
46.
Rubyの概要 9. おまけ ● プログラミング例 $ irb --simple-prompt >> p 3.14156.round(2) => 3.14 >> require 'active_support/all' => true >> Time.now => 2011-05-24 19:16:52 +0900 >> p 2.weeks.ago => 2011-05-10 19:17:03 +0900 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 46
47.
Rubyの概要 9. おまけ ● プログラミング例 >> "student".pluralize => "students" >> "ruby".pluralize => "rubies" >> %w[apple banana orange].sample(1) => ["orange"] >> %w[apple banana orange].sample(1) => ["apple"] May 26, 2011 © Tamotsu FURUYA, All rights reserved. 47
48.
Rubyの概要 9. おまけ ● プログラミング例 def fact(n) if n == 1 1 else n * fact(n - 1) end end print "20!=", fact(20) #=> 20!=2432902008176640000 (1..20).reduce{|s, x| s * x} (1..20).reduce(:*) 参考: まつもとゆきひろ,Rubyビジネスの将来 May 26, 2011 © Tamotsu FURUYA, All rights reserved. 48
Descargar ahora