タグ「Userscript」を含むエントリ

LDRの表示領域を最大化するユーザスクリプト

いつものようにフィードチェックしていて(最近貯まり気味),急に LDR の表示領域が狭いなーと思うようになった.きっと自室用に高解像度ディスプレイを買おう買おうと思いつつもお金が貯まらなくて買えない最近の鬱憤がそう思わせてきたのでしょう.

MacBook のちょっと縦の解像度が物足りないディスプレイでも楽しくフィードリーディングできるように,思い切ってバッサリいってみよう!

Maximize LDR view

ガンバり屋の棒人間さんは左上にスタンバってもらって,なかなかいいよ!

Gist を使ってみたかった!というエントリでした.以上です.

Shift + z でおkでした/(^o^)\

del.icio.usのポストページを俺仕様にするユーザスクリプト

del.icio.usのポストページの構成が自分に合わない!と急に思うようになったので作った.「tags」の入力欄と「notes」の入力欄を入れ替えて,まずtagsにフォーカスするようにした.それだけ.

ボクはまずタグを入力して,次にコメントを入れて,そしてポストするので,これでストレスが減ると思う!

Custom del.icio.us post ( for Greasemonkey )

// ==UserScript==
// @name           Custom del.icio.us post
// @namespace      http://june29.jp/
// @include        http://del.icio.us/*?*url=*
// ==/UserScript==

(function() {
    tbody = $x('//tbody', document)[0]
    notes = $x('//tbody/tr[3]', document)[0]
    tags  = $x('//tbody/tr[4]//input', document)[0]
    save  = $x('//tbody/tr[6]', document)[0]

    tbody.removeChild(notes)
    tbody.insertBefore(notes, save)

    tags.focus()

    // thanks to cho45 (http://lowreal.net/)
    function $x(exp, context) {
        if (!context) context = document;
        var resolver = function (prefix) {
            var o = document.createNSResolver(context)(prefix);
            return o ? o : (document.contentType == "text/html") ? "" : "http://www.w3.org/1999/xhtml";
        }
        var exp = document.createExpression(exp, resolver);
        var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
        switch (result.resultType) {
            case XPathResult.STRING_TYPE : return result.stringValue;
            case XPathResult.NUMBER_TYPE : return result.numberValue;
            case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
            case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: {
                result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
                var ret = [];
                for (var i = 0, len = result.snapshotLength; i < len ; i++) {
                    ret.push(result.snapshotItem(i));
                }
                return len != 0 ? ret : null;
            }
        }
        return null;
    }

}());

tako3.comとFooo.nameのAPIを叩くユーザスクリプト

Profile URLs Findr (ver 0.20071012) for Greasemonkey

foko3 (ver 0.20080430) for Greasemonkey

pants1010さんから「動きません!」とのご指摘を受けて,全面的に書き直しました.Fooo.name の tako3 互換 API を使うようにしたり,変更点が多いというかもう別物になったのと,もともとスクリプトの名前がしっくりきていなかったこともあって,今回,新たに foko3 という名前でリリースしています.
pants1010さん,ご報告ありがとうございました!

「API からのレスポンスに危険なコードは含まれない」という前提でスクリプトを作成しています.その点をご理解の上でご利用ください.

tako3.comFooo.nameに登録している人ならすぐに分かると思います.「今見ているWebページの中の人が他にどんなページを持っているか」をリスト化して表示してくれるユーザスクリプトです.例えばボクは「http://june29.jp/」の中の人でして,tako3ではこんな感じに,Foooではこんな感じにURLが関連付けられています.

スクリプトの概要

デフォルトの設定では「Ctrl+m」で動き始めます.この設定に意味はなくて,たまたまボクが使っていないキーだったからそうしただけです.snj14さんのSBMCommentsViewerに習ってキー設定は変えられるようにしてあります.最初は「@」で動くようにしていましたが,CtrlやAltと組み合わせないと日本語入力ON時に動かないから厄介ですね.また,テキストエリアなどの入力欄にカーソルがあるときはキーが効かないので覚えておいてください.ボクはdel.icio.usにアクセスしたときにカーソルが持っていかれているのに気付かずに動作確認のときにハマりました.

動き始めたスクリプトはtako3とFoooからデータを取得し,結果を画面右下のパネル上に表示します.データがなかったときは「見付かりません」って言います.パネル表示時にもう1度「Ctrl+m」(もしくは設定したキー)を押すとパネルは非表示になります.

もともとtako3からデータを取ってきて表示する「tako3 findr」というのを作って自分で使っていて,そんなタイミングでFoooっていうのも出てきたからまとめて扱えるようにと思って作りました.そのtako3 findrってのをベースにFoooの処理を継ぎ足しながら作ったのでソースがゴチャゴチャになりました.マズいなぁと思っています.改変等はご自由にどうぞ.責任は負いません.切腹はしません.

もっとデータがたまるといいな

www.horaguchi.net - Fooo.name!!
ソーシャルグラフ共有サイトと言うかなんと言うか、Fooo.name!!というWebサービスを作った:TKMR.blog.show

2つのサービスのそれぞれの作者さんであるhoraguchiさんとtkmrさんが言葉を交し合っているのですね!これからもっとデータの量も増えて質も高まって,さらにはユーザが利用しやすくなっていくことを願っています.ちゃんとデータがたまれば,何か面白いことができるって信じています.過去のエントリでちょろっと夢見たりもしています.

先発の各種プロフィールサービスは,この動きをどう見るのかな.ちょっと覗いてみたところ,iddy.jpには約3,000人,アバウトミーには約14,000人のユーザが登録している.この数字にはURLを全く登録していないユーザも含むから,使えるデータはもっと少ないんだけど,それでもかなりの数ですよね.ユーザの登録URLの一覧を取得するようなAPIは公開されていないところを見ると,目指すところが違うかもしれないから,比べるのは間違っているかもな.

ユーザスクリプトの管理

最近,「Greasemonkeyスクリプト」じゃなくて「ユーザスクリプト」っていうようになったのは,それだけボクがユーザスクリプトに可能性を感じているってことの表れだよ.将来的にはFirefoxの1アドオン上で動くものじゃなくて,「お気に入り」とか「ブックマーク」と同じように一般名詞として認知されるようになるべき.実際,Operaで動くものも多数あるんだし,みんなもユーザスクリプトとかuser.jsって呼んだらいいよ!っていう押し付け.でもボクもdel.icio.usのタグはいまだにGreasemonkeyを使っているという自己矛盾.

ボクはこんなことを言うためにこのエントリを書き始めたわけじゃない…!

ユーザスクリプトの管理

さっき,AutoPagerizeがアップデートされたことを知り,更新版をインストールしました.そのあと,tumblrのダッシュボードを開いていつものようにLDRize!気に入ったらピン立てピン立て!ミニバッファでリブログ!…してやろうと思ったのですが,どうにもLDRizeの挙動がおかしい.AutoPagerizeで継ぎ足しされた部分にカーソルが上手く合わない状況に陥りました.

原因は,スクリプトの実行順序にあったようです.AutoPagerizeを上書きインストールしたことで,AutoPagerizeが1番最後に実行されるようになってしまっていたようです.「ユーザスクリプトの管理」の画面で1番下にきていた,ということです.

AutoPagerize,LDRize,LDRize_Command_Tumblr_Reblog,Tumblr Big Photo,の順で再インストールしていったら問題は解決しました.別に再インストールしなくても,管理画面で順序を入れ替えればよかっただけだと後になって気が付いた.もし同じ現象で困っている人がいたら,順序を疑ってみるといいかもしれません.

ユーザスクリプト同士の素晴らしい連携が活発に行われるようになって,Webブラウジングがどんどんあるべき姿に近付いていて,それはとても嬉しいことなのだけど,一方で管理が大変になってきている.ボクはGreasemonkeyの開発体制を知らないのでもちろん偉そうなことは言えないのだけれど,バージョン管理機能や,スクリプト同士の連携をサポートする管理機能は,これからますます必要になってきそうなので,どんどん発展していってほしいものです!

そんなこんなで,ボクにとってユーザスクリプトのないブラウジング生活はもう過去の思い出なわけですが,人力検索はてなのGreasemonkeyとは何か、知っていますか?の結果を見る限り,まだまだ一般的ではないのだなあと痛感させられます.そういえばボクは,どのタイミングで,どんなキッカケでユーザスクリプトに出会ったんだろう…

ユーザスクリプトのある世界

最後にもうひとつユーザスクリプトに関連した話.話題がどんどん表題から遠ざかるけど気にしないよ.

twitterの「from ○○」の部分を見ていると,皆さん色々なクライアントから更新していることが分かってとても楽しい.twitterの爆発的ヒットの一因として,利用スタイルをユーザに委ねたことが挙げられるでしょう.「好きにしていいよ」スタンスです.ボクもTwitterIrcGatewayTwitter LineTwitterFoxMovaTwittertmitterなどなど,色々と試してみましたが,選ぶこと自体がショッピングをしているようで楽しいですね!今なお模索中です.

でも!なんだかんだでWebブラウザからの利用がすごく多いんです.ユーザさんのプロフィールアイコンが表示されて,@付きメッセージを書くときにはユーザ名を補完してくれて,「j」「k」でログをたどれて,ステキな発言には☆をつけられて,tinyurlは展開してくれて,はてなフォトライフのURLは展開して写真に置き換えてくれて,UstreamのチャンネルのURLを検知してその場で映像を見られるようにしてくれて… (略) …お察しの通り,数々のユーザスクリプトのおかげです.作者の皆さまに感謝!

ユーザスクリプトは,作る側も使う側に手軽に扱えるのがすごくいいですね.LDRizeなどの作者さんで,ボクがとても感謝しているsilogのシロさんのところにコメントを書かせていただいたときに,ファイル1つで完結しているので読みやすい・いじりやすいという話がありまして,まさにその通りだなと思いました.必要な機能だけを選んで使ったり,カスタマイズしたりできますもんね.

ユーザスクリプトを今よりもっと広めて,みんなのブラウジングスタイルが進化していくように,活動していきたいと思っています.

ユーザスクリプトでミニ画面を出すとき

今,ちょろっと書いているユーザスクリプトで,Webサイト上にナビゲーション用のミニ画面を出そうとか思っている.でもそのミニ画面をどこに出したらいいか決められなくて困っている.好きなところに出していいよ!って言われてもなぁ.

ボクはSBMCommentsViewerAutoPagerizeを超絶に利用させてもらているので(どちらも利用していることを忘れるという点で,共通の素晴らしさを持っている),閲覧中のページの右下にはSBMCommentsViewerのミニ画面が,右上にはAutoPagerizeのミニ画面がそれぞれ表示されることになります.

だから右下と右上に新しく何かを表示させると,重なっちゃう感じです.オセロ的な意味で残りの角は左上と左下ですが,ナビゲーションを左側に持ってくるのは何となくイヤです.

ユーザスクリプトでミニ画面を出したい,ってのはほどほどに普遍的な状況だと思うのですが,これらを共通に扱うのがいいのかなあ.次々に「add」していけば,ちゃんと並べて表示してくれるような形になっていればいいのかな.

追記

silog - diary/2007-08-10/状態表示領域で,シロさんが同じ話題について言及されています.