SlideShare a Scribd company logo
1 of 24
Rubyを使って
まとめサイトをさくっと作ろう
(2009年7月Rubyist九州初心者向けコーナー)




       橋本 幸樹(koki-h)
  http://d.hatena.ne.jp/koki-h
  @20090704 Rubyist九州 定例会
今日のお題
●   フィジカルコンピューティングモジュール
    ”Pepper” のまとめサイトを先日作ったので
    その作業でいかにRubyを利用して楽をしたか、
    についてお話します。
●   上記の話題を通してRuby初心者の方にRubyの便
    利な機能やよく使われるライブラリについて情
    報をご提供できたらうれしいです。
●   まあいろいろツッコミどころはあると思いま
    す。
”Pepper”とは
●   フィジカルコンピューティングモジュール
    (Gainer互換)
●   パソコンと電子部品の橋渡しをする機器
●   これがあれば以下のようなプログラムを各種の
    言語で作成できます。
    –   たとえばパソコンの画面をクリックしたらLED点灯
        (PCからLEDを制御)
    –   たとえば警告通知メール(「サーバが止まっ
        た!」)が到着したら回転灯点灯(PCから回転灯を
        制御)
    –   たとえば大統領スイッチをおしたらWEBサイトで声
        明(大統領スイッチからPCを制御)
大統領スイッチ
  カバーを..




                                 カパッとして




                                                     ぐっと押す!




「シリコンハウス共立」 のブログより引用
http://blog.siliconhouse.jp/archives/51572333.html
Pepperのデモ
●   画面をクリックするとLED点灯
●   今回はProcessingという言語で実装していま
    す。
●   Rubyを使うことも出来ます。(が、まだ試して
    いません)
私とPepper
●   Make: Tokyo Meeting 03 でキットを販売して
    いたのを購入
●   マニュアルなし(「ネットでわかりますよ」)
●   そこで検索
●   雑誌「エレキジャック」のサイトでの作者の方
    が書いた入門記事の連載を発見!
●   ただ、ちょっと読みにくい。。。(記事自体は
    とても良い記事です)
エレキジャックの記事の
        ここが読みにくい
●   前回、次回へのリンクがない
●   連載のインデックスページがない
●   なので、第1回を読んだあと、第2回を読みたく
    ても時間をかけて探さなければならない。




    そうだ。自分でまとめサイトを作ろ
           う!
サイト内検索は?
キーワード“ Pepper”で検索した結
果
サイト内検索は?
●   "Pepper”で検索すると他の記事が上位に来る
●   掲載日順のソートが出来ない


    検索結果から必要なリンクを抜き出
           し、
     並べ替えれば読みやすくなる。

         抜き出しや並べ替えは
    Rubyで自動化できる!(ある程度)
まとめサイト製作の手順
※赤文字のところをRubyでやります

1.エレキジャックのサイトを検索し、検索結果か
  らPepperに関する記事のリンクだけを抜き出
  し、URL順(大体日付順になる)にソートする
2.日付順になっていないところをエディタで直す
3.抜き出したURLを使って記事ページ取得し、サ
  ブタイトルの部分を抜き出す
4.サブタイトルが取得できていないところをエディタで
  直す
5.URL、ページタイトル、サブタイトルを整形
  し、HTML化する
6.整形したHTMLを適当なWEBページに貼り付ける
1.検索→リンク抜き出し→ソート
# fetch_link.rb

require 'rubygems'
require 'mechanize'
url = "http://search.cqpub.co.jp/cgi-bin/searchej.cgi?q=pepper&o="
url2= "http://search.cqpub.co.jp/cgi-bin/searchej.cgi?q=pepper&qxpnd=0&pagenum=2"
Linktext_contains = /Pepper/
Agent = WWW::Mechanize.new
Links = {}

def fetch_link(url) #Mechanizeで検索結果ページを取得
 page = Agent.get(url)
 page.links_with(:text => Linktext_contains).each do |l| #Pepper関連の<a>タグのみ
  Links[l.href] = l.text                                 #URLをキーにリンク文字を格納
 end
end

fetch_link(url)
fetch_link(url2)

Links.keys.sort.each do |k|       #URL順にソートしてタブ区切りで出力
 printf "%st%sn", Links[k], k
end
1.検索→リンク抜き出し→ソート
       (解説)
●   WWW::Mechanizeというライブラリを使用してい
    ます。
●   WWW::Mechanizeはブラウザの代わりにスクリプ
    トでWEBにアクセスするためのライブラリです
●   WWW::Mechanizeは 最近のRubyが入っていて、
    ネットにつながっている環境ならコマンドライ
    ンから
    “gem install mechanize” とやると入ります
    ※gemコマンドは”RubyGems”というRuby用のライブラリやRubyで書かれたアプリを
    管理するソフトウェアです。Ruby1.9系には標準添付ですが、Ruby1.8系だと別途イ
    ンストールしなければならない場合があります。(1.8系でもパッケージ作者さんが
    添付している場合が多いようです。)



                          前のスライドに戻ってソースを見直してみましょう
出力結果(イメージ)
記事タイトルに"Pepper”を含むものだけが抜き出されました

 Ginger/Pepper/Sugarでフィジカル・コンピューティング(1) - フィジカル・
 コンピュー...http://www.eleki-jack.com/FC/2008/11/post.html
 Ginger/Pepper/Sugarでフィジカル・コンピューティング(2) - フィジカル・
 コンピュー...http://www.eleki-
 jack.com/FC/2008/11/gingerpeppersugar2.html
 Ginger/Pepper/Sugarでフィジカル・コンピューティング(3) - フィジカル・
 コンピュー...http://www.eleki-
 jack.com/FC/2008/11/gingerpeppersugar3.html
 Ginger/Pepper/Sugarでフィジカル・コンピューティング(4) - フィジカル・
 コンピュー...http://www.eleki-
 jack.com/FC/2008/11/gingerpeppersugar4.html
 Ginger/Pepper/Sugarでフィジカル・コンピューティング(5) - フィジカ
 ル・コンピュー...http://www.eleki-
 jack.com/FC/2008/11/gingerpeppersugar.html
 Ginger/Pepper/Sugarでフィジカル・コンピューティング(6) - フィジカル・
 コンピュー...http://www.eleki-
 jack.com/FC/2008/11/gingerpeppersugar6.html
               ※プログラムの実行結果をエディタで修正したものの一部
 Ginger/Pepper/Sugarでフィジカル・コンピューティング(7) - フィジカル・
               です。
 コンピュー...http://www.eleki-jack.com/FC/2008/11/7.html
3.記事ページ取得して
                サブタイトル抜き出し
#fetch_subtitle.rb

require 'rubygems'
require 'csv'
require 'open-uri'
require 'nokogiri'

file = './url_list.txt'                #前工程の出力結果(タブ区切りテキスト(TSV))
CSV.open(file,"r","t") do |row| #TSVの読み込み
  title = row[0]                       #各カラムが自動的に配列に入ってくれる
  url = row[1]
  page = open(url)                     #ページを取得
  doc = Nokogiri::HTML(page) #HTMLをnokigiriで解析
  subtitle = doc.css(".asset-body b")[0] #CSSセレクタでサブタイトル抜き出し
  subtitle = subtitle.text if subtitle
  printf "%st%st%sn",url, title.sub(/ - .*$/,''), subtitle #サブタイトル付きで出力(TSV)
end
3.記事ページ取得して
    サブタイトル抜き出し(解説)
●   タブ区切りテキストの読み込みにCSVライブラ
    リを使っています。自動で行区切り、列区切り
    をやってくれるので便利です。
●   ページ取得はここではMechanizeの代わりに
    open-uriライブラリを使っています。
●   CSVライブラリとopen-uriライブラリはRubyに
    標準添付です。
●   HTMLを解析してサブタイトルを抜き出すのには
    Nokogiri を使っています。”gem install
    nokogiri”で入ります。CSSセレクタパターン
    で抜き出せます。
出力結果(イメージ)
 記事のサブタイトルが追加されました
http://www.eleki-jack.com/FC/2008/11/post.html Ginger/Pepper/Sugarでフィジカル・
コンピューティング(1)               はじめに
http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar2.html    Ginger/Pepper/Sugar
でフィジカル・コンピューティング(2) 第2回 Pepperを組み立てよう-1
http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar3.html    Ginger/Pepper/Sugar
でフィジカル・コンピューティング(3) 第2回 Pepperを組み立てよう-2
http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar4.html    Ginger/Pepper/Sugar
でフィジカル・コンピューティング(4) 第3回 Pepperの動作を確認しよう-1
http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar.html Ginger/Pepper/Sugarで
フィジカル・コンピューティング(5) 第3回 Pepperの動作を確認しよう-2 
(Processingのインストール編)
http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar6.html    Ginger/Pepper/Sugar
でフィジカル・コンピューティング(6) 第4回 PepperでHello World
http://www.eleki-jack.com/FC/2008/11/7.htmlGinger/Pepper/Sugarでフィジカル・コン
ピューティング(7)             (前回からの続き)



                            ※プログラムの実行結果をエディタで修正したものの一部
                            です。
5.整形、HTML化
#make_html.rb

require 'rubygems'
require 'csv'
require 'erb'
TEMPLATE =<<TEMPLATE #出力結果のテンプレート
 <p>
  <a href=<%= url %>><%= title %></a><br />
  <span style="font-size:85%"><%= subtitle %></span>
 </p>
TEMPLATE
FORMATTER = ERB.new(TEMPLATE)

file = './subtitles.txt'           #前工程の出力結果(タブ区切りテキスト
(TSV))
CSV.open(file,"r","t") do |row|   #TSV読み込み
  url      = row[0]
  title = row[1]
  subtitle = row[2]
  puts FORMATTER.result(binding)    #erbでフォーマットして出力
end
5.整形、HTML化(解説)
●   TSV読み込みのところは前の工程と一緒です。
●   HTMLに整形する部分はERBを使っています。
●   ERBはRubyに標準添付のテンプレートエンジン
    です。(Ruby on Railsでも使われていま
    す。)
●   ERBを使うと書式の中にテキストを埋め込むこ
    とが簡単にできます。
出力結果(部分)
これを適当なWEBページに貼り付ければ完成です!

  <p>
   <a href=http://www.eleki-jack.com/FC/2008/11/post.html>Ginger/Pepper/Sugarで
フィジカル・コンピューティング(1)</a><br />
   <span style="font-size:85%">はじめに</span>
  </p>
  <p>
   <a href=http://www.eleki-
jack.com/FC/2008/11/gingerpeppersugar2.html>Ginger/Pepper/Sugarでフィジカル・
コンピューティング(2)</a><br />
   <span style="font-size:85%">第2回 Pepperを組み立てよう-1</span>
  </p>
  <p>
   <a href=http://www.eleki-
jack.com/FC/2008/11/gingerpeppersugar3.html>Ginger/Pepper/Sugarでフィジカル・
コンピューティング(3)</a><br />
   <span style="font-size:85%">第2回 Pepperを組み立てよう-2</span>
  </p>
まとめ
●   WEBから何かを取得して抜き出すときは
    WWW::Mechanizeが便利
●   単純なWEBアクセスにはopen-uriが便利
●   CSVの読み込みにはCSVライブラリが便利
●   HTMLを解析して特定の要素を抜き出すには
    Nokigiriが便利
●   テンプレート出力にはERBが便利
●   似たような機能を持つライブラリは他にもあり
    ます。慣れてきたらもっと自分好みのものを探
    してみるのもいいかと思います。
リンク
●   WWW::Mechanize
    –   http://d.hatena.ne.jp/kitamomonga/20081209/kai
        setsu_for_ver_0_9_ruby_www_mechanize
●   open-uri
    –   http://www.ruby-
        lang.org/ja/man/html/open_uri.html
●   CSV
    –   http://www.ruby-lang.org/ja/man/html/CSV.html
●   Nokogiri
    –   http://mono.kmc.gr.jp/~yhara/rubyscraping/?
        Nokogiri
リンク(2)
●   ERB
    –   http://www.ruby-lang.org/ja/man/html/erb.html
●   RubyGems
    –   http://www.ruby-
        lang.org/ja/man/html/RubyGems.html
●   Pepperまとめサイト
    –   http://pepper.gohannnotomo.org
●   雑誌「エレキジャック」
    –   http://www.eleki-jack.com/
質疑応答
ご清聴ありがとうございました

More Related Content

What's hot

ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜Naotoshi Seo
 
明日から使えるコーディングツール
明日から使えるコーディングツール明日から使えるコーディングツール
明日から使えるコーディングツールTomokazu Kiyohara
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Taro Hirose
 
The master plan of scaling a web application
The master plan ofscaling a web applicationThe master plan ofscaling a web application
The master plan of scaling a web applicationYusuke Wada
 
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方Kamimura Taichi
 
Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Masayuki Morita
 
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料Yasutaka Hamada
 
Chefを利用した運用省力化とDevOpsの取り組みについて
Chefを利用した運用省力化とDevOpsの取り組みについてChefを利用した運用省力化とDevOpsの取り組みについて
Chefを利用した運用省力化とDevOpsの取り組みについてYuuki Namikawa
 
RubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入りRubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入りKouhei Sutou
 
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)CLARA ONLINE, Inc.
 
Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+Tsuyoshi Torii
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudyTakeshi Komiya
 
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料Yasutaka Hamada
 
Word pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのかWord pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのかHisateru Tanaka
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 

What's hot (20)

らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
 
明日から使えるコーディングツール
明日から使えるコーディングツール明日から使えるコーディングツール
明日から使えるコーディングツール
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
ゆるかわPhp
ゆるかわPhpゆるかわPhp
ゆるかわPhp
 
Mina 20130417
Mina 20130417Mina 20130417
Mina 20130417
 
The master plan of scaling a web application
The master plan ofscaling a web applicationThe master plan ofscaling a web application
The master plan of scaling a web application
 
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方
 
Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話
 
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
 
Chefを利用した運用省力化とDevOpsの取り組みについて
Chefを利用した運用省力化とDevOpsの取り組みについてChefを利用した運用省力化とDevOpsの取り組みについて
Chefを利用した運用省力化とDevOpsの取り組みについて
 
Ansible入門
Ansible入門Ansible入門
Ansible入門
 
RubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入りRubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入り
 
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
 
Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+
 
Ansible入門...?
Ansible入門...?Ansible入門...?
Ansible入門...?
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
 
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
 
Word pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのかWord pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのか
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 

Viewers also liked

Welcome pepper~facebookで振り返る片想い?が実るまでの軌跡~
Welcome pepper~facebookで振り返る片想い?が実るまでの軌跡~Welcome pepper~facebookで振り返る片想い?が実るまでの軌跡~
Welcome pepper~facebookで振り返る片想い?が実るまでの軌跡~守 村山
 
20160529 Pepper SDK for Android Studio
20160529 Pepper SDK for Android Studio 20160529 Pepper SDK for Android Studio
20160529 Pepper SDK for Android Studio Kenichi Ohwada
 
Pepper x IoT x Web 勉強会やってみた話と失敗談
Pepper x IoT x Web 勉強会やってみた話と失敗談Pepper x IoT x Web 勉強会やってみた話と失敗談
Pepper x IoT x Web 勉強会やってみた話と失敗談dsuke Takaoka
 
Pepper DAYS ☆ -Pepperのいる世界-
Pepper DAYS ☆ -Pepperのいる世界-Pepper DAYS ☆ -Pepperのいる世界-
Pepper DAYS ☆ -Pepperのいる世界-tomomi_pepper
 
ニンニンPepperアプリ概要と技術説明
ニンニンPepperアプリ概要と技術説明ニンニンPepperアプリ概要と技術説明
ニンニンPepperアプリ概要と技術説明chong song
 
Pepperって実際何モノ?
Pepperって実際何モノ?Pepperって実際何モノ?
Pepperって実際何モノ?tomomi_pepper
 
Wo! vol.38 ロボットの「iPhone」になるか?Pepperの概要
Wo! vol.38 ロボットの「iPhone」になるか?Pepperの概要Wo! vol.38 ロボットの「iPhone」になるか?Pepperの概要
Wo! vol.38 ロボットの「iPhone」になるか?Pepperの概要thinkjam.Inc.
 
IBM Blluemix を Pepper とつないでみよう
IBM Blluemix を Pepper とつないでみようIBM Blluemix を Pepper とつないでみよう
IBM Blluemix を Pepper とつないでみようTakuji Kawata
 
Pepper アプリデベロッパーのための NAO アプリ開発講座1
Pepper アプリデベロッパーのための NAO アプリ開発講座1Pepper アプリデベロッパーのための NAO アプリ開発講座1
Pepper アプリデベロッパーのための NAO アプリ開発講座1Takuji Kawata
 
Pepper活用提案書
Pepper活用提案書Pepper活用提案書
Pepper活用提案書优辅 西
 

Viewers also liked (11)

Welcome pepper~facebookで振り返る片想い?が実るまでの軌跡~
Welcome pepper~facebookで振り返る片想い?が実るまでの軌跡~Welcome pepper~facebookで振り返る片想い?が実るまでの軌跡~
Welcome pepper~facebookで振り返る片想い?が実るまでの軌跡~
 
20160529 Pepper SDK for Android Studio
20160529 Pepper SDK for Android Studio 20160529 Pepper SDK for Android Studio
20160529 Pepper SDK for Android Studio
 
Pepper x IoT x Web 勉強会やってみた話と失敗談
Pepper x IoT x Web 勉強会やってみた話と失敗談Pepper x IoT x Web 勉強会やってみた話と失敗談
Pepper x IoT x Web 勉強会やってみた話と失敗談
 
Pepper DAYS ☆ -Pepperのいる世界-
Pepper DAYS ☆ -Pepperのいる世界-Pepper DAYS ☆ -Pepperのいる世界-
Pepper DAYS ☆ -Pepperのいる世界-
 
NAO Workshop #1
NAO Workshop #1NAO Workshop #1
NAO Workshop #1
 
ニンニンPepperアプリ概要と技術説明
ニンニンPepperアプリ概要と技術説明ニンニンPepperアプリ概要と技術説明
ニンニンPepperアプリ概要と技術説明
 
Pepperって実際何モノ?
Pepperって実際何モノ?Pepperって実際何モノ?
Pepperって実際何モノ?
 
Wo! vol.38 ロボットの「iPhone」になるか?Pepperの概要
Wo! vol.38 ロボットの「iPhone」になるか?Pepperの概要Wo! vol.38 ロボットの「iPhone」になるか?Pepperの概要
Wo! vol.38 ロボットの「iPhone」になるか?Pepperの概要
 
IBM Blluemix を Pepper とつないでみよう
IBM Blluemix を Pepper とつないでみようIBM Blluemix を Pepper とつないでみよう
IBM Blluemix を Pepper とつないでみよう
 
Pepper アプリデベロッパーのための NAO アプリ開発講座1
Pepper アプリデベロッパーのための NAO アプリ開発講座1Pepper アプリデベロッパーのための NAO アプリ開発講座1
Pepper アプリデベロッパーのための NAO アプリ開発講座1
 
Pepper活用提案書
Pepper活用提案書Pepper活用提案書
Pepper活用提案書
 

Similar to 20090704rubyist九州

Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersIntroduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersTakeshi Arabiki
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Pythonで検索エンジン2
Pythonで検索エンジン2Pythonで検索エンジン2
Pythonで検索エンジン2Yasukazu Kawasaki
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門Tomoya Kawanishi
 
FukuokaPHP 3
FukuokaPHP 3FukuokaPHP 3
FukuokaPHP 3ichikaway
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup ) Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup ) Ai Makabi
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Taku Unno
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会Yuki Okada
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp CodereadingHiro Yoshioka
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
Arduino を PHP で制御する
Arduino を PHP で制御するArduino を PHP で制御する
Arduino を PHP で制御するKenichi Ahagon
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例Naoto Koshikawa
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺Shogo Kawahara
 
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすOpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすKUNITO Atsunori
 

Similar to 20090704rubyist九州 (20)

Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersIntroduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature Engineers
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
UnicastWS vol.2
UnicastWS vol.2UnicastWS vol.2
UnicastWS vol.2
 
Pythonで検索エンジン2
Pythonで検索エンジン2Pythonで検索エンジン2
Pythonで検索エンジン2
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
FukuokaPHP 3
FukuokaPHP 3FukuokaPHP 3
FukuokaPHP 3
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup ) Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
WCO2012「PHP教室」
WCO2012「PHP教室」WCO2012「PHP教室」
WCO2012「PHP教室」
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp Codereading
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Arduino を PHP で制御する
Arduino を PHP で制御するArduino を PHP で制御する
Arduino を PHP で制御する
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺
 
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすOpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
 

Recently uploaded

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (8)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

20090704rubyist九州

  • 1. Rubyを使って まとめサイトをさくっと作ろう (2009年7月Rubyist九州初心者向けコーナー) 橋本 幸樹(koki-h) http://d.hatena.ne.jp/koki-h @20090704 Rubyist九州 定例会
  • 2. 今日のお題 ● フィジカルコンピューティングモジュール ”Pepper” のまとめサイトを先日作ったので その作業でいかにRubyを利用して楽をしたか、 についてお話します。 ● 上記の話題を通してRuby初心者の方にRubyの便 利な機能やよく使われるライブラリについて情 報をご提供できたらうれしいです。 ● まあいろいろツッコミどころはあると思いま す。
  • 3. ”Pepper”とは ● フィジカルコンピューティングモジュール (Gainer互換) ● パソコンと電子部品の橋渡しをする機器 ● これがあれば以下のようなプログラムを各種の 言語で作成できます。 – たとえばパソコンの画面をクリックしたらLED点灯 (PCからLEDを制御) – たとえば警告通知メール(「サーバが止まっ た!」)が到着したら回転灯点灯(PCから回転灯を 制御) – たとえば大統領スイッチをおしたらWEBサイトで声 明(大統領スイッチからPCを制御)
  • 4. 大統領スイッチ カバーを.. カパッとして ぐっと押す! 「シリコンハウス共立」 のブログより引用 http://blog.siliconhouse.jp/archives/51572333.html
  • 5. Pepperのデモ ● 画面をクリックするとLED点灯 ● 今回はProcessingという言語で実装していま す。 ● Rubyを使うことも出来ます。(が、まだ試して いません)
  • 6. 私とPepper ● Make: Tokyo Meeting 03 でキットを販売して いたのを購入 ● マニュアルなし(「ネットでわかりますよ」) ● そこで検索 ● 雑誌「エレキジャック」のサイトでの作者の方 が書いた入門記事の連載を発見! ● ただ、ちょっと読みにくい。。。(記事自体は とても良い記事です)
  • 7. エレキジャックの記事の ここが読みにくい ● 前回、次回へのリンクがない ● 連載のインデックスページがない ● なので、第1回を読んだあと、第2回を読みたく ても時間をかけて探さなければならない。 そうだ。自分でまとめサイトを作ろ う!
  • 9. サイト内検索は? ● "Pepper”で検索すると他の記事が上位に来る ● 掲載日順のソートが出来ない 検索結果から必要なリンクを抜き出 し、 並べ替えれば読みやすくなる。 抜き出しや並べ替えは Rubyで自動化できる!(ある程度)
  • 10. まとめサイト製作の手順 ※赤文字のところをRubyでやります 1.エレキジャックのサイトを検索し、検索結果か らPepperに関する記事のリンクだけを抜き出 し、URL順(大体日付順になる)にソートする 2.日付順になっていないところをエディタで直す 3.抜き出したURLを使って記事ページ取得し、サ ブタイトルの部分を抜き出す 4.サブタイトルが取得できていないところをエディタで 直す 5.URL、ページタイトル、サブタイトルを整形 し、HTML化する 6.整形したHTMLを適当なWEBページに貼り付ける
  • 11. 1.検索→リンク抜き出し→ソート # fetch_link.rb require 'rubygems' require 'mechanize' url = "http://search.cqpub.co.jp/cgi-bin/searchej.cgi?q=pepper&o=" url2= "http://search.cqpub.co.jp/cgi-bin/searchej.cgi?q=pepper&qxpnd=0&pagenum=2" Linktext_contains = /Pepper/ Agent = WWW::Mechanize.new Links = {} def fetch_link(url) #Mechanizeで検索結果ページを取得 page = Agent.get(url) page.links_with(:text => Linktext_contains).each do |l| #Pepper関連の<a>タグのみ Links[l.href] = l.text #URLをキーにリンク文字を格納 end end fetch_link(url) fetch_link(url2) Links.keys.sort.each do |k| #URL順にソートしてタブ区切りで出力 printf "%st%sn", Links[k], k end
  • 12. 1.検索→リンク抜き出し→ソート (解説) ● WWW::Mechanizeというライブラリを使用してい ます。 ● WWW::Mechanizeはブラウザの代わりにスクリプ トでWEBにアクセスするためのライブラリです ● WWW::Mechanizeは 最近のRubyが入っていて、 ネットにつながっている環境ならコマンドライ ンから “gem install mechanize” とやると入ります ※gemコマンドは”RubyGems”というRuby用のライブラリやRubyで書かれたアプリを 管理するソフトウェアです。Ruby1.9系には標準添付ですが、Ruby1.8系だと別途イ ンストールしなければならない場合があります。(1.8系でもパッケージ作者さんが 添付している場合が多いようです。) 前のスライドに戻ってソースを見直してみましょう
  • 13. 出力結果(イメージ) 記事タイトルに"Pepper”を含むものだけが抜き出されました Ginger/Pepper/Sugarでフィジカル・コンピューティング(1) - フィジカル・ コンピュー...http://www.eleki-jack.com/FC/2008/11/post.html Ginger/Pepper/Sugarでフィジカル・コンピューティング(2) - フィジカル・ コンピュー...http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar2.html Ginger/Pepper/Sugarでフィジカル・コンピューティング(3) - フィジカル・ コンピュー...http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar3.html Ginger/Pepper/Sugarでフィジカル・コンピューティング(4) - フィジカル・ コンピュー...http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar4.html Ginger/Pepper/Sugarでフィジカル・コンピューティング(5) - フィジカ ル・コンピュー...http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar.html Ginger/Pepper/Sugarでフィジカル・コンピューティング(6) - フィジカル・ コンピュー...http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar6.html ※プログラムの実行結果をエディタで修正したものの一部 Ginger/Pepper/Sugarでフィジカル・コンピューティング(7) - フィジカル・ です。 コンピュー...http://www.eleki-jack.com/FC/2008/11/7.html
  • 14. 3.記事ページ取得して サブタイトル抜き出し #fetch_subtitle.rb require 'rubygems' require 'csv' require 'open-uri' require 'nokogiri' file = './url_list.txt' #前工程の出力結果(タブ区切りテキスト(TSV)) CSV.open(file,"r","t") do |row| #TSVの読み込み title = row[0] #各カラムが自動的に配列に入ってくれる url = row[1] page = open(url) #ページを取得 doc = Nokogiri::HTML(page) #HTMLをnokigiriで解析 subtitle = doc.css(".asset-body b")[0] #CSSセレクタでサブタイトル抜き出し subtitle = subtitle.text if subtitle printf "%st%st%sn",url, title.sub(/ - .*$/,''), subtitle #サブタイトル付きで出力(TSV) end
  • 15. 3.記事ページ取得して サブタイトル抜き出し(解説) ● タブ区切りテキストの読み込みにCSVライブラ リを使っています。自動で行区切り、列区切り をやってくれるので便利です。 ● ページ取得はここではMechanizeの代わりに open-uriライブラリを使っています。 ● CSVライブラリとopen-uriライブラリはRubyに 標準添付です。 ● HTMLを解析してサブタイトルを抜き出すのには Nokogiri を使っています。”gem install nokogiri”で入ります。CSSセレクタパターン で抜き出せます。
  • 16. 出力結果(イメージ) 記事のサブタイトルが追加されました http://www.eleki-jack.com/FC/2008/11/post.html Ginger/Pepper/Sugarでフィジカル・ コンピューティング(1) はじめに http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar2.html Ginger/Pepper/Sugar でフィジカル・コンピューティング(2) 第2回 Pepperを組み立てよう-1 http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar3.html Ginger/Pepper/Sugar でフィジカル・コンピューティング(3) 第2回 Pepperを組み立てよう-2 http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar4.html Ginger/Pepper/Sugar でフィジカル・コンピューティング(4) 第3回 Pepperの動作を確認しよう-1 http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar.html Ginger/Pepper/Sugarで フィジカル・コンピューティング(5) 第3回 Pepperの動作を確認しよう-2  (Processingのインストール編) http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar6.html Ginger/Pepper/Sugar でフィジカル・コンピューティング(6) 第4回 PepperでHello World http://www.eleki-jack.com/FC/2008/11/7.htmlGinger/Pepper/Sugarでフィジカル・コン ピューティング(7) (前回からの続き) ※プログラムの実行結果をエディタで修正したものの一部 です。
  • 17. 5.整形、HTML化 #make_html.rb require 'rubygems' require 'csv' require 'erb' TEMPLATE =<<TEMPLATE #出力結果のテンプレート <p> <a href=<%= url %>><%= title %></a><br /> <span style="font-size:85%"><%= subtitle %></span> </p> TEMPLATE FORMATTER = ERB.new(TEMPLATE) file = './subtitles.txt' #前工程の出力結果(タブ区切りテキスト (TSV)) CSV.open(file,"r","t") do |row| #TSV読み込み url = row[0] title = row[1] subtitle = row[2] puts FORMATTER.result(binding) #erbでフォーマットして出力 end
  • 18. 5.整形、HTML化(解説) ● TSV読み込みのところは前の工程と一緒です。 ● HTMLに整形する部分はERBを使っています。 ● ERBはRubyに標準添付のテンプレートエンジン です。(Ruby on Railsでも使われていま す。) ● ERBを使うと書式の中にテキストを埋め込むこ とが簡単にできます。
  • 19. 出力結果(部分) これを適当なWEBページに貼り付ければ完成です! <p> <a href=http://www.eleki-jack.com/FC/2008/11/post.html>Ginger/Pepper/Sugarで フィジカル・コンピューティング(1)</a><br /> <span style="font-size:85%">はじめに</span> </p> <p> <a href=http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar2.html>Ginger/Pepper/Sugarでフィジカル・ コンピューティング(2)</a><br /> <span style="font-size:85%">第2回 Pepperを組み立てよう-1</span> </p> <p> <a href=http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar3.html>Ginger/Pepper/Sugarでフィジカル・ コンピューティング(3)</a><br /> <span style="font-size:85%">第2回 Pepperを組み立てよう-2</span> </p>
  • 20. まとめ ● WEBから何かを取得して抜き出すときは WWW::Mechanizeが便利 ● 単純なWEBアクセスにはopen-uriが便利 ● CSVの読み込みにはCSVライブラリが便利 ● HTMLを解析して特定の要素を抜き出すには Nokigiriが便利 ● テンプレート出力にはERBが便利 ● 似たような機能を持つライブラリは他にもあり ます。慣れてきたらもっと自分好みのものを探 してみるのもいいかと思います。
  • 21. リンク ● WWW::Mechanize – http://d.hatena.ne.jp/kitamomonga/20081209/kai setsu_for_ver_0_9_ruby_www_mechanize ● open-uri – http://www.ruby- lang.org/ja/man/html/open_uri.html ● CSV – http://www.ruby-lang.org/ja/man/html/CSV.html ● Nokogiri – http://mono.kmc.gr.jp/~yhara/rubyscraping/? Nokogiri
  • 22. リンク(2) ● ERB – http://www.ruby-lang.org/ja/man/html/erb.html ● RubyGems – http://www.ruby- lang.org/ja/man/html/RubyGems.html ● Pepperまとめサイト – http://pepper.gohannnotomo.org ● 雑誌「エレキジャック」 – http://www.eleki-jack.com/