Posts RSS Comments RSS 32 投稿 and 1 コメント till now

Archive for the 'Java' Category

Javaネットワークプログラミングの真髄

Javaネットワークプログラミングの真髄

著者/訳者:Array

出版社:ソフトバンク クリエイティブ( 2007-04-28 )

定価:¥ 3,885

大型本 ( 408 ページ )

ISBN-10 : 4797341866

ISBN-13 : 9784797341867


ネットワークプログラミングの本の決定版。

Javaのネットワークプログラミングの本であるが、Java以外の言語でプログラミングをしている人にも向いていると思う。言語に特化した記述以外にも、プログラムの設計の指針になる記述もふんだんにあるからである。Socketプログラミングの本は数多くあり、Webでも入門記事は多く見かける。したがって、単純なサーバ・クライアントを作成するだけならお金をかけて本を買う必要はない。本書はそうしたありふれた入門書とは一線を画する記述がある。

中級者以上でも面白い記述がある

TCP/IPは古い設計であるため、色々と問題が指摘されている。TCPは信頼性のある通信を手軽に実現してくれて便利なのだが、TCPのフロー制御や輻輳制御、あるいは公平性についての取り決めは現代の高速ネットワークにはそぐわない点がいくつかある。ほとんどの場合は気にしなくてよいのだけど、必要な場合にはシンプルなUDPを使うこともある。UDPはほとんど何もしないプロトコルなので、TCPがやっている信頼性確保のための色々な工夫を自分で実装しないといけない。こうしたトピックについて気軽に読める本はあまり多くないと思う(大学のネットワークの教科書には書いてある)。

他にもサーバの負荷を考慮して、スレッドで捌くのか、SocketChannelを使って捌くのかなどの詳細な分析などは中級者にとっては面白い読み物となるだろう。

新しい世代の入門書

Javaは古くからSocketによるネットワークがサポートされていたが、最近(と言ってもずいぶん経つが)NIO(New IO)という新しいインターフェースがサポートされた。典型的にはブロッキングを回避するためにコネクションをスレッドに割り当てていたのだが、多くのコネクションをその数だけスレッドを作ってさばいているとパフォーマンスに問題がある。そうした要求に応える新しいインターフェースだが、あまり本は多くないと思う。WebにもNIOの解説はあるのだけど、数は多くない。数が少ないと親切な解説に当たることも少ないので少し困る。

本書は昔ながらのSocket通信はもちろん、NIOにも対応しているので、初心者が最初に手に取る本としても十分に役に立つ。

Javaスパイダーツールサンプル&クックブック—自動アクセス&収集・加工プログラム

Javaスパイダーツールサンプル&クックブック―自動アクセス&収集・加工プログラム

著者/訳者:Array

出版社:秀和システム( 2005-05 )

定価:¥ 2,730

単行本 ( 377 ページ )

ISBN-10 : 4798010618

ISBN-13 : 9784798010618


スパイダリングのみならず、正規表現(Jakarta ORO)やJakarta HttpClient、Javaプログラミングのよい手本となった。

この本は自分にとってはとても当たりで、普通はPerlやRubyなどのスクリプト言語で正規表現の魅力にハマるようだが、私は本書とJakarta OROで学んだ。クックブックというだけあって、実際のサンプルが多く、スパイダリングを行うメリットがあることをハッキリ分かりやすく伝えてくれる。後半にかけてのサンプルはHTMLからどのように正規表現で欲しい部分だけ抽出するかというステップを丁寧に書いてあるため、初めて正規表現を使う者にとっても非常に理解がしやすかった。本書を片手に正規表現対応のエディタで試行錯誤してソースコードを書くだけで、今までとはまったく違う世界が開けたのを覚えている。

また、JakartaやTomcatなどのツールのインストールやチュートリアルとしても優秀で、HttpClientの情報はインターネットを検索しても見つかるが、本書のサンプルが一番分かりやすかったと思う。

このように本書は単にスパイダリングの入門書以上に、プログラミング全般のよい入門書となるだろう。プログラミングを始めたばかりのものにとって”Hello World!”のような無味乾燥なプログラムを書かせるより、こうしたすぐにできて、しかも実用になるプログラムはよいと思うし、これだけ丁寧に書いてあれば落伍者もあまり出ないと思う。目次を見るとさまざまなツールの使い方から面白そうなサンプルまでたくさん収録されているのが分かる。とても大盤振る舞いなサービスのよい本であった。

目次:

Part1 スパイダーとスクレーパーの基礎知識

  • 「スパイダー」と「スクレーパー」とは
    • 定義とメリット
  • スパイダープログラミングの流れ
    • プログラミングの流れ
  • 問題を起こさないために
    • 知的所有権
    • 使用上の注意をよくお読みください

Part2 環境を用意しよう

  • J2SE
    • ・インストールと設定
  • TOMCAT
    • インストールと設定
    • web.xmlに関する注意点
    • TOMCATの起動
  • Jakarta COMMONSライブラリ
    • HttpClientの入手とインストール
    • Loggingの入手とインストール
  • Codecの入手とインストール
    • Jakarta OROライブラリ
    • 入手とインストール
  • MySQL
    • 入手とインストール
    • サンプルデータベースの作成
    • MySQLの自動起動
    • JDBC

Part3 スパイダーの基礎

  • URLConnectionクラスを使う場合
    • URLConnectionを使ったスパイダー
    • 文字コード指定のURLConnectionを使ったスパイダー
    • MIMEヘッダーを読む
    • 文字コードを自動判定してHTMLソースを取得
  • HttpURLConnectionクラスを使う場合
    • HttpURLConnectionを使ったスパイダー
  • HttpClientクラスを使う場合
    • HttpClientを使ったスパイダー(byte[]で読む)
    • HttpClientを使ったスパイダー(Stringで読む)
    • HttpClientを使ったスパイダー(InputStreamで読む)
    • robots.txtの取得方法

Part4 クッキングレシピ集 Vol.1

  • 「ファイルの収集」
    • 写真のダウンロード
    • 音楽のダウンロード
    • 音楽をまとめて自動ダウンロード
    • ウェブカメラの映像をダウンロード
    • ウェブカメラの映像1週間分を1ページにまとめる
  • 「検索」といろいろな日本語コード
    • スパイダーでNIKKEI検索(Shift_JIS)
    • スパイダーでYahoo!検索(EUC-JP)
    • スパイダーでGoogle検索(UTF8)
    • 日本語文字化け対策のまとめ
  • OROによる検索とスクレーピングテクニック
    • Yahoo!から東京の週間天気予報だけスクレーピング

Part5 クッキングレシピ集 Vol.2

  • 「欲しい情報」だけを集める
    • ベストセラーCD一覧表示
    • JavaBeansを使ったベストセラー本のスパイダリング
    • マルチスレッドを使ったベストセラー本のスパイダリング
    • 高く売れる古本だけを見つける
  • 「お得な情報」を集める
    • ぐるなびからクーポン券だけゲット!
  • 「最新情報」を集める
    • 新聞社をスパイダリングしてトップニュースをいただく
    • 複数ポータルサイトの検索語ランキングを一覧にする
    • 売れ筋ワイン
    • 人気化粧品ランキングに価格.comで値段を調べるリンクをつける
    • 複数のJava雑誌の最新目次をまとめて見る

Part6 クッキングレシピ集 Vol.3

  • 「楽しい情報」を集める
    • 話題の人気映画情報をまとめて見る
  • 「ビジネス情報」を集める
    • いろいろな企業情報をまとめて表示
  • 情報をまとめて見る
    • 面倒だから掲示板のタイトルと本文を同時に表示
  • 「情報を関連させて見る」Webサイト×別のWebサイト=お得情報
    • 最近の話題を仕入れる
    • スーパーの特売品をスパイダリングしてそれでできる料理を検索
    • 人気の本をタダで読む!人気の新刊を借りられる図書館の検索

Part7 ひと味違うスパイステクニック

  • ファイルに書き出す
    • ホームページをZIP圧縮してディスクに保存
    • Excelファイル書き出し入門
    • Webサイトのデータを自動的にExcelファイルに書き出す
    • Webページのデータを自動的にデータベースに取り込む
    • データベースにAccessを使う方法
  • RSSフィールドを読む
    • RSSとは
    • 環境の準備
    • JavaでRSSを読む
    • サーブレット版RSSリーダー
  • Webコンテンツのグラフ化
    • ヤマダ電機から液晶テレビの価格をスパイダリング
    • Javaによるグラフ出力入門
    • Webページの液晶テレビ価格を自動的にグラフ化する