> 結城浩の日記 > 2005年9月 | 検索 |
プロフィール | 日記一覧 | 日記ダイジェスト | Twitter | RSS |
|
はてなダイアリーライター(はてダラ)Version 1.3.0を公開しました。 今回の修正は、はてなダイアリーのリニューアル対応です。
最近はミカラ・ペトリのリコーダーをよく聴いている。 私は、すなおで、のびやかで、みずみずしいリコーダーの音色が大好きだ。
今日も今日とて勉強。 自分で勉強するって楽しいなあ。 学校のように、そこに行けばカリキュラムがあって先生が教えてくれるというのも至れり尽くせりでよいけれど、 自分で「次は何を、どんな風に学べばいいかな」と考えながら進むのはとても楽しい。 自分が納得するまで時間をかけて学ぶことができるのはとても楽しい。 究極のマイペース(←意味不明)。
最近、勉強が楽しくて、いろんな本を買っている。 本をどんどん買って、鉛筆片手にばりばり読んで、 ページに学んだことや気づいたことをメモとして書き込む。 一日の終わりに、そのメモを見ながらノートパソコンに記録していく。 そんな生活をここしばらく続けている。 それで思うんだけれど、紙の本っていいよね。 WebページやPDFも便利だし、実際活用しているんだけれど、 紙の本はまたちょっと違う良さがある。 技術書の値段は数千円することも多いけれど、 最近は(まとまった内容を学ぶときには)あまり値段を気にせず本を買うように心がけている。 「この本と同じくらいの内容はWebにもあるかもしれないが、 Webで探し・読み・プリントアウトしたらどれだけ時間がロスするだろう」 と思うからだ。 さくっと調べるときにはWebもいいんだけどね。
Webを巡回していて、 「2005年4月25日 福知山線5418M、一両目の「真実」」という記事に再開。 以前も読んだ記憶があるけれど、ちょっと読み始めたらまた一気に最後まで読んでしまった。 涙が出てきました。
『リファクタリング』の訳書では、 各リファクタリングの紹介ページが原書と一致するように作られている。
この秋に読む!TOPエンジニアが刺激を受けた25冊に便乗して、私が刺激を受けた本を何冊か挙げてみます。
小中学生時代はブルーバックスですね。 特にマーチン・ガードナーの『数学ゲーム』が大好きでした。 かなり影響を受けていると思います。 先日上梓した 『プログラマの数学』の謝辞にもマーチン・ガードナーが出てきました。
高校時代はハマトンの『知的生活』をよく読んでいました。 高尚なようでいて、妙にプラクティカルな内容が面白かったですね。
大学時代は何といってもホフスタッターの『ゲーデル,エッシャー,バッハ』でしょう。
社会人になってからは『クヌース先生のドキュメント纂法』からたくさんのことを学びました。
「R」というデータ解析環境の練習を兼ねて、自分の校正スピードを計算してみる。
まず、次のようなデータファイル(proof.txt)を準備する。
mins pages checks 40 19 26 20 18 6 12 10 1 16 7 3 12 8 3 10 9 1 15 12 3 10 10 2 20 19 8 13 13 0 8 14 3 5 9 2 6 12 1 17 15 10 18 20 4 70 23 37
ここで、mins, pages, checksの列はそれぞれ「校正にかかった時間(分)」「校正紙の枚数(1枚2ページ分)」「朱を入れた数」を表す。 また、各行は、作業単位(大体は「章」だけれど、付録の場合もあるし、ひとつの章を二つに分割した場合もある)を表す。
「R」を起動して、proof.txtのあるディレクトリにカレントディレクトリを移動する(メニューから)。 そして、コンソールから次のようにコマンドを入力する(プロンプト > の後はキー入力、※の後は解説)。
> t <- read.table("proof.txt", header=TRUE) ※データの読み込み > t ※読んだデータの確認 mins pages checks 1 40 19 26 2 20 18 6 3 12 10 1 4 16 7 3 5 12 8 3 6 10 9 1 7 15 12 3 8 10 10 2 9 20 19 8 10 13 13 0 11 8 14 3 12 5 9 2 13 6 12 1 14 17 15 10 15 18 20 4 16 70 23 37 > t$mins ※minsの列を表示 [1] 40 20 12 16 12 10 15 10 20 13 8 5 6 17 18 70 > t$pages ※pagesの列を表示 [1] 19 18 10 7 8 9 12 10 19 13 14 9 12 15 20 23 > t$checks ※checksの列を表示 [1] 26 6 1 3 3 1 3 2 8 0 3 2 1 10 4 37 > summary(t) ※データの統計情報のサマリを表示 mins pages checks Min. : 5.00 Min. : 7.00 Min. : 0.000 1st Qu.:10.00 1st Qu.: 9.75 1st Qu.: 1.750 Median :14.00 Median :12.50 Median : 3.000 Mean :18.25 Mean :13.63 Mean : 6.875 3rd Qu.:18.50 3rd Qu.:18.25 3rd Qu.: 6.500 Max. :70.00 Max. :23.00 Max. :37.000 > t$mins / t$pages ※各作業単位ごとに、校正紙1枚あたり何分かかったかを表示 [1] 2.1052632 1.1111111 1.2000000 2.2857143 1.5000000 1.1111111 1.2500000 [8] 1.0000000 1.0526316 1.0000000 0.5714286 0.5555556 0.5000000 1.1333333 [15] 0.9000000 3.0434783 > summary(t$min / t$pages) ※統計情報のサマリを表示 Min. 1st Qu. Median Mean 3rd Qu. Max. 0.500 0.975 1.111 1.270 1.313 3.043 > summary(t$checks / t$pages) ※同様に、校正紙1枚あたりの朱入れ数の統計情報のサマリを表示) Min. 1st Qu. Median Mean 3rd Qu. Max. 0.0000 0.1778 0.2361 0.4114 0.4229 1.6090 > plot(t$mins, t$pages) ※minsとpagesについて分布図を表示する > plot(t) ※mins, pages, checksの全組み合わせの分布図を表示する > q() (終了)
plot(t$mins, t$pages)で表示される図(リンクをたどると拡大)
plot(t)で表示される図(リンクをたどると拡大)
なかなか楽しい。「R」は以下から入手できます。
仕事がはかどらなくていらいらするときには、わざとゆっくりするのがよい。 その理由は何か。 いらいらの原因は、実は「仕事がはかどらないこと」ではなく、 「事態が自分の思い通りにいかないこと」だからだ。 わざとゆっくりやることで、 「仕事がはかどらないのは、自分が想定している事態であり、 自分の予想通りの状況なのだ」と自分へメッセージを送ることになる。 仕事がはかどらないことには違いがないけれど、 うそのようにいらいらを減らすことができる。 少なくとも、私はそうだ。
追記:
わざとゆっくり走る LSDというトレーニング法があるらしいです。 全身持久力を鍛えたり、フォームを整えたりするらしい。 なるほど。 仕事をゆっくりやると、「仕事のフォーム」も整うかもね。
「プログラマのダイエット・エピソード2」を始めてから約一ヶ月経過。 体重は2.15Kg減。体脂肪率は0.4%減。 エピソード2では、ロングテールを生かした「ながら運動」も加えている。 単に体重が減っただけではなく、体調が良くなっているようだ。
今日も原稿書き、というか、原稿で使うプログラム書き。 やるかどうか迷っていた部分を「やろう!」と決心。 Perlで下調べの実験をしたら意外と簡単だということが分かり、 とてもうれしい。
しかし、調べたり考えたりすればするほど、自分は何も知らないのだなと実感する。 勉強できることがたくさんあるのは楽しいですね。
今日も原稿書き。
月曜日は淡々と仕事。 自分がworker threadになったような気持ちで、contextを元に仕事を進める。 で、仕事から離れる前にcontextに仕事の結果を戻す。 具体的には、次にやるべきことをChangeLogに書いてsvn commitする。
私は、TODOリストを作るのが好きだ。 やるべきことがコンピュータ上で箇条書きになっていると、ちょっと安心する。 何というか「自分が作業を把握している」という感じがするからかな。 何かまとまった仕事をするときには、いそいそとTODOリストを作る。
ところで、TODOリストを作るのが嫌い(作りたがらない)という人もいる。 TODOリストを作ると、やるべきことが山ほどあるのが目に見えてしまい、 げっそりしてしまうのかもしれない。 気持ちはわかるけれど、作ったほうがいいと思うよ。
TODOリストは作るのだけれど「肝心の項目」をわざと書かないという人もいる。 つまり、「本来TODOリストに書くべき項目」のいくつかを自分の頭の中に残しておくのだ。 これも気持ちはわかるけれど、全部紙の上(コンピュータの上)に吐き出したほうがよいと思う。
膨大な「やるべきこと」がTODOリストという形で目の前に現れてもめげないとか、 まずは頭の中にあることをTODOリストという形で吐き出すとか、 そういうのは、意識して練習すればできることだと思うけれど、どうだろう。
TODOリストを作るときには、自分がやっている仕事から一歩後ろに下がる。 TODOリストを作るという仕事は、仕事に関する仕事、つまり「メタ仕事」だね。
フーガの技法を聞いているうちに、バッハについての文章が読みたくなり『バッハ小伝』を読む。 特に下調べもせず、本屋さんで見かけて買ったのだが、大当たりであった。感謝。 この本は歴史上最初に書かれたバッハの伝記として有名なものらしい。 短いけれどたいへん面白かった。 バッハはもちろん天才なのだけれど、謙虚でかつ勤勉であり、 技術を磨くために若いときから努力を惜しまなかった人らしい。 たとえば、クラヴィーアの技術を磨くため、力が不均等になりがちな指の訓練を怠らなかった。 また自分の音楽に甘んじることなく「自分の芸術に少しでも関わりがあり、 新しい手法の発見に役立ちそうなものを、何ひとつ見逃さなかった」(p.43)そうである (まあ、プロならば当然なのかもしれませんけれど、なんとなくバッハのような天才はそういう「努力」とは無縁なイメージを抱いていたので…)。
この本には、いささか興奮気味ではあるけれど、 バッハの作品を印象深く表現するフレーズがたくさん出てくる。 たとえば、こんな風に。
彼が流行の形式を顧慮することなく、 芸術の内なる泉そのものから旋律を発展させたところでは、すべてが今なお新鮮で新しく、 まるで昨日生まれたばかりのようである。(p.61)
確かにそんな感じがする。 バッハの曲は、何度聞いても汲み尽くせない何かが残っている。 だから聞くたびに何かしら新鮮な気持ちになるのだ。 まさに「生まれたばかりのような」新鮮さ。
他の作曲家とバッハを比較した、こういう文章もある。
〔フーガやカノンなどの曲の場合〕 バッハはまったく他の追随を許さない。 それはまったく彼の独壇場であって、 彼の周囲を広く見渡しても、まるで無人の荒野が広がっているかのようである。 かつていかなる作曲家も、バッハのフーガに比肩しうるフーガを書いた者はいない。 バッハのフーガを知らない者は、真のフーガとはいかなるものであり、 またいかなるものであるべきかを、理解することさえできないのである。(p.64)
というわけで、今日もバッハを聞きながら仕事をする。
編集長さんから原稿に対する疑問点がやってきたので、その回答を作る。 それから不足していた図も描く。
「ここは改善したほうがよい」をいう指摘を受けたときには、 指摘されたところの前後も見直して、 より広い範囲で改善できないかを検討すると良い。 つまり「改善点の指摘」を「読みにくい場所の指摘」として認識するのである。
今日もじりじりと原稿書き。 とりあえず、今日までの分を送付。
普段はiPod shuffleでバッハを聞いている。 「フーガの技法」や「音楽の捧げ物」は、原稿を書くときに良い。
フーガやカノンでは、同じメロディが少しずれて重なり、流れていく。 自分と重ねつつ、美しい音楽を構築するというのだから、何とも凄い。
フーガやカノンは自分を追っかけているとも言えるし、 ちょっと未来の自分と呼応しているとも言えるだろう。 自分が制約条件になっている構造というのは、 かなりプログラマ好みではないだろうか。
自分が制約条件になっているのに、大きな世界が展開する不思議。 小さな種の中に、可能性が折りたたまれている不思議。
エッシャーの版画や、再帰的な関数や、あるいはまた数学的帰納法のように、 小さな種から無限の広がりが生まれていく。
昨晩は 『パターン指向リファクタリング入門』の打ち上げに招待されました。
担当の編集者さんと、 ウルシステムズの小黒直樹さん、村上歴さん、高橋一成さん、 それに越智典子さん、 それから 平澤章さんたちと共に、美味しいビールを飲みながら楽しいひとときを過ごしました。 ありがとうございます。
結城のほうからは、 良い本を良い翻訳で出版してくださったことへの御礼をみなさんに申し上げました。
話題に出たキーワードはこんな感じでした: オブジェクト指向 / プログラミングとモデリング / パターンとリファクタリング / ペアプログラミング / 「コンパイルしてテスト」 / リファクタリングのパターン集 / 翻訳と書き下ろし / 訳語統一の難しさ / パターンの名前 / 悩ましいfactory / 制約の多い文章 / 「〜というような」「〜することができる」 / 加筆と削除 / J2EE / ViewはModelから本当に独立か / public static void mainと一気に書けるか / 翻訳と職人気質 / サラリーマンプログラマ / アートと技術 / 文章を練ることとリファクタリング / 名前の読み方をメールで確認 / 個人情報とプライバシー / 顧客との意思疎通 / 電車の中での読書 / 三島由紀夫 / 塩野七生 /
終盤のあたりで、 編集者に不用意にプレッシャーをかけてしまったような記憶がありますが、 どうぞおゆるしください。
原稿書きは今日も淡々と進む。 TODOリストを眺めてみると、残り分量は少ないのだけれど、 なかなか判断が難しい項目が残っている。 とりあえず、今日までに進んだ分を編集部へ送る。 ふう。
先日、札幌で活動なさっている朗読劇団の方から、 結城が翻訳・公開している『賢者の贈り物』を利用したいというメールをいただきました。 すぐに快諾の返事をしました。
フリーで公開しているもので、 無断で使ってくださってもまったくかまわないのですが、 どうしてメールを送ってくださったかというと、 「朗読用に削除したり編集したりしたいから」 とのこと。なるほど。もちろんその条件でもOKです。
これまでにも何回か書いてますけれど、 このように自分が公開しているテキストを利用してくださる方がいると、 何とも表現できない、いい気持ちになります。 フリーのテキストを公開することの喜び、ですね。
『賢者の贈り物』はこれまで、 テキストとフリーの翻訳を対訳風に並べて表示して、単語単位で辞書検索ができるようにした「英語教材風ページ」とか、 フリーのテキストと写真を組み合わせて「絵本風ページ」になったことがあります。 「CD-BOOK」という商品になったこともあります。
2004年の10月には、 福島テレビアナウンサーによる 朗読会「アムルーズ」で朗読されましたし、 同じ年のクリスマスには ネットラジオで朗読されました。
もともと、結城が『賢者の贈り物』を翻訳公開できたのは、 オー・ヘンリーの原文がパブリックドメインという「コモンズ(共有地)」に置かれていたからです。 そして結城の翻訳を元にして、また別の作品や活動が広がっていく…。 それはとても楽しく、得がたい体験だと思っています。
あなたのご意見・感想をお送りください。 あなたの一言が大きなはげみとなりますので、どんなことでもどうぞ。