S tart!   Ruby
S tart!   Ruby 偉そうにしてる人 の自己紹介 名前 : 榎原 明生 P.N.   : MitiM (未知夢) 仕事 : 開発者やってます 主に業務系です 最近はホント何でも屋、 MP 以外はたいてい齧ってます 隠れ Agiler ...
・ なぜ Ruby ? ・  Smalltalk の思想を模倣した設計思想 ・ 基本的な構文 ・  Ruby らしさ S tart!   Ruby
なぜ Ruby ? *  開発現場を効率良く回す * OSS フレームワークを効果的に採用する *  自動化できる部分はできうる限り自動化する 短期化 する開発 3 ヶ月 単位の開発が増えてきた! 開発者は黙って 徹夜 休出 を耐えるしかないのか?
なぜ Ruby ? 自動化 できる部分はできうる限り自動化する * Ci 等大きなツールは OSS を利用 * Db にリソースを放り込むとか細かい 糊的 ツールが必要 ->  つくらにゃ!
なぜ Ruby ? 自動化するためには ツール をつくらにゃ! *  ツールのキモは「 素早く実装 」「 使いながらメンテ 」 *  開発対象の言語で作る! -> c# にしても Java にしても重厚感はいなめない * Excel のマクロ!...
なぜ Ruby ? 開発用ツールを LL で書くことの 有用性 Perl 、 Python 、 Ruby とあるけれど…  *  糊 として手軽である *  開発効率 がとってもいい *  大抵の ライブラリ が揃っている ->  ライブラリマ...
趣味です!!   なぜ Ruby ?
Smalltalk の思想を模倣した設計思想 ほとんど全てが オブジェクト *  メソッドも オブジェクト *  クラス定義も オブジェクト *  詳しく: クラス構造の定義とグローバルオブジェクト化宣言を 同時に書いている * nil(Jav...
Smalltalk の思想を模倣した設計思想 全てが オブジェクト だとどうなの? *  全てが何かのクラスに所属している *  全てに操作のためのメソッドが存在する オブジェクト じゃないもの *  式 ( メソッド扱いを除く ) *  制御...
Smalltalk の思想を模倣した設計思想 式 ? *  値 を返すもの ・ メソッド ・ 演算 ・ 制御構文
Smalltalk の思想を模倣した設計思想 ほとんど全てが メソッド *  演算子もメソッド ・ 再定義が可能 ・  ValueObject の "==" は同値性を保証するのに大活躍 メソッドじゃない演算子 =  ?: ...
Smalltalk の思想を模倣した設計思想 メッセージ・ドリブン DuckTyping  -  「もしもそれが アヒル のように歩き、 アヒル のように鳴くのなら、それは アヒル である」 *  メッセージ・パッシングした先のオブジェクトが ...
基本的な構文 命名規則 定数 大文字で始まる 変数 小文字で始まる 慣習 1.   クラス名はパスカル記法 2.  メソッド名、変数名は _ 区切りの小文字 3.  定数名は _ 区切りの大文字 class HogeHoge def hoge_...
基本的な構文 変数とシンボル 変数のスコープ ruby のスコープの思想「最小単位はブロック (not  メソッド、 not  式 ) 」 ruby の変数の思想「変数のスコープはなるべく局所化しろ」 スコープ= ブロック・ローカル スコープ=...
基本的な構文 メソッド の定義 引数なし 引数あり 複数の引数あり、初期化付き 可変長引数 メソッドのスコープは基本的にパブリック def  bark end def  bark(time) end def  bark(time, voice=...
基本的な構文 クラス の定義 class  CurDog < Dog PEDIGREE = &quot; 雑種 &quot; attr_reader  :name def  initialize(name) @name = name end d...
基本的な構文 クラス の定義 ポイント 1.  new は特別なメッセージ。メソッドとして独自定義できない。 2.  initialize は new した時に自動で呼ばれるメソッド。引数を加えることができる。 3.  継承したい時は   < ...
基本的な構文 クラス・オブジェクトのインスタンス ( メソッド / アトリビュート ) へのアクセス 基本は &quot; . &quot; を使う  dog = CurDog.new(&quot; ポチ &quot;) dog.bark(&q...
制御構文 基本的な構文 コメント #  コメント 使える演算子 |  ^  &  <=>  ==  ===  =~  >  >=  <  <=  <<  >> +  -  *  /  %  **  ~  +@  -@  []  []=  ` =...
制御構文 条件分岐 許容条件 if  条件式  then 実行文 elsif  条件式  then 実行文 else 実行文 end 実行文  if  条件式 否定条件 unless  条件式  then 実行文 else 実行文 end 実行...
基本的な構文 制御構文 繰り返し while while  条件式  do 実行文 end 実行文  while  条件式 until until  条件式  do 実行文 end 実行文  until  条件式 for for  変数  in...
制御構文 基本的な構文 例外構文 例外を発生させる raise  例外タイプ raise  例外タイプ ,  メッセージ raise  メッセージ 例外ブロック begin 実行文 rescue  例外タイプ  =>  変数  then レスキ...
基本的な構文 制御構文 ほかのファイルを組み込む 組み込みたい位置で  拡張子 &quot;.rb&quot; は不要。 基本的には、カレントディレクトリからの相対パスで指定する。 ただし、 gems でインストールしたライブラリの場合、たいて...
制御構文 基本的な構文 シンタックス・シュガー Ruby は記述を簡便にするため、インスタンス生成に関する シンタックス・シュガー を用意している Array のインスタンス生成 Hash のインスタンス生成 String のインスタンス生成 ...
基本的な構文 ここまでできたら Java でフツーにできる事は できるようになる !
Ruby らしさ 文字列で遊ぼう! シンプルな文字列は '' を使う string = ' これは文字列です。 ' ん~~、普通!  ちょっとフォーマットしたい時には &quot;&quot; を使う 1.  バックスラッシュ記法でコントロール...
Ruby らしさ 文字列で遊ぼう! 主なバックスラッシュ記法 長文!ヒアドキュメント たとえば、 HTML のテンプレートな部分とか… たとえば、メールの長い典型文とか… そんな時はヒアドキュメント ちなみに、 <<'EOS' ~ EOS  と...
Ruby らしさ ここから先の前提知識: ブロック ブロック とは ? スコープ の最小単位  do 実行文 end { 実行文 } または { ~ } の方が do ~ end より少しだけ優先度が高い
Ruby らしさ ブロック付きメソッド(いわゆるクロージャ) 使い方 def hoge(ary) ret = &quot;result:&quot; ary.each do |i| ret += i end return ret end または...
ブロック付きメソッド(いわゆるクロージャ) Ruby らしさ イテレータ 10 回ループを普通にやると  ブロック付メソッドを使うと … あんまり変わらないかな? でも、じつはこんなやり方も for 文より自然っぽくない?  for i in...
Ruby らしさ ブロック付きメソッド(いわゆるクロージャ) ブロック付きメソッドの作り方 def hoge 実行文 yield 実行文 end def hoge 実行文 yield(item) 実行文 end 引数があるときは
Ruby らしさ 動性の高い Ruby のリフレクション リフレクションという認識すらないくらい、「普通のこと」になっている。 これもまた、動的言語で「すべてがオブジェクト」の世界観が成せる技。 次のような動的拡張が可能になっている。 既存のク...
Ruby らしさ 動性の高い Ruby のリフレクション 既存のオブジェクトにメソッドを拡張する クラスにメソッドを拡張すると、なにかとメンドクサイ問題が出る場合がある。 そんな時は、対象となる オブジェクト にだけメソッドを拡張する。 arr...
Ruby らしさ 動性の高い Ruby のリフレクション いちいち一個ずつメソッドを書き換えたり、メンドクサくない?って時には MixIn モジュールとは「 機能的に同じものをまとめて定義しておく 」機能のこと。 クラスとは違い、継承ができない...
module KeyNameListItem def value @name = '' unless defined? @name @key = @name unless defined? @key if (@key == @name) ret...
GUI で「このクラスをリスト表示したい!」というときにさらっと 動性の高い Ruby のリフレクション Ruby らしさ class Section include KeyNameListItem end というように、 クラス再定義 で組み...
これらの再定義をうまく使っていくと… Java や C# にありがちな XxxUtil とか XxxHelper とかいったクラスが必要ないという事に気づくはず! Ruby らしさ 動性の高い Ruby のリフレクション
Ruby でもドキュメンテーション RDoc を使ってみよう! 修飾してみよう! RDoc の &quot; 書きどころ &quot; は、 JavaDoc などと同じ。 クラスの前 、 メソッドの前 、 シンボルの前 、 ファイルのトップ な...
Ruby でもドキュメンテーション RDoc を使ってみよう! 修飾してみよう! 見出し <H1> ~ <H3> は #=  見出しレベル 1 #==  見出しレベル 2 #===  見出しレベル 3 箇条書きは、 -(*) で ・ 。 + で...
コンソール! これだけは覚えておきたい!コマンド コンソールでいろいろ試す $  irb コンソール上でインタラクティブに実行できる Ruby 。 ソースの保存以外は何でも「 Ruby のソースのように」記述し、その場で実行できる。 こんな構文...
これだけは覚えておきたい!コマンド ライブラリをダウンロードする $  gem install [ ライブラリ名 ] 空白区切りで、複数ライブラリを一気にダウンロードすることも可能。 ちなみに、依存ライブラリがあった場合は、勝手にダウンロードさ...
たくさんあるよ!ライブラリ ライブラリ! とても紹介しきれないので、いくつか絞って。 そのほとんどは宝石箱 (gems) の中に……  役割 ライブラリ名 URL XML ライブラリ  ( 標準添付 ) REXML http://www.ger...
最後に… さあ!いま、 Ruby という 自由の羽 を得た !! 飛び立とう !! めくるめく オブジェクト の世界へ !!   カッコイイ事言います
Upcoming SlideShare
Loading in...5
×

Start!! Ruby

1,807

Published on

1/30 に行った、 Thrive on development 勉強会で使用したスライドです。
Rubyの基本について語っています。

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,807
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Start!! Ruby

  1. 1. S tart! Ruby
  2. 2. S tart! Ruby 偉そうにしてる人 の自己紹介 名前 : 榎原 明生 P.N.   : MitiM (未知夢) 仕事 : 開発者やってます 主に業務系です 最近はホント何でも屋、 MP 以外はたいてい齧ってます 隠れ Agiler です Ruby 暦 : 出会いは 1998 年ごろ 当時は Unix で動かすのが当たり前という言語で、 Windows 上に環境を構築するのが難しかった プログラム:言語マニアの毛があります けっこう重度の TDDer かつ迷える TDDer です なんでお前が喋るの?:なりゆきです!
  3. 3. ・ なぜ Ruby ? ・ Smalltalk の思想を模倣した設計思想 ・ 基本的な構文 ・ Ruby らしさ S tart! Ruby
  4. 4. なぜ Ruby ? * 開発現場を効率良く回す * OSS フレームワークを効果的に採用する * 自動化できる部分はできうる限り自動化する 短期化 する開発 3 ヶ月 単位の開発が増えてきた! 開発者は黙って 徹夜 休出 を耐えるしかないのか?
  5. 5. なぜ Ruby ? 自動化 できる部分はできうる限り自動化する * Ci 等大きなツールは OSS を利用 * Db にリソースを放り込むとか細かい 糊的 ツールが必要 -> つくらにゃ!
  6. 6. なぜ Ruby ? 自動化するためには ツール をつくらにゃ! * ツールのキモは「 素早く実装 」「 使いながらメンテ 」 * 開発対象の言語で作る! -> c# にしても Java にしても重厚感はいなめない * Excel のマクロ! -> null と Nothing の嵐に眩暈が * WindowsScriptingHost を使う! -> Office は OLE で使えるけど、ライブラリ不足が否めない… * LL は??
  7. 7. なぜ Ruby ? 開発用ツールを LL で書くことの 有用性 Perl 、 Python 、 Ruby とあるけれど… * 糊 として手軽である * 開発効率 がとってもいい * 大抵の ライブラリ が揃っている -> ライブラリマネージャ (cpan 、 egg 、 gem) で ネットから 楽々 インストール で、なんで Ruby なの?
  8. 8. 趣味です!! なぜ Ruby ?
  9. 9. Smalltalk の思想を模倣した設計思想 ほとんど全てが オブジェクト * メソッドも オブジェクト * クラス定義も オブジェクト * 詳しく: クラス構造の定義とグローバルオブジェクト化宣言を 同時に書いている * nil(Java の null) すらも オブジェクト * NullObject パタンが簡単に!
  10. 10. Smalltalk の思想を模倣した設計思想 全てが オブジェクト だとどうなの? * 全てが何かのクラスに所属している * 全てに操作のためのメソッドが存在する オブジェクト じゃないもの * 式 ( メソッド扱いを除く ) * 制御構文 -> 「式」として扱われる * 定義構文 * シンタックス・シュガー
  11. 11. Smalltalk の思想を模倣した設計思想 式 ? * 値 を返すもの ・ メソッド ・ 演算 ・ 制御構文
  12. 12. Smalltalk の思想を模倣した設計思想 ほとんど全てが メソッド * 演算子もメソッド ・ 再定義が可能 ・ ValueObject の &quot;==&quot; は同値性を保証するのに大活躍 メソッドじゃない演算子 = ?: .. ... ! not && and || or ::
  13. 13. Smalltalk の思想を模倣した設計思想 メッセージ・ドリブン DuckTyping - 「もしもそれが アヒル のように歩き、 アヒル のように鳴くのなら、それは アヒル である」 * メッセージ・パッシングした先のオブジェクトが ・ 「何のクラスか」が大事なのではない ・ 「 そのメソッドを持っている / 持っていない 」が大事 * 持ってなかったらどうなる? ・ NoMethodError が飛ぶ
  14. 14. 基本的な構文 命名規則 定数 大文字で始まる 変数 小文字で始まる 慣習 1. クラス名はパスカル記法 2. メソッド名、変数名は _ 区切りの小文字 3. 定数名は _ 区切りの大文字 class HogeHoge def hoge_hoge hoge_hoge = 0 HOGE_HOGE = &quot;hoge&quot;
  15. 15. 基本的な構文 変数とシンボル 変数のスコープ ruby のスコープの思想「最小単位はブロック (not メソッド、 not 式 ) 」 ruby の変数の思想「変数のスコープはなるべく局所化しろ」 スコープ= ブロック・ローカル スコープ= インスタンス スコープ= クラス スコープ= グローバル hoge @hoge @@hoge $hoge シンボル 同名の変数に対してリンクを張っている。 :hoge
  16. 16. 基本的な構文 メソッド の定義 引数なし 引数あり 複数の引数あり、初期化付き 可変長引数 メソッドのスコープは基本的にパブリック def bark end def bark(time) end def bark(time, voice=&quot; ばう &quot;) end def bark(*voice) end
  17. 17. 基本的な構文 クラス の定義 class CurDog < Dog PEDIGREE = &quot; 雑種 &quot; attr_reader :name def initialize(name) @name = name end def bark(voice=&quot; ばう &quot;) p voice end def wait shit end def self.cute p &quot; きゅぅーん &quot; end private :shit def shit p &quot; ポトリ &quot; end end ruby の面白いところ: クラスとは「クラスオブジェクトの定数」にしか過ぎない。 クラスオブジェクト?? クラス定義に従ってインスタンスを生成できる インスタンス工場 のこと。
  18. 18. 基本的な構文 クラス の定義 ポイント 1. new は特別なメッセージ。メソッドとして独自定義できない。 2. initialize は new した時に自動で呼ばれるメソッド。引数を加えることができる。 3. 継承したい時は < [ 継承元 ] と記述する。 4. インスタンス変数を公開したい時は、 シンボルを使って、 attr_accessor 、 attr_reader 、 attr_writer を指定する 5. メソッドを非公開にしたいときは、シンボルを使って、 private 、 protected を 指定する 6. クラスメソッド (static なメソッド ) を書くときは self. をメソッド名の前に付ける ※ この self は、じつはクラスオブジェクト自身を指している 慣習 1. クエリー系メソッドは、メソッド名の最後を &quot;?&quot; で終える。 2. とくに ValueObject で、インスタンスの内容を変更するメソッドは、 メソッド名の最後を &quot;!&quot; で終える。
  19. 19. 基本的な構文 クラス・オブジェクトのインスタンス ( メソッド / アトリビュート ) へのアクセス 基本は &quot; . &quot; を使う dog = CurDog.new(&quot; ポチ &quot;) dog.bark(&quot; わおーん &quot;) dog.wait 定数にアクセスする場合は &quot; :: &quot; を使う p CurDog::PEDIGREE ちなみに メソッド呼び出し時の &quot; () &quot; は省略もできる dog = CurDog.new &quot; ポチ &quot; dog.bark &quot; わおーん &quot; ただし 引数括りの () は演算式括りの () よりも優先度が高い math.calc (a-b)+c なんてやるとハマるから、要注意
  20. 20. 制御構文 基本的な構文 コメント # コメント 使える演算子 | ^ & <=> == === =~ > >= < <= << >> + - * / % ** ~ +@ -@ [] []= ` =+ =- =* =/ =% =** = ?: .. ... ! not && and || or :: <=> 大小比較 === [ 左辺 ] に [ 右辺 ] が含まれるか =~ 正規表現で比較 += -= etc [ 左辺 ] に [ 右辺 ] を計算した結果を [ 左辺 ] に代入する (自己代入) ちなみに、 ++ や -- は無い。
  21. 21. 制御構文 条件分岐 許容条件 if 条件式 then 実行文 elsif 条件式 then 実行文 else 実行文 end 実行文 if 条件式 否定条件 unless 条件式 then 実行文 else 実行文 end 実行文 unless 条件式 ケース条件 case 評価式 when 式 then 実行文 else 実行文 end 基本的な構文
  22. 22. 基本的な構文 制御構文 繰り返し while while 条件式 do 実行文 end 実行文 while 条件式 until until 条件式 do 実行文 end 実行文 until 条件式 for for 変数 in 範囲式 do 実行文 end じつは for 文はほとんど使わない 10.times do |i| end した方が楽だしね 途中で制御を抜ける等 break 、 next 、 redo 、 retry が使える
  23. 23. 制御構文 基本的な構文 例外構文 例外を発生させる raise 例外タイプ raise 例外タイプ , メッセージ raise メッセージ 例外ブロック begin 実行文 rescue 例外タイプ => 変数 then レスキュー文 else 一般的なレスキュー文 ensure クローズ文 end
  24. 24. 基本的な構文 制御構文 ほかのファイルを組み込む 組み込みたい位置で 拡張子 &quot;.rb&quot; は不要。 基本的には、カレントディレクトリからの相対パスで指定する。 ただし、 gems でインストールしたライブラリの場合、たいていはライブラリ名だけで大丈夫。 そのかわり、次の require を必ず入れること。 require ' ファイル名 ' require ' ディレクトリ / ファイル名 ' require 'rubygems'
  25. 25. 制御構文 基本的な構文 シンタックス・シュガー Ruby は記述を簡便にするため、インスタンス生成に関する シンタックス・シュガー を用意している Array のインスタンス生成 Hash のインスタンス生成 String のインスタンス生成 Regexp のインスタンス生成 Fixnum のインスタンス生成 Float のインスタンス生成 array = [val1, val2] hash = {key1=>val1, key2=>val2} string = 'ruby' regexp = /ruby/ num = 1 float = 0.1
  26. 26. 基本的な構文 ここまでできたら Java でフツーにできる事は できるようになる !
  27. 27. Ruby らしさ 文字列で遊ぼう! シンプルな文字列は '' を使う string = ' これは文字列です。 ' ん~~、普通! ちょっとフォーマットしたい時には &quot;&quot; を使う 1. バックスラッシュ記法でコントロール文字を埋め込みたい 2. 変数の値を文字列にフォーマッティングしたい こんな用途に。 age = 18 string = &quot; これは 文字列です。 ボク永遠の #{age} 歳!! &quot; &quot; #{} &quot; の中は、かならず「式」として評価されるので、変数名がそのまま表記できる。 ちなみに、単なる計算式でも OK
  28. 28. Ruby らしさ 文字列で遊ぼう! 主なバックスラッシュ記法 長文!ヒアドキュメント たとえば、 HTML のテンプレートな部分とか… たとえば、メールの長い典型文とか… そんな時はヒアドキュメント ちなみに、 <<'EOS' ~ EOS と書けば、 '' 囲みの文字列と同等の扱いになり、 <<&quot;EOS&quot; ~ EOS と書けば、 &quot;&quot; 囲みの文字列と同等の扱いになる。 STRING = <<&quot;EOS&quot; これは 文字列です。 ボク永遠の #{age} 歳!! EOS タブ 改行 キャリッジリターン f 改ページ  バックスペース a ベル e エスケープ s 空白 nn 8 進数表記 xnn 16 進数表記 cx C-x コントロール文字 (x は ASCII 文字 ) x 文字 x そのもの
  29. 29. Ruby らしさ ここから先の前提知識: ブロック ブロック とは ? スコープ の最小単位 do 実行文 end { 実行文 } または { ~ } の方が do ~ end より少しだけ優先度が高い
  30. 30. Ruby らしさ ブロック付きメソッド(いわゆるクロージャ) 使い方 def hoge(ary) ret = &quot;result:&quot; ary.each do |i| ret += i end return ret end または def hoge(ary) ret = &quot;result:&quot; ary.each { |i| ret += i } return ret end 1. hoge メソッドから ary の each を呼び出す 2. each メソッド内から、ブロックが呼ばれる 2-1. |i| に each からの引数 (Array の内容 ) が渡る 2-2. ret に、渡された引数がどんどん連結される 3. ary の内容をすべて連結した文字列を返す
  31. 31. ブロック付きメソッド(いわゆるクロージャ) Ruby らしさ イテレータ 10 回ループを普通にやると ブロック付メソッドを使うと … あんまり変わらないかな? でも、じつはこんなやり方も for 文より自然っぽくない? for i in [0..9] do p i end [0..9].each do |i| p i end 10.times do |i| p i end open/close 制御 ファイルを開いて閉じるを普通にやると ブロック付きメソッドを使うと 何が便利かって、 Java や C# で起きがちな「クローズするためだけに延々と try - finally 記述が感染していく」がないこと! 例外ブロックも最適化できる! file = nil begin file = File.open(&quot;hoge.txt&quot;) 実行文 ensure file.close unless file == nil end File.open(&quot;hoge.txt&quot;) do |file| 実行文 end
  32. 32. Ruby らしさ ブロック付きメソッド(いわゆるクロージャ) ブロック付きメソッドの作り方 def hoge 実行文 yield 実行文 end def hoge 実行文 yield(item) 実行文 end 引数があるときは
  33. 33. Ruby らしさ 動性の高い Ruby のリフレクション リフレクションという認識すらないくらい、「普通のこと」になっている。 これもまた、動的言語で「すべてがオブジェクト」の世界観が成せる技。 次のような動的拡張が可能になっている。 既存のクラスにメソッドを拡張する 既存の Array クラスに hoge というメソッドを追加する場合、次のように書けば良い。 class Array def hoge end end これ、なんと組み込みクラスにも可能。 もちろん、 既存のメソッドを書き換える ことも可能!
  34. 34. Ruby らしさ 動性の高い Ruby のリフレクション 既存のオブジェクトにメソッドを拡張する クラスにメソッドを拡張すると、なにかとメンドクサイ問題が出る場合がある。 そんな時は、対象となる オブジェクト にだけメソッドを拡張する。 array = [] def array.hoge end
  35. 35. Ruby らしさ 動性の高い Ruby のリフレクション いちいち一個ずつメソッドを書き換えたり、メンドクサくない?って時には MixIn モジュールとは「 機能的に同じものをまとめて定義しておく 」機能のこと。 クラスとは違い、継承ができないし、インスタンスの生成もできない。 「 GUI でのコントローラをモジュールで表現」のような使い方をする。 「そのクラスの直接的な機能じゃないけれど、副次的に必要になるユーティリティ的機能」などをモジュール化しておくと、なにかと便利。
  36. 36. module KeyNameListItem def value @name = '' unless defined? @name @key = @name unless defined? @key if (@key == @name) return @name end return &quot;#{@key} - #{@name}&quot; end attr_reader :key end 動性の高い Ruby のリフレクション Ruby らしさ というモジュールをつくっておいて たとえば
  37. 37. GUI で「このクラスをリスト表示したい!」というときにさらっと 動性の高い Ruby のリフレクション Ruby らしさ class Section include KeyNameListItem end というように、 クラス再定義 で組み込んでしまえる。 もちろん、オブジェクトにも MixIn section = Section.new section.extend KeyNameListItem
  38. 38. これらの再定義をうまく使っていくと… Java や C# にありがちな XxxUtil とか XxxHelper とかいったクラスが必要ないという事に気づくはず! Ruby らしさ 動性の高い Ruby のリフレクション
  39. 39. Ruby でもドキュメンテーション RDoc を使ってみよう! 修飾してみよう! RDoc の &quot; 書きどころ &quot; は、 JavaDoc などと同じ。 クラスの前 、 メソッドの前 、 シンボルの前 、 ファイルのトップ など。 # ドキュメンテーション と、コメントのように書くだけで OK 。 作成者やライセンス情報などの書き方 #Authors:: MitiM #Version:: 1.0 #Copyright:: Copyright (C) MitiM, 2010. All rights reserved. #License:: Ruby License 基本的に :: で区切れば、好きな項目を作成可能。
  40. 40. Ruby でもドキュメンテーション RDoc を使ってみよう! 修飾してみよう! 見出し <H1> ~ <H3> は #= 見出しレベル 1 #== 見出しレベル 2 #=== 見出しレベル 3 箇条書きは、 -(*) で ・ 。 + でナンバリング。 #- レベル 1 # - レベル 2 #+ レベル 1 # + レベル 2 RDoc 内でコメントにしたいなら #-- # この中はドキュメンテーションされない #++ RDoc として書き出すのは $ rdoc [ ソースファイル .rb]
  41. 41. コンソール! これだけは覚えておきたい!コマンド コンソールでいろいろ試す $ irb コンソール上でインタラクティブに実行できる Ruby 。 ソースの保存以外は何でも「 Ruby のソースのように」記述し、その場で実行できる。 こんな構文、できるの?この動きは何? 迷ったときは、まず irb ! ドキュメントを見る $ ri [ クラス名 ]#[ メソッド名 ] . 区切りでも OK 。 英語だけれど、知りたいクラスやメソッドがその場でわかる。
  42. 42. これだけは覚えておきたい!コマンド ライブラリをダウンロードする $ gem install [ ライブラリ名 ] 空白区切りで、複数ライブラリを一気にダウンロードすることも可能。 ちなみに、依存ライブラリがあった場合は、勝手にダウンロードされる。 $ gem list で、インストールされているライブラリの一覧も表示可能。 RSpec でテストをする $ spec -c -fs [ テストコード名 ] いちいちテストの説明を見なくてもいいときは、 -fs を外す。 Windows は win32console (gem でインストール ) が入っていないとカラー表示できないので、 注意! コンソール!
  43. 43. たくさんあるよ!ライブラリ ライブラリ! とても紹介しきれないので、いくつか絞って。 そのほとんどは宝石箱 (gems) の中に…… 役割 ライブラリ名 URL XML ライブラリ ( 標準添付 ) REXML http://www.germane-software.com/software/XML/rexml/docs/tutorial.html HTML パーサ Nokogiri http://route477.net/rubyscraping/?Nokogiri Oracle インタフェース ruby-oci8 http://ruby-oci8.rubyforge.org/ja/index.html Excel 操作ライブラリ spreadsheet http://rubyforge.org/projects/spreadsheet/ Ruby 製 Make rake http://rake.rubyforge.org/ ご存知、総合 Web フレームワーク Ruby on Rails http://rubyonrails.org/
  44. 44. 最後に… さあ!いま、 Ruby という 自由の羽 を得た !! 飛び立とう !! めくるめく オブジェクト の世界へ !! カッコイイ事言います
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×