株式会社オライリー・ジャパン 様のご厚意により,
書籍 "Apache 拡張ガイド (上) サーバサイドプログラミング"および
"Apache 拡張ガイド (下) API リファレンス"を
ブックレビューコーナー にご献本いただきました.
この本のレビューをして頂くべく,
Linux Users ML
や本サイトにおいて公募を行い,
これにご希望頂いた方々より感想などをレビュー記事にまとめていただきました.
ここに, レビューアの方々から寄せられたレビュー記事を公開します. (原稿到着順)
株式会社オライリー・ジャパン 様および レビューアの皆様のご厚意に感謝いたします.
なお, 以下のレビューは初版を対象としています.
本書は Apache, C, Perl についてある程度の知識をもつことが前提とされている. 当然, これらに関する前提知識を持った上で読み進めることが必要である. Apache を実際に運用し, ある程度の経験をもっていないとこの本を活用するのは難しいと思われる. 逆に, Apache についての情報を他の本やソース自体から得ていれば, 本書には重複する情報は非常に少なく目的に即した情報の入手が可能である.
オライリーらしい本のつくりで, 全体を読み進めながら理解する構成になっている. 5 章で使われている例題に関しても, 大きすぎず小さすぎず知識を習得するに足る情報があると思われる. 実際に既に CGI 環境を構築し, そのノウハウが十分にある人なら 4,7 章を読むだけで十分 mod_perl への移行が可能だろう. Apache module を作成するにあたり当面必要になる Apache の仕組みに関しては, 3.2 に記載されている. この章の Apache の処理の進め方の図を中心に各章を読み進んでいけば, 体系的な理解ができる.
分冊になっている関係上, 下巻にリファレンス的情報が集中する構成になっている. この下巻がちょうどいい厚さで非常に扱いやすく, 全体的な知識と雰囲気を理解するための上巻と, 普段実際に使うための下巻という組み合わせとして活用することができると思われる.
リファレンスマニュアルとしての下巻は, 多少, 情報の検索がしづらいかも知れない. 付録のカードもさらに半分にすることが可能だと扱いやすいと思う. mod_perl に関しては十分な内容が手に入るが, 逆に C による ApacheModule についてのみ知りたいという人には余分な情報が多すぎるかもしれない.
Apache Module に関する初めての専門的な本であり, 待ちわびていた人も多いと思う. mod_perl に関する情報にしても, 今まで Apache のインストール本の末尾におまけ程度にしか記載されていなかったことを考えると, ついに本格的に利用するにたる情報が手に入るようになったかと思える. CGI の限界に悩んでいたり, Apache に欲しい機能がある人にはお勧めできる本で ある.
はじめに, 私自身, Webアプリケーション開発には従事してきたが mod_Perl を扱うのは初体験であることをお断りしておきたい.
Apache の Perl API である mod_perl を中心とした解説書である. mod_Perl は名前の通り Apache API を呼び出すことのできる Perl インタプリタである. CGI のように実行する際にプロセスを生成するオーバーヘッドを発生させず, 高負荷 Web サーバにおけるパフォーマンスが改善される. インタプリタ言語でありながら実行時の処理もかなり高速で, ある程度大きなシステムの運用にも十分に耐えられる. また, Apache API は Apache の相当な部分へのアクセスを提供しているので 動的なアクセス制御やメモリ管理など CGI では困難であった細かな処理が可能となる.
まえがきで断られているように, 本書は Perl プログラミングやサーバーサイドの Web プログラミング, Web サーバー (特に Apache) 運用の知識と経験を前提としている. また, 下巻に詳しく述べられている Apache の API を C 言語から呼び出せる C API については, C 言語の基本的な知識を必要とする. 日頃, 趣味であれ業務であれ Perl や C で CGI を書いているような人はすんなりと理解でき, 即実践できる良書である. 「Perl プログラミング」や「実用 Perl プログラミング」等の書籍の隣に置いておきたい.
上巻には mod_Perl とはなにか, インストール・設定, アーキテクチャ, 基本的なノウハウが順序よく書かれている. オライリーらしく短いサンプルコードが豊富に掲載されているので Tips をすぐに試してみることが出来る. サンプルコード内のコメントもすべて日本語化されており, 理解を助ける. 画像の取り扱いやナビゲーションバーの動的生成, データベースの扱い, セッション管理, エラー処理, 認証など Web アプリケーション開発者にとって最も興味のある実用的なトピックスを中心に 「痒いところに手の届く」構成がなされている. 各アーキテクチャの解説の部分では, もっと図を多用する事で分かりやすくなったであろう. サーバークライアント間のデータのやりとりなど, 図解が望まれる余地は大きい. データベースとの連携の解説が少ないのも残念だ. Webアプリケーションにとってデータベースとの連携は心臓部であり, 性能を大きく左右する. よりこまやかな解説が欲しい.
下巻は丁寧な PerlAPI や C API のリファレンスガイドに加え, 付録では CPAN や他のサードパーティーで入手可能な Apache モジュールの紹介がなされている. Apache モジュールの紹介はテーマ別に分けられ, 検索しやすいが, 説明があまりにも簡素なのが残念. 実際の利用に際して, これでは物足りない. Web の URI 等, 実践に際してもう一歩の踏み込みが欲しい. 上巻で一通りのスキルを身につけ, 慣れてきたら下巻を片手に, たまに上巻をめくりながらがりがりとコーディングしていく, という使い方が出来る. (私が, そのような使い方をしている)
英語サイトであるが, 本書と連携した Web http://www.modperl.com/が用意されており, サンプルコードのデモがその場で確認できる. その他にも本書に掲載されていない追加情報やダウンロード可能な資源が転がっているので, 読者は Web を積極的に活用することで理解が助けられる.
CGI のノウハウを拡張する形で 1 歩進化できる mod_Perl の詳しい解説である本書は, サーバーサイド Web アプリケーション開発者にとって, 興味を持って読むに値する書であると思う. 上下巻に分割する位置も適切で上記のような使い分けが出来るようによく考えられている. ただし, 和訳が機械的で少々退屈である点が残念である.
最後に, この機会を与えていただいた,オライリー出版社, および www.linux.or.jp Webmasters ブックレビュー担当の方々に感謝いたします.
今年から WEB プログラミングをすることになり, 簡単な Perl プログラムを組んでいたのですが, 大規模のデータベース等を動かそうとする必要があり, どうすればいいのか模索していたところでした. そこで mod_perl が存在することを WEB 上で知り, 興味はあったもののどこから手をつけていいものかと考えていたときに, 本書のレビューの機会に恵まれました.
この書籍の対象は, 実際に自分でプログラムを組んだことのある人で HTML の知識があるというのが前提だと思います. そういった経験, 知識なしに本書を手にしても, 時間が無意味に過ぎていくことになりそうです. ただ, Perl プログラマーにとっては, Perl だけでは難しかったアプリケーションの開発や Apache と連動したプログラミングへの取り掛かりとなり, 新しい世界が開けることになると思います.
私が WEB 上で mod_perl の情報を見て, 実際にインストールしてみたのですが, しっかりと Apache の設定をおかしくしてしまい, Apache の再インストールという憂き目に遭ってしまいました. 今回は, 再チャレンジということで本書の通りインストールしてみると, あっさりと成功してしまい, 拍子抜けしてしまいました. (入れたマシンも違いますが) ここまでが導入部分で, ここから先は実際のプログラミングに入っていくことになります.
第 3 章以降では, プログラミング技法の説明が続くことになります. 現在, 私もプログラムを組んでいる最中であり, WEB プログラムに関して, 自分が当たり前だと思っていたこと, 疑問に思っていたことに対してひとつの方法が示されており, 大きな参考になりました. 例題もふんだんに盛り込まれており, ソースコードを見ることで, 実際のプログラミングへの応用が理解しやすい形式で示されているところにも好感が持てました.
下巻はリファレンスとなっており, 実際の現場では参照しながら利用することになると思います. 今回, 私はこちらの方はあまり利用しなかったのですが, 索引を使えば必要な情報にはすぐにアクセスできるようになっています.
今回のレビューは, たまたま私の現在の状況にマッチしたものであったため, 本書を読み進めていくモティベーションが高かったように思いますが, 通常の Linux ユーザーが手にするには敷居が高いように思います. 本書のプログラミング技法が必要とされるところも限られていると思いますので, そのあたりのニーズをきっちりと見極めて購読されることをお勧めします.
日本の Linux 情報のレビュー記事を書かせて頂くのも今回で 4 回目となった. Linux の基礎から始まり, インストール, メールサーバの運用管理, そして今回はサーバサイドプログラミングである. 現在私は Linux 上で PHP を使用してのサーバサイドプログラミングの経験はあるが, mod_perl を使用した Apache 拡張プログラムは未経験である. 本の題名を見たとたん "ぴぴぴぴ" と直感で思った.
「これを使えば処理は相当速くなるのではないだろうか?」読み進む内, 私の直感は間違い無かった事が分かった.
通常, perl スクリプトをリクエストの度に起動していると, どうしてもその部分がボトルネックとなってしまい, パフォーマンス上で良い結果を得ることが出来ないことは周知の事実では無いだろうか. 現在そういった外部プログラムを起動しない代替プロトコルとして Java サーブレット, ASP, FastCGI 等があるが, これらを使用する事を採用した場合, 折角今まで蓄積した perlCGI スクリプト資源を捨て去り, 新しく開発を行わなくてはならなくなる. それは時間も工数もかかる事であり, 非常に勿体ない事であると思う.
そう言った問題点を踏まえて登場するのが mod_perl である. 何とこれを使用すると速度は通常の perl スクリプトに比べて数倍となり, 静的な HTML を表示する程度のスループットが得られるのだと言う. 本を読み進む内に, 何だか騙されているような気分になってきた. では実際に mod_perl に触って見ようと思う.
使用した OS TurboLinux 6.1 Server
mod_perl のインストールに関しては, 本文や巻末付録に説明が掲載されているが, 正直 "最寄りの CPAN サイトに FTP 接続してファイルをダウンロードすればよい" では一体どこを指しているのかさっぱり分からない. "この位知っていて当たり前" ではなく, もう少し実例を込めて書いて頂けたらと思う. あちこち探し回った結果,
http://cpan.valueclick.com/modules/by-module/Apache/
にて mod_perl のモジュールを発見, 最新バージョン mod_perl-1.24.tar.gz をダウンロードしインストールした. ワーニングが出て戸惑う部分もあったが, パーミッションを合わせ,
Configure mod_perl with ../apache_1.3.12/src ? [y] y Shall I build httpd in ../apache_1.3.12/src for you? [y] y
と回答すると無事インストールは完了した. インストールに際して, 参考にしたサイトは以下に列挙致するが, 特に難しい物では無く, web 検索をしなくても, 様々なパターンが書籍の方に掲載されている為, おそらく問題は無い物と思われる.
そして最後に apache を作り直し, プログラム開発前の準備は完了.
とりあえず掲載されていたプログラム, Hello World から動かしてみましたが, まだあまり mod_perl のありがたさは良く分かりません. 今後, もう少し自分なりに試験を行ってみてから実際の業務に応用出来ればと思います. 処理速度が早くなるのはもの凄く大切な事であるし, こういった技術は今後最新の Web 開発を行っていく Webmaster などにとっては必須な物となってくるでしょう. しかしこの書籍は内容的にも中級から上級の物であり, 素人又は趣味で行うには余りにも敷居が高い内容であるし, 値段的にも決して安い物ではありません (4800 円). しかし, 勉強してみよう, 自分自身レベルアップしてみようと思う人にはお勧めです. 本屋さんで見かけたら是非手にとってみて下さい.
上巻から続く. 下巻は API リファレンスである. API とは一般的に "機能をカプセル的に皆に使いやすいようにしたもの" となるだろうか. Windows API などは VisualC++, VisualBasic ユーザーなどには有名であるが, Apache の API とは具体的にどういったものであるのだろうか.
下巻においては, 全てのクラスとメソッドについて説明されているが, より使用したい API を簡単に見つける為にメソッドは 8 種類のカテゴリに分けられ説明されている. 具体的には, もし私がメール処理関連の API を使用したいと思った場合にはサーバ応答メソッドの項を参考にすれば良く, エラーメッセージの処理関連の API を知りたければ, ロギングのメソッドの項を参考にすれば良いのである. 実際にその通りに本を検索して行くと, 手取り足取りといった詳細な例は載っていないものの, 非常に分かりやすい説明が掲載されていた.
他にも補助クラスがサーバの状態を参照・操作する為に掲載されている. が, 正直私が理解して読む事が出来たのはここまでで, それ以後 C API リファレンス 1, 2 等についてはあまり C を使用しての開発を行ったことが無いため, 申し訳無いが, 私の学習レベルでは良く分からなかった.
下巻には API についてのみで無く, 付録として HTML に Perl コードを埋め込んで使用する HTML::Embperl に付いても記載されている. 私は Embperl について全く知識が無かったのだが, 簡単に説明すると, Embperl はオフラインでも使用でき, mod_perl と Apache 配下で最大の効果を発揮するのだという. perl のコードを通常のテキストとして入力出来, コードも通常のテキストとして入力すれば良い. 又動的に表を作成する機能やプログラマーには一番嬉しい, デバッグ機能 (ログファイルが作成される)が搭載されている. 私が現在開発において PHP を愛用しているのは最後のデバッグ機能の為だが (PHP はブラウザ上にエラーが表示される) これはありがたい. 下巻には簡単な説明のみで, 後は英語のサイトを参照する事になるのだが, 今後 HTML::Embperl の書籍が出版されるのであれば是非読んでみたいと思う.
この本は上巻とは違い間違いなく "上級者" 向けの本であると言えます. 中級者の方は上巻を熟読した後に購入すると間違いが無いのでは無いかと思います. 今回の書籍の表紙はオジロワシ, オライリー社の書籍は毎回独特なイラストと白地のシンプルな装丁が特徴だが, 私にとってそれがどうしても "上級者向け" というイメージとなり, 購入の際, 二の足を踏んでしまう事があった. 今回レビュアーさせて頂いた本はいずれも訳本であるが, 長時間読んでいて, 言葉の違和感, 及び難しい言い回し等は殆ど感じず, 非常に読みやすい本でした. 新しい技術をどんどん吸収したいと言う人には敷居は高いですが, お勧めであるかもしれません. 私も上巻をもう少しゆっくりと勉強し, 下巻を活用していけたら良いと思いました.