Strings of Life

PHP/Phalcon/MySQL/JavaScript/RegExp/Ruby/Perl/ActionScript

タグ:書評

独習PHP 第2版
独習PHP 第2版

PHP5は、本格的なオブジェクト指向の構文を備えたプログラミング言語です。しかし、PHPの書籍には、オブジェクト指向を初歩から解説したものが少ない。

よくわかるPHPの教科書』『初めてのPHP5 増補改訂版』等の入門書では、「オブジェクト指向というものが存在する」という程度で終わり。一方、『プロになるための PHPプログラミング入門』や『パーフェクトPHP』のような中級レベルの書籍では、オブジェクト指向については理解しているのを前提に話が進んだりします。

(『パーフェクトPHP』には「PHPのオブジェクト指向構文はこうなっている」という解説は載っていますが、オブジェクト指向を初歩から学べるわけではありません)

私の知る限り、(1)PHP5.3(名前空間等)に対応 (2)オブジェクト指向を基礎から解説している という条件を満たす和書は本書だけです。初歩的なオブジェクト指向の解説は『やさしいPHP 第2版』にも載っていますが、インターフェースやマジックメソッドまで載っているのは『独習PHP 第2版』だけ。


そういうオンリーワンな価値を持つ書籍なのですが、いくつかイケてない部分もあります。

(1) Windows環境を前提とした記述

Linux向けの解説も併記されています。が、PHPでの開発ならLinuxを前提とすべきでしょう。VirtualBox等を使えば、Linux環境の構築はさほど難しくありません。

(2) サンプルが退屈

チュートリアル形式の、アプリを作る過程で学ぶ本ではなく、構文単位で小さなサンプルを動かして学ぶ形式です。小さなサンプルがダメってことはないのですが、さすがに500ページもあるとダレます。

(3) ベストプラクティスから外れていることがある

例えば、クラスのオートローダーは本書では__autoload()で実装していますが、spl_autoload系の関数の方が高機能です。もっとも、明らかなバッドプラクティス(例えば、文字列連結によるSQL組み立て)はないと思います。

(4) 若干古い

2010年4月に出た本なので。とはいえ、5.3に対応しているので、致命的に古い部分はないと思います。


オブジェクト指向を初歩から学びたいPHPerにはオススメです。オブジェクト指向の章だけ(第7章と第10章)読むとか、目次を見て知らないところだけ読んでいく、といった読み方でも良いと思います。

アンビエント・ファインダビリティ ―ウェブ、検索、そしてコミュニケーションをめぐる旅
アンビエント・ファインダビリティ ―ウェブ、検索、そしてコミュニケーションをめぐる旅


本書『アンビエント・ファインダビリティ』は、「情報設計の入門の入門」です。UI(ユーザーインターフェース)の重要性は近年叫ばれていますが、IA(Infomation Architecture 情報設計)はデザイナーレベルでは軽視されている印象を受けます。

しかし、「ボタンを押しやすい形にする」の前にまず、「どのページヘのリンクをボタン化するのか」という「情報設計」が必要になるのです。さらに、Yahoo! Japanのような巨大なポータルサイトであれば、サービスごとの階層構造の整理等、複雑で厄介な「情報設計」が必要になります。


本書では、(主にWeb上の)「探索」という行動を軸に、様々な考察を繰り広げていきます。情報を探しやすくしておくことに、どんなメリットがあるのか? 逆に、情報を探しにくいことのデメリットとは? といった出発点から、「どのような情報が探しやすく、どのような情報が探しにくいのか」といった点まで掘り下げていきます。

著者が述べる情報設計の大原則。それは、

「見つけられないものは、無いのと同じ」

さらに、「利用しにくいものは、利用できないのと同じ」。情報の質でWebを凌駕する図書館が、Webほどに利用されないのは、Webに比べて図書館が利用しにくいからだ、と著者は述べます。

優れたものを多くの人に使ってほしいなら、優れたものを作るだけでは、足りない。見つけてもらう工夫をしなければ、存在しないのと同じになってしまう。


本書は、技術書というよりは思想書。より正確にいうなら、技術をテーマとした思想書です。技術書ではないので、「読んですぐ役に立つ」という本ではありま せん。ただ、本書で扱っているテーマについての問題意識は身につきますから、長期的に見て、情報設計に気を使うようになる等の「お役立ち」はあるでしょう。

あけましておめでとうございます。2012年に読んだ技術書のまとめ兼、2013年の抱負です。


☆HTML/CSS

HTML/XHTML&スタイルシートレッスンブック―ステップバイステップ形式でマスターできる
HTML/XHTML&スタイルシートレッスンブック

2月に読了。XHTML1.0を使用したマークアップの入門書。CSS2も同時に習得できます。最初からHTML5を学べる入門書も出てきていますが、XHTML1.0のマークアップはHTML5を書く上で基礎となるものです。本書が、HTMLマークアップの優れた入門書である点は現在でも変わりありません。オススメ。


HTML5+CSS3で作る  魅せるiPhoneサイト  iPhone/iPad/iPod touch対応
HTML5+CSS3で作る 魅せるiPhoneサイト

3月に読了。iOSデバイスに対応したサイト構築方法が学べます。「iPhoneサイト」であって「スマホサイト」ではないので、Android対応に関しては一切触れてません。


2013年は、HTMLに関しては「これをやりたい」ってあんまり無いんですよねえ。CSSに関しては、SCSS/LESSあたりには興味があります(やるとは言ってないw)。


☆JavaScript/jQuery

マンガでわかるJavaScript
マンガでわかるJavaScript

3月に読了。11月に再読。3月時点では分からないところは飛ばして読みました。11月時点では、JavaScriptのオブジェクト指向の理解が進みました。漫画はゆるくて面白いものの、サンプルコードが退屈なのが弱点。Webサイトマンガで分かるJavaScriptプログラミング講座の書籍版です。


Web制作の現場で使う jQueryデザイン入門 (WEB PROFESSIONAL)
Web制作の現場で使う jQueryデザイン入門

4月に読了。実践的なサンプルコードが充実しているうえ、商用利用可! 職場に1冊jQuery本を置いとくならコレ。基礎編は入門に適した内容になっているものの、実践編はプログラミング初心者にはツラい(正規表現が登場したりする)。jQuery学習書としてはWebデザイナーのための jQuery入門の方がオススメ。


jQuery ポケットリファレンス (POCKET REFERENCE)
jQuery ポケットリファレンス

調べ物用。jQuery1.4対応。公式リファレンスを見ても分からない、って時に、本書を読んだら解決したりする。


Head First JavaScript ―頭とからだで覚えるJavaScriptの基本
Head First JavaScript ―頭とからだで覚えるJavaScriptの基本

11月に読了。本の構成が初心者に優しくないうえ、邦訳が雑。非推奨。


JavaScriptテクニックバイブル ~効率的な開発に役立つ150の技
JavaScriptテクニックバイブル ~効率的な開発に役立つ150の技

若手IT勉強会のため購入。マニアックなネタが多いので、中級者以上向け。


他に、JavaScript本格入門も買いましたが、未読。JavaScriptはしっかりやりたいなと思いつつも、いまいちやれてない。仕事で全然使ってないのが一因ですね。今年、どの程度やるかも、仕事次第。


☆PHP

PHP公式資格教科書 PHP5技術者認定初級試験対応 (EXPERT EXPASS)
PHP公式資格教科書 PHP5技術者認定初級試験対応

半分ほど読んで積ん読。環境構築は載ってないので、初心者向けではありません。非常に易しい内容と、妙にマニアックな内容(ビット演算とか)が混在しています。資格に関しては、受験料1万2千円と聞いて取るのをやめました。


よくわかるPHPの教科書
よくわかるPHPの教科書

4月に読了。プログラミング初心者でもOK。読みやすくて分かりやすいのですが、ある程度学習が進んでから読み返すと粗の見えてくる本でもあります。

代替となる入門書としては、プリペアードステートメントを使ってて感心したいきなりはじめるPHP(ただし本のレイアウトに難あり)や、「PHPの会社」アシアルのイラストでよくわかるPHPあたりが良いかな、と。

いずれも200ページ前後で、300ページある『よくわかるPHPの教科書』よりも情報量は少ないです。プログラミング未経験者のPHP入門は、「これ1冊でOK」な500ページ以上あるような入門書にいきなり取り組むより、薄い入門書を1冊読んでプログラミングの感じをつかむ → 充実した入門書を1冊読んで知識を本格化する という流れの方が挫折しにくいと思います。

※「充実した」の基準:MySQLは必須、オブジェクト指向まで載っているとbetter


Webサイト制作者のための PHP入門講座
Webサイト制作者のための PHP入門講座

8割ほど読んだところで積ん読。残りはCodeIgniterが必要になったら読む予定。Hello Worldからフレームワークまで一気に駆け抜ける。PHPのコードは、セキュリティにもしっかり気を配っていて好印象です。MySQLを全く扱っていないのが弱点で、オススメには一歩足りず。


Head First PHP & MySQL ―頭とからだで覚えるWebアプリケーション開発の基本
Head First PHP & MySQL ―頭とからだで覚えるWebアプリケーション開発の基本

11月に読了。PHPとMySQLの基礎を固める本。オブジェクト指向が抜けているのは残念だが、HTTP通信の話やDB関係は充実している。2008年の本。MySQLの設定等、現在では通用しない部分もあるので、オススメには一歩足りない。


PHP 逆引きレシピ (PROGRAMMER’S RECiPE)
PHP 逆引きレシピ

調べ物用。「こういう機能はどう作ればいいんだろう」って時に、目的から探せるので便利。オススメ。


パーフェクトPHP (PERFECT SERIES 3)
パーフェクトPHP

現在読書中。実務者向けの本。PHPの基礎も載ってますが、言語仕様のつまづきやすいポイントや、PHPのオブジェクト指向の構文等、他の言語でバリバリ書いてきた人向け。PHP実務者必読! と言いたいくらい素晴らしい内容。オススメ。

ただし、PHPでプログラミングを学んできて、オブジェクト指向は使うほうは出来るけど、クラスの設計とかはちょっと……という私のような人は苦労すると思います。


独習PHP 第2版
独習PHP 第2版

現在読書中。良くも悪くも教科書的。オブジェクト指向プログラミングを初歩からきっちり解説してあるPHPの入門書は少ないので、本書は貴重な存在。難点は、(1) Windows環境を前提とした解説(環境構築はLinux向けも載っているが、本文のコードはWindows環境) (2) 文章やサンプルコードが退屈 の2点。


PHPに関しては、パーフェクトPHPまで読み終えたら一段落つくかな、という印象です。フレームワークに関してはCake PHPを学習していこうと思います。


☆MySQL

基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )
基礎からのMySQL 改訂版

10月に読了。MySQLの解説は分かりやすく、充実している。PHPも載っているのでMySQLを利用したいPHPerには最適。HTMLも載ってるが、10年以上前のスタイルなので真似してはいけない。


SQLは、CRUD文を一応書けるよ、という程度で、セキュリティやスケーラビリティ、MySQLのチューニング等、課題が山積。2013年に力を入れたい分野の一つ。


☆Ruby

たのしい開発 スタートアップRuby
たのしい開発 スタートアップRuby

Rubyのカルチャーに触れる本。Ruby入門者の1冊目にオススメ。


たのしいRuby 第3版
たのしいRuby 第3版

しょっぱなから「メソッド」「オブジェクト」といった用語が説明なしに出てくる等、初歩から載ってる割に初心者向けの配慮が不足している。Rubyの構文の気持ちよさを体験することができたのは良かった。


Rubyに関しては、Railsやりたいなあと思いつつやれずに終わった2012年でした。2013年はRailsやります。


☆Perl

新版Perl言語プログラミングレッスン入門編
新版Perl言語プログラミングレッスン入門編

私にとって、本書は「Perl入門」というより「正規表現入門」です。Perlの構文は今ではすっかり忘れてしまいましたが、本書で学んだ正規表現は毎日のように使ってます。解説が非常に丁寧なので、Perl入門者のみならず、プログラミング初心者にもオススメします。


Perlに関しては、『Perl言語プログラミングレッスン』を再読して、積ん読になっている初めてのPerl 第6版も読んで、手元で動かすスクリプトはPerlで組めるようになりたいな、と思ってます(現在はPHPで組んでます)。


☆ActionScript

Essential ActionScript 3.0
Essential ActionScript 3.0

現在読書中。私は、オブジェクト指向プログラミングの基礎を本書で学びました。基礎からの丁寧な解説と、実際に動く本格的なアプリケーションの作成を並行して行う。私の好みにドンピシャの1冊。ただし、分量が非常に多い(邦訳紙版は900ページ超)。


ActionScriptは「JavaScriptの皮を被ったJava」です。言語も環境もよくできてると思うのだけど、世間的には衰退するという予想が多いんですよね。個人的には、Angry BirdsのようなカジュアルゲームをPC/スマートフォン両対応で出す際には、Flashが現在の最適解、と思ってます。とはいえ、私はFlash制作者になりたいわけではなく、ActionScriptは趣味です。


☆新年の抱負

やりたいことの優先順位をつけると、

SQL(MySQL) > Ruby(Rails) > JavaScript > PHP > その他

って感じですね。SQLは仕事にも関係するし、やってて楽しい分野でもあるので、最重視。Rubyは新しい世界を知るため。JavaScriptは、覇権言語になりそうなのでやっとこうかなと。PHPはライスワーク。

その他としては、正規表現(日常使いの便利ツール)、Perl(YAPCを楽しむため)、Java(オブジェクト指向を学ぶため)、C(プログラマーの一般教養)あたりをやりたいな、と。


また、特定の言語に限らないトピックとしては、自動テストの書き方、走らせ方。現在は、仕事でも(!)、プライベートでも、テストを全く書いてないので。gitに関しても、一度学びの機会を作りたい。

あと、エディタ。PHPはPhpStormで決定だけど、それ以外の言語をどのエディタで書くか。vimはサーバで設定をいじくる時に使うエディタとしては十分だけど、モードが面倒なのでメインとして使うには不安を感じる。一方、emacsはデフォルトのキーバインドがイケてないのと、カスタマイズの敷居の高さが難点。どちらかに決める突破口があれば良いのだけど。

今年もよろしくお願いします。

Head First PHP & MySQL ―頭とからだで覚えるWebアプリケーション開発の基本
Head First PHP & MySQL ―頭とからだで覚えるWebアプリケーション開発の基本


Head FirstシリーズのPHP&MySQL版。日本語版で、本文600ページ弱。原著の第11章「Drawing Dynamic Graphics: Visualizing Your Data... and More!」は収録されていない。

PHPは初心者でも学びやすい言語といわれることがあるが、実際には覚えるべきことは多い。データベース(PHPを使う場合、データベースはMySQLであることが多い)の知識はしっかり身につける必要があるし、HTTP通信の知識も必要。

ただし、これは他のサーバーサイド言語でも同様。PHPは、HTMLに埋め込んで使えるので、サーバーサイドのWebアプリケーション開発言語としては敷居が低い。そこが、多くのWebアプリケーションがPHPで開発される理由だろう。

本書にはオブジェクト指向は入ってないし、セキュリティ対策もまだ足りていない部分がある。また、実務ではLinuxサーバーにリモートでログインして操作することが多いので、Unixの知識も必要。。。といった具合に、不足している部分はあるのだが、「HTMLの知識はあるが、PHP及びプログラミングの知識はゼロ」な入門者に向けて書かれた本としては、かなり充実した内容になっている。本書を読み通せばサーバーサイド開発者の入り口には立てるはず。


本の構成は妥当だし、サンプルコードも「無理やり」感があまりない。また、原著のおかしな部分にツッコミを入れたり、登場人物の名前や文章を「超訳」したりと、翻訳者の頑張りとセンスが光っている。

唯一難点なのは、出版年の古さ。本書は2008年に出た本だが、MySQLはバージョン5.1以降で文字コードの設定方法が変わっている。現在の最新版はMySQL5.5なので、本書の設定方法では動かない。MySQL5.5に対応した文字コード設定に関しては、以前書いた記事があるので参考までに。

あと、日本語版のサンプルコード、私の環境(Mac OS X/Ubuntu)では文字化けやら改行コードやらで大変なことなっていた。英語版の方は問題なかった。


本書で初めてプログラミングを学ぶ、という人にはオススメしづらい。PHPの入門書を読んだけど、知識に不足を感じている人にはオススメ。

Head First JavaScript ―頭とからだで覚えるJavaScriptの基本
Head First JavaScript ―頭とからだで覚えるJavaScriptの基本


独創的かつ親しみやすい見た目と、それとは裏腹に分量が豊富で本格的な内容の入門書シリーズ『Head First』のJavaScript版です。私がプログラミングを覚える際、最初に接した本でもあります(昔、BASICを触ったことはありますが、もはや記憶の彼方…)。

本書を初めて読んだ際に感じたのは、「説明はわかるが、書けるようになった実感が湧かない」というものでした。結局、配列あたりでよくわからなくなって、ループあたりで脱落、その後は本棚でほこりを被っている、という状態でした。

私はのちにWebエンジニアとして職を得て、PHPをはじめ、JavaScript(というかほとんどjQuery)もそれなりに書くようになりました。そんな現在の私から見ても、本書はやっぱりとっつきにくい。説明は読めるのだけど、読んでコードが書けるようになる感じではない。合わなかった理由は、おそらく次の2点。

1.説明が飛び飛び。「オブジェクト」や「メソッド」といった言葉は序盤から出てくるが、それらの具体的な内容が分かるのは、全体の3分の2を過ぎたあたり。それまでずっとモヤモヤを抱えることになる。

2.説明の量に対して手を動かす量が少ない。


JavaScriptのprototypeベースのオブジェクト指向についてはある程度分かったので、それは収穫。だけど、DOM操作のような「手で覚える」タイプのプログラムはさっぱり書ける気がしない(jQueryを経験した身からすると、DOMを直でいじるのはダルすぎる、という理由もある)。

結局、Head First JavaScriptは私には合わなかった、というのが結論。なお、Head Firstシリーズ全般が合わないわけではない。Head First SQLなどはお気に入り。


一点指摘しておきたいのが、本書の翻訳の劣悪さ。たぶん、私が今までに読んだ本の中でワースト。私の手元にあるのは初版ではなく3刷だが、いたるところに誤りがある。誤字や誤植は可愛いもので、誤訳も散見される(例:「専門的な」の意味で使われているtechnicalを「技術的な」と誤訳)。何より酷いのは、「未訳」。日本語化されていない生の英語が、そのまま残っている箇所がある。具体的には、p.266の冒頭「It seemsJavaScriptは〜ようです。」という部分。こんな翻訳、見たことない。

この分量の本を訳すのが、大変な割に見返りの少ない仕事であるのはわかるけど、少なくないお金をとる製品なのだから、最低限の品質管理はしてほしい。

このページのトップヘ