Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

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

"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「エディタ」(もっともっとたくさん括弧でくくりまくりたい)は、なんというか……まだこんなんで文章を書けるってレベルじゃねーぞ