Strings of Life

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

タグ:読書






「37シグナルズ」といえば、「Ruby On Rails」の開発者、David Heinemeier Hansson(DHH)が在籍していることで有名。代表的な製品は、Basecampというプロジェクト管理ツール。日本ではあまり知られていないけど、海外では人気がある。約300万人のユーザーがいて、100万ドル以上の利益を上げているとか。

では、300万ユーザーを抱えるサービスを、37シグナルズは何人で運営しているか? 答えは、16人。しかも、37シグナルズの運営するサービスは、Basecampだけではない。

37シグナルズのように、わずかな人数で大きなビジネスを行うにはどのような考え方が必要なのか? それを、本書から学ぶことができる。

「計画は予想にすぎない」など、ものを作る際の考え方はアジャイルっぽい(計画よりも、変化への対応を重視する)。

一方、「新興企業ではなく企業を始めよう(Start a business, not a startup)」など、ビジネスの基本的な部分では堅実な印象を受ける。Webサービスのスタートアップ的な「サービスのユーザーをどんどん増やすのが当初の目標。収益化の方法は後で考える」というモデルとは大きく異る。

コンパクトで完成度の高い製品を作ることで、無駄を排して高い利益を上げる、という37シグナルズのスタイルは、多くの企業が見習うことができる仕事の哲学だと思う。

主張がシンプルで、文章も切り詰められているので、とても読みやすい。


原書のKindle版も安いので、英語が読めるKindleユーザーはこちらの方がおすすめ。平易な英語なので英語の教材としても良い。

Rework
Jason Fried
Crown Business
2010-03-09


独習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に比べて図書館が利用しにくいからだ、と著者は述べます。

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


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

Software Design 2013年2月号の、エンジニアのための勉強法が興味深い内容だったのでメモ。以下は「超速読法」だが、他に「メモ」「教育」の方法についても触れている。

☆エンジニアのための超速読法
(1) 読む目的を明確にする
(2) 目次を見て、どこに何が書かれているかを見極める
(3) 重要事項を書き留める
(4) 1項目終わったら、残り時間をチェック
    (a) まだ時間がある → (2)へ戻る
    (b) もう時間がない →おわり

以上の工程を、制限時間を決めて行う。読書時間の目安は15分〜1時間。

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の入門書を読んだけど、知識に不足を感じている人にはオススメ。

このページのトップヘ