Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Plagger meets Ruby
yhara(at)kmc.gr.jphttp://mono.kmc.gr.jp/~yhara/
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
自己紹介
京大マイコンクラブ所属http://www.kmc.gr.jp/
滋賀在住
大学院生(M1)
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
代表作
Ruby/SDLスターターキットインストールいらずのゲーム開発環境http://mono.kmc.gr.jp/~yhara/w/?RubySDLStarterKit
世界的には…Down!! http://mono.kmc.gr.jp/~yhara/w/?Down2ch→アメリカ→ドイツ→ポーランド→チェコ
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
http://www.novinky.cz/03/01/26.html
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
http://www.novinky.cz/03/01/26.html
チェコ語なんで何がなんだか…
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Plagger?
A.使ってるB .インストールはしたC.どんなものかは知っているD.あまりよく知らないE .でもピザが頼めることは知っている
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Plagger
自動情報収集ソフト
主にRSSなどフィード(Webサイトの更新情報)を扱う
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Plagger
入力
加工
出力
フィードを取ってきて
出力する
加工して
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
例
入力
加工
出力
blogのRSSを取ってきて
GMailに送る
新着記事があったら
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
例
入力
加工
出力
blogのRSSを取ってきて
IRC(チャット)に通知
新着記事があったら
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
例
入力
加工
出力
Googleの検索履歴に
ピザを頼む
“はらへった”があれば
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
例
入力
加工
出力
Mixiの新着日記のタイトルに
ピザを頼む
“はらへった”があれば
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
デモ
Ruby公式サイトの更新情報をGMailで読む
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Plaggerの起動方法
設定ファイルをyaml形式で書くplagger –c hoge.yaml
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
global:timezone: Asia/Tokyo
plugins: - module: Subscription::Config
config:feed:- url: http://www.ruby-lang.org/ja/feeds/news.rss
- module: Filter::Rulerule:
module: Deduped
- module: Publish::Gmailconfig:
mailto: [email protected]:
via: smtphost: mailserv.example.com
gmail.yaml共通設定
プラグイン設定
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
global:timezone: Asia/Tokyo
plugins: - module: Subscription::Config
config:feed:- url: http://www.ruby-lang.org/ja/feeds/news.rss
- module: Filter::Rulerule:
module: Deduped
- module: Publish::Gmailconfig:
mailto: [email protected]:
via: smtphost: mailserv.example.com
gmail.yaml共通設定
プラグイン設定
入力
加工
出力
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Q.これ毎回手動でやるんですか?
A.違います。自動実行
Unix : cronコマンドWin : タスクスケジューラ
「毎時0分にplaggerを起動」
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Plaggerの面白さ
1つプラグインを作れば、組み合わせによって何十通りもの使い方ができるいろんな方法でピザが頼める
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
プラグインを作ってみたい
けど……
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
©うつらうららか http://u-u.2-d.jp/log24.htm
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Rubyでプラグインを書きたい!
(だって僕らRubyistだから)
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Plagger meets Ruby
(1) 入力(2) 加工(3) 出力
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
基本:パイプで通信
Rubyスクリプト
$stdin
$stdout
入力
加工
出力
Plagger
テキストデータ
テキストデータ
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
(1)Rubyスクリプトを入力にする
Rubyスクリプト
$stdout
入力
加工
出力
Plagger
テキストデータ(XML or YAML)
ネットワーク、ファイル、etc…
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
(2) Rubyスクリプトで加工する
Rubyスクリプト
$stdin
$stdout
入力
加工
出力
Plagger
テキストデータ(HTML)
テキストデータ(HTML)
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
(3) Rubyスクリプトに出力する
Rubyスクリプト
$stdin入力
加工
出力
Plagger
テキストデータ
ネットワーク、ファイル、etc…
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
(1)入力
CustomFeed::Script
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
CustomFeed::Script
- module: Subscription::Config
config:
feed:
- url: "script:ruby make_feed.rb"
- module: CustomFeed::Script
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
活用事例
customfeed-cvslog.rb
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
customfeed-cvslog.rb
CVSのコミットログを読み込むSubversionのはあったが、CVSは…実装
system “cvs rlog …” でログを取得YAMLを出力
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
(2)加工
Filter::Pipe
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Filter::Pipe
- module: Filter::Pipe
config:
command: “ruby sample_filter_pipe.rb”
encoding: euc-jp
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
活用事例(案)
Filter::RubyMan記事のなかの「String#strip」とかにリファレンスマニュアルへのリンクを張る
ついでに「ruby-list:32198」とかもリンクしてくれると嬉しいかも
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
活用事例(案)
Filter::Tateyomi記事を縦読みっぽく変換する
ネットで通販したラジカセ、コンセント挿した瞬間に壊れた…。大した出費じゃなかったけど、すぐに使いたかったからがっかり。きょう新しいの買いにいきます。
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
活用事例(案)
Filter::Tateyomi記事を縦読みっぽく変換する
ネットで通販したラジカセ、コンセント挿した瞬間に壊れた…。大した出費じゃなかったけど、すぐに使いたかったからがっかり。きょう新しいの買いにいきます。
改行を調整
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
(3)出力
Publish::Pipe
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Publish::Pipe
- module: Publish::Pipe
config:
command: 'ruby publish_rubysdl.rb'
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
活用事例
Publish::RubySDLフィードがRuby/SDLで読めます!(^ω^;)
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
デモ
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
あれ?
タイトルとリンクしかないよ?
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
YAMLパッチ
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
YAMLパッチで全文配信- module: Publish::Pipe
config:
command: ruby sample_publish_pipe.rb
yaml: 1
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
もっかいデモ
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
もっかいデモ
↑ThinkPadを傾けるとスクロールします↓
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
振動検知による自動スクロール
南木さんのスクリプトを流用http://blog.netswitch.jp/articles/tag/thinkpadThinkPad本体を上下に傾けて操作
満員電車でも安心!スクロールを止めるのが難しい
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
まとめ
Plagger : 自動情報収集システム入力/加工/出力
プラグインが増えるほど楽しい
Rubyでもプラグインは書ける!実用系からネタ系まで
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
おまけ
インストールについて
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
©うつらうららか http://u-u.2-d.jp/log24.htm
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Plaggerのインストールは大変?
最近はだいぶ楽になっている
Unix : apt-get, yum, portsWindows : ppmcpanシェル> install Plagger
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Plaggerのインストールは大変?
最近はだいぶ楽になっている
Unix : apt-get, yum, portsWindows : ppmcpanシェル> force install plagger
フォースを使え!
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
一番簡単なのは…
実はMac OS X 解凍するだけ!
http://8-p.info/Plagger/
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Windowsでもできないか?
“instant-plagger”
来週あたりにリリース(できたらいいなぁ)
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
ご清聴ありがとうございました
ご質問は?
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
おまけ2
Yahoo! PipesとPRagger
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Yahoo! Pipes
Webアプリケーション
入力
加工
出力
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
Yahoo! Pipes
長所簡単!(誰にでもとっつきやすい)インストール不要
短所自分でプラグインが書けない…普通のことしかできない
ピザが頼めない
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
PRagger
「Ruby版Plagger」
Plagger(Perl版)
Pragger (Ruby版)
L R
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
PRagger
長所フルRubyもちろんプラグインもRubyで書ける
欠点まだ機能が少ない(できたばっかりなので)発音が難しい(日本人泣かせ)
プラグインが圧倒的に少ない、が…
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
L ← R
plagger.rbPlaggerを呼び出すプラグイン
Plaggerの全機能が使用可能に!(ただしPlaggerのインストールが必要)
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp)
L or R
PRaggerの今後に期待