• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Try
 

Try

on

  • 764 views

 

Statistics

Views

Total Views
764
Views on SlideShare
569
Embed Views
195

Actions

Likes
2
Downloads
0
Comments
0

1 Embed 195

https://twitter.com 195

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Try Try Presentation Transcript

    • Rubyでトライ! 株式会社クルウィット 井澤 志充 Kanazawa.rb #7 「安心・安全・安定・信頼」できるインターネットサービスを13年3月31日日曜日
    • じこしょうかい 「安心・安全・安定・信頼」できるインターネットサービスを 213年3月31日日曜日
    • じこしょうかい • 井澤  志充  (いざわゆきみつ) 「安心・安全・安定・信頼」できるインターネットサービスを 213年3月31日日曜日
    • じこしょうかい • 井澤  志充  (いざわゆきみつ) 「安心・安全・安定・信頼」できるインターネットサービスを 213年3月31日日曜日
    • じこしょうかい • 井澤  志充  (いざわゆきみつ) • (株)クルウィットの取締役  兼  北北陸陸⽀支社⻑⾧長 「安心・安全・安定・信頼」できるインターネットサービスを 213年3月31日日曜日
    • じこしょうかい • 井澤  志充  (いざわゆきみつ) • (株)クルウィットの取締役  兼  北北陸陸⽀支社⻑⾧長 • 博⼠士(情報科学) 「安心・安全・安定・信頼」できるインターネットサービスを 213年3月31日日曜日
    • じこしょうかい • 井澤  志充  (いざわゆきみつ) • (株)クルウィットの取締役  兼  北北陸陸⽀支社⻑⾧長 • 博⼠士(情報科学) • ネットワークの委託研究・⾃自社サービス開発など 「安心・安全・安定・信頼」できるインターネットサービスを 213年3月31日日曜日
    • Rubyで一番嫌いなエラーメッセージ 「安心・安全・安定・信頼」できるインターネットサービスを 313年3月31日日曜日
    • Rubyで一番嫌いなエラーメッセージ NoMethodError: undefined method `XXX for nil:NilClass 「安心・安全・安定・信頼」できるインターネットサービスを 313年3月31日日曜日
    • Rubyで一番嫌いなエラーメッセージ NoMethodError: undefined method `XXX for nil:NilClass 目的1: こいつを消してやりたい! 「安心・安全・安定・信頼」できるインターネットサービスを 313年3月31日日曜日
    • なんで? オブジェクトが入ってると思ったら入ってなかったのにメ ソッド呼んでたわ… 「安心・安全・安定・信頼」できるインターネットサービスを 413年3月31日日曜日
    • なんで? オブジェクトが入ってると思ったら入ってなかったのにメ ソッド呼んでたわ… あーありがち。 「安心・安全・安定・信頼」できるインターネットサービスを 413年3月31日日曜日
    • なんで? 入力を元にしたオブジェクトって不定じゃないですか。 「安心・安全・安定・信頼」できるインターネットサービスを 513年3月31日日曜日
    • なんで? 入力を元にしたオブジェクトって不定じゃないですか。 不定入力を整形処理したあとに、 「安心・安全・安定・信頼」できるインターネットサービスを 513年3月31日日曜日
    • なんで? 入力を元にしたオブジェクトって不定じゃないですか。 不定入力を整形処理したあとに、 特定のオブジェクトが存在するかどうかをチェックしてから 「安心・安全・安定・信頼」できるインターネットサービスを 513年3月31日日曜日
    • なんで? 入力を元にしたオブジェクトって不定じゃないですか。 不定入力を整形処理したあとに、 特定のオブジェクトが存在するかどうかをチェックしてから methodを呼ぶよね。 「安心・安全・安定・信頼」できるインターネットサービスを 513年3月31日日曜日
    • なんで? 入力を元にしたオブジェクトって不定じゃないですか。 不定入力を整形処理したあとに、 特定のオブジェクトが存在するかどうかをチェックしてから methodを呼ぶよね。 このチェックの記述が冗長になりがち。 「安心・安全・安定・信頼」できるインターネットサービスを 513年3月31日日曜日
    • なんで? 入力を元にしたオブジェクトって不定じゃないですか。 不定入力を整形処理したあとに、 特定のオブジェクトが存在するかどうかをチェックしてから methodを呼ぶよね。 このチェックの記述が冗長になりがち。 目的2:チェックの記述をシンプルに! 「安心・安全・安定・信頼」できるインターネットサービスを 513年3月31日日曜日
    • XML入力 <?xml version="1.0" encoding="UTF-8"?> <kzrb> <!--member= handle: required, role: optional --> <member handle="wtnabe" role="staff"></member> <member handle="libero" role="staff"></member> <member handle="kiyohara"></member> </kzrb> handleは必須で、role はオプショナル このXMLをパースして表示するプログラムを作ってみる。 「安心・安全・安定・信頼」できるインターネットサービスを 613年3月31日日曜日
    • Nokogiri • http://nokogiri.org/ • XML/HTMLパーサ・ビルダ • XPATH/CSS3  セレクタサポート • インストール方法 • gem install nokogiri • 詳しくはおググりください。 「安心・安全・安定・信頼」できるインターネットサービスを 713年3月31日日曜日
    • パーサ その1 require nokogiri xml = Nokogiri::XML(open("kzrb.xml")) members = xml.xpath("//member") members.each { |member| puts member.attribute("handle").value if member.attribute("role").value == "staff" puts " =>staff" end } 「安心・安全・安定・信頼」できるインターネットサービスを 813年3月31日日曜日
    • xmlを切り出すとこんな感じで出てくる members (一部省略) => [#<Nokogiri::XML::Element name="member" attributes=[ #<Nokogiri::XML::Attr name="handle" value="wtnabe">, #<Nokogiri::XML::Attr name="role" value="staff"> ] >, #<Nokogiri::XML::Element name="member" attributes=[ #<Nokogiri::XML::Attr name="handle" value="libero">, #<Nokogiri::XML::Attr name="role" value="staff"> ] >, #<Nokogiri::XML::Element name="member" attributes=[ #<Nokogiri::XML::Attr name="handle" value="kiyohara"> ] >] ←Role オブジェクトが無い! 「安心・安全・安定・信頼」できるインターネットサービスを 913年3月31日日曜日
    • パーサ その1 require nokogiri xml = Nokogiri::XML(open("kzrb.xml")) members = xml.xpath("//member") members.each { |member| puts member.attribute("handle").value if member.attribute("role").value == "staff" puts " =>staff" end } 「安心・安全・安定・信頼」できるインターネットサービスを 1013年3月31日日曜日
    • 実行結果 その1 % ruby xml.rb wtnabe =>staff libero =>staff kiyohara xml.rb:9:in `block in <main>: undefined method `value for nil:NilClass (NoMethodError) from /Users/izawa/.rvm/gems/ruby-2.0.0-p0/gems/ nokogiri-1.5.9/lib/nokogiri/xml/node_set.rb:239:in `block in each : : 「安心・安全・安定・信頼」できるインターネットサービスを 1113年3月31日日曜日
    • パーサ その2 require nokogiri xml = Nokogiri::XML(open("kzrb.xml")) members = xml.xpath("//member") members.each { |member| puts member.attribute("handle").value if member.attribute("role") && ←オブジェクトの存在チェック member.attribute("role").value == "staff" puts " =>staff" end } 「安心・安全・安定・信頼」できるインターネットサービスを 1213年3月31日日曜日
    • 実行結果 その2 % ruby xml.rb wtnabe =>staff libero =>staff kiyohara % 「安心・安全・安定・信頼」できるインターネットサービスを 1313年3月31日日曜日
    • tryを使ってみる • Object#try  NilClass#try • active_̲supportで定義されているメソッド。 • argumentやblockを与えることができる。 • Person.try(:find,  1) • @people.try(:collect)  {|p|  p.name} • @person.try  {  |p|    p  "#{p.first_̲name#{p.last_̲name}"  } • Object#send  に似てるけど、NoMethodError   exception  が上がる代わりにnil  が返る。 「安心・安全・安定・信頼」できるインターネットサービスを 1413年3月31日日曜日
    • tryをつかうと… require nokogiri xml = Nokogiri::XML(open("kzrb.xml")) members = xml.xpath("//member") members.each { |member| puts member.attribute("handle").value if member.attribute("role") && member.attribute("role").value == "staff" puts " =>staff" end } 「安心・安全・安定・信頼」できるインターネットサービスを 1513年3月31日日曜日
    • tryをつかうと… require nokogiri xml = Nokogiri::XML(open("kzrb.xml")) members = xml.xpath("//member") members.each { |member| puts member.attribute("handle").value if member.attribute("role").try(:value) == "staff" puts " =>staff" end } 「安心・安全・安定・信頼」できるインターネットサービスを 1513年3月31日日曜日
    • tryをつかうと… require nokogiri xml = Nokogiri::XML(open("kzrb.xml")) members = xml.xpath("//member") members.each { |member| puts member.attribute("handle").value if member.attribute("role").try(:value) == "staff" puts " =>staff" end } すっきりした!! 「安心・安全・安定・信頼」できるインターネットサービスを 1513年3月31日日曜日
    • 注意点 •  active_̲support  2.x  系                require active_support •  active_̲support  3.x  系                require active_support/core_ext                  (または  active_support/all) 「安心・安全・安定・信頼」できるインターネットサービスを 1613年3月31日日曜日
    • • Thank  You! • If  you  have  any  comments, • please  send  to: • Mail:  izawa@izawa.org  /  izawa@clwit.co.jp • Twitter:  @Yukimitsu_̲Izawa 「安心・安全・安定・信頼」できるインターネットサービスを 1713年3月31日日曜日