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

新規事業の実態 最重要KPI「100%以上達成」は約2割――クニエ調査
新規事業の「最重要KPI」「スケジュール遅延」「開発規模」の結果に対して、その要因とな...

福田康隆氏、NEC東海林直子氏らが語る営業のデジタルシフト まずどこから始めればいい?
お客さまに会って課題を与えてもらうスタイルから、営業自身が課題を先に探して提示する...

NECが取り組む営業のデジタルシフト 「会えば何かが起こる」から「先に課題を提示できる」営業へ
新型コロナウイルス感染症(COVID-19)拡大に伴い企業活動の在り方も大きな変更を迫られ...