日記はScrapboxに移動しました。

  • ソーシャルグラフについて

    Web 2.0の次はこれだ!との呼び声も高いソーシャルグラフについて、LiveJournalのファウンダーであり、数々の優れたソフトウェアの作者としても名高く、また、最近ではSixApartを離れることとなった件でその去就が注目されてもいるBrad Fitzpatrick氏が、”Thoughts on the Social Graph“と題するマニフェストを発表した。さっそく一読して、これこそが、今後追求されるべき課題だという思いを、いっそう強くすることとなった。そこで、理解を深めるために、翻訳を試みた。

    ここしばらく、私はソーシャルグラフについてあれこれと考えている。つまり、グラフを集約すること、分散化、社会的な関係のポータビリティ等についてだ。
    最近、なんらかのカンファレンスで私を見たことがある方なら、ソーシャルグラフについて私があれこれと話すのを聞いただろう。私は、スライドや図解を用いたり、聴衆の反応や質疑応答に臨機応変に対応したりしながらプレゼンテーションするのは得意だが、多様な読者が目にするブログのような場所に、このようなことについて書くのは、非常に難しい。また、ブログに書いた結果「それ○○でできるよ。とにかく、君の考えはまったくもって間違ってる」といったコメントの嵐になってしまうかもしれない(訳注:Plaggerではできません)。しかし、そろそろ考えを述べるべき頃だろう。
    現状においてどのような試作品があるのか、また、私が何を作りたいと思っているのか(どんなものが作られてほしいと思っているのか)について説明する前に、まずは、なにが問題であるのかについて述べ、また、その根底にある諸前提について述べたい。

    1. なにが問題なのか
    2. 目指していること
    3. 目指していないこと
    4. このプロジェクトの前提
    5. 開発の進捗状況
    6. 将来どうなるか
    7. 協力してくれる方へ
    8. 結論
    9. 関連するかもしれないプロジェクト

    なにが問題なのか

    従来型のウェブサイトのみならず、いわゆる「ソーシャルアプリケーション」がますます増えてきている。それらのアプリケーションは、「ソーシャルグラフ」を必要とするか、あるいは、ソーシャルグラフにより得られる情報を利用することで、ユーザに対してより価値あるものとなり得る。私が「ソーシャルグラフ」という言葉によりいわんとするところは、Wikipediaにある通り、また、私が後に詳述する通り、全ての者を位置づけるグローバルなマップである。残念なことに、包括的かつ脱中心化されたソーシャルグラフは、存在しない(相互に運用可能な複数のグラフについてもまた、同様である)。それどころか、信頼が置けず、また、それぞれのサービス内でしか利用できない、何百ものばらばらなソーシャルグラフがあるばかりだ。
    たとえば、dopplr.comのような、友人がいつどこへ旅行にでかけるのかを知ることができるといった、ある特定の便利で魅力的な機能を提供するためにソーシャルグラフを必要とする、新しいサイトを開発する場合を考えてみよう。単に主な機能を実装するだけでは済まず、さらにずっと大きな問題に直面するだろう。ユーザ名、パスワード(願わくば、OpenIDを使いたいところだ)、友人を招待する方法、友人関係の追加や削除、まだ他にもたくさんある。たいていの場合、メールアドレスを入力してもらう必要があるし、また、そのアドレスに確認のメールを送らなくてはならない。それから、ユーザが、ユーザ名やパスワードを忘れた時に送るメールのこと、などなど。簡潔にいうと、人々は、それぞれのサイトでいちいちユーザ登録をしたり、友人関係を入力したりしなければならないことに、うんざりしている。開発者にとっても、「ソーシャルアプリケーション」の開発は、過度に労力を要する作業になってしまっている。
    そのような問題に対して、Facebookは、単に全てのアプリケーションがFacebook内にあれば解決することではないかと考えているようにも見受けられる。Facebookは素晴しいプラットフォームであるし、技術的にも優れたところがあるが、Facebookが今後も良き存在であり続けること、安定してサービスが利用可能であること、オーナーが変わった時にルールが変わってしまわないこと等に依存する、隷属的な立場になってしまうことを、開発者や「ウェブ2.0」的コミュニティは躊躇している。そうしたためらいは、十分に根拠のあるものであると思われる。インターネットにとって、「ソーシャルグラフ」の全てを手にした中心的な存在は、悪である。だからといって、Facebookを排除せよといっているわけではない!まったく違う。Facebookは素晴しいし、私自身、とても好きなサイトだ。しかし、ソーシャルグラフFacebookの外にあるべきだ。MySpaceもまた、多くの良質なデータを保有している。しかし、それが全てではない。LiveJournalDiggTwitter、Zoomer、Pownce、Friendster、Plaxo、そしてまだまだ他にもあるたくさんのサイトもについても同じことがいえる。より重要なのは、それらのうちどれかひとつのサイトがデータをため込むべきではないということではなく、どのサイトもそうするべきではない、あるいは、全てのサイトにとってそれが利用可能であるべきだということだ。データは、ただ単にそこにあるだけでいい。

    目指していること

    1. 最終的には、全てのサイト上のデータを利用し、しかし、グラフを保有するたったひとつの企業や組織に依ることなく、ソーシャルグラフをコミュニティの財産にすること。
      1. 全てのソーシャルネットワークサイトからグラフを集め、統合し、グローバルに集約されたグラフを再配布する非営利団体を設立し、オープンソースソフトウェアを制作する(その際、著作権については、当該非営利団体が保有するものとする)。そのことにより、他のサイト(あるいはユーザ)の小規模な利用に際してはパブリックなAPIを、より大規模なユーザによる継続的な更新の必要な利用に際しては、更新内容や数々のAPIを通して、データのダウンロードを可能にする。
      2. 初期段階においては、当該非営利団体のサーバおよびデータベースが中心的な役割を果たすことになるだろうが、その他の誰もが、自らのスペースにおいてデータを共有することが可能となる仕組みを保証する。svnではなく、gitのようなものだと考えるといいだろう。どこが提供するAPIやサーバを利用するかは、利用者次第だ。あるいは、自らデータを共有するサーバを運営することもできる。
    2. 開発者にとっては、自ら未加工のデータからグラフを解析しなくて済むよう、以下に挙げる高レベルのAPIが必要である。
      1. あるノードと等価なノードを返すAPI。たとえば「LiveJournalのbrad」というような形で与えられたひとつのノードに対して、LiveJournalの”brad”、Voxの”bradfitz”、そして4caa1d6f6203d21705a00a7aca86203e82a9cf7a(私[訳注:原著者のBrad Fitzpatrick]のFOAFで利用している、メールアドレスのmbox_sha1sum)といった、同等のデータを返す。詳細については、スライドを参照してほしい
      2. あるノードにとっての、外向き/内向きのエッジ(訳注:あるノードと関係を持つノード。典型的には、友人)を返すAPI。つまり、誰を関係のある者と見なしているか、また、誰から関係のある者と見なされているかを調べる。
      3. あるノードにとって、それと等価のノードが持つ全ての友人を調べ、それら友人にとっての等価なノード全てを展開し、その上で、目的とするノードのタイプによってフィルターをかけるAPI。これは、前述のAPIを、1→2→1という順番で一度に呼び出すよう、組み合わせたものである。たとえば、LJの”brad”と等価なノードが持つ全ての友人の中から、mbox_sha1sumかTwitterのアカウントを持つものだけを取り出す、といった使い方ができる。
      4. あるサイトにおいては友人関係にあるのに、別のサイトではまだ友人関係を築いていないノードを調べるAPI。あるノードが与えられたら、それと等価なノードを全て展開し、友人を調べ、さらにそれら友人を展開し、その上で、つながりの欠けている関係をレポートする。これは、各ソーシャルネットワークサイト間での関係を同期させるためのAPIである。たとえば、Friendsterにおいて友人同士である者が、MySpaceでもそうであるかどうかを知りたい場合に利用できる。

      より一般的に、未だ我々の考えもつかない新しいアプリケーションを可能とするべく、さらに多くの開発者向けAPIが必要となるだろう。

    3. エンドユーザのために
      1. ユーザは、初めて訪れたソーシャルアプリケーション(ここではdopplr.comを例に用いる)であっても、可能ならばOpenIDによって(必須ではない)、ログインできる必要がある。その際、ユーザに対して、以下のような文言を表示する必要がある。

        公開情報に問い合わせたところ、28名の友人がdopplrを利用しています。なぜあなたの友人がここに示されているのか、また、彼らの他サイトにおけるユーザ名については、以下に示す通りです。どの友人と、このサイトにおいても友人関係を気付くか選択してください。全ての友人をこのサイトにおいても友人にするには、「全てを選択」ボタンをクリックしてください。

        また、dopplrは継続的に、サイトを利用しているユーザに対して、他のサイトで友人関係にある者もサイトを利用し始めたかどうかを知らせ、また、dopplr.comにおいても友人関係を築くよう促す。彼らは、既に他のサイトで関係性をパブリックに明示しているのだから、再度の招待や、友人関係の結び直しは必要ない。中には、その場しのぎの、あまりきれいではないやり方であるとはいえ、このような機能をすでに提供しているサービスもある。たとえば、LiveJournalにおいては、ユーザ名を入力することで、LiveJornalを使っている友人をFOAFから抜き出したり、メールアドレスで示されるユーザ名とパスワードを入力することで、アドレス帳を取得することもできる。しかし、真っ当で、包括的な方法により、それらの機能を実現しているサービスは、まだ存在しない。

      2. ユーザ自身のポリシに従い、ソーシャルネットワークサイト(外部に開かれたAPIを提供するか否かに関わらず)における関係性を管理したり、それぞれのサイトを互いに同期させたり、その他、ユーザが望むことをなんでも可能にするためのツール(おそらくは、ブラウザのアドオン)を提供する。それらのツールは、非協力的なサイトに対してもっとも価値のあるものとなるだろうが、ともあれ、その場合なにが起っているのかをユーザに対して明確にし、決して惑わせるようなことがあってはならない。この件については、後述の通りである。
      3. グラフデータを、パソコン上のドキュメントと同様、ポータブルなものにする(エンドユーザに対しては、「グラフ」という言葉は使わないにしても)。

    目指していないこと

    1. このプロジェクトは、Facebookに取って代わることを目指しているわけではない。実際、私が話した人々のたいていは、Facebookをとても気に入っている。ただ、すでにパブリックなものとなっているデータに、もう少し簡単にアクセスしたい、ある特定のプラットフォームによる囲い込みに対する懸念を和らげたいと考えてもいる。このプロジェクトへの参加についてもたれた、Facebookとの初期の話し合いにおいては、非常に期待の持てる回答を得ている。
    2. このプロジェクトは、新たなソーシャルネットワーキングサイトや、その他、なにかエンドユーザにとって面白いものを作ろうとしているわけではない。そうではなく、Dopplrやその他もろもろのサイトのような、たくさんのソーシャルアプリケーションが花開くべく、本質的な機能を構築しようとしているのだ。一つのことに取り組み、それを上手にやる。小さな、孤立したソーシャルグラフたちを、ひとつの巨大なグラフに統合し、それを広めることこそが、もっとも有効なのである。
    3. このプロジェクトは、Plaxoに取って代わろうとしているわけではない。
    4. このプロジェクトは、__________に取って代わろうとしているわけではない。

    このプロジェクトの前提

    1. ソーシャルグラフは、パブリックなノード、プライベートなノード、パブリックなエッジ、プライベートなエッジからなる。いまのところは、パブリックなデータに焦点を合わせている。というのも、我々がネット上で自由に提供できるのは、それが全てであるからだ。公開データにフォーカスすることによっては、問題を100%解決することはできないものの、それでもまぁ、複雑な10%をのぞいた、90%の問題を解決することができるだろう。プライベートなデータについては、おそらくはより高いレイヤにおいて、後で考慮に入れることができる。ともあれいまは、パブリックなデータのみに注力する。
    2. さらに、まず第一に、写真のようなデータ(movemydata.orgを参照のこと)、誕生日、出身地、趣味等といったものではなく、友人関係に焦点を合わせる。グラフ中に現れるデータのうち、中身のないものや、友人関係に関わらないものについても、どうモデル化するかについて計画はあるのだが、後日の課題とする。それらの問題については、次のフェイズで取り組むことになる。
    3. 協力的なサイトもあれば、非協力的なサイトもある。私がこのプロジェクトについて話した小規模サイトは、ほとんど例外なく、協力を申し出てくれた。彼らは、自身の保有するソーシャルグラフが不完全であり、また、そのことについては彼らの専門外であることも認識している。彼らはただ、自分たちのサイトの機能を提供するためだけに、ソーシャルグラフを必要としているに過ぎない。データがどこから来たかを気にかけたり、彼らの比較的小規模なデータを、グローバルに共有されたグラフをよりよいものにするために使うことを嫌がったりはしない。一方、非協力的なサイトはすでに大規模であり、彼ら自身でグラフを保有することが重要であるとみなしているか、あるいは、十分に大きいためにこのような話題に対して興味を持とうとしないようなサイトである。注意してほしいのは、「非協力的」とは「積極的に敵視している」という意味ではないということだ。ただ、単にこのプロジェクトに対する支援を考慮することもないだけに過ぎないだろう。
    4. この世界が、誰かが発案した「ソーシャルネットワークの相互運用プロトコル」に一斉に乗り換えるなんてことはないだろう。XMLの時にそうであったように。それは、単に起らない。このプロジェクトは、データの収集、変更の通知等に関するあらゆる方法をサポートするべく、努めなければならない。新しいプロトコルや、XML/YAML/JSONといったフォーマットは、協力的なサイトにとって役立つだろう(すでに、少数のサイトにより、使われ始めてている)。しかし、全般的にいって、たいていのサイトは、最初は協同しようとはしないだろう。また、たとえばMySpaceのようなサイトがサポートするなんてことはあり得ないだろう。みなが同時に、というよりもむしろ、ひとつひとつのサイトがぽつぽつと対応していくことになるだろうと思う。であるから、このプロジェクトでは、再頒布される全てのデータにおいて、オープンで標準的な仕様や、マイクロフォーマット等を用いるだろう。
    5. たいていのユーザにとって、XML、プロトコル、標準仕様、データのフォーマット、集中化対分散化、データの置き場所、囲い込み等は、どうでもいいことだ。このドキュメントを読んでいるあなたは、普通のユーザではない。普通のユーザにも興味を持ってもらうために、我々は彼らに価値あるものをもたらさねばならない。他では得られないなんらかの機能、簡単さ、見た目の派手さ、実用性等といったものを。良質なデータがユーザを増やし、ユーザがまたさらに良質なデータを生む。どのようにしてこのサイクルを発生させるかについては、たくさんのアイディアがある。このことについてはいまは述べないが、しかし、幸運にもたくさんの良質なデータが、すぐれたAPIやオープンなデータフォーマットを通して、すでに広く得られるようになっている。
    6. ブラウザのアドオンやその他の、エンドユーザがダウンロードするようなものは、さしあたって必要ない。このプロジェクトは、第一にウェブ上で機能するものだからだ。いくつかの(非協力的な)サイトに対するある種の機能を提供する場合には、ブラウザのプラグインが必要となることもあろうが、たいていの場合は、必要ないだろう。
    7. 一部の非協力的なサイトにおいて、ユーザが友人関係の追加や削除を行ったり、データを取得するのを手助けするために、ブラウザのアドオンが使われることになるだろうが、彼らのブラウザ(すなわち、IPアドレスや、UserAgent文字列)を利用して、彼らのものでないデータを集めたり、公表したりしては、決してならない。たとえば、MySpaceのようなサイトにおいて、(ユーザがそのように設定しているのであれば)彼らの友人に関する情報を収集するのは問題ないが、彼らの友達の友達をスクレイピングするのはもっての他だ。なぜなら、それは彼ら自身のデータでなないからだ。それは、彼らの友人のもの、あるいは、MySpaceのものだ。いずれにせよ、アドオンをダウンロードしたユーザのものではない。
    8. ユーザが常にソーシャルネットワークの自動的な同期を求めているわけではないことについては、すでに認識している。人々はそれぞれのサイトをそれぞれ違った風に利用しているし、また、あるサイトでの「友人」は、別のサイトでの「友人」とは全く違った意味を持つこともある。目指すところは、サイトやユーザに未加工のデータを提供することであって、あとは彼ら自身のポリシに従い、それらのデータを用いたサービスを構築すればよい。

    開発の進捗状況

    2007年8月16日現在、上述したうちの大部分がすでに試作されつつある。

    1. 5つのソーシャルネットワークサイトのデータを得て、グラフにモデル化した。
    2. 上述したAPIの、実際に機能する実装も試作済みである(パフォーマンス、最適化、キャッシュ、並列処理においてまだまだ改善すべき余地があるが、まずは正しく動作することが優先される)。
      1. APIを用いて、LiveJournalとVoxにおける私のアカウントについて、つながりの欠けた友人を、他の別の場所における関係性を用いて見つけられるところまできている。
    3. MySpace上で機能するFirefoxのアドオンの開発に取りかかった。
    4. 特別な公開ノード、等価なノードについて、そして、通常捕捉され得ない関係性をユーザが公表するためのウェブサイト作成にとりかかった(そのサイトにおいては、ブラウザのアドオンのダウンロードページのみならず、ユーザがサイトを楽しめるように、興味深い統計情報やウィジェットを用意し、また、望みに応じて別々のサイトを同期させることができるようにする予定である)。

    将来どうなるか

    David Recordonは、概してこのプロジェクトのような事柄に取り組むために、Six Apartに入社することを発表した。Plaxoもまた、この点において興味深いサイトだ。そのうち、このプロジェクトによるデータを使って、Movable TypeWordPressを使っているブロガーがコメントスパムを判別するのに役立つ、信用や評判を扱うAPIのような、無料あるいは有料のサービスを提供する企業も現れるだろう(いったんOpenIDで認証されたコメントなら、APIに問い合わせることで、そのコメント主が信頼の置ける者かどうかを調べることができるというような)。
    いずれにせよ、最近ではたくさんの人々がこの問題について取り組んでおり、様々なアプローチについて語り合っている。たくさんのグループが協働して取り組んだOpenIDの時のように、複数のグループがまとまってこの問題に取り組むことになりそうだ。

    協力してくれる方へ

    ソーシャルネットワーキングサイトを運営していて、ノード/エッジ(ユーザ/友人)のデータを持っている方、あるいは、APIのベータテスタとして協力したい方は、本プロジェクトのGoogleグループに参加して、連絡していただきたい。
    エンドユーザ向けのウェブサイトやツールを試してみたい方は、ちょっと待ってほしい 🙂 後日、制限つきのベータテストについてアナウンスがあるだろう。

    結論

    このプロジェクトは非常にエキサイティングだ。あなた方にも、このプロジェクトをどのように利用できるかを考えてほしい。きっと、クールなものになるよ。

    関連するかもしれないプロジェクト

    • http://adactio.com/journal/1328 – Jeremy Keithも、おそらくはわずかにことなるアプローチをとりつつも、この種のプロジェクトにすっかり夢中みたいだ。素晴しいことだ。このプロジェクトは、様々な観点から検討される必要があるのだから。
    • http://microformats.org/wiki/social-network-portability – これは、人々の考えをひとまとめにしたWikiだ。マイクロフォーマットにフォーカスした内容に見えるかも知れないが、そうではない。これは私の強い信念なのだが、ある特定のフォーマットやAPIの採用をしたってうまくいくわけがない。私は、単にギークのためのものを作りたいわけではなく、全てのユーザのためのもの、今日のポピュラーなサイトで機能するものを作りたいのだ。
    • http://movemydata.org/ – 写真をダウンロードし、他のサービスのそれと同期するためのデスクトップソフトウェア等を提供している。このプロジェクトに比べると、よりデスクトップやコンテンツにフォーカスしたサービスだ。
    • http://www.wired.com/software/webservices/news/2007/08/open_social_net – Wiredですら、ただ情報を貯めこむだけのサイトにうんざりしている。

    コメントしたいことがあるなら

    brad’s life – Thoughts on the Social Graphによろしく。あるいは、Davidが作成した本プロジェクトのGoogleグループに参加してもらいたい

  • デスクトップアプリケーションは死んだ

    Ev’s Rants: Desktop Applications are Dead“が面白かったので、翻訳してみた。というか、「超訳」だが。

    いまさらその話かよ、って?そんなこといっても、「デスクトップアプリケーションは死んだ!」とか、いまもみんなそこらを叫んで回ってんじゃん。
    その連中の多くは、いわゆる「ウェブアプリケーション」の開発者どもだ。誰があんな連中のいうことを聞くんだ?やつらは本物の開発者なんかじゃない。だよね?全然ものがわかってないし。あいつらときたら、malloc()やfree()すらまともに使えないんだから!あの哀れな連中は、おもちゃみたいな言語でforeachループを書いたりして、ママが仕事ででかけてる隙にお化粧道具で遊ぶガキみたいなことばっかりしている。本物のアプリケーションを作ったり、自らメモリを割り当てたり開放したり、パラメタをポインタからポインタに渡したりしている我々本物のエンジニアに、彼らは小便をひっかけ回っている。
    マジな話、僕ら、ウェブアプリケーションの「開発者」とやらを見下しているからね。聞くところによれば、あいつらの中には、元々はタクシーの運ちゃんだった者もいるそうじゃないか。そんな連中が「デスクトップは死んだ」とか宣言してくれちゃったって、「なにゆってんの?」って感じでしょ? それに、教えてよ。Yahoo!以来、そんなウェブアプリケーション以上に、ITにもっと魅力的なものってこれまであった?
    でもね、デスクトップは死んだってのは確かなことなんだ。
    この文章を読んでいる君たちの中には、年季の入ったデスクトップアプリケーション開発者からそう聞いた者もいるだろう。「オンラインアプリケーション」とかって、必ずかっこにくくって表記するようなシニカルなやつからね。ご存知の通り、あんなの「本物の」アプリケーションじゃないから。あぁ、もひとつよく知られたDISがあるね。「JavaScriptなんて『本物のプログラミング言語』じゃねーよ」みたいな。どうよ?
    さらに!僕は、思い出せる限りずっと、Microsoftの大ファンだ!(まだこのエントリ読んでる?)レドモンドから新しい技術が発表されるたび、すかさず飛びついたものだよ。プログラマはみんな、ハードウェアや、なんらかのアセンブラについてよく知っているべきものだと思っていた。さらに、C++は全てのプログラミング言語の父であり、平均的な能力を持った人々が使えるように作られたJavaは、そのシンプルなサブセットに過ぎないとも。Javaは、大勢の使い捨て技術屋たちに、みすぼらしいRDBMSラッパを安く作らせるために開発された言語だ。
    ほんとにそんな感じなんだけど、それでもなお、デスクトップは死んだんだ。
    誰がデスクトップを殺したんだろう?それはMicrosoftだ。僕はレドモンドが悪いといっているんだ。HTTPベースのアプリケーションが問題を解決できるわけじゃない。ウェブが素晴しいからデスクトップが死んだというわけじゃないんだ。断じて違う。ウェブはいまだってなおクソだ。だって、作ってるのが本物の開発者じゃないんだから。
    かつては生き生きとしていたデスクトップも、いまはどんどん悪くなるばかりだ。長い時間かけて、いまや、デスクトップはまったくもってダメなものになってしまい、そのせいでウェブベースのUIですら、まともで使えるものに見えるぐらいだ!
    コラボレーションや情報の共有、その他のウェブがもたらすもろもろのよい面については、とりあえずおいておこう。この文章の文脈では重要ではないし。僕は全般的なユーザエクスペリエンスについて話しているのだから。第一に、ユーザインタフェイスについて。それに、コラボレートや共有、とにかくその他なんでも、デスクトップアプリケーションでだってできるのだし。そこに技術的な障害はないんだ。たとえば、ファーストパーソン・シューティングゲームMMOFPSでは、プレイヤたちはもう何年もお互い殺し合っている。まだ例が必要だというなら、iTunesこそがそのいい例だ。
    なぜデスクトップはダメになってしまったのか?なにが悪かったんだろう?いま、なにかソフトウェアをインストールする状況を考えてみよう。ほんと、あれこれと掘り進めて考えるべきことがある。アプリケーションを開発し、ユーザにそれをダウンロード、インストールさせ、そして使ってもらう。スタンダードなアプリケーションを開発するために必要な実行環境がどんなものか知っているかい?1991年頃に作られた骨董品だよ!そう、それが君の武器なんだ。.NETはダメだ。あれはいまなおWin32のサブセットに過ぎない。それに、まだ簡単に利用可能でないため、使えない。そう、.NETランタイムは、もっともポピュラーなOSであるWindows XPに含まれていない。
    Microsoftは、.NET 1.0を最初のWindows XPリリース時にバンドルしないという、戦略的な誤りをおかしたんだ。その上、巨大なService Pack 2にすら最新の.NETを含めなかった。
    というわけで、デスクトップアプリケーション開発に際して利用できるスタンダードな実行環境は、いまだに古くさくてさび付いたWin32 APIだけなんだ。さもなくば……。
    さもなくば、いまだにデスクトップアプリケーションを好む哀れなユーザたちは、ちょっとソフトウェアを試してみるためだけに、あの無駄にでかい.NETランタイムをダウンロードし、インストールしなければならない。そんなの簡単じゃん、って?そりゃ僕らはダウンロードやインストールなんてソッコーでできちゃうけどさ。
    ダウンロード!僕がデスクトップをDISる時によく引き合いに出すのが、このダウンロードだ。ここんとこ、ダウンロードするプロセスが恐ろしいものになっちゃったことに気付いてる?インストールしようとしているソフトウェアの危険性を警告するあの恐ろしいダイアログを、3回も(そう3回も!)見る場合だってある。まぁ、我々のソフトウェアを使ってくれるユーザが勇敢で、うまくやり過ごしてくれることを期待しよう……。
    ユーザにインストーラを起動させよう。だけど、それはどこにあるの?どこにいっちゃったの?

    それ、ダウンロードしたんだけど、どっかいっちゃった。どこにあんの?

    ありがち?そんなことない?だとしたら、君が単に、まだデスクトップソフトウェアを開発したことがなくて、よく知らないだけだよ。多くのユーザは、君の作った大事なインストーラをダウンロードした後、それがどこに行ってしまったのかわからない。だから、デスクトップソフトウェアを売っている大企業は、インストーラのダウンロードのしかたや、ダウンロードしたものがどこにあるのかといった、一から十まで示したマニュアルを、ウェブサイトに掲載しているわけだ。
    もしMicrosoftが我々にWindows用のデスクトップアプリケーションをもっと開発して欲しいと本当に思っているなら、なぜInternet Explorerは、ソフトウェアをウェブページからそのままデスクトップにドラッグ&ドロップできるようになっていないんだ?ともあれ、目にしたもの全てを口の中につっこんだりしないこと、赤信号では止まり青信号になったら進むこと、見知らぬレストランでのトイレの見つけ方、そして、用を足したらちゃんと水を流すことを、ユーザたちはどうにかこうにかおぼえたのだから、彼らはウィルスをダウンロードしない知恵も身につけるだろう。
    さて、ユーザはインストーラを見つけ、クリックする……そこでまた立ち止まる……。

    おまえ、このソフトってインターネットからダウンロードしたの?マジで?俺、俺ってWindows Vistaだけどさ、おまえにいってんだよ、ヴォケが!おまえ、ダウンロードしたこのソフト、だいじょうぶと思ってんの?スクリーンを真っ暗にして、管理者用パスワードを入力させるようにしてやろっか?銃声を最大音量で鳴らしてやりてぇぇぇ!まぁ、ちょっとやり過ぎかもだけど。

    近頃のオンラインアプリケーションを使うことに対すると、デスクトップソフトウェアを購入することって、「エクセドリン」(ここではデスクトップアプリケーションのたとえ)を買おうとスーパーにいってレジに並んでたら、レジ係にいきなりビンタくらって、こんな具合にぎゃーぎゃーわめかれるみたいな感じだよね。

    ほんっとぉぉぉーーーーーーにこれ買うの???あんた、おかしいんじゃないの?キンタマがガンになるっていっても?

    一方、より効果のない「アドヴィル」(ここではオンラインアプリケーションのたとえ)は無料だし、それを買うのにわざわざどこかに行く必要もない。そんな「エクセドリン」を作るようなビジネスをまだやるつもり?僕はもうごめんだね。「エクセドリン」は死んだ。

    ユーザ: おい!おまえだよ!勝手に俺のノートに入り込んできやがったクソOS!ほら、これが俺のパスワードだよ!とにかくこのアプリケーションをインストールしたいんだよ!
    Vista: そんなにも言い張るなら……パスワードは合ってるよ。ああそうだ!そのアプリケーションを使ってる間は、念のため、コンドームをつけたらどうかと思うんだが、どうだい?だって、インターネットからダウンロードしたものなんだし、ところで……。

    これが簡単だって?(゚Д゚)ハァ?……まぁ、簡単ってことでいいや。つまり、君のユーザはそんな酷いパソコンを使っていないと仮定してみよう。しかし、サードパーティ製ファイアウォールソフトや「インターネットセキュリティ」、アンチスパイウェアそしてアンチアドウェアソフト、その他、インターネットとのやりとりを妨害したり、I/O負荷が高かったり、CPUを食いまくったりするような腐ったソフトウェアのせいで、アメリカで売られているパソコンのほとんどは、もともとそんなんばっかりだけどね。そいつらは、君のアプリケーションの処理を横取りして、ひねくり回した上で、例の古めかしくてさび付いたWin32 APIに投げ込み、さらにもっと恐ろしく混乱に満ちたダイアログを、ユーザに表示するだろう。
    そして、君の作った哀れなブツは(君がこの時点においてまだそれを捨て去っていないと仮定しての話だが)、「安全」を守るためと称してユーザのデスクトップにとりついたモンスターの動物園を、どうにか落ち着かせないとならないのだ。
    まだ「エクセドリン」を作っていたいかい?ほんとに?君はまだよくわかっていないかもしれないから、この先に何があるのかご覧に入れよう。
    君がデスクトップアプリケーションを作り始めたばかりなら、「なんかよくわかんないけど、”Windows Installer”(MSI)とかいうヘンなのが立ち上がって、アプリケーションを「修復」しようとするんだけど、なんなの?」みたいな話を聞くことになるだろう。それはおそらく、ユーザがアプリケーションを何度も(!)インストールしようとするために起る現象だ。また、たいていのWindowsパソコン、特に2年以上メンテナンスされないまま使われているものは、果てしなく酷いことなる。レジストリはぐしゃぐしゃ、再起動には馬鹿ばかしいほど時間がかかり、ユーザがアプリケーションになにかしようとするたびに、Windows InstallerがMicrosoft Officeを修復しようとする。
    わかってる?ユーザは腐ったデスクトップにうんざりしつつある。たいていのウェブサイトに見られるあのダサくて遅いAjaxのUIすら、そんなに酷いものではないと考えるようになってきている。彼らはブラウザを最大化して使い、MicrosoftやDellやその同類たちがデスクトップに散りばめた、醜くもっさりしたクソアプリになんて、目を向けようとしない。ここでの要点は、ユーザがぐしゃぐしゃにしてしまわないようにするには、Windowsは非常に脆弱なプラットフォームだということだ。Windowsでは、様々な設定項目を探すのは非常に難しい。君だって、一日の間に、ランダムに50個のデスクトップアプリケーションをインストールしたりアンインストールしたりしてなお気分よくいられるなんていえないだろ?個人的には、もしそんなことをするなら、VMWareを使うね。
    愚かなユーザたちは、あの低劣でショボいウェブアプリケーションを使い、「リッチ」なデスクトップがもたらす優れた「ユーザエクスペリエンス」なんて、気にかけることがない。
    もちろん、僕は彼らを非難しているわけじゃない。まぁ、このエントリを書くのにも、デスクトップでnotepad.exeを使いたいという欲求に抗しきれなかったわけだが。BlogspotのHTML「エディタ」(もっともっとたくさん括弧でくくりまくりたい)は、なんというか……まだこんなんで文章を書けるってレベルじゃねーぞ