SlideShare a Scribd company logo
1 of 15
初心者向け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
ありがとうございまし 
た。

More Related Content

Viewers also liked

Viewers also liked (9)

zend_parse_parametersと64bit環境
zend_parse_parametersと64bit環境zend_parse_parametersと64bit環境
zend_parse_parametersと64bit環境
 
zend-expressiveを触ってみよう
zend-expressiveを触ってみようzend-expressiveを触ってみよう
zend-expressiveを触ってみよう
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
 
Laravel5.1 Release
Laravel5.1 ReleaseLaravel5.1 Release
Laravel5.1 Release
 
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulpphp開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
 
PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界
 
Phpcon2015
Phpcon2015Phpcon2015
Phpcon2015
 
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
 

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

日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
Rina Fukuda
 
PHPカンファレンス北海道 php技術者認定上級試験を受けてみた
PHPカンファレンス北海道 php技術者認定上級試験を受けてみたPHPカンファレンス北海道 php技術者認定上級試験を受けてみた
PHPカンファレンス北海道 php技術者認定上級試験を受けてみた
Fumito Mizuno
 

Similar to 初心者向けPHPソースコード診断 (20)

PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
 
PHP5技術者認定初級試験を受験しました
PHP5技術者認定初級試験を受験しましたPHP5技術者認定初級試験を受験しました
PHP5技術者認定初級試験を受験しました
 
Osc2014
Osc2014Osc2014
Osc2014
 
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxPHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
 
2009 PHP初心者
2009 PHP初心者2009 PHP初心者
2009 PHP初心者
 
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
 
JIT for PHP を試した
JIT for PHP を試したJIT for PHP を試した
JIT for PHP を試した
 
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 
『PHP逆引きレシピ』とセキュリティのこと
『PHP逆引きレシピ』とセキュリティのこと『PHP逆引きレシピ』とセキュリティのこと
『PHP逆引きレシピ』とセキュリティのこと
 
2015/09/12 第9回G-Study発表資料-XdebugでPHP ScriptのProfileしてみる
2015/09/12 第9回G-Study発表資料-XdebugでPHP ScriptのProfileしてみる2015/09/12 第9回G-Study発表資料-XdebugでPHP ScriptのProfileしてみる
2015/09/12 第9回G-Study発表資料-XdebugでPHP ScriptのProfileしてみる
 
PHP7で目指す 継続的インテグレーション開発
PHP7で目指す 継続的インテグレーション開発PHP7で目指す 継続的インテグレーション開発
PHP7で目指す 継続的インテグレーション開発
 
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
 
PHPカンファレンス北海道 php技術者認定上級試験を受けてみた
PHPカンファレンス北海道 php技術者認定上級試験を受けてみたPHPカンファレンス北海道 php技術者認定上級試験を受けてみた
PHPカンファレンス北海道 php技術者認定上級試験を受けてみた
 
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
あるあるLT〜サーバーサイドエンジニア〜 Vol.3あるあるLT〜サーバーサイドエンジニア〜 Vol.3
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
 
今すぐ使えるPHP開発のあれこれ
今すぐ使えるPHP開発のあれこれ今すぐ使えるPHP開発のあれこれ
今すぐ使えるPHP開発のあれこれ
 
PHP初心者セッション2013
PHP初心者セッション2013PHP初心者セッション2013
PHP初心者セッション2013
 
PHP7ではなくHack/HHVMを選ぶ理由
PHP7ではなくHack/HHVMを選ぶ理由PHP7ではなくHack/HHVMを選ぶ理由
PHP7ではなくHack/HHVMを選ぶ理由
 
IkaLog Presentation at qpstudy 2015.11
IkaLog Presentation at qpstudy 2015.11IkaLog Presentation at qpstudy 2015.11
IkaLog Presentation at qpstudy 2015.11
 
php.netの歩き方
php.netの歩き方php.netの歩き方
php.netの歩き方
 

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