Windows+ActivePerl環境でPlaggerLDRをインストールするメモ

PlaggerLDRというのはPlaggerで巡回した結果をLDR(LivedoorReader)で読んでしまおうという仕組みのことです。PlaggerというとGmailで読むのがスタンダードになっていますが、実際に使ってみるとGmailはレスポンスが悪いことが結構あってがっかりすることが多い気がします。そこでLDRのフロントエンドを使ってもっと快適なPlaggerライフを満喫しようというわけです。
PlaggerLDRはLinuxBSDにインストールする方法は紹介されていましたが、WindowsのActivePerl環境でも割合簡単に使えそうなので、ここにまとめておきます。とはいっても結構煩雑ですが(苦笑) でもPlaggerLDRを一度体験してしまうと二度とGmailには戻れないこと請け合いなので、是非試してみることをおすすめします。


基本的な流れはPlagger & PlaggerLDR のインストール -- LoveVectorfakelog - PlaggerLDR インストールメモに非常に良くまとめられています。この方法はWindows上にcoLinuxを導入してインストールしているので、ここでは純粋にWindowsのActivePerl環境(cygwinも使わない)でPlaggerLDRを実現する方法をメモしておきます。


ActivePerlをDL

ここからとりあえず最新版の「ActivePerl 5.8.8.820」を入れる。ppmGUIになっていたりして使いにくいと大評判なんだけど今回はあえてこれで攻めてみる(笑)


Plaggerのインストール

GUIppm [Edit]->[Preferences]から

Name:tcools
Location:http://ppm.tcool.org/archives/
suggested:Install-PPM-Respositories

を追加。このときにデフォルトで入っているレポジトリを消してしまった方が良いかもしれない。(進入禁止の標識みたいなアイコンを押すと消せる。)

一番左側のアイコン[View all Packages]を選択してから
Plaggerを検索して1件ヒット。右クリックでインストール準備? 検索窓の右にある[Make for Install]アイコンをクリックして、その2個右にある矢印[Run marked actions]をクリックしてインストールする。ここはirvine_eddieの日記を参考に。


これでplagger自体はインストールできたので、設定ファイル群であるassetsを得るためにここ(CPANのPlaggerのページ)から最新版をDLして解凍してできるassetsフォルダをC:\Perl\site\lib\Plaggerにコピー。環境によってはPlaggerがC:\Perl\lib\PlaggerPlaggerがインストールされてるかもしれないので環境に合わせて適宜コピーする。


ここまでがPlaggerのインストール。
インストールが難しいなんて言ってるけど、えらく簡単になったもんです。ppm用のレポジトリ(というらしい)を用意してくれたCharsbar::Noteさんに感謝。



PlaggerLDRのインストールと準備

plaggerの結果をLDRで読むためにはLDRにデータを渡さないといけない、つまりLDRがデータを読める状況にしないといけないのでサーバを立てる必要があります。基本的な構図は、こんな感じ。すっごい適当だけど。

そのためにこれからサーバとして動かすfeature-serverというものを設定していきます。これもplaggerの一部として開発されている。動かすためにいくつか他のものが必要になるのでこれから用意する。

Subversion
ダウンロードするのに使用する。
sqlite3
feature-serverはsqliteデータベースでデータを管理する。最初のDBを作成するのに必要。
Catalyst
feature-serverを動かすために必要

Subversionのインストール

バージョン管理ソフトのSubversionをインストールする。subversion: ドキュメント & ファイル: WindowsからWindows用のバイナリ(最新版はsvn-1.4.2-setup.exe)をダウンロード。ダブルクリックでインストール。これでコマンドプロンプトからsvnコマンドがつかえるようになる。


sqlite3のダウンロード

ActivePerlのインストールでperlからsqliteを扱うためパッケージはすでにインストールされているが、最初にDBを作成するsqlite3というコマンドがWindowsには無いのでインストールする。SQLite Download Pageの「Precompiled Binaries For Windows」からsqlite-3_3_13.zipをダウンロードして解凍する。できたフォルダの中にあるsqlite3.exeがそのまま実行ファイルになる。このsqlite3でつくったデータベースはPlaggerで取得した更新データをLDRに送るために使われる。
データベースの作成は

sqlite3.exe plagger.db < feature-server\assets\plugins\Store-DBIC\plagger.sqlite.sql

とする。
あとでyamlに場所を書き込むことになるので、置く場所はどこでもいい。ここで作成するplagger.dbがplaggerで拾ってくるデータの格納先になる。Gmailに送るのを指定したようにDBに書き込むことをyamlで指定する。


Catalystのインストール

CatalystっていうのはPerlのウェブアプリケーションフレームワークらしい(Catalystとは - はてなダイアリー)。何のことかは実はよくわからないが、ウェブアプリを簡単に作るためのライブラリ、鋳型だとでも思えばいいのかな? とにかくそれをインストール。Plaggerをインストールするために設定したppmで「Task-Catalyst」を検索してインストールする。
このままではあとで実行するときにライブラリが足りなくてエラーが出るので

を追加でインストールした。いずれも検索すると出てくる。

ただし「Catalyst-Model-DBIC-Schema」をGUIからインストールしようとしたらエラーが出て失敗した。インストール時のforceオプションをどうやって付けたらいいのかわからなかったので、コマンドプロンプトから

ppm install -force http://ppm.tcool.org/archives/Catalyst-Model-DBIC-Schema.ppd

でインストールした。問題なく動いているのでこれで大丈夫だと思う。

【2/20 追記】
このエラーはCatalyst-Model-DBIC-Schemaがこけているのではなく、Catalyst-Manualがこけているために発生するエラーだと言うことです。Charsbar::NoteさんにppmでCatalyst::Manualを入れようとするとエラーが出る件でご指摘いただきました。詳しい内容はCharsbar::Noteさんの記事をご覧下さい。


plagger serverのインストール

svnで開発元のfeature-serverブランチごと持ってくる。やり方は

svn co http://svn.bulknews.net/repos/plagger/branches/feature-server/plagger feature-server

とするだけ。これで実行したディレクトリ(フォルダ?)にfeature-serverディレクトリを作成してその中に最新版をダウンロードしてくれる。僕は適当なところ、C:\plaggerLDRを作成してその中にfeature-serverを置いた。


feature-serverを動かすための準備

odz bufferさんがしているようにfeature-serverフォルダ以下の

  • lib\PlaggerLDR\Model\DBIC.pm
  • lib\PlaggerLDR\Controller\Notify.pm
  • lib\PlaggerLDR\Controller\Root.pm

に変更を加える。


feature-serverフォルダのなかに「root」というフォルダを作成してconfig.yamlを作成する。

global:
  assets_path: C:\Perl\site\lib\Plagger\assets
  plugin_path: C:\Perl\site\lib\Plagger\Plugin
  timezone: Asia/Tokyo

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://www.yomiuri.co.jp/science/

  - module: Filter::EntryFullText
    config:
      store_html_on_failure: 1

  - module: Filter::BreakEntriesToFeeds

  - module: Store::DBIC
    config:
      schema_class: Plagger::Schema::SQLite
      connect_info: [ 'dbi:SQLite:C:/plaggerLDR/plagger.db', ]

こんな感じで設定した。ここで使ってるEFTいまさら聞けない? 初心者向けPlagger設定覚え書き その1で作成したものをつかっているけど、適当に設定してください。


実際に巡回してDBに書き込むのはplaggerなので、収集してDBに書き込むためのライブラリがplaggerから見えるようにする。

でおっけー。SchemaフォルダとStoreフォルダをフォルダごとコピーしてしまえばいいです。



ここまででplaggerを起動したら

Cannot determine local time zone

というエラーが出て止まってしまったので、Charsbar::Note - patch for DateTime::TimeZone v0.46にあるように修正する。
修正点は3つのファイルにあるんだけど修正点するファイルは
C:\Perl\site\lib\DateTime\TimeZone\Local.pm
C:\Perl\site\lib\DateTime\TimeZone.pm
だけで良いと思う。

さらに、Windowsのシステムのプロパティから詳細設定→環境変数で新規から

変数:TZ
値:JST-9

とする(要再起動)。これで多分動くようになると思う。
とりあえず試すのならコマンドプロンプト

> set TZ=JST-9

と打ち込んでから実行してみてください。 ただし、このコマンドは打ち込んだコマンドプロンプトだけでしか有効ではないので、feature-serverと巡回させるplaggerを別々の窓で開いていたらそれぞれで実行するようにしてください。



feature-serverを起動するには

C:\Perl\site\lib\feature-server\bin\plaggerldr_server.pl --port=54987

でポート番号(--port= 以降)には4〜5桁の65535以下の数字を適当に入れると良い。これはあとでLDRの設定時にも使うので覚えておく。


あとはLDRから作成したサーバを読み込むためにfirefoxgreaseMonkeyスクリプトhackldrapi.user.jsをインストールする。これをエディタで開いて、「酒日記 はてな支店 - PlaggerLDR hack が動かなくなってた」を参考にして変更する。


LDRにログインして、コロン「:」を押してviモード(画面上の人の吹き出しに入力可能になる)にして、

plagger add local http://localhost:54987

と打ち込む。ただし、ルータがあるときには指定したポートを開放することを忘れないように。

使い方はWindowsでfeature-serverを起動したあとで、LDRにログインして「:use local」と打ち込む。いつものLDRに戻したいときには「:use ldr」とすれば良い。