初心者向けjavaとAjaxの本


暇なので今月からあるベンチャー企業インターンしにいってます。そこでSI見習いみたいなことを取り敢えずしているんですけど、何せ「javaとか知らんし」という状態なので今月はずっと家で基礎練してました。
この一ヶ月でjavaの基本から始めて、とりあえずの最終産物として社内のデータベースを検索するものを作りました。Ajaxって言いたかったので、googleみたいに検索候補を自動的にテキストボックス下に生成するようなものにしました。右の画面みたいの。実際に動くと楽しいもんでした。バックグラウンドで何が起こっているのかを知るのが目標なのでフレームワークとかライブラリは極力使わないようにしました。データベースからの検索をjavaでやってブラウザ側をjavascriptで作りました。
んで、読んだ本などをメモっておきます。僕と同じ初心者の方が告ぎ何勉強すればいいんだ、ってときのヒントになればなー、という淡い期待にかけて。

java

明解Java 入門編
まずはjavaについて。明解Java 入門編を読みました。C++をかじったことがあったからか、これは結構サラサラ読めたんですけど、参照が渡されるんだなーとかそんなことを思いながらやってました。パッケージとか、ふーんって感じ。まぁそのウチ使うようになったら意味が分かるだろってノリで。
増補改訂版Java言語で学ぶデザインパターン入門
javaに慣れるため&たぶん後でコード読んだりするのに必要ということでデザインパターンを学びました。増補改訂版Java言語で学ぶデザインパターン入門をタラタラやってたらjavaにまぁまぁ慣れた感じに。ほぼ全部手打ちするのは疲れたけど、血肉になったなーという感じ。オブジェクト指向については他にオブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―を読んだり、昔ちょっとかじったC++のお陰で結構親しみやすかったかなー。GUIとかは怪しいけど放置。
オブジェクト指向における再利用のためのデザインパターン
これの他にオブジェクト指向における再利用のためのデザインパターンも読んだんですけど、重かったなぁ。1、2章のデザインパターン概論および適用例がサラサラ読めたので基礎は出来てそうだな、と確認。3章以降のカタログはサクッと流した感じ。これは高いし、最初は読まなくてもいいかもしんない。
javaの基礎についてはこんな感じ。

JSPサーブレット

えーと、javaでHTMLを書くって感じのもの。動的なHTMLがjavaで作れるから楽。
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
まず最初に読んだのがJava+MySQL+Tomcatで始めるWebアプリケーション構築入門javaの復習とjavascriptの基礎の確認。javascriptの基礎の基礎は以前ちょっとだけこのブログで取り上げたことがある程度だったのをJavaScriptワークブック―ステップ30 (情報演習 (5))を読んで補完。HTML/CSSについてもある程度知ってるしさらっと。しかしTomcat以降がよくわからん……。サーバーが絡んでくるとわからない……。
CD付 10日でおぼえる JSP/サーブレット入門教室 第3版
ということでCD付 10日でおぼえる JSP/サーブレット入門教室 第3版を買ってきて読む。これは分かりやすかった。この後に読むとさっきのJava+MySQL+Tomcatで始めるWebアプリケーション構築入門も結構理解できる。ふむ。requestやらを理解して、サーブレットJSPの2つのファイルで社内データベースの検索システムを作ってみた。うん、動く。ここは大規模データベースが使えるとやる気が違うかもしれない。実際数万件の処理が一瞬で終わるし、それを簡単に微調整したりできるのは楽しい。
ここで一番詰まったのはXML。何が必要なのか、何をやっているのかが分かり難い。基本的にはweb.xmlを何となく見れればいいのかなー。この辺でEclipseを使い始めてその便利さが身にしみる。これ以前に使うとよく分からないまま作れてしまうし、これ以降は無いとやる気起きない感じ。
なんとなく、サーバーとブラウザが何やっているのか見えてきた。ここは大きな進歩。しかしここが一番つっかえたなぁ…。

Ajax

ページ上のボタンを押したりしてブラウザから「更新してくれ」という指示を送り、それを受けたサーバーから新しい情報を含んだ情報が送られてきて、その情報がブラウザに表示される。これが基本なんだけど、普通は更新される情報によってページ全体が変わってしまう。そうじゃなくてページの一部だけ変更されるのがAjax。みたいなイメージ。それこそ最初の例のgoogle検索の予想表示なんかはページ全体は変わらずそこの情報だけが変わってるじゃん。正確では無いんだろうけど、いまの僕はこんなイメージ。
何が嬉しいって、今までだったら(予備を含めた)全ての情報を送らないといけなかったのに、必要な情報は必要なときにだけ取り出せるのが良い。googleの検索候補を全て読み込んでいたらアホみたいに時間かかるよね。
10日でおぼえるAjax 入門教室
JSPで味をしめたので、また10日シリーズの10日でおぼえるAjax 入門教室を読む。うーん、なんか殆どjavascriptの本だった。まぁいいや。htmlとcssjavascriptに分けることで、htmlを書いて全体を決める人、cssを書いてデザインを決める人、javascriptを書いて(ボタンを押したときとかの)イベントを設定する人、がそれぞれ別に仕事が出来ることが嬉しい。どっか修正するときもそこだけ修正すればいいしね。
Java開発者のための Ajax実践開発入門
更に進んでJava開発者のための Ajax実践開発入門を読んでみる。これはやや難しいけど特に5章の例なんかはためになった。これらを読んで前回JSPで作ったHTMLをjavascriptで書く。んで、javascriptからjavaサーブレットを呼び出して処理を行う。これらが分離しているからやっぱり作っていくのが楽。
ちなみにここまではAjaxである必要はない(検索ボタンを押して結果を表示しているだけだから別ページに飛ばす処理でも問題ない)。せっかくAjaxって言いたいのだから、入力予想が行われるようにする。(さっきとは別の)javaサーブレットを用いて入力予想を行い表示するjavascript関数をsetIntervalで1000 msごとくらいに呼び出すようにすれば、まるで検索ボックスに入っているものを常に監視して入力候補を生成しているように見える。Ajaxらしいものが出来た。
ここで一番詰まったのはjavascriptのthisが何を指しているか。bindの重要性がわかるまでが時間が掛かった。上の2冊の本だとちょっと分かりづらいかもしれない。実際ずっとgoogle先生に頼っていた気がします……。

終わりに

最終的な産物はprototype.jsDWRJDBCくらいしか外部のライブラリ(っていうの?)はいれてないけど、それっぽいものが作れました。そして、たぶんあまりライブラリを使わなかったからこそ、面倒くさいものの、理解できたことも多かったように思います。あと、ここには書いてないけど似たような本も幾つか目を通したので、基本みたいなものがよく見えたかもなーとか思います。
10月からはフレームワークを使ってダラダラやっていくことになったので、この面倒だったプログラミングがどれほど楽になるのか楽しみ。