/home/by-natures/dev*

データ界隈で働くエンジニアとしての技術的なメモと、たまに普通の日記。

【読了】基礎からのサーブレット/JSP 第3版

ゴールデンウィーク後半は友人と会ったり家にいたのですが、せっかくまとまった時間が出来たので少し勉強でもしようかということで、「基礎からのサーブレット/JSP(第3版)」(Amazonへ) を読みました。

この本は2年ほど前に出版されてからすぐ買ったのですが、学生のころは Java を勉強する必要性があまり無かったので、研究室で扱っていた OCamlScheme、あとは個人的な興味から Ruby の本を勉強していたので、パラパラとめくってからは本棚の片隅に眠ってしまっていました。

それから社会人になって Java での開発も始まったのですが、業務を追いかけながら「なんとなく」の理解で突き進んでしまったので、これを機に表題の本で知識を整理しました。「プログラマの種シリーズ」は何冊か読んでいるのですが、どれも説明が非常に丁寧なので気に入っています。(あと何故か、シリーズのどの本も誤字が異常に多いです。これに限っては第3版なのに。。)

本の内容

本の内容は、サーブレットJSPとは何か、GET や POST のリクエストメソッド、クッキーの扱い方に至るまで、Tomcat を用いて非常に丁寧に解説されています。最終章は HSQLDB を用いた簡単なアプリケーションの作成を通じて、DAO/DTO の知識も身につきます。

個人的には、リクエストスコープ/セッションスコープ/アプリケーションスコープなど、変数のスコープが丁寧に解説されていたのがよかったです。サーブレットが「シングルインスタンス・マルチスレッド」なので、同じサーブレットへのアクセスは同じインスタンスへのアクセスになる、というのも今まで知らなかったのですが、サーバ保守管理のアルバイトをしていた頃にお客さんのアプリケーションサーバを再起動することがたびたびあって、「サーバ再起動後はこの URL にアクセスして初期化しておく」というノウハウがあったのですが、この「初期化」の意味が具体的に分かりました。

余談ですが、シングルインスタンスであれば全てのフィールドを static にしても同じかな?と思って手元で試してみましたが、どうやらそのようです。少し妙な感じもしますが、サービスを提供するオブジェクトだと思えばよいのかもしれません。

Heroku で簡単に動かせる

サーブレットを勉強するにあたって心理的に壁を感じていたのが、環境構築が面倒そうだ、ということ。

実際は JDKEclipse を入れれば十分なんですが、入れた後も Hello World を出させるまでが一作業あるのと、手元だけで動いてもやる気に繋がらない…という僕の怠惰な性格。。しかしそんな我らには Heroku がある\(^o^)/ ということで、Heroku でさくっとサーブレットHello World を落としてきちゃいます。

(表題の本では、CD-ROM で一通りのアプリケーションが簡単にインストールできるようになっていますが、Heroku については触れられていませんので悪しからず…)

Hello World アプリケーションを落としてくれば、サーブレットの基本的な設定は全て完了しているので、既に "Hello World" が表示される状態がローカルに手に入ります。

手元で動かすために Jetty は必要ですが、Jetty で動くのが確認できたら "Commit" して "Push to Upstream" すれば、Heroku 上にデプロイされるので、誰もがアクセスできる状態になります。簡単に Heroku にデプロイできて楽しすぎるので勉強もはかどります。「本は買ったけど勉強が面倒…」なんて方は、Heroku の楽しさに乗っかって勉強してみてはいかがでしょうか。複数インスタンスやアドオンは有料ですが、シングルインスタンスであれば無料で利用できます。