Typemock: その過去・現在・未来
Eli Lopian氏率いるTypemock社の過去・現在・未来について、インタビュー形式にて記します。
作者 Niclas Nilsson, 翻訳者 編集部 投稿日 2008年1月9日 午後6時58分
トレンドが明確になって来ているようだ。来る数年間で新たなプログラミング言語の採用が増えるだろう。その一番の目的は私達が現在使用している言語と置き換える事ではなく、言語をミックスして問題を解決する適した言語を使用するためである。
しかしながらある特定の問題に対する適切な言語とは何だろうか?最近のブログ掲載の中でJRubyのデベロッパであるOla Bini氏(ブログ・英語)が新たな側面から(source)その課題に立ち向かっている。ポーリグロットプログラミングとしても知られている多言語プログラミングは以前InfoQが取り 上げているが(参考記事・英語)、Bini氏は私達がどのように将来のシステムを構築するのかという点においてその現象について語っている。
Bini氏は3つの異なる層と言語、かもしくはその層に適合する言語の種類を解説している。従来のプレゼンテーション、ビジネス、データレイヤーではなく、Bini氏はその世界を異なるやり方で切り開いている。
Bini氏は安定層を下記のように説明している。
最初の層は私が安定層と呼んでいるものです。機能の点においてはそれはアプリケーションの大きな部分ではありません。しかし他の全てがその上に成り立っているという大変重要な部分なのです。このレイヤーが静的タイプの安全性が大変有益となる層なのです。
動的層はほとんどのアプリケーション機能が存在している場所である。
二つ目の層は動的層です。これが多分半分のアプリケーションコードが備わっているところです。ここの言語タイプは主に動的で強く定型化された言語です・・・
また動的層を考える際に彼は下記のように付け加えた。
それは環境の良い生産性に優れた場所であり、また私はJVMに強い興味を持っているので、これがこの層と大変強力な安定層との相互作用であると信じています。
ドメイン層においてBini氏はDSLムーブメントが起こると踏んでいる。
3つ目の層はドメインレイヤーです。それは一つかそれ以上のシステムのニーズに依存しているDSLに実装されるべきです。ほとんどのケースにおいて動的層内で内部DSLとしてそれを実装するのに十分であり、そのような場合において二つ目と三つ目のレイヤーは簡単に区別できるものではありません。しかしながらいくつかの場合において相互作用可能な外部DSLを所有する事が警告されます。典型的な例はルールエンジンのようなものかもしれません(Drools のような)。
David N.Welton氏(サイト・英語)はBini氏の掲載に対する返答記事を書き、この進化論に関する彼の疑念(source)をあらわにした。
私はこれに関して半信半疑ですね。そして彼はこの変化を後押しする根底に存在している社会的、経済的要因が何であると考えているのか知りたいですね。プログラミング言語は最終的には人間の奇異さに宿っているので、言語がこの先どうなるか理解するには人的要因を考える必要があるのです。
Welton氏は自身が2年前に記したプログラミング言語の経済的な側面(source)を分析した記事を参照している。その記事においてWelton氏はほとんどの言語実装が今日無償なので、新たな言語を使用してより良い経済をもたらすただ一つの方法はコードを作るかどうかということであると述べている。
Ola Bini氏は彼が一つの層内においてでさえも、次なる言語を信じていないことを説明するのと共に幕を閉じている。
しかし一つ明確にしたいことがあるのです。これらの層で勝者が出るとは思いません。実はどれかの層で一つの言語が勝つとなると悪い影響がもたらされると思うのです。というのも私はJython、JRuby、Rhinoと他のいくつかの言語が一つの層に共存するという将来を見据えているのです。競合も言語戦争もそこには存在しないのです。
Bini氏は自身の努力によってJRubyにおいてバーチャルマシンレベルで言語をミックスするのを可能にする事に多大に貢献し、また他の言語でもそれを成し遂げた。もう一つのバーチャルマシーンプラットフォームにおいて、Microsoftは共通言語ランタイムのためのVB.NET、C#とC++実装を提供することによって一から多言語に備えていた。また最近彼らはIronPythonとIronRubyの上に成り立っている動的言語ランタイムをリリースし、.NETが多言語プラットフォームであることを強調している。
しかしその記事は興味深い疑問を提示している。
要は将来のシステムがどのようにプログラミング言語を活用するのかということだ。
原文はこちらです:http://www.infoq.com/news/2008/01/languages-in-future-systems
この論文では、仮想化やクラウドサービスの複雑なメリットと実世界における応用を検討します。さらに重要なこととして、Contegixが複雑な問題の解決に仮想化を実装している方法や、仮想化を使うべきではないケースについて詳細を提供します。
Fiberはユーザに試練を課すことなくこの考えを実装する有益な並行性ツールとして、ライブラリが2つあります。まさにこのためのソリューションとしてあるのがNeverBlockライブラリです。私たちはNeverBlockプロジェクトのMohammad A. Ali氏とRevactorライブラリのTony Arcier氏に話を聞きました。
システムの保守容易性や拡張性を確保するためのベスト・プラクティスに関する記事は数多くありますが、この記事では避けた方がいい、いくつかの悪習慣(ワースト・プラクティス)を強調します。
この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。
Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。
マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。
No comments
返信