Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

TECHNICAL MASTER はじめてのPHPプログラミング 基本編

ということで、またもや本を書きました。今回はid:clonedとの共著で、2008/10/24発売です。

TECHNICAL MASTERはじめてのPHPプログラミング基本編5.3対応

TECHNICAL MASTERはじめてのPHPプログラミング基本編5.3対応

気分的には、「ついに」というよりも「ようやく」というか、ほっとしているところが大きいです。すでにmixiの日記でも触れましたが、謹呈本も届きました。

TECHNICAL MASTER はじめてのPHPプログラミング 基本編
TECHNICAL MASTER はじめてのPHPプログラミング 基本編 posted by (C)shimooka

目次はこんな感じです。

PHPの世界へようこそ
01-01 PHPの世界へようこそ [PHPって?]
01-02 PHPが動作する環境を準備しよう [PHPのインストールと設定]
01-03 PHPの動作確認 [PHPの動作確認]

プログラミングを始めよう
02-01 PHPプログラムのお約束ごと(1) [<?php ?>]
02-02 PHPプログラムのお約束ごと(2) [/**/ // エラー ]
02-03 変数 [変数]
02-04 定数 [定数]
02-05 型 [型]
02-06 配列 array [配列を使う(1)]
02-07 計算式を使う [計算 比較]
02-08 論理演算 文字列演算 [計算式を使う(2)]

プログラムの流れを変えよう
03-01 条件分岐 [if]
03-02 複雑なif文 [if else]
03-03 いろいろの条件分岐 [三項演算子とswitch文]
03-04 繰り返す(1) [while do-while]
03-05 繰り返す(2) [for foreach]

いろいろな関数を使ってみよう
04-01 関数とは [関数]
04-02 文字列操作 [文字列 print echo]
04-03 文字列操作(2) [strlen explode substr str_replace]
04-04 日本語文字列操作 [mb_strlen mb_substr mb_convert_kana]
04-05 パターンマッチング [ereg ereg_replace]
04-06 日付と時刻 [date mktime]
04-07 ファイル操作 [fopen fclose]
04-08 ファイルの読み書き [fread fgets feof]
04-09 独自の関数 [function]

クラスを使ってみよう
05-01 クラスとオブジェクト [クラス オブジェクト]
05-02 クラスを使う [class new extends]
05-03 インターフェースと例外 [interface try catch throw]
05-04 SimpleXML [SimpleXML]

効率よく開発するために
06-01 他のプログラムファイルを使う [PEAR ]
06-02 PEARライブラリ [PEARライブラリ]

PHPとWebアプリケーション
07-01 PHPとWebアプリケーション [PHPとApache]
07-02 HTMLとPHPスクリプト [HTMLとPHP]
07-03 クッキー [Cookie]
07-04 PHPによるアクセス認証 [認証]
07-05 PHPでのセッション管理 [セッション]
07-06 PHPとJSON [JSON]
07-07 Webアプリケーションのセキュリティ [セキュリティ]

データベース
08-01 データベース「SQLite」 [SQLite]
08-02 SQL(Structured Query Language) [SQL文]
08-03 PHPからのデータベース操作 [sqlite_open]
08-04 データベースのセキュリティ [SQLインジェクション]

アプリケーションを作ってみよう
09-01 ミニミニブログを作る [ミニミニブログ ]
09-02 ミニミニブログの機能概要 [機能概要]
09-03 ミニミニブログを作ってみよう [ディレクトリ]
09-04 メインページのHTMLを作成する [メインページHTML]
09-05 データベース・テーブルの作成とテストデータの登録 [データベース]
09-06 ミニミニブログ用テーブルについて [データテーブル]
09-07 友達一覧を作る [友達一覧]
09-08 投稿一覧を作る [投稿一覧]
09-09 投稿機能の実装 [投稿機能]
09-10 ページめくり機能を追加する [ページめくり機能]
09-11 ユーザー認証機能の追加 [ユーザー認証]
09-12 友達登録機能を追加する [友達登録機能]
09-13 セキュリティ対策 [セキュリティ]
09-14 リファクタリングする [リファクタリング]

きっかけは「まえがき」に書いていますが、例の「中級って何?」なネタです。

まえがき
まえがき posted by (C)shimooka

「書けるようになりましたー」な人ばっかりといわれるPHPですが、実際にそこで満足してしまって、成長が止まっちゃう(止めちゃう)人が多いんじゃなかろうかという気がしてます。
で、そこから次のステップに行くためには、Webアプリケーションのベースとなった技術や周りにある技術はもちろんのこと、中規模のコードを書く際にどういったやり方をしていくのかとか、プログラミング以外の物事を知る必要がありますが、入門書の段階からそういうものがあるということを知る、もしくはその中身をイメージだけでも良いから知っておく(知らせる/知らしめる)方が良いと思い、それらをできるだけ書いたつもり(コラムですが)です。

コラム
コラム posted by (C)shimooka

「中級ネタ」当時から書籍で何かできないかと考えてましたが、ちょうど執筆の話をいただいたので、今までの「PHP簡単ですよー」「PHP楽ですよー」ではないPHP入門書にしようといろいろとやってみました。



まず、この入門書。序盤は「コマンドプロンプト命」です。最初の環境構築時にApacheをインストールさせません。

コマンドプロンプト命
コマンドプロンプト命 posted by (C)shimooka

Webアプリケーションを作成するのは第7章から。終わりから3つ目の章です。

Web関連は第7章から
Web関連は第7章から posted by (C)shimooka

「分からんうちからWebで動かすなお前ら」という雰囲気を初っ端から醸し出すという、今までのPHP入門書で見たことない展開に仕上がってます。


セキュリティについては、XSSSQLインジェクションの基本的な考え方に触れてます。あ。使ってるデータベースはSQLite2(PHP5.2にバンドルされてるやつ)です。

Webアプリのセキュリティについて
Webアプリのセキュリティについて posted by (C)shimooka

データベースのセキュリティについて
データベースのセキュリティについて posted by (C)shimooka


あと、入門書の巻末にありがちな関数一覧のようなものはありません。代わりに、サンプルコードと一緒にPHPマニュアルを展開させるようにしています。

PHPマニュアルも展開させる
PHPマニュアルも展開させる posted by (C)shimooka

tar.gz形式なので、XP標準のアーカイバじゃダメなので、別途+Lhacaデラックス版をインストールして展開させてます。また、「使うときは最新を使ってね」と釘を刺してます。

最終章はおさらいとして「twitterもどき」なWebアプリケーションを作ります。

twitterもどきを作ります
twitterもどきを作ります posted by (C)shimooka

完成後にリファクタリングして、適宜ファイルを分轄させていますが、一応MVC風になってます。


そうそう。
書籍のタイトルは「PHP5.3対応」とありますが、使用する環境や基本的な動作確認はPHP5.2.6です。また、PHP5.3.0α2でも一通り動作確認してありますが、一点だけPHP5.3.0α2のDateTime#setTimeが変? - Do You PHP はてなの件で動作が違う部分があります。



こんな感じの若干変わった入門書ですが、「入門書の段階で中級者への布石をしておく」という当初の目的はある程度達成できたのかな、と思っています。


本屋さんでお手にとっていただけると幸いです:-)


あと、id:clonedお疲れ様でした!打ち上げやりましょ、打ち上げ!

追記(2009/04/15 01:30)

正誤表は以下のURLです。