Subscribed unsubscribe Subscribe Subscribe

Chromeのスタートページで自分のはてブをインクリメンタル検索する拡張(ただしPerlで書いた)



せっかくブクマしても、なかなか後で自分のブクマを見返したりってしないじゃないですか。特にChromeだとサイドバーが無いから、マイブクマを常にサイドバーに表示させて…なんてこともできないし。
そういう習慣をなんとか直したかったので、Chromeのスタートページを自分のはてなブックマーク一覧のページに上書きしてしまう拡張を書きました。

機能

  • 開いた瞬間、自分の最近のブックマーク一覧を出す
  • 検索もできる(これははてブ有料ユーザーのみ)
    • [tag]とかでタグ絞り込みもできる

という感じです。(はてブ有料ユーザーになる一番のメリットは、個人的にはこのマイブクマ全文検索APIが使えることだと思ってます。レスポンスが超早くて快適だし、グリモン書いて検索エンジンの検索結果と一緒に表示するようにしたりすればマジで生活が変わります。はてブをヘビーに使う人であれば契約しておいて損はないと思います。)

Install & How to Use

https://github.com/Cside/StartFromHatebu.crx/

git clone git://github.com/Cside/StartFromHatebu.crx.git
# chrome://extensions/ を開く
#   => デベロッパーモード
#     => 「パッケージ化されていない拡張を読み込みます」でStartFromHatebu.crx/を選択
cd StartFromHatebu.crx/
cpanm Module::Install Module::Install::AuthorTests
cpanm --installdeps .
perl -MConfig::Pit -e'Config::Pit::set("hatena.ne.jp", data=>{ username => "username on Hatena", password => "password" })'
plackup -p 5000 app.psgi

これで使えるようになります。
もちろんポートは5000番である必要はありません。 ただし5000番以外のポートを使う際はオプションページからURLの変更を行ってください。 (オプションページは chrome://extensions/ にアクセスして探すと見つかります。)

Chrome拡張だけどほとんどPerlで書いた

ふつうChromeの拡張って全部JavaScriptで書くもんだと思うのですが、

  • JSでゴリゴリHTML生成するのだるい…
    • テンプレートエンジン使いたい…*1
      • というか話題のXslate使ってみたい
  • JSでのWSSE認証ははまりやすいらしい、怖い
  • JSでAtomのパースを頑張りたくない
  • JSでPUTとかDELETEとかどうやるのか知らない
  • 要するにJSに詳しくない

等々の個人的な理由があり、ほとんどの部分をPerlで書きました。

仕組み

メインの部分はPlackを使ったWebアプリです。
で、このアプリのHTMLを、JSがクエリパタメータを調整しつつoninputでGETしてるという感じです(JSの役目はこのくらい)。こういった手軽なアプリを作るのにPlackはいいですね。
また、いつか使おうと思っていたText::XslateやData::MessagePackを使えて良かったです。

Perlで書いたメリット、デメリット
メリット
慣れてるPerlで作れたからとにかく楽だった。
デメリット
使う側にとっては、DLしてから動かすまでのプロセスが増えてしまうので、そこで避けられてしまうかも。やっぱりJSで全部書いたほうがユーザーのためではあったなあ…と反省。

TODO

  • 検索結果が20件以上のときのMoreモードの実装
  • いい感じのファビコン
  • 無駄な処理を改善
  • 壁紙設定できるように
  • キャッシュの長さの指定をオプションページからできるように

追記

*1:JSにも調べればあるかも?