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

「サイト内検索」&「ライブチャット」売れ筋TOP5(2024年4月)
今週は、サイト内検索ツールとライブチャットの国内売れ筋TOP5をそれぞれ紹介します。

コカ・コーラ流 生成AIをマーケティングに活用する方法(無料eBook)
生成AIがこれからのマーケティングをどう変えるのかは誰もが注目するテーマ。世界最先端...

DIORが本気で挑むラグジュアリー体験としてのAR
広告プラットフォームのTeadsがAR(拡張現実)とAI(人工知能)技術を応用したサービスを...