PHP技術者認定ウィザード2012の審査結果をお伝えします。
【対象論文・コード】
エントリーナンバー1 応募カテゴリ:フレームワーク・ウィザード
【結果】
不合格
※総投票数 36票 可17票 該当なし18票 棄権1票
PHP技術者認定機構及び審査チームの講評
【不合格の理由】
本論文およびソースコードが、ウイザードとして期待される、PHPの発展への貢献及び知識と発想力を持つものとしては認められなかったため。
【コメント】
フレームワークはPHPの最も注目度の高いトピックの一つとなっています。大規模開発や、高速なアプリ開発を標榜する多くのフレームワークが登場し、進化が続いています。
本 論文は、新興フレームワークの1つである「FuelPHP」が提供するAPIに対して、リフレクションを用いたコード解析の手段を提供しています。フレー ムワークを用いた開発を実際に行う際は、そのフレームワークのAPIやソースコードを頼りに動作を解析する事がよくあります。ローカル環境で、既存PHP プログラムを簡易的に解析し、コードリーディングを支援してくれる本プログラムは、開発現場では重宝されるツールとなるでしょう。
一方 で、本PHPプログラムはFuelPHPに限定されたものとなっており、クラス一覧がプリセットで定義されているなど、汎用的な環境を提供できるに至って いません。多くのサードパーティ製ライブラリやフレームワークがWebサイト上でAPIリファレンスを提供していること考えると、本コンセプトは、むしろ 独自のコードをリアルタイムにドキュメント化する手段として有効である可能性があります。
類似のツールとして、PHPDoc形式のコメン トから解析するPHPDocumentorがあり、論文でも言及されています。しかしながら、その比較分析が表面的な内容となっており、客観的な分析に 至っていないと感じられます。本ツールが従来のツールに比べてどのように改善されたかを、ベンチマーク等の手段により定量的、客観的に示すことが望まれま す。
PHPウィザード検定の審査に際しては、プログラムの実用的な側面だけでなく、新しい価値を提供されていることを重要視します。その 観点で、本プログラムはPHPリフレクション機能を利用したサンプルの域にとどまっており、新たな価値を提供できているものでないと判断いたしました。
すでに類似のツールがある以上、作っただけでは使ってもらえず、使ってもらえないとフィードバックがなく、改善もされません。本プログラムがいっそう洗練され、PHPソースコード解析ツールの定番として普及することを願います。
審査方法、提出論文
投票対象者
・上級試験合格者
・初級試験合格者
・認定スクール
・特別審査員、当機構の顧問・役員
審査基準は「応募論文及びコード提出者がPHPの発展に貢献できる知識と発想力を持つこと」で す。以下の提出論文及びコードをご覧いただき、PHP技術者認定ウィザード2012にふさわしいかどうか、投票者の感覚で「可」「不可」「棄権」のいずれ かで投票ください。投票フォームは本ページの下段にあります。投票期限は2012年10月6日23時59分までとします。
※その他審査基準投票方式の詳細についてはこちらをご覧ください。
エントリーナンバー1 応募カテゴリ:フレームワーク・ウィザード
提出コンテンツのライセンス表記:CC-BY-SA (プログラムコード部分は LGPL)
PHPには、リフレクションクラスが用意されており、プログラムのソースコードを調べるのに便利である。PHPマニュアル( http://www.php.net/manual/ja/intro.reflection.php)には、「クラス、インターフェイス、関数、メソッド、そして拡張モジュールについて リバースエンジニアリングを行うことができます」と記載されている。
本プログラムは、リフレクションクラスを利用し、フレームワークFuelPHP( http://fuelphp.com/ ) のソースコードを検索・閲覧を可能にするものである。フレームワークのソースコードを閲覧しやすくすることで、より多くの開発者が、より頻繁にソースコー ドを読むようになり、理解度を高めることができる、と期待される。本プログラムを公開することで、FuelPHPフレームワークの発展に役立つであろう。
本プログラムはFuelPHP1.2.1で動作する(FuelPHPのcore, parserは別途入手が必要)。 http://fuel.php-web.net/にて動作確認できる。さくらインターネット株式会社のレンタルホスティングサービスを利用している。なお、本プログラムの作成にさくらインターネット株式会社は関与していない。
本 プログラムの中核となるSourceViewクラス(fuel/app/classes/sourceview.php)は、PHPビルトインの ReflectionClassを継承したものである。クラス名を入力すると、クラスが定義されているファイルの行番号、クラスで定義されているメソッド 一覧とメソッドが定義されている行番号を取得する。
本プログラムのトップページ http://fuel.php-web.net/では、主なクラスの詳細情報ページへのリンクを掲載している。検索窓でクラス名を入力する他に、これらのリンクをクリックしても詳細情報ページを閲覧できる。クラスの詳細情報ページ、例えばhttp://fuel.php-web.net/index.php/methodlist/list/Fieldset では、左側にメソッド一覧を表示し、右側にソースコードを表示する。左側のメソッド一覧のメソッド名をクリックすると、右側のクラスのソースコード表示部分が、そのメソッドの定義部分を表示するようにスクロールする。スクロール機能はjQuery( http://jquery.com/ )で実装している。ソースコードの色付けは、prettify.js( http://code.google.com/p/google-code-prettify/ )を利用している。
プログラムのソースコードを閲覧する方法は、本プログラムに限らない。類似のものとして、PHPDocumentor( http://www.phpdoc.org/ ), PHPXRef( http://phpxref.sourceforge.net/) 等があげられる。これらは、プログラムを更新する度に、HTML生成が必要となる。一方、本プログラムは、ソースコードを直接解析するため、HTML生成 作業は不要である。しかし、アクセスがある度に、直接解析すると、サーバー負荷が大きくなる。本プログラムでは、ビューにPHPTAL( http://phptal.org/ )テンプレートエンジンを用いて、PHPTALのキャッシュ機能を使用することにより解決している。PHPTALは、オープンソース(LGPLライセン ス)で配布されている。PHPTALは、HTMLタグの属性に制御コードを追加していくため、HTMLレイアウトが崩れず、テンプレートファイルを HTMLファイルとして閲覧できる、という特徴がある。また、PHPTALはデフォルトで出力エスケープを行うため、エスケープ漏れによるクロスサイトス クリプティング脆弱性のリスクを低減する、という特徴がある。
本プログラムは、フレームワーク本体だけでなく、独自に追加した部分についても、検索することができる。たとえば、http://fuel.php-web.net/の 検索窓に「SourceView」と入力すると、私が独自作成したクラスSourceViewのソースコードを閲覧することができる。本プログラムはオー プンソース(LGPLライセンス)で公開されている。オープンソースなので、各自の作成したプログラムに本プログラムを組み込むことができ、独自作成した クラスのソース閲覧がより容易になるであろう。
※提出コードは以下よりダウンロードください。