                                                                           Rubyの概要         Rubyの概要         Summary of Rub...
                                                                   Rubyの概要 内容        1. Rubyとは        2. Rubyの処理系        ...
                                                                              Rubyの概要 1. Rubyとは    ●   Rubyとは         –  ...
                                                                       Rubyの概要 1. Rubyとは    ●   Rubyの特徴         –     オブジ...
                                                                       Rubyの概要 2. Rubyの処理系    ●   Rubyの処理系         –     ...
                                                                       Rubyの概要 2. Rubyの処理系    ●        主なその他の実装         –...
                                                                      Rubyの概要 2. Rubyの処理系    ●   MRIバージョン体系         –    ...
                                                                       Rubyの概要 2. Rubyの処理系    ●        実行モデル         –   ...
                                                                        Rubyの概要 3. Rubyのセットアップ    ●   Windows用 RubyInstal...
                                                                            Rubyの概要 3. Rubyのセットアップ    ●   yum         –  ...
                                                                  Rubyの概要 3. Rubyのセットアップ    ●   RubyGems         –     Ru...
                                                                       Rubyの概要 3. Rubyのセットアップ    ●   RVM(Ruby Version Man...
                                                                        Rubyの概要 4. スクリプトの作成と実行    ●        簡潔な文法         ...
                                                                      Rubyの概要 4. スクリプトの作成と実行    ●   Rubyの実行         –    ...
                                                                              Rubyの概要 4. スクリプトの作成と実行    ●        プログラムの簡潔...
                                                               Rubyの概要 4. スクリプトの作成と実行    ●   プログラム例(Javaの場合)    import ja...
                                                                   Rubyの概要 4. スクリプトの作成と実行    ●   プログラム例(Rubyの場合)         ...
                                                                      Rubyの概要 5. 基本文法    ●        型宣言が不要(動的型付け言語)        ...
                                                                  Rubyの概要 5. 基本文法    ●        すべてのデータがオブジェクト         –   ...
                                                                      Rubyの概要 5. 基本文法    ●        ブロック付きメソッド         –   ...
                                                                           Rubyの概要 5. 基本文法    ●        データ型について         –...
                                                                  Rubyの概要 5. 基本文法    ●        数値リテラルについて         –     多倍...
                                                                  Rubyの概要 5. 基本文法    ●        文字列リテラルとシンボル(唯一性を維持)       ...
                                                                    Rubyの概要 5. 基本文法    ●        変数について         –     接頭文字...
                                                                      Rubyの概要 5. 基本文法    ●        配列について         –     配列...
                                                                      Rubyの概要 5. 基本文法    ●        イテレータ         –     for...
                                                                        Rubyの概要 5. 基本文法    ●        メソッド         –     すべ...
                                                                  Rubyの概要 5. 基本文法    ●        メソッド         –     ブロック付きメソ...
                                                                            Rubyの概要 6. クラスについて    ●        クラスの定義        ...
                                                                     Rubyの概要 6. クラスについて    ●        継承(サブクラス化)         – ...
                                                                 Rubyの概要 6. クラスについて    ●        (継承ではなく)クラス定義を追加可能.      ...
                                                                      Rubyの概要 6. クラスについて    ●        オープンクラス         –   ...
                                                                        Rubyの概要 6. クラスについて    ●        モジュール         –   ...
                                                                            Rubyの概要 7. Ruby on Rails    ●   Ruby on Rails...
                                                             Rubyの概要 7. Ruby on Rails    ●   Railsの全体概要                  ...
                                                                 Rubyの概要 7. Ruby on Rails    ●   Railsアプリケーション作成概要       ...
                                                                     Rubyの概要 7. Ruby on Rails    ●   Railsアプリケーション作成概要   ...
                                                                    Rubyの概要 7. Ruby on Rails    ●   Railsアプリケーション作成概要    ...
                                                                       Rubyの概要 7. Ruby on Rails    ●   Railsアプリケーション作成概要 ...
                                                                      Rubyの概要 7. Ruby on Rails    ●   O/Rマッピング         – ...
                                                                          Rubyの概要 7. Ruby on Rails    ●    Railsアプリケーション作...
                                                                   Rubyの概要 7. Ruby on Rails    ●   Railsアプリケーション作成概要     ...
                                                                                                                        R...
                                                                                                                        R...
                                                                     Rubyの概要 8. おわりに    ●        まとめ         –     Rubyは純...
                                                                     Rubyの概要 9. おまけ    ●        プログラミング例         $ irb --...
                                                                  Rubyの概要 9. おまけ    ●        プログラミング例        >> "student"...
                                                                       Rubyの概要 9. おまけ    ●        プログラミング例         def fa...
Upcoming SlideShare
Loading in …5
×

Summary of Ruby

1,312 views

Published on

Rubyの概要

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,312
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Summary of Ruby

  1. 1.  Rubyの概要 Rubyの概要 Summary of Ruby as Programming Language 2011年05月26日 鹿児島大学 学術情報基盤センター 学術情報処理研究部門 古屋 保 furuya@cc.kagoshima-u.ac.jpMay 26, 2011 © Tamotsu FURUYA, All rights reserved. 1
  2. 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. 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. 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. 5.  Rubyの概要 2. Rubyの処理系 ● Rubyの処理系 – MRI(Matzs 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. 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. 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. 8.  Rubyの概要 2. Rubyの処理系 ● 実行モデル – 1.8系統  ソースコードを解析して構文木を構築  構文木を巡りながらプログラムを実行 – 1.9系統  ソースコードを解析して構文木を構築  構文木をバイトコードに変換する  独自の仮想マシン(YARV)で実行 参考: Yugui,初めてのRuby,オライリージャパンMay 26, 2011 © Tamotsu FURUYA, All rights reserved. 8
  9. 9.  Rubyの概要 3. Rubyのセットアップ ● Windows用 RubyInstaller – サイトURL http://rubyinstaller.org/May 26, 2011 © Tamotsu FURUYA, All rights reserved. 9
  10. 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. 11.  Rubyの概要 3. Rubyのセットアップ ● RubyGems – Rubyのパッケージ管理システム – Ruby 1.9より標準添付(1.8系では別パッケージ) – PerlのCPANに似ている – 外部ライブラリを簡単に導入,管理可能. # Railsライブラリをインストールする $ gem install rails # インストール済みのライブラリを表示する $ gem list # ライブラリを検索する $ gem list -r sqliteMay 26, 2011 © Tamotsu FURUYA, All rights reserved. 11
  12. 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.7May 26, 2011 © Tamotsu FURUYA, All rights reserved. 12
  13. 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. 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. 15.  Rubyの概要 4. スクリプトの作成と実行 ● プログラムの簡潔さについて – 次の課題をJava,Rubyそれぞれで実現させる場合のソースを 比較してみる.  課題1行ごとに数値が記録されている任意のテキストファイルを 読み込み,そこに記録されている数値をすべて2倍にした値を画 面に出力させなさい. テキストファイル例(data.txt) 実行例 10 $ PROG data.txt 20 20 30 40 40 60 50 80 100May 26, 2011 © Tamotsu FURUYA, All rights reserved. 15
  16. 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. 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 100May 26, 2011 © Tamotsu FURUYA, All rights reserved. 17
  18. 18.  Rubyの概要 5. 基本文法 ● 型宣言が不要(動的型付け言語) – ポリモーフィズム(多様性,多態性)  データ型が異なっても同様に処理が可能 # 変数 i に整数を代入する i = 6 # 文字列の代入も可能 i = "Hello" # 文字列の長さを求める puts i.size #=> 3 # 配列の代入も可能 i = [1, 2, 3, 4, 5] puts i.size #=> 3May 26, 2011 © Tamotsu FURUYA, All rights reserved. 18
  19. 19.  Rubyの概要 5. 基本文法 ● すべてのデータがオブジェクト – 数値や文字列等の基本的なデータもオブジェクト # 通常の変数への文字列の代入 str1 = "hello" str2 = "hello" # それぞれのオブジェクトIDを確認 str1.object_id #=> 2152236160 str2.object_id #=> 2152228620 # 文字列の中身自体は等しい str1 == str2 #=> true # オブジェクトは異なる str1.equal?(str2) #=> falseMay 26, 2011 © Tamotsu FURUYA, All rights reserved. 19
  20. 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} endMay 26, 2011 © Tamotsu FURUYA, All rights reserved. 20
  21. 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] #=> 5May 26, 2011 © Tamotsu FURUYA, All rights reserved. 21
  22. 22.  Rubyの概要 5. 基本文法 ● 数値リテラルについて – 多倍長整数をサポート(メモリが許す限り幾らでも大きな整 数を表現可能) – 実数値はIEEE754の倍精度浮動小数点数(少なくとも仮数部 52bit,指数部11bitの精度) – 整数のサイズ,実数の精度,共にシステムに依存 a = 2**64 # 2の64乗 puts a #=> 18446744073709551616 a = 1.0 / 3 printf("%.20fn", a) #=> 0.33333333333333331483May 26, 2011 © Tamotsu FURUYA, All rights reserved. 22
  23. 23.  Rubyの概要 5. 基本文法 ● 文字列リテラルとシンボル(唯一性を維持) # 結合と反復 puts "hello " + "world!" #=> "hello world!" puts "hello " * 3 #=> "hello hello hello " # 通常の変数への文字列(シンボル)の代入 str1 = :hello str2 = :hello # 値(文字列)は等しい str1 == str2 #=> true # オブジェクトも等しい(同一) str1.equal?(str2) #=> trueMay 26, 2011 © Tamotsu FURUYA, All rights reserved. 23
  24. 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. 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. 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 endMay 26, 2011 © Tamotsu FURUYA, All rights reserved. 26
  27. 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. 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. 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 #=> 1986May 26, 2011 © Tamotsu FURUYA, All rights reserved. 29
  30. 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. 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. 32.  Rubyの概要 6. クラスについて ● オープンクラス – 既に定義されているクラスに後から機能を追加可能. – (場合によっては)標準クラスも書き換え可能. class String まずは「length」メソッド undef length は無かったことにする. def lengchu return 12345 新たに「lengchu」メソッ end ドを追加してみる. end p "hello".length #=> エラー p "hello".lengchu #=> 12345May 26, 2011 © Tamotsu FURUYA, All rights reserved. 32
  33. 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. 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. 35.  Rubyの概要 7. Ruby on Rails ● Railsの全体概要 Railsは,これら複数のライブラリからなる フルスタックフレームワークである.May 26, 2011 © Tamotsu FURUYA, All rights reserved. 35
  36. 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. 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. 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. 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. 40.  Rubyの概要 7. Ruby on Rails ● O/Rマッピング – DBのレコードとRubyのオブジェクトをマップする. – テーブルのフィールドが,オブジェクトの属性となり,フィー ルド名がそのままアクセサとして定義される. – ActiveRecord(DB抽象レイヤモジュール)の機能 Postオブジェクト postsテーブルMay 26, 2011 © Tamotsu FURUYA, All rights reserved. 40
  41. 41.  Rubyの概要 7. Ruby on Rails ● Railsアプリケーション作成概要 – 既にCRUDアプリケーションは完成している. http://localhost:3000/postsMay 26, 2011 © Tamotsu FURUYA, All rights reserved. 41
  42. 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. 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-2010May 26, 2011 © Tamotsu FURUYA, All rights reserved. 43
  44. 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-2010May 26, 2011 © Tamotsu FURUYA, All rights reserved. 44
  45. 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. 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 +0900May 26, 2011 © Tamotsu FURUYA, All rights reserved. 46
  47. 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. 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

×