2013/04/17
『プログラミングClojure 第2版』
なかなか書影が来ないけど、今日あたり印刷見本が上がって来てて、来週には店頭に並ぶ予定。
原書から1年遅れになってしまった。原書が出たのがClojure 1.4が出る直前で、 今や1.5.1が出てるから、もう少し早く仕事すべきであったのではあるけれど、 新たなClojure使いの方々にもレビューに加わって頂き、 新しい情報を訳注で適宜フォローしている。 (訳注の数は第1版の倍以上になった。) 1.5で入った新しい機能をばりばり使いこなしたい、というような期待には応えられないけれど、 1.3以降のモダンなClojureを使い始めるにあたって基本となるところは抑えてあるので、 入門書として役に立つだろうと思う。
第1版をお持ちの方は、どのくらい違うのか気になると思うので、簡単にまとめてみる。
- 全体:
- 表紙の動物が変わったよ。
- 第2版では依存ライブラリのダウンロードやREPLの起動にLeiningenを使うようになっていて、サンプルを試すのがとても簡単になった。
- 第1版の各章末尾で作っていたLancetについての記述はばっさり削除されてる。 アプリケーションの作成については新たな章が立てられて、テストからHerokuによるデプロイまでカバーしている。
- ページ数はほぼ同じだけど、第2版の方が文字の密度が高いので内容は増えてる。
- 第1章: さあ、始めよう
- 構成は第1版とほぼ同じ。細かい部分でたくさん書き直しが入っている。
- 第2章: Clojureひとめぐり
- 第1版で構造体(struct)を使っていた部分がレコード(record)を使うように書き改められた。 また、Javaへのインタフェース構文の紹介がここで行われる。第1版第3章「Clojureから Javaを使う」の内容の多くが第9章に移されたため。
- 第3章: シーケンスを使ったデータの統合
- 第1版第4章に相当。ここは細かな表現の修正や書き足しくらい。
- 第4章: 関数型プログラミング
- 第1版第5章に相当。ほぼ同じ。
- 第5章: 状態
- 第1版第6章「並行プログラム」に相当する章だが、「状態」を軸にして説明を整理し直してある。 カバーしている機能(ref、アトム、エージェント、var)は同じ。スネークゲームを作るのも同じ。
- 第6章: プロトコルとデータ型
- 新たに書き起こされた章。Clojure 1.2から入ったプロトコル、およびdeftypeによるデータ型の定義、レコードについての詳しい説明、reifyによる無名のデータ型を扱う。
- 第7章: マクロ
- 第1版第7章に相当。ここはほとんど同じかな。
- 第8章: マルチメソッド
- 第1版第8章に相当。細かいコードの直しなどのみ。
- 第9章: Javaを使い倒す
- 第1版第3章にあった、例外処理、型ヒントによる最適化、proxy、Java配列へのアクセスがカバーされる。また、新たにスタンドアロンの簡単なアプリケーションを書きながら、実践的な文脈での既存のJavaライブラリの呼び方、Leiningenを使ってjarファイルを作るまでの流れ、などを説明。
- 第10章: アプリケーションを作る
- 新たな章。アプリケーションの設計、開発、テスト、デプロイまでを一通り体験する。アプリケーションそのものはごく単純だけれど、Clojure的な開発プロセスを伝えることに重点が置かれているようだ。テストに関してはtest.generativeによる生成的テストが紹介される。デプロイはHerokuを使うので、わざわざ自分でサーバを立てなくても世界に向けてアプリを公開できる。
Clojureのような進歩の速い文化だと、本という媒体はなかなか追いかけるのに きついものがあるけれど、本書は実践的に必要な範囲のエッセンスをうまく 濃縮してある感じ。
サポートページはこちら。http://practical-scheme.net/wiliki/wiliki.cgi/Shiro:ProgrammingClojure2
今回も第1版の時と同じく、 XMLマークアップされたソースをsubversionで版管理しつつどんどん翻訳、 自動ビルドで生成されるpdfで確認、 レビューはチケットシステムでトラッキング、という形で行った。
(追記2013/04/25 15:17:41 UTC): pdf版も発売された。 http://estore.ohmsha.co.jp/titles/978427406913P
2013/04/12
ピアノレッスン89回目
- Bach: Well-Tempered Clavier Book I No. 3 (C♯ major)
- どうしてもミスが取れない。どうやったらミスをなくせるか、について色々教わる。 教わったようにやってみると色々気づいたことがあったので、 しばらくやってみてから結果を書く。
- Scriabin: Sonata No.4
- 第2楽章は符点四分音符=60くらいで通せるようになったけどまだ モチーフごとにバラバラな感じ。
Tag: Piano
2013/04/06
劇評
地元紙の劇評。概ね好評。
- Midweek: Ghosts Of The 100th/442nd
- Star Advertiser: Review: ‘All That Remains’
Honolulu Weeklyは劇評欄が無くなったのかな? 最近ページ数が減ったような。
(追記 2013/04/18 07:16:47 UTC): Honolulu Weeklyの劇評きた。好評。
(追記 2013/04/24 10:40:11 UTC): Hitting The Stageの劇評。
Tag: 芝居
2013/04/03
式
日本のblogなどを見ているとああ4月というのは年度はじめだったなあと思い出すのだけれど、 このように「一斉にみんなが何かする」というのにとんとお目にかからなくなってしまったので不思議な感じがする。一応こちらでもいろいろなものが8月下旬~9月上旬をスタートとする年度で区切られるけれど、具体的に始まる時期がばらばらだ。まあ日本でも学校の夏冬休暇などは地方によって結構差があるけど、4月頭という切れ目はものすごくはっきりしている。学齢の切れ目が明確なのが心理的には大きいかも。こちらでは「何月何日産まれまではどの学年に属するか」というのが州毎どころか学校毎によっても違ううえ、その境界を含む数ヶ月の範囲ではいつ学校に上がるかが選べる (「うちの子は同年代に比べて小さいから一年遅らせましょうか」みたいなことができる) のではっきりとした区切りの感覚があまりない。
日本ではこの「境界」がとてつもなく重んじられているようだ。なにしろその境界において儀式が律儀に執り行われる。各学期は始業式と終業式で区切られ、学校生活全体は入学式と卒業式で区切られ、最初に仕事に就く時は多くの会社では入社式がある(らしい)。これら「人生の時期を区切る式」に相当するものはこちらでは無いような気がする。
いや卒業式はあるではないか、と思うかもしれないが、ちょっと意味合いが違う気がするんだよね。こちらの卒業式は「それを境に属性が変化する、時間の境界における儀式」というよりは、スポーツの表彰式みたいな「成果を讃える祝祭」みたいな感覚なんじゃないかなあ。ritualかcelebrationか。まあ卒業式に関しては日本のやつも両方の意味合いがあると思うけど。
あと、時期を区切るritualがこちらには全く無い、と言いたいわけでもない。ただ日本に比べると希薄なんじゃないかと感じるだけ。あるいは、みんなの文化的背景がばらばらだから目立たないってだけかも。それに儀式的な行事が無いわけでもなくて、先週はあちこちでイースターエッグハントやってたし、そういう季節に応じたritualというのはある。
Tag: 生活
2013/04/03
メインマシン復活作業
交換パーツが届いた。明日(これを書いてる時点ではもう今日だが)、会計士さんと打ち合わせがあるので税務関係の資料を用意しとかなければならないのだが、その環境はメインマシンのディスクの中にある。ディスクをつなぎかえて暫定PCから読み出すか、メインマシンを組み直すか。メインマシンのホームディレクトリは2台のディスクにまたがってロジカルボリュームを作ってたので、ディスクを移すのもめんどくさそうだ。組んでしまえ。
新しい環境はCore i7-3770 (3.4GHz), Intel Z77チップセット, DDR3 16GB。
さて組み付けはすぐ済んでBIOSも立ち上がり、ブートメニューをいじって/bootのディスクを最優先にして起動するとgrubのメニューには行くのだが、そこからカーネルのブートでこける。 ルートディスクをuuidで指定してるんだがそんなディスク無いよと言われる。
/disk/by-uuid/xxxxxxxx というのがみつからん、といってbusyboxのシェルに落ちるので、ls /disk/by-uuidしてみたらそもそもそんなディレクトリがない。dmesgを探してみるとディスクがひとつも認識されてない。いやな予感。BIOSではちゃんと認識されてるんだけどな。
前に作っといたUbuntu 12.04のbootable USBがあったはず…と一苦労して掘り出して、挿してブートしてみたが立ち上がらんぞ? → GTXのビデオカードを外してマザーボードのビデオ出力にしたら使えた。
さてUSBからブートした環境でgpartedで見てみると、あれ、ちゃんとディスクあるじゃん。UUIDも合ってる。どういうこっちゃ。
ちょっとぐぐって、カーネル起動オプションにrootdelayなど足してみてもうまくいかず。しかしインストーラ起動後に見えるってことは、立ち上がり時だけ見えてない何かがあるってことだよな。
結局、BIOSのSATA Controller modeをデフォルトのIDEでなくAHCIにしたらちゃんとカーネル起動時に見えるようになった。
ところが今度は/homeがマウントできんという。これも何度かBIOSといったりきたり。どうも/homeに使ってるディスクのひとつがflakeyだ。SATAケーブルを差し直したら見えた。こいつはIDEのディスクにIDE/SATA変換アダプタをかまして使ってるんだけど、そのせいなのかもしれん。とはいえ怪しいので、マウントできたらとりあえず/homeをバックアップ中。
複数ディスクをlogical volumeでまとめて使うっていうのは小規模な環境だとあまりメリット無いかもなあ。ディスク増設なんて滅多にしないので、次に買い足す時はうんと容量が大きくなってる。/homeはもともと120Gだったところに200Gのディスクを足したんだけど、そうやってちまちま足していって物理的なディスクの数が増えるとそれだけ故障の可能性も増えるし別マシンにつなぎ変えたいと思っても面倒だ。1Tのディスク一個にまとめちゃって古いディスクは引退願うのが良いのだろうなあ。でも昔の、記憶媒体がバカ高かった頃の想い出が足を引っ張る…
Tag: Computer
Comment (1)