【コラム】

ライトニングJava

26 アノテーション(1) - Javaの大きな変貌、アノテーションの導入

後藤大地  [2005/11/14]

これまでJava SE 5.0で導入されたEoDとしてAutoboxing/Unboxing、可変長引数、列挙型、拡張for構文、Static Import、Generic Javaを紹介してきた。今回から、Java SE 5.0で導入されたEoDのなかで、本質的にもっとも重要な機能となるアノテーションについて説明する。

アノテーションはこれまでに説明してきたEoDとは本質的に異なる。これまでに紹介してきたEoDが従来の言語機能の書き換えや便利な機能のマージであることに対して、アノテーションはJavaに新しい言語の側面を導入するものであり、プログラミングのあらゆるスタイルを変更する可能性を秘めている。

バージョン名表記の変更について

なおこれまで、Javaのバージョンを表現する言葉として「J2SE 5.0」といった表記を用いてきたが、これからは「Java SE 5.0」のように新しい表記に改める。SunはJavaOneにおいてJavaのバージョン表記を従来の「Java 2 SE 1.5」といった表記から、「Java SE 5.0」「Java EE 5.0」のようにJava 2の2を落とした表記に変更することを発表した。Java 2の2はJavaの発展の途中で新規性を表現するために導入された文句だが、現状ではもはや不要だった。新しい表記の方がより自然だ。

また、今後はバージョンを区別するために開発コード名を使うこともある。現在リリースされているバージョンは「Java SE 5.0 Tiger」であり、今後リリースが予定されているバージョンは「Java SE 6.0 Mustang」、「Java SE 7.0 Dolphin」である。Tigerと表記された場合はJava SE 5.0を、MustangやDolphinと表記された場合にはそれぞれJava SE 6.0や7.0を指し示していると思っていただきたい。

Tigerで導入されたアノテーションはまだJavaに登場したばかりの機能で、多くのJavaプログラマはまだ慣れていないだろう。アノテーションを使った実装は今後さらに普及する見通しで、いくつもの機能が今後リリースされるMustangやDolphin、EEやMEで採用されることがわかっている。別のバージョンでの採用見通しなどに触れる機会も増えるため、あらかじめ名称について説明するものである。

アノテーションとは

Tigerで導入されたアノテーションは、ソースコードそのもの対して情報を与えるものだ。メタデータを表現するための機能だともいえる。アノテーションはJavaが記述方法の参考としているC言語やC++言語には用意されていない機能で、近いところではC#に導入されている属性をあげることができる。

C#はJavaから多くの機能を模倣して開発されたプログラミング言語だが、JavaもまたTigerにおいてC#で導入された機能の多くを導入している。双方ともに今まさに発展している言語であり、お互いに利点を吸収しながら発展しており、実現している機能はよく似ている。

アノテーションは、従来のJavaの言語機能とは直交しているといわれる。つまり、従来のプログラミング機能に変更を与えるものではなく、アノテーションを使用しようがしまいが、その動作には影響を与えないものだということだ。

ではなにが重要なのかということになるが、それは大きくわけて次のふたつになるといるだろう。

  • アノテーションをDIなどプログラミング機能の重要な一部として使うことで、プログラミングの手間を軽減させ、ソースコード量を大幅に減らせる可能性を秘めている
  • コメントのように文章ではなく、それ自体が「意味」を持ったマーキングを言語レベルで行うことができる

アノテーション自身は言語に対して直交するが、アノテーションがもたらすパラダイムは大きい。言語として直交するという点よりも、それがもたらすパラダイムに注目するべきだ。アノテーションがJavaにもたらす言語としての変更の大きさは、これまでJavaに導入された機能のどれと比べても大きく衝撃的になりそうだからだ。プログラミングのスタイルがいっぺんする可能性がある。

概念的な話ばかりになってしまい申し訳ないが、要するにアノテーションとは、インターフェースのような、そしてもっと違った何かが導入されたのだと理解していただければいいかもしれない。インターフェースはJavaにおけるプログラミングにおいてはきわめて重要な機能であり、多くのフレームワークはインターフェースプログラミングを基本においている。

これがアノテーションの導入によって、フレームワーク作りのベースがインターフェースからアノテーションに変更される可能性を秘めている。現に、Java Core APIに含まれていない、プロジェクトやサードベンダからリリースされている多くのフレームワークがこれまでのインターフェースを使った記述から、アノテーションを使った記述に切り替えている。フレームワークを使う方としては、アノテーションを使った方がインターフェースを実装してXMLファイルに設定を書く作業よりもよほど簡単なのだ。

エンタープライズシステムやサーバシステムを開発している多くの技術者は、すでにアノテーションに触れているだろう。逆に、それ以外のユーザはまだアノテーションに触れていないかもしれない。以降の連載では、アノテーションの基本的な機能や使い方から始め、アノテーションについて詳細に説明していこうと思う。

アノテーションはTigerにおいてもっとも重要にして、今後のJava言語の方向性を位置づける重要な機能だといえる。Javaに関わる技術者は、アノテーションの使い方を習得するとともに、アノテーションという概念がもたらす本質的な変更について理解する必要があるといえるだろう。

提供:毎日就職ナビ

会員登録はこちら

学生のための就職情報サイト「毎日就職ナビ」。4,000社以上の新卒採用情報が常時掲載され、社内の雰囲気が伝わる情報画面、さまざまな項目での会社検索、エントリーや説明会検索など、機能も充実。無料適職診断、就活Q & A、エントリーシート添削講座など、就職活動に役立つ記事も満載です。研究者、エンジニアを目指す学生の方々も是非エントリーしてください。お待ちしています!

毎日コミュニケーションズ 就職情報事業本部はプライバシーマークを取得しています。

    新着記事

    特設サイトの情報

    人気記事

    一覧

    イチオシ記事

    新着記事

    特別企画

    一覧