記ITの過去・現在・未来を考えるクラウドコンピューティングという言葉が世に出てから、もう10年以上が経過しています。当初はクラウドに漠然とした抵抗を示していた各企業もこの時代の流れを受け入れ、最近では多くの企業がクラウド利用を進めています。時代は確実にクラウドコンピューティングの世界へ向かっていますが、この時点で改めて、「何をどこに置くべきか?」について、ITの過去・現在・未来を考えてみたいと思います。今回はそのうちの「アプリケーションの集中と分散」という観点について触れます。ITの集中と分散の議論は昔からされていました。その代表的なものとして、「アプリケーションが動く場所」があります。前に遡りますが、昔の主流は「ホストと端末」でした。中央に大型のホストコンピュータが存在し、処理はすべてこのホストコンピュータ上で実行されます。端末は、端末利用者がキーボード等から入力した内容をホストコンピュータに送り、ホストコンピュータでの処理結果を端末の画面に表示する、という形で、入出力専用という位置づけです。処理がすべてホストコンピュータで行われるという意味では、この時代は「集中」の時代だったことになります。そこから、「クライアントとサーバー」の時代になります。端末の性能向上などを背景とし、すべての処理をホストコンピュータ上で行うのではなく、端末側へ分散しようという考え方が広まり、ビジネスロジックの多くが端末側へ移動しました。その流れの中で、端末はクライアントと呼ばれ、ホストコンピュータはサーバーと呼ばれるようになりました。クライアント・サーバーのシステム開発では、ビジネスロジックのほぼすべてはクライアント側のアプリケーション上にあり、サーバー上にはデータベースがあるだけで、プログラムはせいぜいストアドプロシージャ程度でした。よって、この時代は「分散」の時代ということになります。「Webアプリケーション」の時代へそこから、「Webアプリケーション」の時代が来ます。背景はいくつかあります。アプリケーションの互換性問題。クライアントPCのOSをアップグレードすると、アプリケーションが正常に動かなくなる、などの問題が多く聞かれるようになりました。アプリケーションの配布も背景の一つです。アプリケーションを修正しても、それを各クライアントPCへ配布するのは、当時は一苦労でした。これらの背景から、「Webがすべてを解決してくれるかも!」と、Web化への流れが加速しました。Webアプリケーションでは、基本的に処理はサーバー側で動作します。そのためこの時代は「集中」の時代となりますが......Webアプリケーションのレスポンスの問題やユーザビリティの問題、さらにはブラウザーによって動作が異なる等の問題もあり、すべてを解決してくれると思っていたWebは救世主にはなりませんでした。その後、これらの問題を解決するために、Javaアプレット、Flash、ActiveXコントロールなどWebブラウザーのアドオンとして動作するものを使うようにもなりました。AIRやMicrosoftのClickOnceなど、RIA(リッチインターネットアプリケーション)と呼ばれる開発領域も登場してきました。この「アプリケーションの集中と分散」という観点については、今も決着がついていないと認識しています。Googleは極端に言えば「すべてをクラウドへ。デバイスはブラウザーだけでいい」という姿勢に見えます。Appleはデバイスのユーザーエクスペリエンスを重要視し、「いや、アプリケーションはデバイス上にあっていいんだよ」という姿勢をとっているように思えます。MicrosoftもどちらかというとAppleに近い姿勢だと思います。何をどこに置くべきか。集中させるべきか分散させるべきか。この議論はまだまだ続きそうです。