PHP技術者必見!腕に覚えがある人は、論文とコードで審査する“ウィザード試験”にチャレンジしてみよう! #PHP

PHP技術者認定機構は、論文とコードで審査するユニークな試験、ウィザード試験を実施しています。応募されたコードが公開され、PHP技術者試験合格者が投票し、上位3名が合格、という仕組み。

単に試験勉強するだけでなく、他人のコードを読むのも学びに繋がるはず!ということで、本記事ではエントリー中の論文・コードをご紹介していきます。

2013年12月末まで投票受付中!PHP技術者認定ウィザード試験

PHP技術者認定機構は、PHP技術者認定ウィザード試験を行っています。この試験は、論文/コードを審査する方式です。2013年のエントリーは「リフレクションを用いたソースコード閲覧システム」「高負荷サイトを開発するPHPエンジニアにできること」の2件です。

これらの論文/コードは2013年12月末まで投票が行われ、合格したものがウィザードとして認定されます。機構役員だけでなく、PHP技術者認定初級試験/上級試験合格者も投票権を持つため、合格者は多くの「PHPプログラマから認められた者」となります。

8,568通り、あなたはどのタイプ?

エントリー中の論文/コードをご紹介

本記事では、これら2件の論文を、コードを読みつつ、紹介していきます。なお執筆時点では投票中のため、これら2件がウィザードとして認定されるかどうかは不明です。

■1件目「リフレクションを用いたソースコード閲覧システム」

「リフレクションを用いたソースコード閲覧システム」は、プログラムのソースコードを解析して、閲覧可能にするものです。FuelPHP用のサンプルとWordPress用のサンプルが提出されています。

このプログラムのコアはSourceViewクラスで、PHP本体のReflectionClassを継承して作成されています。独自追加されているメソッドoutDataが、ソースコードを実際に出力するメソッドです。

コードを見ると、下記のようにデフォルトエスケープとなっています。人為ミスによるクロスサイトスクリプティングが起こりにくいように配慮されています。

—– sourceview.phpより引用。コード中のコメントは元からある —–

class SourceView extends ReflectionClass {
    (省略)
    public function outData($escape='escape') {
        $startline = $this->getStartLine();
        $endline = $this->getEndLine();
        $out = array();
        // ソースコードの行数は1からスタートするが、配列は0からスタートする
        for($i=$startline-1;$i<$endline;$i++) {
            // 明示的に「エスケープしない」を選択しない限りエスケープする
            // 「エスケープしない」場合は、コード中に「not-escapte」と記述するので、エスケープしていないことが分かり易い
            if ('not-escape' == $escape) {
                $out[1+$i] = $this->data[$i];
            } else {
                $out[1+$i] = htmlspecialchars($this->data[$i],ENT_QUOTES,'UTF-8');
            }
        }
        return $out;
    }
    (省略)
}

■2件目「高負荷サイトを開発するPHPエンジニアにできること」

「高負荷サイトを開発するPHPエンジニアにできること」は、PHPプログラムの実行時の負荷を、メモリ使用量と速度の観点から計測した論文です。
コードの例をみてみると、

  echo $a.$b.$c.$d.$e;
  echo $a, $b, $c, $d, $e;
  $string = $a;
  $string .= $b;
  $string .= $c;
  $string .= $d;
  $string .= $e;
  echo $string;
  echo "$a$b$c$d$e";
  $string = "$a$b$c$d$e";
  echo $string;

のうち、「どれが最も効率が良いか」を検証しています。上記のコードは、「文字列の出力」といった単純な処理ですが、様々な方法があること、また効率に差があることが紹介されています。

近年は高負荷サイトにもPHPが使われるケースが増えており、単にコードを書くだけでなく、効率の良いコードを書くことも要求されるでしょう。

8,568通り、あなたはどのタイプ?

PHP技術者認定ウィザード試験は実践能力を問う試験

技術者の資格試験では、実務と直接関連しない知識を問われることも結構あります。PHP技術者認定ウィザード試験は、論文/コードの審査ということで、より実践的な能力を問う試験だといえるでしょう。

また公開審査という方式なので、プログラミング能力に秀でた者のコードや考えを知ることができます。受験者だけでなく、PHPプログラマの皆さんにも役立つ試験であり、興味深いですね。腕に覚えのある方は、来年のウィザード試験に挑戦してみてはいかがでしょうか。

執筆者プロフィール 水野 史土

レスキューワーク株式会社(WordPressサイト/テーマ/プラグインの診断および障害復旧サービス)の代表取締役。WordPressおよびNovius OSのコアコード貢献者。
Twitter: @ounziw
ブログ: http://www.rescuework.jp/blog.html

※本記事は「CodeIQ MAGAZINE」掲載の記事を転載しております。

PC_goodpoint_banner2

Pagetop