63
Plagger meets Ruby - yhara@KMC(www.kmc.gr.jp) Plagger meets Ruby yhara(at)kmc.gr.jp http://mono.kmc.gr.jp/~yhara/

Plagger meets Ruby - Route477.net · 2020. 7. 17. · Plagger meets Ruby - yhara@KMC() 活用事例(案) Filter::Tateyomi 記事を縦読みっぽく変換する ネットで通販したラジカセ、コンセント

  • 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の今後に期待