PHP プログラミング Black Book

PHP プログラミング Black Book レビュー記事

[ ブックレビューコーナー 目次 ]

株式会社インプレス 様のご厚意により, 書籍 "PHP プログラミング Black Book" を ブックレビューコーナー にご献本いただきました. この本のレビューをして頂くべく, Linux Users ML や本サイトにおいて 公募 を行い, これにご希望頂いた方々より感想などをレビュー記事にまとめていただきました.

ここに, レビューアの方々から寄せられたレビュー記事を公開します. (原稿到着順)

株式会社インプレス 様および レビューアの皆様のご厚意に感謝いたします.

なお, 以下のレビューは初版を対象としています.


Reviewed by 中尾 義之 (dave@3104.com) さん (HomePage)

「初心者でも中級者でも役に立つ一冊」

Linux の使用歴
5 年
UNIX の使用歴
5 年
Linux Box の主な用途
サーバ (インターネット/SAMBA/Web アプリケーション) として
Linux 以外に利用している OS
Windows2000
Linux と Linux 以外の OS の使用頻度の比
2:8

第 1 印象

「Black Book」シリーズ・・・非常に難しそうな印象を受けました. 初心者向けじゃないだろう, そう思わせるこのタイトル. PHP を使い始めて早数年, かなり規模が大きなアプリケーションも組んでいますが, ブランクがかなりありますので「使いこなしている」というイメージが自分の中にありませんでした.

そこで「使いこなしたい!」と思い, 元々は購入を考えていたのがこの本です. 幸い, このような形でブックレビューに参加出来て, 非常に光栄に思っている次第です. 話はそれましたが, 果たして中身は「使いこなしたい!」に合致するものでしょうか?

なお, このレビューは「じっくり読んだ」というレビューではなく, 「業務で使えるか?」という点に主眼を置いています. 私が実際に業務を行う時に手元に置いて使ってみた感想を書いています. ご了承下さい.

開いてみて

まず開いてみて「ポケットリファレンス」を見付けた時は「おっしゃ!」と思いました. こういうのが欲しかったんです.

基本的に「どっぷりと PHP でプログラム」というのが全く出来ないので, 関数なんて覚えてないんです. 「確か, こういう関数あったよね」と曖昧な記憶を元に赤本 (『PHP4 徹底攻略』) を開く毎日. そんな毎日にもこれでおさらばです!

・・・と思ったが, 全ての関数を網羅しているわけではなく, 実に中途半端な印象. 「うぅん, 付けるならもう少ししっかりしたものがいいなあ」と少し残念になりました. まあ, 普段使う関数は押さえてあるようですので, 充分といえば充分なのですが.

肝心の中身は

さて, 肝心の中身です.

気に入ったのはサンプルコーディングが多い事. 初心者であればなおさらですが, 関数のリファレンスだけ見てもよく分からない事が多いのです. そういう時にこういったサンプルが掲載されていれば, 非常に分かりやすく, 試す時間が省けます (「試せよ!」と言われる方が多いのですが, 実務に追われるとそういう時間が惜しい事が多々……).

各章が機能別に分かれているのもとても助かります. これであれば, 特定の処理についての検索が非常にしやすく, そのうえサンプルコーディングが多い事も手伝って, 「使いこなしたい」と思っている私には非常にありがたい限りです.

原書は英文のようですが, 誤訳も見あたらず, 親切な日本語で記述してあります. 強いて言えば, 全体的に堅めの記述が多いのと, レイアウトをもう少し考えて欲しかった感はあります. 少しだけ読みづらい気がします.

難を言うと

気になるのが, やはり翻訳だけに海外でしか通用しそうにないものに関する記述があり, その記述に対して「日本では使えるのか?」というフォローがない点. ほんの僅かしかそのような記述はないのですが, これだけ出来がいい本なので, よけいに目立ちます. 残念です.

総評

予想以上によく出来た本で, 初心者〜中級者までうまく取り込める内容でしょう. これなら購入しても全く損はしないと思いました. 会社で一冊買ってもらいます. ただ, やっぱり赤本 (『PHP4 徹底攻略』)・青本 (『PHP4 徹底攻略〜実践編〜』) は必要だなぁ・・・と思います. それにこの『PHP プログラミング Black Book』まで揃えれば, PHP プログラミングをする上での書籍資料としては完璧だと思います.

最後に, 今回のレビューの機会を与えて下さった 株式会社インプレス様, 本書を執筆及び翻訳された皆様, ブックレビュー担当者の皆様, PHP に携わっている皆様に感謝の言葉を送ります. ありがとうございました.


Reviewed by 城戸 総史 (sou_sk@nifty.com) さん

「初心者にお薦めする次のステップへの1冊.」

Linux の使用歴
約 3 ヶ月 (Omoikane GNU/Linux, Redhat)
UNIX の使用歴
無し
PHP の使用歴
約 1 ヶ月
Linux Box の主な用途
web アプリケーション開発 (PHP),
web サーバー (Apache, Zope),
ファイルサーバー (Zope)
Linux 以外に利用している OS
Windows
Linux と Linux 以外の OS の使用頻度の比
40 : 60

概要

PHP の豊富な関数をテーマに取った初心者向けの内容です. 「いつ, どの関数を, どう使うのか」という関数のツボを, サンプルコードを通じて実際に試しながら学ぶことが出来ます.

長所

サンプルコードがシンプルで, 関数をひとつひとつ理解しながら丁寧に読み進める事が出来ます. サンプルコードの掲載数も豊富で, 初心者が自分が理解できる範囲のコードを繰り返し書くことで PHP に慣れ親しむ助けにもなります. 本書のテーマやサンプルコードは脱初心者を目指す人にちょうどよいでしょう.

私が手にした入門書は導入と基礎的な解説にページが割かれていたため, どうしても関数の説明が浅くなっていましたが, 本書を通して関数を効率的に学ぶ事で コードの読解力やプログラムの処理構造の組み立てがぐっと楽になりました.

短所

書籍全体で php.ini の設定が register_globals = On である事を前提に書かれています. レビュー執筆時点の最新版 (4.2.1) ではデフォルトで register_globals = Off になっているため, 一部の読者はサンプルコードを自分で読み替える必要があります. この点は翻訳時に加筆された 16 章「セキュリティ」でフォローしてありますが 初心者の中には「サンプルコードが動かない」と戸惑う方も少なくないのではないでしょうか. 動作確認環境には PHP4.0.6 と明記されていますが, その下に一言注釈があってもよかったと思います.

構成の都合上からか, 各章の前半と後半で重複する箇所があるなど冗長に思える部分もありました. 対象読者を「中級以上のユーザー」「HTML の基本を理解している事が望ましい」としているにもかかわらず, HTML の form 要素や post/get メソッドなど初歩的な解説にページを割くなど 難易度の統一にも疑問が残りました. 構成目的や対象読者がもっと明確になればさらに密度の濃い内容になったのではないでしょうか.

また, 正規表現にページが割り当てられていないことは残念に思います.

読みやすさ

翻訳が丁寧かつ自然で, 読みやすい本に仕上がっています. 訳書にありがちな「内容の理解の前に文章の理解に苦しむ」ような事は無く, 文章も見やすく, この点でストレスを感じる事は最後までありませんでした. 誤植が 2 カ所ありましたが, こちらも素早い対応をいただきました.

対象読者

ASP や Perl など既に他のスクリプト言語に経験があり, これから PHP を始めようとしている方にお薦めです. 実用的なサンプルコードを通じて素早い理解が得られると思います.

PHP をこれから学ぶ人が 2 冊目に読む本としてもお薦めです. 本書を通じて使用頻度の高い関数を効率よく押さえる事が出来ます. 本書は初心者にとって, 自分の書きたいスクリプトが書けるようになる一歩を踏み出す手助けになってくれることでしょう.

私の場合は本当に役立った章とあまり役に立たなかった章がはっきりと分かれました. 本書の購入を検討される方はまず本書を手に取って 興味のある章の内容をひとつひとつチェックしてみると良いと思います.

総評

私は PHP 歴 1 ヶ月に満たない初心者です. 文法は大体解る, 雑誌に載っているコードも大体読める, しかし独力では今ひとつどう書けばいいのか解らない時がある…. 本書を読み, そんな状態が救われました. 特に

を通して使用頻度の高い関数を押さえる事が出来た事は収穫でした. ASP, Perl で使っていたルーチンも「PHP ではこう書くのか」と納得ができ, 書きたい処理をどう書けばいいのか解らないケースが随分と減りました.

掲示板などの実用的なプログラムを例に取った記事や書籍も役に立つのですが, 基礎体力の無い初心者としては, 自分がきっちり理解し得る簡単なコードにたくさん触れたい, 自分の弱点を集中して補強したいと思う時があります. 本書が豊富に抱えている関数ひとつひとつに割り当てられた簡単なサンプルコードは 私にはかみ砕きやすい適当な大きさで美味しくいただく事ができました.

贅沢を言えば, 章立てと内容がさらに吟味されていればもっと有用な一冊になっていたのではないかと思います. 正規表現や PEAR など扱って欲しかった物はありますし, 7 章「フォーム処理」ももう少しアイデアのある実用的な内容であってもよいと思います.

昨今書店に行けば PHP の入門書を見つけるのに困る事はありませんが, 脱初級者〜中級者を押し上げようとする 1 冊はあまり知りませんでした. 本書ならその役も担えるのではないでしょうか. ASP や Perl などのスクリプト言語経験者の速習や, 入門書を読み終えたものの今ひとつ力不足を感じる初心者が次のステップに移るために お薦めしたい一冊です.


Reviewed by 富永勇人 (linux-rev@papara.net) さん

「実践的なテクニックをモノにすることができる一冊」

Linux の使用歴
3 年
UNIX の使用歴
3 年
Linux Box の主な用途
サーバ
Linux 以外に利用している OS
Windows2000
Linux と Linux 以外の OS の使用頻度の比
50:50

実践的なテクニックをモノにすることができる一冊

いままで PHP に関する本というと, インストールや関数に関する解説にページが割かれることが多かった. 本書は, 勿論そうした話題に触れながらも, ファイル操作といった基本的な話題から, オブジェクト, セッション管理, XML, そしてインターネットで利用する上で考慮が必要なセキュリティにまで言及した本である.

分かりやすい章立て

各章は, 「関数」「データベース」「メール」「オブジェクト」「セッション管理」「XML」「セキュリティ」などと PHP を使用する上で, 必要となるテーマがすぐ引けるようなタイトルで分けられている. さらに章毎に「解説」「すぐ解決」に分けられ, 前者を精読することでテーマ毎の体系的な知識を得ることができ, 後者ではサンプルプログラムで実際に手を動かしながら身につけたり, 実際に良く陥りがちなミスや効率的なコーディングの TIPS を学んだりすることができる. 具体的には, 関数の説明を読むだけではわからない落とし穴や, それに填らないようなコード例や, 関数のバックグラウンドにある考え方のピンポイント解説, 筆者の実際のコーディング・運用経験から想定される条件判定, 関数のリファレンスを引いているだけでは身につかないようなバックグラウンドの深い知識, ノウハウにまで触れており, 思考プロセスを身につける上でも役に立つ. 「すぐ解決」にはすでに PHP をバリバリ動かしている人でも役に立つような高度な内容にも言及している一方, 解説と重複する易しい内容もあった. 初心者向けの配慮なのだろうが, そういった重複はバッサリと削ってしまう割り切りの良さがあっても良かったと思う.

また, 折角 CD-ROM も同梱しているのだから, ソースコードも収録して欲しかった. スクリプトが断片的なため, 収録が難しいのはわかるのだが, 掲載されているサンプルスクリプトの誤植の為にそのままでは動かないことがあったので, 動作確認されたものがあった方が, 正確性も向上するからである.

最後に

本書は初心者が頭から読み下していくには, 少し難しいのではという印象を受けた. むしろ, 困ったときのリファレンス的な使い方や, 中級以上の者が日々機能拡張されている PHP をマッピングし直し, バックグラウンドの知識を深めるのに適すると感じた. 幾つか短所も挙げたが, それ以上に益するところの多い体験を提供してくれる本だという感想をもった. そして, それは実践的なコーディング・運用に即しているという事に尽きる. PHP はデフォルトのグローバル変数の扱い等バージョンによる仕様変更が激しく, また出版・翻訳のタイムラグがあるため最新の情報に即した内容というのは望めないが, 今まで書いていたものをこうしたら効率的に処理できる, こういったアプローチもあるといった, コーディング哲学とでもいった思考方法を身につけたり, 自分なりに考えるきっかけにしたりするにはうってつけであると思う.

誤植・訂正事項

P23 真ん中あたり
「上の例では、0から3までの数字〜」→「上の例では、1から3までの数字〜」
P71〜P72
途中でラップメーカーが変わっている
P163 サンプルソースコード中 (each のスペル, <option> まわり)
 while(list($k, $v) = eache($artist)) {
  form_html .= $v;
 }
    ↓
 while(list($k, $v) = each($artist)) {
  form_html .= "<option>$v</option>";
 }

Reviewed by 武藤康弘 (mco_laboratory@yahoo.co.jp) さん

原稿未着


[ ホーム | マップ | ニュース | 検索 | ドキュメント | リンク | プロジェクト ]
このサイトに関するご意見・ご要望は Webmasters までお願い致します.