プリウスとipad(その3)。

 10年くらい前に、僕は大学でC言語を習った。それまで全くプログラミングなんてしたことがなかったので、プログラミングというのはこういう面倒な作業なのだ、と思っていたら、同じくインタフェースの授業でVisual Cを使うことになり、なんだこんなに簡単に開発ってできるんだ、と驚いたのを覚えている。

 Cでのプログラミングは、ガリガリと1文字たりとも間違わないようにソースを書いてコンパイルしてデバックして、という作業だけど、これが面倒だとはいっても生のマシン語を扱うことに比べれば遥かに楽に違いない。
 コンピュータは2進数で動いていて、最終的には0と1の羅列で構成されるマシン語しか認識できない。あらゆるプログラミング言語は最終的にマシン語に翻訳されてコンピュータに渡される。昔はプログラムを書くと言えばダイレクトにこのマシン語を書くしかなかったわけですが、2進数(あるいは16進数)などで命令を書くのは至難の技なわけです。全くの出鱈目に例えを書くと、「aとbを足す」という命令を書くために「011010100010010011111100101001010000101010010010
00000001111111010110100101011010101000101011100101
00010100100000100100000010000001001001010001001111」
みたいなことを書かなくてはならなくて、これでは書くのも読むのも大変すぎます。

 そこで各プログラミング言語が開発されました。もうプログラマは「aとbを足す」というのを単に「a+b」と書けば済むようになり、この簡単化のお陰でプログラムはどんどんと複雑なものも可能になっていきます。

 文字通りどんどんと。
 携帯電話に入っているソースコードが10万行だか100万行だか。もう全容を把握している人はいません(スパゲティ状態)。その巨大なソースをさらに改良したり、新しい機能を追加したりしているうちに、半分謎の物体をいじるわけですから、当然の帰結としてバグが発生します。ヤキニクとカタカナで入力したら携帯がフリーズした、みたいな予期せぬことが起こることを開発者は予期するようになった。だけど、このバグを修正するために開発者が100万行のプログラムを完璧に読み返したり、携帯電話のありとあらゆる使い方を実験してみることは現実的にできません(メールで”あ”を送信、メールで”ああ”を送信、”あああ”を送信、”ああああ”を送信、、、、、)。

 そこで、大体OKだったらもう市場に出してしまって、あとはユーザが不具合を見つけたらフィードバックを受けて修正する、という手法がとられています。

 これは携帯や家庭用PCくらいだったら良いかもしれないけれど、車でやるには危険すぎる。だけど、どうあってもこれから自動車のソフトウェア依存度が上がることは避けられない。プリウスのリコールがソフトの修正だけというのは象徴的なことだ。

 PCはソフトを載せることで様々なことができる万能機械だった。ipadはそれをさらに進めた形だ。僕はiphoneしか持っていないけれど、iphoneでも十分沢山の「物」の代理になっている。電話であるだけでなく、辞書が入っていて、シーケンサーが入っていて、シンセサイザーも入っている。
 今まではそれぞれに数万円だしてハードごと物として買っていたのが、今はiphoneというプラットフォームだけ買うことで、あとはアプリとしてソフトで数百円で買うことができる。この傾向はCDからネット配信、本から電子書籍の流れと同じように「物」から「アプリ」としてプラットフォームの高機能化と共にどんどん加速するだろう。今までカバンから写真やノートや雑誌を取り出して友達に見せていたのが、物としてはipadみたいな物だけを机の上に出して、あとは全部その画面で見せるということになるだろう(半分なっている)。

 ソフトはどんどんと重要になってくる。
 そして僕たちは長大なプログラムを読み書きできない。脳の情報処理の問題以前に、100万行を目で追うこと、100万行をキーボードで入力することが実質できない。だから早い段階でプログラミングをサポートするプログラムをレベルアップさせる必要がある。