Typemock: その過去・現在・未来
Eli Lopian氏率いるTypemock社の過去・現在・未来について、インタビュー形式にて記します。
作者 Scott Delap and Craig Wickesser, 翻訳者 編集部 投稿日 2007年8月29日 午後9時56分
Scalaプログラミング言語は最近多くの開発者に注目されている。Scalaのウェブサイトにざっと目を通せば、Scalaが命令型かつ関数型のプログラミング形式をシームレスに取り入れた純粋なオブジェクト指向のプログラミング言語であることがわかるだろう。Christopher Digginsは次のように書いている。「比較的最近まで、プログラミング言語は“命令型”か”関数型“のどちらかのカテゴリーにきちんとはまっていました。Scalaはこういった根拠のない制約を打ち破る新しいタイプの言語であることを示しています。」ScalaはまさしくJavaの次の次に来るものかもしれない、とDavid Rupp氏はブログに書いている。このようなコメントは読む価値がある。
Scalaにはオブジェクト指向性を示す主要な特徴がいくつかある。例えば、Scalaのすべての値はオブジェクトであり、関数ばかりでなく基本のデータ型(boolean型、数値型など)もオブジェクトである。また、クラスはサブクラス化することができ、mixin合成が提供されている。
「単一継承しかサポートしていない言語とは対照的に、Scalaはクラスの再利用に関してもっと一般的な概念を持っています。新しいクラスの定義において、Scalaは新しいメンバーの定義(言い換えれば、スーパークラスに関連付けられた差分)を再利用することができます。これは、mixinクラス合成として表されています。」Scalaが提供するいくつかの主要な関数の概念には、高階層関数、カリー化、ネスト関数、反復表記などがある。
Scalaは静的に型付けされているため、汎用クラス、内部クラス、そして多態方式も利用できる。他にもう一つ述べておくのに値するのは、ScalaはJavaおよび.NETと相互運用するように設計されているということである。Scalaの現バージョンは.NET上で動作しないのだが(前バージョンでは動作したが)、将来的には.NET上で動作させる計画がある。
ScalaはJavaの上でも動作する。コンパイラであるscalacを使用してソースファイルをJavaクラスファイル(例えば、JVM上で動作するバイトコード)に変換する。ScalaからすべてのJavaクラスにアクセスし、使用することができるし、JavaのアプリケーションからScalaのコードにアクセスすることもできる。Davit Rupp氏の言葉を引用すると、
「世の中にある、様々な、おびただしい数の既存のJavaライブラリも自由に使えることが、(潜在的に)マイグレーションパスをさらに簡単にするのに役立っています。」
これによってScalaはJavaライブラリの膨大なコレクションや、Java 1.4、5.0、また6.0用に作られた既存のフレームワークを利用できる。これらのフレームワーク上でScalaは定期的にテストされている。ScalaはJavaのさらに古いバージョンでも動作するかもしれないのだが、このようなバージョンにおいての公式なテストは行われていない。ScalaはBSDライセンスのもとで配布され、この数年間安定していると考えられている。
ここに、“なぜScalaを使うべきなのか?”という疑問が残る。Scala はある目的を念頭に入れて設計された。
「コンポーネントソフトウェアをより良くサポートする言語を作ること」(Scalaプログラミング言語、Donna Malayer氏)
その考え方は、ソフトウェアは再利用できる部品から構成できるように開発されるべきである、というものだ。Scalaの狙いは、オブジェクト指向と関数型の両方の面から、主要な概念を統一し一般化するプログラミング言語を提供することである。
Scalaが次のような卓越した機能を提供できるのは、このような目標を持って設計されてきたからなのだ。
「ScalaはErlang形式のアクターベースの並列処理をJVM上に取り入れています。開発者はScalaのアクターモデルを利用して、JVM上で拡張性のある並列処理アプリケーションを設計できます。Scalaのアクターモデルは、自動的にマルチコア・プロセッサをうまく利用するので、複雑なJavaのスレッドモデルのプログラミングをする必要はありません。」
Scalaのスタイルと特徴によって、開発者の多くはScalaに関心を持ち続けている。その中の1人であるDebasish Ghosh氏はこう述べている。
「かなり長い間Scalaをいじくり回して、この言語の革新的なアイディアを十分に楽しみました。」
要約すると、ScalaはJVMで動作する、他に類を見ない、機能をシームレスに合わせ持つ関数型のオブジェクト指向言語である。開発者の興味が増し、サポートツールが増えるにつれて、Scalaは明らかにツールベルトに入れておくべき(手元に置いておくべき)言語になりつつある。
この論文では、仮想化やクラウドサービスの複雑なメリットと実世界における応用を検討します。さらに重要なこととして、Contegixが複雑な問題の解決に仮想化を実装している方法や、仮想化を使うべきではないケースについて詳細を提供します。
Fiberはユーザに試練を課すことなくこの考えを実装する有益な並行性ツールとして、ライブラリが2つあります。まさにこのためのソリューションとしてあるのがNeverBlockライブラリです。私たちはNeverBlockプロジェクトのMohammad A. Ali氏とRevactorライブラリのTony Arcier氏に話を聞きました。
システムの保守容易性や拡張性を確保するためのベスト・プラクティスに関する記事は数多くありますが、この記事では避けた方がいい、いくつかの悪習慣(ワースト・プラクティス)を強調します。
この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。
Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。
マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。
No comments
返信