本買いました


ジュンク堂まで出かけて本を買いました.

買いに行った目的がこの本.

どっかのブログで紹介を読んで面白そうだったので,買っちゃいました.Amazonでぽちっとしなかったのは,「在庫がなかったら買うのをあきらめる.」ということが出来るから&たまには街へ外出して気分転換したかったから.本自体の紹介は他のブログを参照で.

もう一冊,買いたかった本があって,それがこの本.

C++テンプレートテクニック

C++テンプレートテクニック

こっちは在庫切れだったのであきらめた.

そして,本屋をぶらついて,前からちょっとほしかったPythonの本を物色.

Pythonチュートリアル

Pythonチュートリアル

Pythonをちゃんと勉強したかったので買ってみた.これからゆっくり読んでみる.

そして,一番いい買い物をしたのが,この本.

JavaScriptのいいとこを集めた本.普通JavaScriptの本と言えば,「どうやってHTML(DOM)を操作するのか,どうやると面白いビジュアル効果が得られるか」みたいなところに焦点が当てられるけど,この本はガチ「JavaScript」の本.かなり面白そう.この本を一番最初に読むことにする.

悩み中


はじめてのPython

初めてのPython 第3版

初めてのPython 第3版

に手を出すか,

ふつうのHaskellプログラミング

に手を出すか.

それとも,まつもとゆきひろ氏が注目している言語Erlangに関する本,

プログラミング言語Erlang入門

プログラミング言語Erlang入門

プログラミング言語Erlang入門

に手を出すか.

そもそも読む時間があるのか.

週刊アスキー別冊 ビスタの超技100


週刊アスキー別冊 ビスタの超技100

http://weekly.ascii.jp/2009/03/10035.html

ブロガー・レビュープログラムに当たっていたのに,忙しすぎて放置してしまってました.やべー.

普段こういう本は滅多に読まないので,(というのも,だいたいネット上の情報を参考にやっているので)知識が断片的なものでしかない.

この本ではかなり網羅的にいろんな技が載っていて,かなり参考になった.(やっぱ金払って得られるだけのものはあるのかも)

内容的には,まぁだいたい知ってることが書いてあったけど,初心者の人や,あんまりネットで調べ物とか得意じゃない人には貴重な情報かも.

ただ,少し気になったのは,割と誰にでも役立ちそうな内容や,誰が使うのかわからないような機能が混在していて,想定している対象読者がどんな人なのかよくわからないこと.(まぁそもそも,Vistaの機能がそんなもんなので,まとめたらこうなってしまうのは仕方ないかもしれない.)

個人的に,すごく「へぇ~」な項目は,第1章一番最初の「よく使うソフトを簡単に起動しよう!」で,クイック起動が,Windowsキー+数字で起動できるという内容.

クイック起動に並んでいるアイコンが左から順に1,2,3・・・と数字に対応しているので,キーボード操作で素早くブラウザなどが起動できて便利.

これはすごく便利なので,早速利用しています.

まぁ,Launchy入れたら・・・

Factory Method


デザインパターンの「FactoryMethod」の意味(というかメリット)を今日理解した.でも言葉で説明するのは難しいな….

たとえば,

Product item = new HogeProduct(); // HogeProductはライブラリとして提供される

というコードがあるとする.これは,ライブラリとして提供されるHogeProduct(これはProductクラスのサブクラス)のインスタンスを生成し,HogeProductという「製品」を作る例である.

プログラムがこのように書かれていると,ライブラリ作者がHogeProductの名前をHigeProductに変更したときに,ライブラリを使う側の人も作ったプログラムを変更する必要がある.つまり

Product item = new HigeProduct(); // HogeProductの名前が変わった

に書き換えなければならない.これは大変.

そこで,Factory Methodの出番.

Factory Methodでは,CreatorクラスにProductクラスを「作る」メソッドを用意しておき,それぞれを継承したさまざまなConcrete Creatorクラスからそれに対応するConcrete Productクラスを「作る」.ここで「作る」というのは,Concrete Productクラスのコンストラクタを呼び出してインスタンスを生成することになる.

このとき,これらのクラスを使う側としては,何かのCreatorクラスのインスタンスをもっておけば,何がどうやってできるかを知らなくても何かのProductが手に入る.つまり,

Creator factory = new HogeCreator();// 何らかのConcrete Creator(ライブラリとして提供される)
Product item = factory.create(); // 何が作られるかは知らない

で,これの何が嬉しいかというと,使う側はHogeCreatorクラスが「作る」Productのクラス名を知らなくてよい,つまり,HogeCreatorクラスを作る人がある時勝手に名前を変更したとしても,その影響が使う側には及ばないということ.これは,newによるコンストラクタ呼び出しを隠ぺいすることによって実現されている.

Java言語で学ぶリファクタリング入門

Java言語で学ぶリファクタリング入門

では,Factory Meghodの使う例として,Creator,Concrete Creator,Productクラスがひとつになっているのがある.

public class Hoge(){                // ProductでCreatorでConcrete Creator
public static Hoge newHige(){
return new Hige();
}
~略~
private class Hige{                 // Concrete Product
~略~
}
}

実用的にはこんな感じで使うのかな~.この場合,Higeクラスの名前はなんでも良い(つまり,いつ勝手に変更しても他に影響は及ばない)ということになる.

読書


本屋に行って,そのあと近くのカフェに行ってきた.河原町通り沿い,三条と四条の間の路地裏にあるカフェ.

f:id:yasutomo57jp:20090125150000j:image

で,本屋では何を買ったかというと…

エンジニアのための時間管理術

エンジニアのための時間管理術

時間管理は大切.エンジニアじゃないけど,ほとんどそれに近い生活をしてるので参考になるかと.

もう一冊,

Java言語で学ぶリファクタリング入門

Java言語で学ぶリファクタリング入門

今後いろいろ他人が書いたコードを見る機会が出てくるので,リファクタリングの勉強もしておこうかと思って.ざっと見た感じ,デザインパターンとも絡んでいて面白そう.

先日買った「集合知プログラミング」,「RESTful Webサービス」も早く読まないと….

欲しい本


本を読んでみる


ということで,3冊.

(今年から研究室の読書会で発表することになって・・・)

ウェブを変える10の破壊的トレンド

ウェブを変える10の破壊的トレンド

Mobile2.0 ポストWeb2.0時代のケータイビジネス

Mobile2.0 ポストWeb2.0時代のケータイビジネス

なんかWeb関連なやつを3冊選んでみた.

たまにはこんな本もおもしろそう.

ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか