« 携帯電話と個体識別番号とセキュリティ | メイン | 「FIREFOX 3 HACKS」を読みました »

Greasemonkeyを作る時に気をつけていること

以前、書こうと思っていて、すっかり忘れていた事を、Ruby会議に参加して思い出したので書きます。

Greasemonkeyのscriptを作る時に、気をつけていることがあります。それは、サイト作成者に対する礼儀です。あるサイトのデザインが酷いと思ったからと言って、『xxxのサイトのデザインが酷いのでデザインを改善するグリモン書いた!』とblogに書きますか?私はこの様な事にならない様に気をつけてます。サイトのデザインが酷いと思うのはもしかすると自分だけかもしれません。ユニバーサルデザイン・アクセシビリティに気を払ってそういうデザインなのかもしれません。実際の所はわからないわけです。どういう事情なのかわからないのに、グリモンを書いて安易にネットに公開という様なことは、私は避けたいと思っています。

このため、サイトを改変する様なuserscriptはあまり実装しません。サイトの改変はしませんが、機能の追加は良くします。この二つはどこが違うのかわかりにくいとは思いますが、『おもてなしを追加できるかどうか』が基準だと言い換えればわかってもらえるんじゃないでしょうか。でも、『xxxするおもてなしを追加するGreasemonkey』はわかりづらいので『xxxする機能を追加するGreasemonkey』と書く事が多いと思います。そして、サイトの運営者と訪問者、双方の益になるかどうかも判断の基準になっています。

ここでは、Reject会議で話した『「るびま」をどこまで読んだのか記憶するuserscript』を例にお話しします。

私がRubyを勉強しはじめた当時、「るびまは全部読んだほうがいい」と勧められました。しかし、先頭から順に読もうと思っても難易度が混在していたため、初心者向けの記事や興味のある記事から読んでいたのですが、どこまで読んだかわからなくなってしまいました。読んでいないと思っていた記事の途中で既読と気付いたり、読んだつもりのものがそうでなかったり、間があいてしまった時にどの記事が読んでいる途中なのかさえわからなくなったのが、このuserscriptを作った動機です。
このuserscriptは「るびま」の各記事の既読を管理してくれます。このuserscriptは文章が記事か記事ではないかは一切判定せず、「るびま」の内部リンクを調べて、リンク先に対してのステータス管理を行なっています。記事か記事でないかは利用者に判断してもらう方針をとっています。

それでは、まず利用する側から、どのようなステータスがあればいいのか考えてみます。
まず、「既読」と「未読」です。そしてその中間の状態である「途中」。「目次」もステータスとして管理したところですが、その他にも記事ではないページがあるかもしれません。そこで、「目次」はステータスとせずに「記事ではない」というステータスにして、利用者に判断してもらえるようにします。ここまでで、ステータスは「未読」「途中」「既読」「記事ではない」の4つとなります。

これで十分でしょうか。いえ、不十分です。「未読」の分割が必要です。「未読」には読むつもりだけど読んでいない状態と、そもそも読むつもりがない状態があります。このため「読まない」というステータスも切り出します。そして、「読まない」のか読むつもりだけど「未読」なのかさえも決めていない、「保留」も追加します。
これで必要なステータスが全部で揃ったと思います。

「保留」
「未読」
「途中」
「既読」
「記事ではない」
「読まない」

では、これをサイトの運営者側の立場から見てみます。
どうですか。「読まない」というステータスが気になりませんか。できれば消したいですよね。

利用者が自分だけならステータスはこのままでも構わないかもしれませんが、公開するとなれば運営者も目にする事になります。運営者の事を考えると「読まない」ステータスを消すかと悩むところですが、利用する側から見ると「読まない」というステータスは必要です。これをどうすべきか、実際に悩みました。そこで、『今は読まないと考えているけどそのうち読むかもしれない』という意味合いを込めて、「読まない」を「読まないつもり」に変更しました。

最後に、アイコン化のための漢字をひとつ割り当て、用語を統一したものが下のステータスです。

『留』:「読むかどうか決めてない」
『未』:「読んでない」
『中』:「読んでいる途中」
『済』:「読んだ」
『除』:「記事ではない」
『削』:「読まないつもり」

若干、運営者側に譲歩してもらったようなステータスになっていますが、このuserscriptによって「るびま」を読む人が増えることを期待するとバランスはとれているのではないかと思っています。

これまで公開したuserscriptの中で、特定のサイト向けのものは『おもてなしを追加』するものがほとんどです。他にいくつかあげると次のようなものがあります。
ここまで、『おもてなしを追加』が動機のものを説明してきましたが、本題とは関係のない他の動機で作成したuserscriptを簡単に説明して終わりたいと思います。

単に『便利な機能』を実装したい場合ですが、そのままでは面白くないので時々ネタに走ります。どこでも実行できるようなuserscriptの場合は、特にネタ色が強くなります。
『やってみたい技術』や『知って欲しい技術』が動機のuserscriptがあります。userscriptの可能性を探ったり、JavaScriptでこんなこともできると知ってもらいたい等、技術的な動機です。このような場合は、どのサイトでも実行可能なuserscriptがほとんどです。そして、ほとんどの場合、ネタに走ります。
最後に上げる動機は、『ネタ』です。全サイトが対象になるような場合もありますし、確実にネタだとわかってもらえる(と私が思っている)サイト等が対象となることもあります。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Google

タグ クラウド