発表資料

Plagger is a LL
Shibuya.pl
竹迫 良範
Plagger
2006年2月に公開
http://plagger.org/
言語
Perlで書かれている
開発者
miyagawaさんがオープンソースで開発
既に Plagger Authors は37人以上
2006/06/30
2
Platform for
Aggregation &
Syndication
または
Pluggable
RSS/Atom
Aggregator
の略でもある
どう見ても
後付です.
本当に(ry
2006/06/30
5
Plagger - Pluggable RSS/Atom Aggregator
Pluggable
いろんなプラグインを組み合わせて、
RSS/Atom
ニュースやブログなどの新着フィードを
Aggregator
自分の好きな形式に変換・出力する。
2006/06/30
6
最強ツール
Plagger
2006/06/30
7
Bloglines2Gmail
Bloglinesで購読しているフィードをGmailで読む
2006/06/30
8
設定ファイル: bloglines2gmail.yaml
plugins:
- module: Subscription::Bloglines
config:
username: your-email@account
password: your-password
mark_read: 1
- module: Publish::Gmail
config:
mailto: your-email@account
2006/06/30
9
設定ファイル: config.yaml
plugins:
- module: Subscription::Config
config:
feed:
- http://labs.cybozu.co.jp/blog/akky/atom.xml
- http://labs.cybozu.co.jp/blog/kazuho/atom.xml
- module: Publish::Gmail
config:
mailto: [email protected]
2006/06/30
10
plagger コマンドを実行
./plagger -c config.yaml
これだけ
このコマンドをcronに登録して
定期的に実行しておけばOK
2006/06/30
11
Plaggerの使い方:説明
終了
2006/06/30
13
画像もOK(HTMLメール形式)
2006/06/30
14
Gmailに検索機能があるので便利
2006/06/30
15
Plagger::Pluginの構成
購読
Subscription
Bloglines
HatenaRSS
Config
OPML
カスタムフィード
CustomFeed
Mixi
Mailman
POP3
iTunesRecentPlay
2006/06/30
変換
Filter
Filter-StripRSSAd
Filter-TruePermalink
2chNewsokuTitle
BreakEntriesToFeeds
Delicious
EntryFullText
FetchEnclosure
HatenaBookmarkTag
HatenaBookmarkUsersCount
HatenaDiaryKeywordLink
HatenaDiaryKeywordUnlink
HatenaFormat
Pipe
Romanize
Thumbnail
出力
Publish
Gmail
Delicious
PDF
MT
PSP
Planet
Pipe
Speech
通知
Notify
IRC, Eject, Growl
MSAgent, SSTP
16
(例)CustomFeed::Mixi
2006/06/30
17
設定ファイル: mixi2gmail.yaml
plugins:
- module: CustomFeed::Mixi
config:
email: your-email@account
password: your-password
fetch_body: 1
show_icon: 1
feed_type:
- FriendDiary
- RecentComment
- module: Publish::Gmail
config:
mailto: your-email@account
2006/06/30
18
(例)Notify::MSAgent
2006/06/30
19
(例)Notify::SSTP
SSTPのプロトコルを実装 ><
http://subtech.g.hatena.ne.jp/secondlife/20060302/1141310833
2006/06/30
20
(例)Notify::Eject
Plaggerで新着フィードを検知したら
物理的に通知してくれるモジュール
動作環境:Windows, Linux, FreeBSD and Mac OSX!
2006/06/30
21
お知らせ
2006/06/30
22
Notify::Eject
(現在)多言語対応版開発中
m17n version
chegadaприбытие
新着
ankomst
しん 到达
新着
ちゃく
llegada
フィードが
きなさったで
きたよ!
2006/06/30
24
まだまだデバッグ中!!!
Yappoさん宅
2006/06/30
25
乞うご期待!
おちゃめな野良プラグイン
Notify::Command::Shutdown もあります
※ただし root 権限が必要
2006/06/30
27
Plagger & YouTube
Hacks
Gosuke Miyashita
http://mizzy.org/
CustomFeed::YouTube
YouTube から指定の検索条件でデータを取得
動画に関するデータを Plagger::Entry に
タイトル
permalink url
サムネイル url
説明
投稿者
タグ
動画ファイル直リンク url
Plagger
2006/06/30 Conference #1 - http://mizzy.org/archives/plagger_con/plagger.html
29
CustomFeed::YouTube  Publish::Gmail
Plagger Conference #1 - http://mizzy.org/archives/plagger_con/plagger.html
Filter::ConvertVideo
enclosure url のファイルを取得
携帯動画変換君付属の
コマンドラインツールをキック
して動画フォーマットを変換
指定のディレクトリに
変換した動画を書き出す
iTunes に動画を登録
enclosure url を書き換える
Plagger
2006/06/30 Conference #1 - http://mizzy.org/archives/plagger_con/plagger.html
31
CustomFeed::YouTube  Publish::PodCast
サンプル config.yaml
- module: CustomFeed::YouTube
config:
feed_type: search
query: チョコボーイ山口
page: 1
sort: video_view_count
- module: Filter::ConvertVideo
config:
converter_dir: D:\Program Files\AVCTest-051105
output_dir: K:\html\www.mizzy.org\podcast
output_filename: %l
base_url: http://mizzy.org/podcast
plagger_drive: D:
encode_type: 5
- module: Publish::PodCast
config:
dir: K:\html\www.mizzy.org\podcast
filename: %t.rss
Plagger
2006/06/30 Conference #1 - http://mizzy.org/archives/plagger_con/plagger.html
32
CustomFeed::YouTube  Publish::PodCast
Plagger Conference #1 - http://mizzy.org/archives/plagger_con/plagger.html
P::P::Publish
出力先いろいろ
Publish::Takahashi(高橋メソッド)
【アイディア】 Publish::Speech と組み合わせて自動プレゼンテーション
2006/06/30
35
会社で使える?Publish::Excel
- module: Publish::Excel
config:
filename: /path/to/workbook.xls
2006/06/30
36
2ch viewer で購読する (Publish::2chdat)
→ Publish::2chdat は subject.txt と dat/*.dat を生成する
2006/06/30
37
LDRハック(livedoor Readerをフロントエンドに)
2006/06/30
38
MVCモデルの革命
今までのマッシュアップ
View
JavaScript/Java/
PHP/Perl/Ruby…
Bloglines
2006/06/30
Gmail
LDR
2ch
Viewer
Plagger
Controller
Model
LDRハックの凄いところ
Google
Maps
RSS
HTML
2ch.dat
39
http://subtech.g.hatena.ne.jp/miyagawa/20060510/1147237867
Publish::Pipe
外部プログラムにフィードを流しこむ
その可能性は無限大
(例)IPメッセンジャーで新着通知
- module: Publish::Pipe
rule:
expression: $args->{feed}->id eq 'fresh'
config:
command: /usr/bin/udpmsg xxx.xxx.xxx.255
encoding: euc-jp
http://subtech.g.hatena.ne.jp/youpy/20060301/p2
夢がひろがるプラグイン
2006/06/30
40
UNIXのpipeプログラミングの面白さ
パイプライン指向≒プラグイン指向
cat | sort -u | uniq
コマンドを作る楽しさ
Perl や Ruby でワンライナーを書く
コマンドをつなげて問題を解決する
Quick hack! 楽しい!
2006/06/30
41
Plagger を
インストール
してみよう
2006/06/30
42
cpan> install plagger
コマンド一発インストール‥?
2006/06/30
43
Windowsの場合・・・
5/12 はじめてPlaggerをインストールしてみた(CPANの依存関係大杉)
2006/06/30
44
2006/06/30
45
cpan> force install plagger
フォースを使え!
2006/06/30
46
Plaggerのインストールが難しいので
インストールに苦労する
→ ブログに書きたくなる
使い方がわからない
→ ドキュメントがない
ソースを読む
→ プラグインを作りたくなる
健全な開発ライフサイクル
2006/06/30
47
みたいなものが出てくると…
2006/06/30
48
雑誌で特集される日も近い?
※写真は架空のものです
2006/06/30
49
それPlaggerでやればいいんじゃね?
Plagger を
ハックすれば
何でもできるよ!
※写真は架空のものです
2006/06/30
50
(例)
携帯で
あとで読む
サービスを
作ってみました!
それPlaggerでできるよ
携帯であとで読む config.yaml
plugins:
- module: Subscription::Config
config:
feed:
- http://del.icio.us/rss/miyagawa/toread
- module: Filter::EntryFullText
- module: Publish::CHTML
config:
work: /home/miyagawa/public_html/plagger
以上、設定ファイル9行だけ
http://subtech.g.hatena.ne.jp/miyagawa/20060421/1145605408
2006/06/30
54
天気予報で
雨が降りそうに
なったら
携帯にメールを
それPlaggerで
天気予報をメールで config.yaml
# check Tokyo's weather forecast on weather.livedoor.com
# If the forecast says it rains, notify me via Email
plugins:
- module: Subscription::Config
config:
feed:
- http://weather.livedoor.com/forecast/rss/13/63.xml
# HACK: Grabs 2nd entry from livedoor Weather feed
- module: Filter::Rule
rule:
expression: ++$::index == 2
- module: Publish::Gmail
rule:
expression: $args->{feed}->entries->[0]->title =~ /雨/
config:
mailto: [email protected]
http://subtech.g.hatena.ne.jp/miyagawa/20060823/1156334446
2006/06/30
57
それPla
「それPlaggerでやればいいんじゃね?」
なんでもかんでも Plagger で行おうとする
Plagger AUTHORS の口癖
【使用例】
Aさん:「すみません。トイレが詰まったんですけど」
Bさん:「それPlaggerでやればいいんじゃね?」
2006/06/30
59
応用
キミならどう書く? Publish::Kakeibo (案)
ソーシャル家計簿サイト
2006/06/30
http://www.3zai.com/
61
Notify::Pizza
CustomFeed::GoogleSearchHistory
2006/06/30
62
Plagger Hackathon #2
2006/06/30
63
Notify::Pizza が「寿司」に対応(8/20)
2006/06/30
64
現実世界をつなぐ存在
Real world (Web化されていない世界)
dirty
Web
(XML化されていない世界)
Semantic Web
(XML)
pure
2006/06/30
65
Plaggerは
YAMLで
プログラミング
2006/06/30
66
YAML の中で
一部 Perl互換の条件式や
rule:
expression: ++$::index == 2
正規表現が記述可能です
rule:
expression: $args->{feed}->entries->[0]->title =~ /雨/
2006/06/30
67
ここで疑問
Aさん:
え、でもPlaggerってPerlで書かれてるんでしょ。
Bさん:
PHPがLLなら、PlaggerもLLじゃないの?
初期のPHPはPerlで書かれてましたよね。
じゃ、Plaggerの拡張をCで書ければLL決定?
srd!
2006/06/30
68
結論
PlaggerはYAML拡張のLL
拡張プラグインは Inline::C で
Inline::Java とか
Inline::Ruby もあるよ
2006/06/30
69
来年のLLは…
Language Update で
「Plagger」が出場します!?
※写真は架空のものです
2006/06/30
70
Shibuya Plaggers
ご清聴ありがとうございました
http://shibuya.pl