きしだのはてな このページをアンテナに追加 RSSフィード

2014-11-12(水) 書評:パーフェクトJava改訂2版

[][]パーフェクトJava改訂2版 08:57 パーフェクトJava改訂2版 - きしだのはてな を含むブックマーク

著者の井上さんからいただきました!

改訂2版 パーフェクトJava

改訂2版 パーフェクトJava


位置づけとしては、ある程度Javaを知っている人が、知識を補完するために読む本です。一応Javaの概要やコンパイル手順などから始まっていますが、このあたりの情報が必要な人が読むにはちょっと厳しいと思います。

Java SEの細かいところまで広範囲に書かれてるので、Javaをもうすこししっかり勉強したいという人におすすめです。


残念なのは、前版にあったJava EEやデータベース関連が紙面からは落ちて、ダウンロード版になってるところです。その情報も目次前の「はじめに」に書いてあるので、見落とす人も多いんじゃないでしょうか。

そのかわり、GUIはSwingからJavaFXになってます。JavaFXに関しての評価はぼくにはできませんが、コンポーネントの説明をちょろっとしているというレベルではなく、スレッドモデルなどをちゃんと説明していたり、いい感じっぽいです。

そういえば、日付時刻は扱われていませんね。


「ロックフリーは名前のとおりロックを使わない同期手法です」などと書くとどこかからマサカリが飛んで来そうですが、こういうマサカリを投げる人はJavaの本を読まないですね。まあでも、こういう話題が出てくるくらいの内容ってことでもあります。

プログラミングの魔導書 vol.3」の「Lock-free入門」によれば、「Lock-freeで大事なのはロックを使わない事ではなく進行保証の有無」ということで、「CPU時間が割り当てられる限り、どれかのスレッドが必ず有限ステップ内に操作を完了する」というアルゴリズムがロックフリーということになるようです。3つのスレッドが協調動作するとき、2つのスレッドがデッドロックしてもどれかひとつのスレッドが必ず終了することが保証できるのであれば、それはロックフリー、と。


ともあれ、どこからでも独立して読めて、たぶんどこを読んでも何らか知らなかったり理解があいまいだったりすることが書いてあったりするので、通勤時に持ち歩いたりトイレに置いておいたりして、適当に開いたページを読むとかすると楽しいんじゃないでしょうか。

2014-11-10(月) 書評:Java最強リファレンス

[][]Java最強リファレンス 09:21 Java最強リファレンス - きしだのはてな を含むブックマーク

ソフトバンク編集の方から送っていただきました!なかなかいい本です。というか、これすげー時間かかってそう。

Java最強リファレンス

Java最強リファレンス


書名のとおりリファレンスなんですが、逆引きになってます。逆引きなので、やりたいことからJava APIを引く形になってます。

これが特に威力発揮してるのが、日付時刻の扱いやファイル操作です。日付時刻の扱いやファイル操作は、Java 8でDate & Timeが入ったり、Java 7でNIOが強化されたりで、同じことを新しい書き方と古い書き方で書けるようになってます。これらがやりたいことごとにまとまっているのは、結構便利だと思います。

特に、ファイル操作の新旧API比較表は、概要みるのに便利そうです。


よくないところとしては、項目名のところにメソッドだけ書いてあって多くのところで意味不明になってるところですね。「ofメソッド」とだけ書いてあってもねぇ、と。メソッドごとの説明でも、クラス・インタフェース名が書いてあったり省略してあったり、どういうルールになってるかよくわかんないんで、ちょっと戸惑います。

繰り返しのところにもStream入れてほしかったなとか、サンプルで、ここはfor文じゃなくてforEachのほうがとかもちょっとあったり。

あと、Java8の日付時刻APIを「Joda Timeというライブラリをベースにした」とか書くと、どっかからマサカリ飛んでくる気がします。


でもまあ、よくないところは実用的にはそんな気にならないはずなので、JavaAPIをよく把握してないとか、バージョンアップで変わったAPIに自信がないとかいう人は、手元にあると心強そうです。

なにより、このボリュームで3000円切るというのがいいですね。

2012-12-30(日) 今年買ったり、いただいたりした本

[]今年買ったり、いただいたりした本 14:27 今年買ったり、いただいたりした本 - きしだのはてな を含むブックマーク

kyon_mmさんが書いてたので、ぼくも気になってまとめてみた。

http://d.hatena.ne.jp/kyon_mm/20121230/1356839483

今年はあまり多く買ってないし、実用書が多いなーという感じだ。あと英語の本を買っていない。ただ、ちゃんと読んだ率が高い。書評を書いてないのは読んでない本なので、それでもほとんど読んでないけどもw


人はどのように考え間違えるか「考えることの科学」で考える - きしだのはてな

考えることの科学―推論の認知心理学への招待 (中公新書)

考えることの科学―推論の認知心理学への招待 (中公新書)


[書評]IDの秘密 - きしだのはてな

IDの秘密 (丸善ライブラリー―情報研シリーズ)

IDの秘密 (丸善ライブラリー―情報研シリーズ)


一応全部読んだけど、どうも頭に残ってない。もう一度読まないと。

数学ガール/ガロア理論 (数学ガールシリーズ 5)

数学ガール/ガロア理論 (数学ガールシリーズ 5)


何年かぶりに、マンガの単行本を買った。ジョジョ絵を描く参考に。


面白いんだけど、いつも途中で止まってしまう。ダメットにたどりつかない。

ダメットにたどりつくまで (双書エニグマ)

ダメットにたどりつくまで (双書エニグマ)


面白いんだけど、いつも途中で止まってしまう。ウィトゲンシュタインにもクワインにもたどりつかない。

言語と認識のダイナミズム―ウィトゲンシュタインからクワインへ

言語と認識のダイナミズム―ウィトゲンシュタインからクワインへ


AmazonランキングからAmazon全体の売り上げを考える - きしだのはてな

Amazonランキングの謎を解く: 確率的な順位付けが教える売上の構造 (DOJIN選書)

Amazonランキングの謎を解く: 確率的な順位付けが教える売上の構造 (DOJIN選書)


「日本語入力を支える技術」は「日本のトップレベルを支える技術」と - きしだのはてな

日本語入力を支える技術 ?変わり続けるコンピュータと言葉の世界 (WEB+DB PRESS plus)

日本語入力を支える技術 ?変わり続けるコンピュータと言葉の世界 (WEB+DB PRESS plus)


Haskellが流行ってるので。ちまちま進めてて、やっと70ページあたり。先は長い。

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!


ビット演算楽しい。


型推論とかちょっとやってるので読んでみようと思って、読んでない・・・

2週間でできる! スクリプト言語の作り方 (Software Design plus)

2週間でできる! スクリプト言語の作り方 (Software Design plus)


多めにJavaScriptを書くことになったんで、テストのこと知っとこうかと思って買った。テスト関係なく、JavaScript入門としてよかった。

結局テストは書いてないw

テスト駆動JavaScript

テスト駆動JavaScript


C#をやることになったんで。Javaとの対訳があってJavaプログラマにはわかりやすい。

〔速攻入門〕 C#プログラミング すぐに現場で使える知識

〔速攻入門〕 C#プログラミング すぐに現場で使える知識


データベース系

この本、「トランザクション処理」よりまとまってて読みやすいのに数百円で買える。おすすめ。


データベースのしくみの概要がまとまってる。

RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み (DB Magazine Selection)

RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み (DB Magazine Selection)


SQLServerの解説だけど、データベースの実装について参考になる。

絵で見てわかるSQL Serverの内部構造 (DB Magazine Selection)

絵で見てわかるSQL Serverの内部構造 (DB Magazine Selection)


おねえさんを救うための本

おねえさんを組み合わせ爆発から救う:格子グラフを生成する - きしだのはてな


JavaEEをやることになったんでw


Hadoopの勉強を始めようと思って

Hadoop Hacks ―プロフェッショナルが使う実践テクニック

Hadoop Hacks ―プロフェッショナルが使う実践テクニック


FPGAの入門書

FPGAで遊ぶとたのしかった - きしだのはてな



いただいた本

今年は、結構たくさん本をいただいた。まだ紹介してない本もあって、来年の宿題・・・

読みやすいコードの為の暗黙の了解がつまってる「リーダブルコード」 - きしだのはてな


書評:Androidプログラミング入門改訂2版 - きしだのはてな


Javaプログラマなら必ず手元に置いておくべき。

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)


ネットワークの低レイヤーを触りたいなーと思いつつ。

ルーター自作でわかるパケットの流れ

ルーター自作でわかるパケットの流れ


Hadoopの導入から書いてあって試しやすい。CDHを使ってるのが現実的。

タイミングも内容もちょうどほしかった本なので、神様っていると思った。

はじめてのHadoop ~分散データ処理の基本から実践まで

はじめてのHadoop ~分散データ処理の基本から実践まで



書いた本

最後に、書いた本。なんか、Facebookアプリの件で最近になって売れ出した感じ。

Sencha Touchの本を書きました - きしだのはてな

2012-10-31(水) 読みやすいコードの為の暗黙の了解がつまってる「リーダブルコード」

[]読みやすいコードのための暗黙の了解がつまってる「リーダブルコード」 14:14 読みやすいコードのための暗黙の了解がつまってる「リーダブルコード」 - きしだのはてな を含むブックマーク

そういえばidがkdmsnrの児玉サヌールという人から「本を訳したよ!」と献本いただいたのだけど、届いた本を見てみると訳者は角 征典という人だったのでとまどっていたところ。

出版したときにいただいてたので、もう半年近くになるけど、時間がかかったのは、ちまちまと一日1ページとか2ページとか読んでたから。普通に読めば、たぶん土日で読めます。

関係ないけど、一時期、角さん、角田さん、角谷さん、という一文字ずつ成長する東のほうの人と一気に知り合いになって「かっくん」と言われてるのがどの人かわからないことがあった。懐かしい話。


それはそれとして、ぼくは「きれいなコードをかきましょう」系の話はあまり好きではないのだけど、この本はよいです。


まず、薄いのがよい。

こういう分野の本は、まあ一冊は読んでおいたほうがいいのだけど、そこまで時間をかけるものではないと思っていて、必要なことが書いてあって薄いのが一番いいと思ってる。

この本は、必要なことは十分すぎるほど書いてあるのに、薄い。とてもよい。


訳もいい。読みやすい。読みやすいコードのための本が読みにくい日本語で書いてあったら説得力ない。この本は、ちゃんと読みやすい。

あと、気に入ったのがこの訳。

関数で複数のreturn文を使ってはいけないと思っている人がいる。アホくさ。

「アホくさ」ですよ。この訳で、一気にこの本を気に入ってしまった。


もちろん、内容もいい。


たとえば定数のコメントについて、適切な変数名をつければコメントは不要という話もあるけども

image_quality = 0.72; //0.72ならユーザはファイルサイズと品質の面で妥協できる。

という例をあげて、コメントとして『なぜその値を持っているのかという「背景」』が必要になることをあらわしてる。

このコメントの内容を変数名で表すのは難しい。変数名は「画像品質である」ということしかあらわしていない。じゃあ「image_quality_that_sutisfy_both_filesize_and_quality」のような変数名をつけるかというと、実際はそのような値であるとは限らないし、ファイルサイズだけを満足する値にすればいいという決断になったときに変数名をつけかえるというのもナンセンスだ。

定数の値を決めたときに頭のなかで考えていたことを記録することが大切なのだ。

というのがまさにその通り。さらにいえば、これは定数のコメントについて書いてあるけど、条件分岐の判定式などでも「条件分岐の判定式を決めたときに頭のなかで考えていたことを記録することが大切」ということがなりたつ。つまりコメントには「頭のなかで考えていたことを記録することが大切」だと言える。


ただ、コメントに関しては

コードを理解するのに役立つものなら何でもいいから書こう

というひとことが一番気に入っている。

単なるコードの日本語訳だろうが、改変履歴だろうが、コードを読む役に立つなら、ウソ以外はなんでも書いていいと思う。あとでジャマになったら消せばいいと思う。


それはそうと、やはりこの本のいいところは、変数名とかコメントとか、ソースコードの構造をかえずに表面上で読みやすくする話だけではなくて、制御構造や処理の順番、エラーメッセージやテストなど、読みやすい処理の書き方についても書いてあるところだ。

変数・関数に適切な名前をつけて長い関数は分割してインデントを整えてコメントを書きましょう、というだけの本だったら、「いい本だけど、ブログでいいよね」ということになる。

「きれいなコードをかきましょう」系の話が好きではないのは、単にコードを表面上きれいにしましょうという話が多いからだ。

体裁を整えて修飾すれば読みやすくなるわけじゃなくて、どのように処理を実装するかという時点から読みやすさを考えておく必要があることを意識させてくれるという点で、「リーダブルコード」はいい本だと思った。


それから、ぼくは「創るJava」とかAPIの説明を書くときに、たとえば

req.getRequestDispatcher("/hoge.jsp").forward(req, res);

ではなくて、getRequestDispatcherがRequestDispatcherオブジェクトを返す、forwardメソッドはRequestDispatcherクラスのメソッドであるっていうことを明示するために、一旦変数に割り当てている。

RequestDispatcher rd = req.getRequestDispatcher("/hoge.jsp");
rd.forward(req, res);

このような変数の使い方について「リーダブルコード」では「説明変数」という名前がつけられていたのが、ありがたかった。


ちなみに、角さんは「かくさん」じゃなくて「かどさん」です念のため。

2012-08-16(木) [書評]IDの秘密

[]IDの秘密 13:42 IDの秘密 - きしだのはてな を含むブックマーク

ちょっとずつ、「IDの秘密」という本を読んでて、やっと読み終わった。

IDの秘密 (丸善ライブラリー―情報研シリーズ)

IDの秘密 (丸善ライブラリー―情報研シリーズ)


やっと読み終わったといっても、読みにくい本というわけではなくて、単に一日に5分くらいしか読んでなかったから。


で、書名が「IDの秘密」なんだけど、ID自体を扱っている章は、クレジットカード番号や車のナンバーなど日常でみかけるIDを書いた2章と、成長する組織での構成員のIDをどう割り当てるかという7章だけ。大半は、バーコードやICタグ、ICカードといった、IDを記録する媒体についての解説になっている。


とはいえ、流通するIDは流通媒体も含めて考えないといけないので、一冊にまとまっているのは読みやすい。

それぞれについてかなり詳しく書いてあるので、IDについて考えたい人にはとてもおすすめ。

まあ、そういうIDについて考えたい人は少ないと思うけど、そうじゃない人でも、雑学として面白いので、次に読む本が決まってなければ読んでみるといいと思う。