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 マーケティング」新着記事

天候と位置情報を活用 ルグランとジオロジックが新たな広告サービスを共同開発
ルグランとジオロジックが新たな「天気連動型広告」を共同開発した。ルグランが気象デー...

“AI美女”を広告に起用しない ユニリーバ「Dove」はなぜそう決めたのか
Unilever傘下の美容ケアブランド「Dove」は、「Real Beauty」の20周年を機に、生成AIツー...

有料動画サービス 34歳以下では過半数が利用経験、4割は1日1回以上利用
「ニールセン・ビデオコンテンツ アンド アド レポート 2024」を基に、テレビ画面での動...