-下書き

1-3 Irenkaの機能


Irenkaは、ソースコードに対して、およそ以下のような機能を持ちます。

また、スタンドアローンで実行する以前に、Eclipseとの親和性が高い設計を行っているので、EclipseプラグインとしてIrenkaの初期リリースは提供されます。さらに高度な活用としてはソースコードを操作する目的のオリジナルEclipseプラグインの開発を行う際に、ライブラリとして直接Irenkaの内部機能を用いることもできるでしょう。他にも、The Ashikunep Kotanのグランドデザインの中では、IrenkaをサーバサイドでSubversionやCIツールと組み合わせて用いることを企図しています。


調査結果をレポートする機能、新しいソースコードを生成する機能、新しいドキュメントを生成する機能、それぞれはIrenkaを待たずともApt/JSR269で提供されていた機能です。Irenkaでは先行するApt/JSR269で提供される機能のほとんどすべてを実現しますが、その際にいくつかの新しいアイディアをもって、プロセッサ開発者の利便性を高めようとしています。Irenkaで実現するアイディアのスポットライトは以下の通りです。

  • 簡便なルール記述によりソースコード全体にクエリを発行し、ルールに表現される特徴に従って、プロセッサ処理対象となる箇所を収集する(第2章-1)
  • メソッド内の文や式を含む、ソースコード内の全ての要素についてを操作対象とする(第2章-2)
  • 既存のソースコードから要素を取り出し、必要な加工を行い、再利用する(第2章-3)
  • コンパイル時に介入するようなソフトウェアのアーキテクチャに固有な、Declaration-Mirror概念の区別を取り除き、初学者にも直感的なAPI設計とした(第2章-4)

次章にてそれぞれのアイディアについて詳述します。


既存のソースコードをそのまま自動改変する機能は、実行時にバイトコードエンジニアリングとして提供されるような、コードをフレームワークに合わせて書き換えるような便益について、書き換え実行をコンパイル時に前倒したものです。これは他に類例を見ない、Irenka最大の特徴と言えます。ユーザーの書く数行のJavaコードから、プロセッサ処理によって数十行〜数百行のコード記述を行ったかのような効果を得ることが狙いです。アノテーション、コード記述規約、コメント、設定、様々ほんの少しの努力をもって、普通に開発すれば多大な労力を要する大きなプログラムに自動に変換していくことを可能とすれば、相当の開発生産性を実現できるようになるという考えからIrenkaの開発が始まりました。Irenkaは、個別の開発者/開発プロジェクトがそれぞれ独自に開発生産性向上に資するような仕様/内規を導入できるよう、高度な特化機能を持つプロセッサを容易に量産するインフラを提供します。
同時に、ソースコードが自動で改変されることにはユーザーに不安を与えるかもしれません。たとえば少々極端ですが、自分の書いたたった一つのアノテーションが、アプリケーションの動作の全てを左右するような局面も想定する中、背後で何が行われているかをIrenkaがブラックボックスにしてしまうのはまずい方法であると考えます。近い将来にIrenkaではEclipseに統合された環境の一部で、Javaエディタ中にプロセッサ処理の過程および結果について可視化できる機能を提供します。さらには、インクリメンタルデバッグ時にユーザー記述コードと自動生成されたコードとをシームレスに行き来する機能の実現を予定しています。