書く道具としての紙一重な進化

中田敦氏は,Office 97 で一度完成を迎えた Microsoft Office が,停滞を始めたのが Office 2000 であると指摘しています.

Office 2000には,「画面下のタスク・バーに,ファイルごとのウインドウが表示される」「クリップボードに最大12個のデータが格納できる」といった小粋な機能強化があった。しかし,「ツールバーやメニュー・バーに最小限の項目しか表示しない(メニューをすべて表示するためには矢印マークのクリックが必要)」「Wordで『(1)』などの行頭番号を自動入力したり,行頭に1文字分スペースを入れた場合にそれをインデントとして自動設定するオート・コレクト」といった,ユーザーにとってはお節介とも言える新機能が目立ち始めた。

「オート・コレクト」を Microsoft Word の使いにくさの筆頭に挙げる人は非常に多く,私の周囲でも大多数の人間がこれに該当しているようです.確かに私もこの機能はお節介だと思います.しかし,「全ての人にとってこの機能が役に立たないとは言い切れない」という本音を普段私が口にしないのは,世間話程度の文脈では「オート・コレクト=悪」という文化コードができあがってしまっているからに過ぎません.UI の専門化でもなければ,この文章の入力支援という機能について一度に 5 分以上のまとまった思考時間を割くことすら,人生においてまれな経験ではないでしょうか.
さて,Office に「オート・コレクト」が導入されたのは,1999 年 7 月発売の Office 2000 のことでした.奇しくも,Visual C++ に IntelliSense が初めて導入された,Visual C++ 6.0 の登場時期と良く一致しています.
興味深いことに,IntelliSense もまた Visual C++ 6.0 の重要な新機能の筆頭に挙げられています.

MSDN :今回は、Microsoft の新しい Visual C++ 6.0 の開発を指揮した Sin Lew 氏にお話を伺います。それでは、まず大まかな質問から始めましょう。開発者が Visual C++ 6.0 に関して知りたいと思われる、最も重要な新機能を手短に説明していただけますか?

Lew :Visual C++ 6.0 には多数の重要な機能があります。これらは新しい UI デザインや Web 統合に対応した MFC の強化から、新しい ATL ウィザードや ATL コントロールにまでおよんでいます。しかし、Visual C++ の最も重要な新機能は、おそらく、「Edit and Continue (編集して続ける)」デバッギングと IntelliSense でしょう。 Edit and Continue デバッキングとは、ユーザーがデバッガの中でコードを変更したりバグを修正したりできる機能です。デバッグの後は、プログラムを停止したり、再コンパイルや再ビルドをして、アプリケーションを停止したときの状態まで戻したりしなくても、実行を継続できるのです。

IntelliSense は、必要な時に適切な情報が手に入るようにするテクノロジです。これは大事なことです。IntelliSense はユーザーがプログラムを組んでいて、クラスのメソッドやインターフェイスを使おうとしたときに、これらの情報を提供してくれます。IntelliSense はメソッドの機能を教えてくれ、コメントがあればそれを示し、メソッドが受け取るパラメータまでユーザーに見せてくれます。その場でこういった情報が得られるのです。作業を中断して別なことをする必要がないので、作業の流れが途切れません。

率直に言って,Microsoft Word の「オート・コレクト」が目指していた方向性と,ここに挙げられた IntelliSense のメリットに,それほど大きな違いがあるようには思えません.両者ともに「作業を中断して別なことをする必要がない」こと,つまりタイピングし続けられることに価値を見出していたはずです.それでも両者の評価がこれほど分かれてしまったのは,いわゆる人が読むための文章の入力と,検証を経て完成するプログラミングという作業の根本的な違い,それから入力後に自動で変更を行う「オート・コレクト」と,予測入力を能動的に選択する補完機能の違いといった,比較的マイナーな,しかし本質的な点で異なっていたためかもしれません.両者の間で実装コストや,テストの難しさはそれ程大きな差はないかもしれませんが,世間の評価がこれほど異なってしまうというのはまさに「使いどころ」と微妙な微妙な「さじ加減」を誤ったとしか言いようがない気がします.
さらに,Visual Studio シリーズの中では入力支援で先行していると言われる Visual Basic や,同じく手厚い入力支援にファンの多い Eclipse では,入力ミスをすぐに教えてくれたり,エラーを自動で修正してくれたりといった,まさに「オート・コレクト」の開発環境版とでも言うべき機能が拡充されてきています.こうなってくると,単に能動的な予測入力だから受け入れられたとも言い難くなってきます.また,Visual Studio 2005 のあちこちで『スマートタグ』が使われるようになったことも変化の方向性を暗示しています.
例えば「C#VB.NET の質問掲示板」,『VB.net と C# の違いとは?』より.

□投稿者/ aoa 二等兵(6回)-(2007/02/17(Sat) 17:18:26)

皆さんおっしゃるように機能は同じだと思いますが、
私はエディタの使いやすさでVBを選びます。
VBではすぐに検出してくれるコンパイルエラーやその修正を、
 C#ではデバック実行かビルドを行わないと検出されない。
VBでは列挙型の値の設定時にその列挙型のメンバがすべて表示されメンバ名の先頭文字を入力するだけで済むが、
 C#にはそれがなく列挙型の型名から入力しなければならない。
C#では引数に必ず括弧を入れなければならないが、
VBでは「MessageBox.Show "aaa」と入力すれば自動で「MessageBox.Show("aaa")」に変換してくれる

などです。
(私はVBがメインなので慣れもあると思います)

このスレッドでのトピックは Visual BasicC# ですが,EclipseVisual Studio でも同様の議論をずいぶんと見てきました.もちろん,これらの機能を「お節介」ととらえる人は常にいるわけですが,それは Microsoft Word の「オート・コレクト」のように,10 対 0 で満場一致の全否定というレベルではなく,グダグダと雑談が続く程度には双方に賛同者が見つかるようです.



さて,冒頭で取り上げた中田氏の記事は,こう結ばれています.

Office 2007が普及すれば,見た目がとても美しい「どこかで見たようなプレゼンテーション」や「どこかで見たような表やテーブル」,「どこかで見たようなWord文書」が,氾濫するかもしれない。結果指向のUIに慣れ親めば親しむほど,ユーザーはテンプレートに頼って文書や図表を作成するようになるからだ。

とはいえOffice 2007のテンプレート至上主義が悪いとは言い切れない。「学ぶ」ことは「真似る」ことから始まるという。今まで無味乾燥な文書だけ作っていたユーザーが,見た目の美しい文書を作れるようになることは,十分な価値がある。少なくとも,かつてのユーザーを邪魔する自動入力機能の追加に比べれば,よほど意味がある進化と言えるだろう。

この方向についても,全くもってどこかで見た議論なのがおもしろいところです.「ウィザードによるひな形の生成は悪か?」,「クラスウィザードでメソッドを追加するぐらいならエディタで書いた方が早い」みたいな議論がプログラミングの世界でも延々と続いていることは,しばらくプログラミングコミュニティにいれば気付くことができるでしょう.さて,この点について 1 つ.
良くも悪くも,多数派は「真似る」ことで「学ん」だ人たちです.例えばあまりにも多くの PowerPoint 文章が,物事を箇条書きで整理すれば問題はすぐに解決するかのように振る舞ったため,大学の講義がただただあの見慣れた箇条書きを流すだけのものになってしまっても,今やほとんどの人がそれを普通として受け入れるようになりました.これによって得たものと失ったものを考えるのに後 5 分の時間を許すなら,ぜひ次の文章を一読されることをおすすめします.
PowerPoint絶対主義, Ian Parker