初心者向けPHPソースコード診 
断 
2014/10/11 by kitoku_magic
自己紹介 
 IT業界歴6年強のフリーのエンジニア 
 器用貧乏化しているスキルセットが最近の課題 
 ドMな人間しか出来ない様なムズゲー 
(TFF、FE新紋の高難易度)が好み 
 ビジネスにおいて、「継続可能な戦略」という 
ものについて最近考えることが多い(継続が難 
しい)
本内容の対象者 
・スキルが中級以上のPHPプログラ 
マー以外 
・具体例:初級PHPプログラ 
マー、PHPを使ってるシステムの利 
害関係者一同 
・中級以上のPHPプログラマーの皆様 
には、逆にツッコミとか意見とかをい 
ただきたいです。
本題 
システムの「質」、どうやって判断し 
ます? 
プログラムが全てではないけど、今回 
の対象は、比較的簡単に質を計れる 
PHPプログラムのソースコード診断
プログラムをどうやって読む? 
読むんじゃなくて、正規表現で抽出してみましょ 
うか
具体例1 
 global変数、$GLOBALS、publicな変数 
条件:global +$|$GLOBALS|public +$ 
たとえ話「あれ?Aさんの家の消火をしようと 
したのに、Bさんの家も消火しちゃった」 
値の変更を、検知出来る仕組み(一例:setter) 
が大切
具体例2 
・比較演算子の「==」 
条件:[^!=]==[^=]|!=[^=]|<> 
たとえ話「あれ?パスワードに” 10e00000” って 
設定しているのに、” 1e1”って入れたらログイ 
ン出来ちゃったよ」 
「==」じゃなくて「===」と書けば解決
具体例3 
・閉じタグ(?>) 
条件:?> 
たとえ話「あれ?こんな文字、何処に書いたか 
なぁ」 
書く事によるデメリットはあっても、メリット 
がそれを上回るとは思えないので、書かないこ 
と
具体例4 
・empty関数 
条件:empty *(.+) 
PHPのマニュアル 
http://php.net/manual/ja/function.empty.php 参 
照。 
何となくチェック出来るのは確かだが、TRUE 
になるパターンが多いので、「取り扱い注意」
具体例5 
・array_push関数 
条件:array_push *(.+,.+) 
$arr = array(); 
$arr[] = '1'; 
関数使わない方が速いし・・・関数使うのに拘 
る必然性を感じない
その他 
・ifやfor文などを、括弧で括っていない(止め 
よう) 
・三項演算子(ネストすると危ないとか何と 
か) 
・インクリメントとデクリメント(知らないな 
ら単一文で) 
・・・沢山あると思います
好みはある 
・「if(」 VS 「if (」 (半角スペースの有無) 
・「//コメント」 VS 「// コメント」 (半角 
スペースの有無) 
・「static public 」 VS 「public static 」 
・・・沢山あると思います 
実害(バグとか)があれば別だが・・・どっち 
でも良いのでは?
バグは発生する 
だって、人間だもの by 相田みつを 
でも、バグが発生する確率を下げるプログラム 
の書き方の方が良いですよね? 
前述の様な事前に防げるバグは、事前に防ぐべ 
し 
危なそうなコード書いているエンジニアには注 
意
連絡先 
Twitter: 
@kitoku_magic
ありがとうございまし 
た。

初心者向けPHPソースコード診断