【39】未来はヘテロジニアスとともにある
コンピューター・テクノロジーの自然な発展とともに、アーキテクトがソフトウェア・システムを構築するために使うツールに重要な変化が生まれてきています。それは、多言語プログラミングに対する関心の復活です。多言語プログラミングとは、文字通り、ソフトウェア・システムの中で複数のコア言語を使うことです。
多言語プログラミングは、決して新しいコンセプトではありません。過去の非常に目立った例としては、フロントエンドが Visual Basic クライアント、バックエンドが C++ で書かれた COM オブジェクトというシステムがあります。このアーキテクチャーは、これらの言語が全製品に得意としていた分野をうまく活用したものでした。
では、このような多言語プログラミングに対して新たな関心が沸き起こってきたのは、どのような変化からなのでしょうか。
それは、ネットワーク帯域幅の拡大とコンピューティング・リソースの強化により、テキストベースのプロトコルが現実的な選択になったことです。効率のよい分散システムのためには難解なバイナリプロトコルが必須と考えられていた時代は終わったのです。テキストベースによるリモートの相互運用性は、XML/SOAP ベースのウェブサービスに始まり、RESTful なアーキテクチャーと Atom、XMPP などのサポート(と言っても重要性では決して引けを取らない)プロトコルまで発展してきました。
こうした新しいタイプのテクノロジーは、データが普遍的に生成、利用できる整形済みテキストになっているために、ヘテロジニアスな(異種、異質のツールを併用する)開発に今までにない大きなチャンスを与えました。ヘテロジニアスな開発なら、仕事にあった適切なツールを使うというぜいたくが許されます。テキストベースの相互運用性は、以前のような垣根を吹き飛ばしました。
今のアーキテクトは、専用の強力なツールを組み合わせて使うことができます。そのため、ツールを選ぶ基準が、正しい言語を使えるかどうかから、正しいパラダイムを使えるかどうかに変わってきました。プログラミング言語は、オブジェクト指向、関数型など異なるパラダイムをサポートしています。並行プログラミングに特に優れているというようなものもあります。パラダイムの中には、特定の問題、ドメインにぴったり合うものもあれば、そうでないものもあります。しかし、以前と比べれば、一見相性の悪そうな特殊なツールを「マッシュアップ」してエレガントなソリューションを生み出すことがずっと容易になっているという側面もあります。
このような変化の影響が少しずつ現れてきており、最近のソフトウェア・システムは、アーキテクチャー・トポロジーの組み合わせがバラエティに富んだものになってきています。これは、システムの本質的な多様性を反映しているだけではなく、新しい可能性が生まれてきていることを証明しているのです。
選択肢があるのは必ずしもよいことではありませんが、今のソフトウェア・アーキテクチャーの状況では、選択がないよりはある方が「まし」です。ソフトウェア産業は非常に深刻な問題に直面しています。特に既存のプラットフォームがそれらの問題をうまく解決できていないことを考えると、できる限り相互運用性を確保しておかなければなりません。
新しい可能性の前で技術を細分化する壁が崩れつつある現在、アーキテクトとしての仕事は以前よりもさらに困難なものになっています。しかし、これをポジティブにとらえ、これまでの積み重ねを忘れて考えるようにしましょう。そして、新しい多様性を活用するのです。未来は、ヘテロジニアスシステムとともにあります。