unoh.github.com

人のソースを読むと勉強になる

Mon Oct 02 18:52:34 -0700 2006

Keitaです。
僕はもともと、Delphiの技術者で、PHPに関してはほとんど独学で勉強してきました。
もともとHTTP周りのアプリケーションには興味があり多少の知識やバッドノウハウはあったのですが、明確なスタイルは、いくつかの書籍を呼んでみても残念ながら得られませんでした。

で、ある日悩んでたところ、Pukiwikiというオープンソースのスクリプトを設置することになり、設置の方法について調べているうちにソースを読むことになりました。

で、Perlで掲示板!!とかいう時代のころにしては、Pukiwikiってわりと綺麗なソースなのでコーディングスタイルを含めてかなりいろいろなところが勉強になりました。

特に印象に残っているのがこのコードです。

function input_filter($param)
{
    static $magic_quotes_gpc = NULL;
    if ($magic_quotes_gpc === NULL)
        $magic_quotes_gpc = get_magic_quotes_gpc();

    if (is_array($param)) {
        return array_map('input_filter', $param);
    } else {
        $result = str_replace("\0", '', $param);
        if ($magic_quotes_gpc) $result = stripslashes($result);
        return $result;
    }
}


僕がみたころのコードはもっとはるかに単純だったと思います。
このプログラムは再起処理をする必要があるプログラムでarray_mapで処理しています。
このため、より高速にプログラムが処理できるようになっています。
このわずか15行にもみたないプログラムでも、いろいろなことを学びました。

今世の中で、公開されているPHPのスクリプトはわりといいものも悪いものもあったりして、どれを読んだらいいのかというのはわかりづらいかと思いますが、もし、今読むとしたら。
Zend Frameworkや、EthnaSymfonyなどのフレームワークがお勧めです。

僕はEthnaを読むことが多いのですが、PHP4的なオブジェクト指向の絶妙な妥協点とかが見えて非常に面白いです。


あと、最近は、Cの勉強をしようかとおもっていて、PHP本体のソースコードにも目を通すようになりました。
まだぜんぜんわからないですが、少しずつわかってきてこれでいざとなったら、PHPのバグも直せるようになったらなーと思っています。

オープンソースが流行して、いろいろなソースが読めるような時代になったのは、技術者として非常にエキサイティングな時代になったと思います。
もし、読んでる途中でバグを見つけたりしたら、そのパッチを投げたりすれば、もしかすると新しい出会いがあるかもしれません。

社内のコードばかり見ているのもいいですが、たまには外のコードを時間をかけて読んで見てはいかがでしょうか。