DIやテストを言語機能に取り込み

JavaVM上の新言語「Noop」が話題に

2009/09/18

 JavaVM上のJavaライクなプログラミング言語「Noop」が話題を呼んでいる。2009年9月16日から3日間の予定で米国サンタ・クララのサン・マイクロシステムズ内で行われた「JVM Language Summit」で、グーグルの社員らがサイドプロジェクトとして提案する発表を行った。プロジェクトのWebサイト自体は8月中旬から公開されていて、すでに動くコードもあるが、公の場での披露はJVMサミットが初めてだった。

 NoopのソースコードはJavaバイトコードにコンパイルできるほか、Javaのソースコードへ変換したり、コマンドラインインターフェイスが実現できるようインタープリタとしても稼働する。

 NoopはJavaVM向けの実験的言語で、これまでNoopの開発者らが感じていたプログラミング上の良い作法(ベストプラクティス)と、逆にこうあるべきではないと感じていた悪い作法を明確にし、前者を推奨し、後者を禁じるという“生意気な”(Noop's got an attitude)言語だという。

 最大の特徴は依存性注入(DI)やテスト機能を言語仕様に取り入れたこと。これまで、Javaに限らず多くの言語では、DIやテストはフレームワークやライブラリの機能として提供されてきた。Noopは、言語レベルでこうした機能を実現する試み。DIには独自の文法を提案している。単体テストや結合テストは「test」キーワードを使ってクラス定義と同じファイルに書ける。

 APIのドキュメントの維持・管理についても、ベストプラクティスとして、コード中への説明文の埋め込みをサポートする。PythonにあるDocstringsをさらに押し進め、コンパイラで処理可能な構文を用意する。

 Noopの設計では、コードは書かれるよりも読まれることのほうがはるかに多い、という前提から可読性を最優先した文法を意識しているという。可読性向上のために言語の制約上省略できない繰り返しなど“ボイラープレート”と呼ばれる冗長なコードをできるだけ排除するよう心がけたという。

 このほか、プリミティブ型の排除(すべてはオブジェクト)、実装の継承(サブクラスの作成)の禁止、オブジェクトはデフォルトがイミュータブル(final)で、新キーワードとして「mutable」を導入するなど、Java言語に比べると大きく異なる点が見られる。ビルトインでフィルタを用意するなど関数型プログラミングのスタイルも取り入れているという。

(@IT 西村賢)

情報をお寄せください:

Java Agile フォーラム 新着記事

キャリアアップ

- PR -

注目のテーマ

- PR -
ソリューションFLASH

「ITmedia マーケティング」新着記事

セールスフォース×Snowflake×Amplitude 日本法人のキーパーソンが「グロースマーケティング」を語る
顧客の行動を理解し、的確な目標・指標を設計して高速に施策を繰り返す「グロースマーケ...

ファイザーCEOが語る企業文化 コロナ禍から世界を救う製薬会社が重視する4つのコアバリュー
新型コロナウイルスワクチンの開発で一躍脚光を浴びることとなったファイザー。不可能を...

「マーケティングオートメーション」 売れ筋TOP10(2021年5月)
2021年5月も国内マーケティングオートメーション(MA)市場は順調に成長しています。「Sa...