プログラミング講座:::PHPアカデミー 東京校 |茅場町|

講師画像


まずは無料体験レッスンを受けてみる

マンツーマンレッスン

 

フリータイム予約制

スクール案内

レッスン会場

茅場町駅

受講料 (月謝制)

60分レッスン×月2回コース
96,000円より
(レッスンは全て講師と1対1のマンツーマンです!)

スクール開講時間

水曜日、日曜日以外: 21時 - 23時
水曜日、日曜日: 10時 - 22時
休校日: なし

必要なもの

ラップトップコンピュータ(推奨)

講師ブログ

PHPのerror_report

PHPパーサ内部ではいろいろなエラーが出力されます。それらのエラーは重要度に応じていくつかの種類があります。また、ユーザが自分で発生させたエラーにも重要度をつけられます。本文ではこの重要度をエラーレベルと呼びます。エラーレベルはphp.iniでも定義できますし、error_report関数などでも設定できます。

詳細はこちら:http://jp.php.net/error_reporting

今回は、E_NOTICEのエラーレベルを出力するか否かについて議論したいです。
E_NOTICEはすごい細かい情報を出してくれて、バグの混入リスクを下げる利点があるのに対し、PHPの利点でもあるコードの柔軟性(適当なコードでも動く)が失われてしまい、開発スピードが低下したり、コードが見づらくなってしまいます。

では、周りではどうなっているかを調査してみます。


php-5.2.5のphp.ini-recommended

error_reporting = E_ALL


php-5.2.5のphp.ini-php.ini-dist

error_reporting = E_ALL & ~E_NOTICE

はてなーのみなさん

多い方が、「E_NOTICEを出していない」

Unohラボは出してる見たい

http://labs.unoh.net/2006/11/e_notice.html
なんかばんざい(E_NOTICEを出すのに反対しているみたい)

http://tt25.org/blog/20080510/php-e-notice


次に、E_NOTICEを出したときの利点と欠点を整理します。

利点



  • 未定義変数を発見できる




欠点



  • 定義されていないhashのキーを参照するとエラーになってしまう。定義されているかわからないキーを使うときには、変数へアクセスするためのwrapperが必要になるだろう。



(追記があったら教えて下さい)


上記の反論:
未定義変数の発見→PHPEclipseなどのエディタを使うことで発見できるから、コンパイラでチェックしなくてもいい。


まとめ:いまのところ、E_NOTICEを出力する決定的な強みはないのでプロジェクトの好みで使えばいいと思う。

考察:E_NOTICEの回避方のノウハウなどがほとんど無いから、一般ではあんまり使われて無いだろうなぁ。PHPのデフォルトでもE_NOTICEは無効になっているし。


ソフトウェア設計哲学

最近この本を読んでいる。



洋書の日本語訳です。amazonの評価が高かったので買ってみました。

今日は、いいフレーズを見つけたので紹介します。
「複雑さへの対処は、ソフトウェア開発における技術面での最も重要なテーマである。」

構築するシステムが大きくなってくると実装する項目も多くなってくる。また、ソフトウェアへのも複雑になってくる。

設計で一番重要だと最近思っているのは、
複雑な要求をシンプルに設計する。
こと。複雑な要求をそのままシステムへ落とし込むことは簡単。だって、要求をそのままコードに落とせばいいだけだから。しかし、要求の本質、今後の拡張性、他のコンポーネントとの依存性、重複性、その機能自体の役割、といったいろいろな視点でソフトウェアを考え、設計することはとても難しい。

一度だけ設計して、システムをくみ上げるのと、日々機能を拡張するソフトウェアでは、100倍ぐらい後者の難易度が高い。

建築にたとえると、前者は「10階建てのビルをくみ上げる」。 後者は、最初は「2階建ての建物でいいけど、今後、増築する可能性がある」ということで、増築の内容は不明である。5階分の増築があることを見越して設計しても、10階分の増築があると大変だ。基礎から作り直すことになってしまう。

ソフトウェアの設計は奥が深い。


MySQLのトランザクション

ストレージエンジンがInnoDBの場合はトランザクションを使えます。
そのトランザクションを使うときの定義を一言でまとめると、

「外部キーが張ってあるテーブル間で、deleteかupdateを発行するとき」
と定義できます。

トランザクションの説明は掲載されていますが、トランザクションを使うときの明確な定義が記載されていない場合が多いため、記載しておきます。


MySQLのYEAR型

MySQLのYEAR型が変!
http://dev.mysql.com/doc/refman/5.0/en/year.html

0を文字列として入れると、2000になったり、99を入れると1999になったりするみたい。
予期しないバグが発生する可能性があるため、YEAR型は使わない方がよさげ。

年だけを保存するカラムは、unsigned medium intがよさげ。


講師プロフィール

レッスン内容

道具について

Student Home Lesson

なんでも相談室

PHPによるデザインパターン入門 (大型本)

PHPによるデザインパターン入門 (大型本)

デザインパターンとPHPが一度に学べるので、PHPの基礎を把握したらこの本を読んでみるのがいいと思います!

ウェブ進化論 本当の大変化はこれから始まる (新書)

ウェブ進化論 本当の大変化はこれから始まる (新書)

これは必読!これからのWebのあり方、日本と米国との違いをわかりやすく解説してくれます。これ読むと、がんばらなきゃ!とおもいます。

Bootcamp Elite Mission One: Get Started (2006)

Bootcamp Elite Mission One: Get Started (2006)

プログラムをしていると運動不足になりがち。そんなあなたに室内で行えるフィットネスDVD! ノリノリで腹筋を鍛えられます。今、日本では大人気で手元に届くのに数週間かかるようです!(俺もほしい)

 エンタープライズ アプリケーションアーキテクチャパターン

エンタープライズ アプリケーションアーキテクチャパターン

大規模開発に必要になる知識です。

WEB+DB PRESS Vol.50 (大型本)

WEB+DB PRESS Vol.50 (大型本)

subversionに比べ、gitは高速で便利。svnからgitへ乗り換えてかなり開発効率が良くなりました。さすがLinusさんが作っただけあります。