カテゴリー「文化・芸術」の1件の記事

「情報を処理する」ということ (5)

Infocomputing  全5話に渡って私的な意見を書き綴った。内容は、コンピュータにおける情報処理とそのリテラシの変遷や、情報に焦点を当てたテクノロジの進歩について、である。僕自身がコンピュータ・プログラマであり、仕事や趣味においてさまざまな情報を扱う者として、「情報を処理する」ということについて考えてみたかったのだ。そういった職業に就いていない人々もさまざまな情報を自然に(特別に意識することなく)扱っているのだが、それはお膳立てされた手段によってのみであり、それ以上の扱い方を知らないし知る必要もないだろう。すなわち、仕事や娯楽に支障がなければよい訳であるが、そこに潜んでいるかもしれない情報の価値は、残念ながらそれで頭打ちなのである。「情報」というものは静的な存在ではなく、常に動的であるとみなさなければならない、と思う。たったひとつのデータでも、ある方法や分類で集計したり、可視化や統計的手法を用いたり、誰もが操作することができるようになると、情報の価値が無限に広がっていく。そして、コンピュータ・プログラマは、その手助けをする仕事なのだと思うのだ。ある側面では、このような情報の扱い方を変えたり、提案したり、情報処理システムの環境を整備する能力を持っているということになる。また別の側面で(むしろこちらの方が尊敬の眼差しで見られることが多いが、ほとんどのエンジニアは偉くもなんともなく、ただその能力を持っているだけか、仕事として作業しているだけかも知れないが…)、人間の思考や想像を、コンピュータの論理や表現に変換するという、翻訳者のような側面がある。コンピュータは言うまでもなく計算機であり、その内部は真(true)か偽(false)かという、完全無比な論理の世界だ。組み込まれた論理に従って入力された情報を正確に判断し、記録し、定められた方法で加工された情報を出力する。一方の人間は、論理的な思考能力(理性というべきか、だが個人によってその判断基準には差があり、同じものなどない)を持ちながら、TPOによって異なる感情や感覚、曖昧な記憶によって自己のアイデンティティの存在を確認するという、極めて柔軟な(だが曖昧で不安定な)存在だ。その相反する世界をどうやって結合させ、人間の代わりに仕事をさせ、夢の世界を画面や特殊なデバイスの上で具象化し、如何にして便利で差別のない安心な社会システムを構築するか…。技術者はその間に立ち入って、人と機械の双方に優しいオブジェクト(デバイス、環境、インフラ、…)を作り出す。そして、コンピュータ・プログラマはそういった開発現場の先鋒として、プログラミング言語を巧みに操りながら、コンピュータに人間の考え方や社会のルールを教えているのだ。完璧に論理的な世界に、観念的な世界の論理を、どのような形で教える(=プログラミングする)べきか、その能力を駆使してコンピュータと対話するのである。さらに突っ込んだ考え方について、このブログの後半に記したい。

 ソフトウェア開発の分野には大きく分けて、スタンドアロン、ネットワーク、エンベデド、オートメーション、コンピューティングの5つの分野が存在すると考えられる。それぞれの分野はさらに細かく別れていて、そのカテゴリに応じて開発環境やターゲットシステムは異なるが、何らかのプログラミング言語を用いてソフトウェア開発をしているという点で共通している。また、昨今の情報インフラには分野の垣根を越えたシステムが続々と登場しており、それらに従事する技術者に求められるスキルも膨大で複雑なものになっているのだ。

Mappy  スタンドアロンの分野はパソコン用アプリケーションやゲームソフトなどである。パソコンのソフトウェア開発環境は今やマイクロソフトがその独壇場に登り詰めたかに見えるが、実際に利用されている言語の統計を採ると、Visual Basic でもなく C# でもない、サンの Java 言語がもっとも良く利用されている。Java 言語はその実行環境に仮想マシンという概念を設けたおかげで、プラットホームに依存しない開発環境と実行環境を無償提供している。(仮想マシンの概念は、Java 言語の登場以前にすでに存在した。《= Smalltalk など》しかし、当時は構造化プログラミング全盛期で、オブジェクト指向を先取りしていたことから敬遠され、実務的なの開発言語として使われることは少なかったのだ。)Java 言語が時勢に沿ったオブジェクト指向言語であり、急成長するインターネット技術をアーキテクチャの中にに取り込むことで、サーバーとクライアントの両サイドのアプリケーションを容易に開発し、リリースできたことも、普及した要因のひとつだろう。遅れをとったマイクロソフトも、Microsoft.NET というアーキテクチャに Java 言語と同じ概念を導入している。しかし、プログラミング言語やバックエンドに相当の注力をしているにもかかわらず、今一歩メジャー言語になりきれていないのが実情だ。逆に、Java 言語はパソコンの世界から組み込み分野やミクスド・ランゲージを実現するスクリプティング分野へも進出し、今なお成功を納めている言語である。

Network  ネットワークの分野は言うまでもなくインターネットのコンテンツやサービスである。この分野にはコンピュータ・プログラマだけでなく、グラフィック・デザイナなどがソフトウェアを作るようになってきているが、基幹システムやデータフロー部分は、やはりソフトウェア・エンジニア達の仕事である。そもそも Unix で核戦争に備えて開発された通信システムだったものを、研究目的に大学同士がそのネットワークを利用したのに端を発して、世界中の電話網を利用することでネットワークは拡大し、それまでP2Pで行っていたパソコン通信を抱き込んで、現在のようなインターネットと呼ばれる巨大なネットワークになった。この分野のソフトウェア環境は目まぐるしく変化している。言語だけ見ても HTML、XML、Java、PHP、Python、Ruby、JavaScript、ActionScript、Groovy、JavaFX、C#、Silverlight、OpenLaszlo など枚挙に暇がないといってよいほどだ。それを取り巻くフレームワークやコンテンツ管理システムと呼ばれるライブラリやアプリケーションも群雄割拠を呈している。また、ウェブサービスの普及と高速化・簡便化により、ほとんどの作業をブラウザ上でこなすことが可能になってきている。文章や表計算はもちろん、ブログや写真、スケジュールの管理など、あらゆるサービスやストレージが無償で手に入るのである。

Enbeded  エンベデドとは「組み込み」のことである。一昔前まではマイコン内蔵とかファジー機能搭載とか歌われたような、マイクロコンピュータによる分野である。現在ではデバイスの高集積化と低消費電力化が進み、処理できる情報量と速度、そして稼働時間が飛躍的に向上したため、応用分野がここ数年で急成長している。その最たる物が携帯電話であろう。手のひらに収まる大きさでありながら、数十時間着信の待受を行うことができ、音楽や動画の再生はもちろん、日本語入力などのフロントエンドを同時に動かしてメールを送信することもできる。ワンセグ放送などの複雑なデジタル信号のデコード処理もこなさなければいけない。さらに iPhone や Google Android に見られるような次世代の「スマートフォン」へと、スタンドアロンでのパフォーマンスやインタラクティブ性能や、オンラインサービスとリンクしたスケーラブルなデバイスになることが求められている。近年の組み込み機器は、携帯電話だけに限らず、インテリジェントなデバイスになっている傾向にある。パソコンやメインフレームと異なり、あらゆる面でリソースが限定されているにも関わらず、要求仕様は高品質を求められるため、ソフトウェア技術だけでなく、それを補う半導体デバイスの開発をも加速している要因なのだ。

Automation  オートメーションの分野はルネサンス時代から考えれば長い歴史があり、中世の頃の機械化技法から、現代の初期に培われたハードウェアによる自動制御手法を、ソフトウェアで段階的に置き換えるという考え方で発展・進歩してきた。オートメーションと言っても規模の大小があり、小型の機械の運転から工場設備の操業まで、その応用範囲は広い。オートメーションの世界では守るべきものが二つ存在する。それは人命と製品である。もちろん人命が最優先されるのは言うまでもない(中世ではそうではなく、人命は後回しにされていた!)が、工場や機械を自動化しても必ず人間が保守や管理する必要があるし、そもそも機械を運転する必要があるかかもしれない。そんなとき人間を機械の誤操作・誤動作や暴走から守るための技術(=フェールセーフ)が、オートメーションの技術の中で考えられてきたのである。一方で製品のクオリティを守ることと(生産計画に則った)高い生産効率も求められた。人間の手工業では生産できない製品になると、生産設備の機械化がさらに進んで、自ずとオートメーション化されることになる。しかし機械化が進むほどに人命と製品の両方を守ることが困難になることがあり、生産技術(これはメカトロニクス、半導体デバイス、ソフトウェア工学などを含む)が企業を主体にして研究され続けている。(簡単な例を示そう。原子力発電所は人間だけで稼働させることができるだろうか?製鉄所はその昔、随所に人間が立ち入って作業していたが、事故が絶えず機械化・自動化が進んだという。)

Supercomp  コンピューティングとは読んで字のごとく、コンピュータを研究して応用分野を開拓する分野だ。前述したインターネットは、最初 ARPANET と呼ばれ、アメリカ陸軍と大学が共同でフォールト・トレラントな情報伝達の仕組みを考えたものであり、それが広く一般にも応用され、インターネットと呼ばれるようになった。地球上での絶対位置を計測するGPSもまた、アメリカ国防総省が中心になって開発された。その仕組みは人工衛星を中心に、地上局がそれぞれの衛星の時刻データを校正していて、受信局(カーナビなど)は数個の人工衛星からの正確な時刻情報などを受信して、位置と時刻を算出している。しかし、位置計測はGPSの通信セグメントの空いているチャンネルを利用しているにすぎず、主チャンネルは米軍が独自に使用する極秘チャンネルとなっている。スーパーコンピュータの歴史は比較的浅いのだが、その進歩は目覚ましく、四半期毎にランキングが発表されている。(日本勢も健闘しているが、アメリカ勢の猛攻が激しいようだ。売りに出されてしまった国産のスーパーコンピュータ「地球シュミレータ」も、一時は世界の首位に君臨したことがある。)スーパーコンピュータの応用範囲は多岐にわたるのだが、その構造は演算装置の結線の規模や構成が異なるだけで、実は技術的に大きな違いはない。それどころか、膨大な数の演算器を持ちながら、その稼働率は非常に低いというジレンマが起こっており、それをハードウェアとソフトウェアの両面から、高効率化するためのいろいろなアプローチが検討されている。(つまり、コンピュータを100%使い切れていないということだ。)スーパーコンピュータは、高集積化すればいいかといえばそうでもなく、ある特定の分野の計算に限って設計すれば、とても効率的に処理できるスーパーコンピュータを作ることもできる。例えば、チェスの世界王者カスパロフに勝つことができたスーパーコンピュータ「ディープ・ブルー」も、チェスの先手を読むために専用に開発したVLSIを、並列に接続して使っていたそうだ。(言うまでもなく世界一のチェス専用機である。)だがしかし、ここで考えさせられるのは、そうまでしても、やっと人間に勝てる程度であった、ということである。人間では不可能な高次元の計算処理や膨大な情報の高速処理は、到底人間には不可能なことなのだが、逆に言えばスーパーコンピュータを使ったとしても、到底人間の柔軟な思考能力には及ばないということだ。例えチェスで勝つことができても、自由な発想で思考することさえできないというのは、計算機の運命なのだろうか?

 自分は大学卒業後に二度転職した。最初の会社では半導体デバイスの組み立て装置のソフトウェア設計などに携わった。(機械装置の組み込みソフトウェア=エンベデド分野)一年後に学友の誘いで転職して、パソコン用のアプリケーション開発とコンシューマ・ゲーム機でのビデオゲーム製作に携わることになった。(パソコン・アプリケーション、ゲームソフトウェア=スタンドアロン分野)ゲームの世界に区切りつけた30歳を機にして、ゲームよりもそれを支えるハードウェアを学びたくなり、別の業種へと転職したのが現在の職場だが、ここでは工場設備をシーケンスと呼ばれるソフトウェアで動かすオートメーション分野の仕事と、それに付随して動作を監視したり管理するためのソフトウェアを作る仕事に従事することになった。監視・管理ソフトウェアは主にパソコンで動作するが、広義には設備に組み込まれている装置のひとつであるため、オートメーションの一端を担っていると考えられる。その後、大学向けの計測装置やその補助装置のハードウェア設計やファームウェア設計をすることができたし、その過程で uITRON4 互換オペレーティングシステムを開発したりと、エンベデド分野の世界を満喫することができた。また、趣味の世界では自宅にウェブサーバーを設置して、様々なウェブサービスを試験的に導入することで、ネットワーク分野の最新技術に触れている。コンピューティング分野はどうかと言えば、車にはGPSがあるし、携帯電話やPDA(この原稿を書いている小型端末)はもちろんのこと、電子マネーでの交通機関や商業施設での利用、公衆無線や光回線による高速ブロードバンドによるインターネット接続とそこで行うことのできる様々なサービスなど、応用分野はすでに生活の中へ自然に溶け込んでいて、便利が当たり前になってしまっている。

Virtualworld  以前の自分はコンピュータ・ソフトウェアにおける分野について、その見地を広げてみたいと考えていた。それは今も変わらないのだが、ふと周囲を見渡すと、テクノロジの進歩が今までは専門家しか扱うことができなかった分野に、一般人がしかも簡単に足を踏み入れることができるようになっているのだ。テクノロジによって生活が便利になるということは、ある意味で人間が楽をするために想像していた世界が、現実のものになることでもある。さらに一歩踏み込んで考えると、自分の意のままになる世界を手に入れたければ、コンピュータ・ネットワーク上に無数・無限に存在する仮想世界の中に、自分の化身を投じるだけで、性別も人種も行動も(そして、空を飛ぶことも、魔法を使うことも、殺戮することも!)自由になる。コンピュータとはそういう意味では「パンドラの箱」的な存在でもあり、使い方次第で夢を叶える道具か、あるいは虜にして心を蝕む麻薬か、そのどちらかになるのだ。コンピュータ・プログラマの仕事とて、コンピュータを使う以上は同じ現象が起こるのだ。人間の世界は、理性と感情の葛藤に揺さぶられながら、人間関係の駆け引きに辟易し、他人の面倒や経済的・社会的に生き残るための努力が必要など、とても複雑で煩雑で不衛生で何より矛盾に満ちている。ところが、コンピュータをある程度自在に扱えるようになると、情報は個人的な尺度で取捨選択できるし、他人の発信する意見には匿名で反論することができる。また、様々な仮想世界やコミュニティでは自分の思い通りに行動できて、その世界には論理的な矛盾や曖昧さが微塵もない。現代の人間は本質的に、こうした仮想世界を望んでいるのではないか、と思うのだ。面倒や苦労や責任のない世界、食べることも寝ることも必要ない。(もちろん現実世界では必要だが。)時間の制約すらないという、コンピュータが作り出した新しい世界に、一度でも身を置いてその甘美な経験を味わったならば、そこから逃げ出すことはできない。そうして仮想と現実の区別がつかなくなるほどに、現実世界の自分が崩壊し、心を蝕み社会から疎まれていく…。だがしかし、その『仮想世界』は人間が必要として創造したからこそ『現実に存在する』のである。

Pandora
パンドラの箱

| | コメント (0) | トラックバック (2)