September 01, 2007
本書は「一人前のWebシステムの開発者になりたい人が知っておかねばならない情報が幅広く書かれている一冊」かな。
なお、本エントリーは出版社の方から献本していただいた本の書評で、青学理工学部の情報学科の教科書といて作られた本です。一般に出版するにあたってどういうカスタマイズがなされたかはよくわかりませんが、C言語を書けるようになった学生が、オブジェクト指向の理解も含めてWebの開発ができるようになるための本というのがベースにあるそうです。
森北出版 (2007/07/20)
売り上げランキング: 87685
題材としてJava + MySQL + Eclipseを前提に書かれているので、PHPを使ってとりあえずプログラムが書ければうれしい、という人には向かない。何せレンタルサーバーでJavaが使えるところはないわけだが、その環境構築も含めてやる気がある人じゃないと無理だ。
(XAMPPという一発で環境を用意できる情報も載っているので、本書を読めば環境を作るのは難しい話じゃない)
しかし卒業して開発者になるにあたって、ベンチャーでLLをやるにせよ、SIer側の業務システム開発をやるにせよ、Javaを知っておくに超したことはない。
本書にも書いてあるが、Ruby on RailsやPHP(PHPはC言語のWebフレームワークみたいなもん)のような便利フレームワークは本来はその裏側を知っている人が楽をするために使うのが理想であって、プリミティブなところを全く知らないまま、例えばPHPのように一行でWeb上のHTMLソースを読み込めるような環境に慣れきってしまうのは本当は好ましくない。
ベンチャーに勤めているエンジニアの視点で言うと、中途入社も含めて、相応の社会人を迅速に集めて開発していく段階になると、そうも言ってられないので生産性の高い言語マンセーとなるのがプロジェクトリーダーサイドの理屈であるが、そういう意味で、まだまだ余裕のある学生向けであったり、もしくは、じっくり勉強したい人向けだと言える。
実は本書を読みながら、なかなか書評に至るまで難しいと思っていたのが、
・最初、大学の教科書じゃん、と思っていたこと。(あまり良い思い出がない)
・初級者向けのソフトカバーの本って、ダメな本多いよねという先入観。
・初級者向け本の中を読んで、僕が当たり前に理解してしまっているところを、正しくターゲット読者の視点で読み取れるか不安だった。
本書は、二番目の初級者向けの本を否定している。「10日で作るなんとか」という本は結局役に立たないのではないか?というのをテーマに掲げている。
そこの趣旨は理解した上で、この本の判断が微妙と思ったところ。
「大事なことは網羅されているが各項目の説明が薄い。幅広い内容を取り扱い、各項目の記述量は少ない。」
そこで、僕自身は文章に書いてあることは理解できてしまうため、「これって読み手は理解できるのかなぁ?」ということに、どう判断していいかわからず、悩んでいたのが書評が遅れた理由。
しかし、それをフォローするために、この本が充実しているのは参考文献の情報である。
つまり、たくさんの専門書の索引として、技術説明が記載されていると考えてみる。
その情報の幅は、CSS , XHTML、Java , MySQL 、オブジェクト指向などなど多岐にわたる。
オライリーはもちろん、「誰のためのデザイン?」や、ヤスヒサさんの本への引用もあったりする。
そう、Webはこんなにも幅広い技術や考え方で支えられてるのだな、ということがわかる。
非常に情報が濃縮され、まとまっている。
そんな本だ。
MVCモデルのメリットや、Eclipseを使う理由や、SQL文のあれこなどについては、こんな短くて良いのかなぁと思うところがあるので、そこは読み手が補完していく必要がある。
そのため本書の使い方としては、
・この本を読んで、Web開発に必要な全体像を把握する。そこからリンクする深い情報を参考文献に書いてある本を使って深めていく。
そこがいわゆる「教科書的」なのかな。
つまり、この本をポータルサイト的に使って勉強しろ!ってこと。
そう考えると僕は大学の頃は全然勉強してなかったなぁ。完全に読み流してるような気がする。本当は教科書の先にある本を読まなきゃいけなかったのね。それを学生時代に誰かに教わりたかった。
さて本書ですが、仕事でやってても知らないことが書いてあって(僕が無知なだけ)、密かに参考になったところもあるんですが、それはさておき気になったのが、
「DBのカラム設計でNULLはできるだけ使わないこと」
と、
「MySQLにコネクションプーリング」
の二点である。
前者のNULLに関しては、Webを調べるとNULL撲滅委員会というサイトが見つかる。
・・・うーん、NULLと0は違うと思うんだが、どうなんだろう。
NULL撲滅委員会を読むと、0で代用できるならそっちの方が良いよねって話なんだが。まぁそれをやる最大の理由があるとすれば、「インデックスが参照されない」かなぁ。
でも、インデックスを使いたいクエリーを発行したいシチュエーションで、0とNULLの区別が付かなくて良いのかなぁ・・・。とか思うので悩ましいのである。
あと、Javaと言えばコネクションプーリングであるが、ことMySQLに関しては、レアケースかもしれないが良い思い出がなくて、MySQL側のコネクションがたまに勝手に切れてしまって、エラーになってしまったりするのと、(これは別にPHPなどの都度接続でも失敗することがあるので、リトライの制御とかが面倒なので抽象化されたO/Rマッパーとかの複雑なフレームワークとMySQLはちょい面倒なことになる場合もある。)
PHPやPerlあたりの簡単にはコネクションプーリングが実現できない環境ではMySQLに限って言えば、都度接続しにいっても遅くないという話になってるので、MySQLの場合は、コネクションプーリングは使わくても良いんじゃないか?という印象。
PostgreSQLとかOracleの場合があるので、Javaの勉強でそうはいかないので、そういうこともあるよ的なニュアンスの記述があるとベターかなとは思った。
大事なのはコネクションプーリングを使わなくても大丈夫だよ、ということであり、往々にして現場では、スケーラビリティに対してコネクションプーリングありきで考えがちになってしまうので、そういうのは知っておいても良いんじゃないかなと。(いや、わかんない。僕が不幸すぎる経験をしているだけかも。誰かコメント求む)
本書が文字コードについては結構詳しくフォーカスしているので書いてしまうが、本書にはWindows上でXAMPPというApacheやPHPやMySQLを一発でインストールしてくれる便利な環境についての情報が掲載されていのだが、
Eclipseでの開発にはどうせバックグラウンドでTomcatを使うとして、是非、実行環境テストやMySQLの方は、Linuxなどにチャレンジして欲しい。
ちょっとイレギュラーだが、Mac OSXであればローカルに環境を作っても良いと思うが、いずれにせよWindowsとUnix系というのは、パス記述やWindows-31Jと呼ばれる文字セットに関してプラットフォームの違いを意識しなくてはいけなくなる。
こんなのは本職になってから考えても良いと思うが、本書の場合は、そういうことを言いたくなるぐらい、プロにとっての当たり前のことを意識させてくれる一冊と言えるのかもしれない。