
[2006年10月20日更新]
昔、アップル社にはフェローという制度があった。同社は、パソコン業界に多大な影響を与えた賢人達を、フェローとして迎え、未来のMacのあるべき姿について意見をもらっていた。
代表的なフェローに認知科学者のドン・ノーマン博士と「パソコンの父」と呼ばれるアラン・ケイ博士の2人がいる。
アップル社で毎週開かれていたフェローの会議では、しばしばこの両者が激しく衝突をしていたというが、それも納得できる──この2人のパソコンに対する考え方は180度違うのだ。
ノーマンは使いやすさ、わかりやすさの守護神だ。
パソコンなんて、目的もはっきりしていないし、そもそもその存在自体が難解。いずれは蒸気機関やモーターと同じように、縁の下の力持ちたる原動機になって、我々の日常の生活や行動の中に溶け込んだ「見えない存在」となるべきだと主張していた。
彼は「Apple Computer」という社名から「Computer」の字が消えるのを楽しみにし、パソコンをよりメモ帳に近い形で進化させたPDAやインフォメーション・アプライアンス、つまり情報家電に未来を感じていた。
もっとも、テレビ全盛の時代の今でもラジオがなくならないように、情報家電の時代になってもパソコンがなくなるとは考えていない。
そこで、せめてパソコンは誰でも使えるように、操作が簡単になるようにと、自身のそれまでの研究の成果を反映しながら研究していた。操作対象を直接、手で掴んでいるような実感があるドラッグ&ドロップ操作などを広めることにも熱心だったが、難しい印象を与えるプログラミングやスクリプティングといった機能は、努めて隠すようにするという立場をとっていた。
一方、パソコンの生みの親とも呼ばれるアラン・ケイは、パソコンはパソコンとして存在感を増すべきという考えの人物だ。
彼は、一番小さいコンピューターでも小型冷蔵庫ほどあり、とても個人で所有できないほど高価だった時代に、パーソナルコンピューターの時代を予言していた。1人が1台のコンピューターを持つようになる。子供達が勉強にも使えるノートサイズほどのコンピューターが実現すると唱え、このコンピューターを「ダイナブック」と呼んでいた。
音楽奏者でもあるケイ博士は、楽器が演奏の能力を身につけることで素晴らしい音楽を奏でるように、パソコンもプログラミングの能力を身につけることで、その素晴らしい真価を発揮する、と考えていた。
そしてうまく、このスキルを身につけて、思考の道具として活用すれば、科学的、論理的思考力が高まる、と考えていた。
彼はSqueakという、子供でも簡単にプログラムが作れるソフトを開発し、これを教育機関に広めようと奮闘している。
ケイは、こうしたソフトが広まれば、未来の大人達は科学的、論理的思考を身につけられるだろうと語っている。

左が「 Squeak 」、右が「 HyperCard 」
2人のAppleフェローが、アップル本社の会議室で激論を闘わせていた頃から、すでに10年近くが経った。はたしてパソコンはどちらの未来に進化したのだろう?
今日の携帯電話を見ると、ノーマン博士の方が分が良さそうだ。これらは一昔前のパソコン並みの機能や性能を身につけ始めており、常時接続環境内蔵の小型コンピューターとして大きな進化を始めている。
もっとも、旧態依然としたパソコンも相変わらず健在だ──ノーマン博士もパソコンが「なくなる」あるいは「なくなるべき」とは言っていない。
一方、ケイ博士の予想した進化はやや分が悪い。今、プログラミングは本当に、一部の専門家だけのものになってしまった。
Squeakの認知度はまだまだ低いし、昔、Macに標準添付していたHyperCardという、誰でも簡単にソフトが作れる環境も今では過去の思い出でしかない。
世の中のパソコンユーザーの大半は、おそらくこれまでプログラミングらしいことには一切、触れていないはずだ。
付属の説明書通りに使うだけが、ソフトの使い方だと思っている人が多い。いや、説明書を読んでいればまだいい。実際には、自分が買ったアプリケーションに、そもそもどんな機能が搭載されているかすら知らずに使っている人も、結構多いのではないだろうか。
あらかじめ用意されたひな形の文字や写真を差し替えているだけ。用意された書類をカスタマイズしているだけという使い方だけで満足してしまっている人が多いかとも思う。
これにはアップルにも責任の一端がある。アップル社の提供するiLifeやiWorkといったアプリケーションは、パソコンに不慣れな人でも、ひな形を書き換えるだけで簡単にプロっぽい見栄えの書類が作れることが何よりの売りだ。
それはそれで素晴らしいことだが、そこからステップアップする人がほとんどいないとしたら、それは残念なことだ。
アップルも、iLifeを使い込んだ人には、Final Cut ExpressやLogic Expressといったステップアップの道を用意している。さらにその上にはプロ用のFinal Cut StudioやLogicもある。
iWorkにしてもそうで、いくらでもステップアップの道はある。そもそも、KeynoteやPagesを使うにしても、ひな形を使わずに、白紙から書類を作っていく機能もあるし、さらにステップアップしたい人には、機能の宝庫ともいえるMicrosoft Office 2004 for Macがある。
それなのに、ほとんどの人がひな形の書き換えだけで満足してしまっている。
そんな状況に一石を投じたいと書いたのが、Apple's Eye No.170「No.170 - 日常ソフトの冒険〜 新鮮な目で、隠れたポテンシャルを再発見」だった。PowerPointの機能を徹底的に使いこなした素晴らしいプレゼンテーションを例に、せっかく購入したアプリケーションにもう一歩踏み込んでみることで、驚くような作品が作り出せることを紹介したかった。
今回は、さらにもう一歩踏み込み、アプリケーションに用意されたプログラミング的機能を使って、作業を自動化する魅力について紹介したい

実は最近、いろいろな人と話をしてわかったことがある。パソコン歴の浅い人は、ステップアップしようにも、そもそもステップアップするとどんなことができるのが見えていないようなのだ。
パソコンは、確かにあなたの心の中を読んだり、何もない状態から文章を生み出したりはしてくれない。だが、パソコンはほぼ万能だ。あなたが常識の範囲で「できそうだ」と思うことはたいていできてしまうポテンシャルがある。
大事なのは、「何ができそうか」ではなく、むしろ「何がどうなったら、いつもやっている仕事がより簡単か」を知ることだ。
それさえはっきりすれば、パソコンは必ず、それに対する解決策を見いだすことができる。
具体例をあげよう。一番、説得力があるのは、自分で実践している具体例だろう。
筆者の仕事では、原稿を書いた後に請求書を起こして送ることが多い。iWorkが出た後、Pages付属の請求書テンプレートがかっこよかったので、実はこれを使っていた。
最初は英語仕様だったので、これを日本語用に直して使っていた。
しかし、請求書を送るたびにファイルを新規作成して、どうせ数社しかないバリエーションのない宛先を毎回タイプし直すのが、面倒に思えてきた。作った後の請求書書類をどう管理したらいいのか(あるいは捨ててしまうべきなのか)にも頭を悩ませていた。
そこでこうなったら便利じゃないかと考えた。
1.入力の手間軽減
最低限の文字入力で、請求書フォームを自動生成。請求先に割り当てた数文字のコードと項目名、金額を入力すると、自動的に宛先住所や合計金額を含む印刷可能な請求書ができあがる。
2.1個の書類で履歴を管理
請求のたびに書類を増やすのではなく、1つの書類に請求履歴を残す機能と、請求書印刷の機能を両方持たせる。
実はこういった用途にはFileMaker Proがピッタリだが、筆者はこの請求書作成フォームをExcelで作ることにした。
ササっとすぐには仕上がらなかったが、2〜3時間ほどの試行錯誤で、3つのワークシートからなる請求書作成用Excel書類が出来上がった。
最初のワークシートは印刷用の請求書だ。セルの幅を調整して、できるだけ見栄えがいいように調整した。
2つ目のワークシートは、請求データ。ここに新たに取引先のコードと請求額といったデータを入力すると、1枚目のワークシートにそれが反映される。わざわざ宛先住所を打ち込まないでも、請求先ごとに決めた数文字の請求先コードを打ち込むだけでいいようにした。
ここでひとつ問題がある。Excelの側は、請求先コードを言われても、それがどこの出版社の何という編集部で、住所は何なのかまではわからない。
そこでその対応表となる3つ目のワークシートが必要になる。
最初にこの書類を作るのはなかなか大変だった。筆者自身、最近、あまりExcelを使い込んでいなかったこともあり、実質3時間ほどかかった。しかし、1度、作ってしまうと、その後は非常にラクだ。最近では請求書を作るのが楽しくてたまらない。

左が検索結果、右が『エクセルの関数テクニック集』
このExcelの請求書システムは、プログラミングというと語弊があるかもしれないが、Excelの関数機能を使って作成している。Excelには実に300個以上の関数が用意されているのだ
関数というと、なんだか数学的で難しそうだが、中にはこんなのもある。
・UPPER(文字列)
文字列を大文字に変える。例えばUPPER(sky)だと、「SKY」と表示される。
・HYPERLINK(リンク先、別名)
別名を表示し、それをクリックするとリンク先にジャンプする
いわゆる「関数」というイメージとは違うことがわかるだろう。
これらの関数をうまく組み合わせていくことで、先の請求書のような半自動の書類が出来上がる。
これをプログラミングと呼ぶのは抵抗を感じる人がいるかもしれない。しかし、20年ほど前には「関数電卓」というものがあって、こうした関数を組み合わせてゲームをプログラミングしている人だっていた。
筆者の請求書の例ではVLOOKUPという関数を多用した。これは他のワークシートにある情報を参照するのに用いる関数で、例えば「何枚目のワークシートの、上から何行目のデータをここに表示したい」といった場合に用いる。
2枚目のワークシートの請求先コードを元に、3枚目のワークシートからその請求先の住所を引き出してくる、といった具合に使っている。
一番、難しかったのは2枚目のワークシートに打ち込んだ最新データがどれかを見極めることだった。上から順に情報を打ち込んでいるので、一番下の行が最新データなのだが、どうやらこれを見極める関数がない。
そこでどうしたかというと、検索サービスで「Excel 関数 最終行」といったキーワードで検索をしてみた。
するとNomboさんという方の「特選情報局」というWebサイトにある「エクセルの関数テクニック集」というWebページが見つかった。
ページ内でもう1度検索を行うと、確かに「最終行の値を求めるには?」という情報がある。そこで、これを参考にさせてもらった。
パソコンの専門家でありながら「他力本願」と思う人もいるかもしれない。でも、Excelの専門家でもないかぎり、さすがに300個以上の関数の意味や使い方までは丸暗記していない。そんな時には、検索などを使って積極的にWeb上の情報を活用する。それでも、ちゃんと動けば目的は達成できる。
現在、できあがった請求書は、筆者だけが知っている細かなルールがたくさんある。たとえば、このセルにきっちりと数字を入れないと不都合が生じるといった落とし穴がまだたくさんあり、操作説明もないので、およそ人様に配れるものではない(ただ、リクエストが多ければ公開したいとは思っている)。
だが、万人向きでなくとも筆者自身は使えるし、便利になるので、これはおそらくアラン・ケイの理想のように、筆者がExcelという楽器を演奏して、曲を奏でたことになっているんじゃないだろうか。
それでは他にはどんな自動化が考えられるだろう。
このApple's Eyeのコーナーの担当編集者は、かつてワープロソフトのスクリプト機能を使って用語統一を行っていたようだ。たとえば「アップル社」の正式名称は「アップルコンピュータ株式会社」だが、筆者によっては「アップルコンピューター」だったり、「Apple社」と書いてきたりと、表記がバラバラだ。雑誌やWebサイトの文書編集では、こうした表記を揃える「用語統一」という作業が必要になる。
1つ1つ手作業で検索と置換をしては大変なので、これをスクリプトと呼ばれるワープロ内蔵のプログラミング機能で自動化していた。Microsoft Wordは、Visual Basic for Application、REALbasic(別売)、そしてApple Scriptという3つの言語で、スクリプトを書くことができる。
このスクリプト、単純なように聞こえるが、たとえば「Mac」をすべて「マック」で揃えようとしても、単純な検索・置換をしてしまうと「iMac」が「iマック」、「.mac」が「.マック」となんだか変なことになる。そこで例外措置を設けたりと、実はそれなりに試行錯誤が必要になってくる。
彼は、まず置換時に文字色を変えるように設定。これで誤置換も発見しやすくなった。そうして誤置換を見つけるたびに、スクリプトの方を工夫して直していった。
事務仕事の人だけではない。Mac OS Xには、AppleScriptというOS標準のスクリプト機能があるが、米国でこのAppleScriptを一番活用しているのはDTP系のデザイナー達だ。
フォルダにカタログで使う写真と個々の写真に対応した文章を入力すると、自動的にカタログの仮レイアウトを組んでくれる、なんていうスクリプトを作っているデザイナーもいる。
「必要は発明の母」というが、まさにその通りで、プログラミングのアイデアは、日常の中のちょっとした「必要性」に潜んでいる。
あらかじめ決まっている条件やルールに従うだけの作業なら、基本的にすべてパソコンで自動化ができる。
だから、そういった部分は、どんどんパソコンにまかせて、人間はその分、人間ならではの創意工夫や創造性のために頭を使った方がいい。
ただし、そのようにコンピューターを意のままに操るには、ユーザーはある程度、プログラミング的なものに親しまなければならない──筆者の個人的解釈ではあるが、実はこれこそアラン・ケイが、本当に言いたかったことではないだろうか。
そして、おそらく、自動化できるところは自動化し、人間は人間ならではの創造性に注力するという点では、ドン・ノーマンも同調している。
アップルが'90年代後半に出荷予定だったCoplandとGershwinという2つのOS。このうちGershwinの方は、まだぜんぜん形すらなかったという話だが、OSとしての目標がいくつか決まっていた。その1つがProactive User Interface──ものすごく単純なレベルではあるが、「ユーザーの意図をある程度汲み取って自動的に処理してくれる機能」だった。
パソコンが将来、そういった自動化そのものの自動化に進化していくことはおそらく間違いないだろう。
しかし、今のままの進化のペースでは、そこまで到達するにはまだまだ時間がかかりそうだ。だからこそ読者の方々にも、まずは小さなところからでも関数の利用やスクリプトに挑戦してみて欲しいと思う。
アラン・ケイ氏が、特に学校に広めようとしている「Squeak」について紹介した「Squeakers」というドキュメンタリー番組がある。
抜粋映像はこちら。
番組に関する詳細情報はこちら。
Ball State大学が製作した番組だが、この番組で紹介しているSqueakを活用した授業がおもしろい。
日本の雑誌などで見かけるSqueak関連の記事では、「子供でもプログラミングができる」という部分にばかり焦点が当たってしまうが、話の本質はそこではなく、「子供達がいったい何をプログラミングしているか」にこそある。番組の中に出てくる学校では、ボールの落下などの自然現象をビデオカメラなどの最新機器を使って観察させ、子供達には観察結果をSqueakを使ってプログラミング、つまり画面上で再現させる形で学んでもらおうとしている。Squeakは、あくまでも鉛筆や定規と変わらない表現のための道具の1つであって、大事なのはその道具を使って子供達が観察した現象についての理解をより深めていることにある。