Sun Microsystemsで開催中の「JVM Language Summit」において、Googleの技術者Alex Eagle氏とJeremie Lenfant-Engelman氏が、Java仮想マシンで動作する新しいプログラミング言語「Noop」を発表した。旧、新の開発言語からの経験を教訓に、読みやすく、そしてメンテナンスしやすい言語を実現する。「2人以上のチーム向けの言語」だという。
Noopは"noh-awp"と発音する。機械命令のNOP(No Operation)に近い。Eagle氏らGoogle技術者を中心に、開発者同志が集まってNoopプロジェクトはスタートした。現在Google Code上でホストされている。
同プロジェクトのミッションを語る上でEagle氏らは、Michael Feathers氏の「Working Effectively With Legacy Code (レガシーコード改善ガイド)」の内容を引用した。同著でFeathers氏は、"テストのないコード"をすべてレガシーコードと定義し、その上で、コードを理解し、テストで保護するための手法をまとめている。Noopが目指すところも同じだ。たとえ、きれいな設計やコードであっても、手が加えられるに従って次第に分かりづらくなり、そして壊れていく。テストを用意し、元のきれいな設計やコードを維持しながら、プログラムを変更できる環境が望ましい。こうした特徴を言語レベルで備えるべきであるという考えがNoopプロジェクトの背景だ。
たとえばFeathers氏は、ユニット・テスティングを実現する上で、接合部を利用してSeamという、元のコードを編集することなくプログラムのふるまいを変える場所が重要になるとしている。Eagle氏らによると、Seamがないケースは言語機能に由来する。Noopでは、すべてのクラスのペアの間にSeamが設けられる。またプログラムの実行までコンポーネント同士が依存関係を持たないようにするDependency Injection (DI: 依存性の注入)が組み込まれている。
ほかにも、コードは書かれる以上に読まれるものという観点から"読みやすさ"を重視。プロジェクト・ページでは、不変性、実行可能なドキュメンテーション、プロパティ、実用的でモダンな標準ライブラリなどの特徴が挙げられている。
NoopはApache License 2.0の下で公開される。Noopのソースファイルの利用方法として、Javaソースを生成するJavaトランスレータ、インタープリタ、Javaバイトコードへのコンパイラの3つが検討されている。
| セメント鉱物の一種が高温用圧電センサ材料に - 東工大などが発見 [18:13 6/19] |
| 九大、植物の気孔開口に必要なK+チャネルの働きに必要な転写因子を発見 [17:59 6/19] |
| NICTなど、酸化ガリウムを用いたMOSトランジスタを開発 [16:57 6/19] |
| NIBBなど、分裂時の植物細胞内の仕切りができる様子を高解像度で撮影 [16:23 6/19] |
| 筑波大など、眠気は起きている間の経験で変動することなどを発見 [15:57 6/19] |
|
アイ・オー・データ、スマホ画面をワイヤレスでテレビに映すHDMIアダプタ [22:18 6/19] 携帯 |
|
ジャスティン・ビーバー、ひき逃げ容疑におとがめなし「パパラッチが悪い」 [22:00 6/19] エンタメ |
|
デュアルディスプレイにも対応できる遮光フード [21:40 6/19] パソコン |
|
上海問屋、カード型ホルダー部に本体を格納できるスマホ用USB充電ケーブル [21:38 6/19] パソコン |
|
「ムシブギョー」ニンテンドー3DSでゲーム化!9月発売 [21:32 6/19] ホビー |