> 結城浩の日記 > 2006年8月 | 検索 |
プロフィール | 日記一覧 | 日記ダイジェスト | Twitter | RSS |
|
2006年8月末に『新版C言語プログラミングレッスン』の入門編・文法編が刊行されます。
本書は1994年の発売以来、多くの読者の支持を受け、 増刷および改訂を行ってきたC言語入門書のロングセラーです。 このたび、MS-DOSが中心であった部分をWindows中心に改めたり、 現在の処理系にそぐわない記述を改めるなどの修正を行いました。
『新版C言語プログラミングレッスン』もまた、みなさんのお役に立ちますように。
午前中は礼拝。午後は図書館。奥さんと子供が本を選んでいる間、席に座って私はくーくー眠っていた。
帰ってからも少し眠る。
夕食後、眠くてしょうがないので、また眠る。寝てばかり。
夜にごそごそ起きて原稿を書く。
やっと連載の原稿できました。送信。感謝。
さて、本の仕事に戻りましょう。
多忙なり。ふみゃみゃ。
見本到着。ありがとうございます。 これはもうアナウンスして良いんでしたっけ…っと。 メールします。
忙しくて日記が書けない。
つまんないな、という読者さんのために過去の読み物をご紹介。
この中にある「2004年の仮想キャンプ」って、もうおととしの話なんだ。ひゃ。
多忙なりね。うにゃにゃ。
* * *
それはそれとして、 いろんな方からいろんなメールをいただきます。 お返事はできませんけれど、あなたのことも神さまに祈っていますね!
今日は第0章を読み返して修正。ううーん、まだまだだよなあ…。
* * *
その後、練習問題をずっと書いている。
ぢっと作業ログを見る…ふえーん。何で図を一枚書くだけで100分も掛かるんだよう…。
* * *
くうっ、練習問題って難しいなあっ。 易しすぎず、難しすぎず、その章の内容が理解できたかどうかが確認できて、 できれば実用性もあって、そしてウィットが効いているように作るなんて無理だよ。
無理って言うな。祈って進め。
…はい。
* * *
トドちゃん、増える一方。
ε( v ゜ω゜) < TODO 129頭
本を書いています。疲れたら連載記事に切り替わります。もう水曜日です。きゃあ。
すべてのサンプルプログラムにテストコードを書いていました。 テストも考えはじめると奥が深いですね。 テストしやすいコードを書くということは重要なポイントの一つかも。 そういえば、以前どなたかがテスト容易性ということを書いていたような気がする。 平鍋さんだっただろうか。
いったん本のはじめに戻って「はじめに」を書いています。 ずいぶん以前に書いた文章を読み返して、全体的に整え、さらに細かい部分も修正。 あと20回くらい読めばだいぶレベルアップするかな。
最近よく思うこと:
文章の品質は「読むこと」で上がる。「書くこと」で上がるのではない。
文章の品質は「削ること」で上がる。「加えること」で上がるのではない。
追記
平鍋さんからお返事をいただきました。許可を得て公開します。
平鍋さんから
はい、テスト容易性、重要ですねー。
ところで、本を書く、というのを、文章というインターフェイスを介してのサービス提供(writer)と、 サービス受益(reader)とのメッセージ伝達、と捉えると、そのサービス品質は当然その言葉からして、 サービス受益者の視点から評価されるべきでしょうね、だから、おっしゃるとおり、読むことで、文章の質はあがる、 というのは、ほんと、その通りだと思いました。
また、writer が reader の視点で書けるか、というのは、 例えばオブジェクトの利用者の視点でインターフェイスが作れるか、というのと似ていますね。 評価=テスト、読む=利用、書く=提供、などという言い換えができるとも、思います。
本を書いている。淡々と進む。
疲れたら、連載記事に切り替わる。淡々と進む。
本を書いています。またトドちゃんが増殖してきました。
ε( v ゜ω゜) < TODO 83頭
ところで、「TODOを解決すること」をメタファとしてどう扱うかは考えどころ。 TODOが一個解決したら、トドちゃんが一頭……あわわ。それはかわいそう。
そこで考えました。 TODOの解決というのは、物事をあるべきところに収めるわけだから、 トドちゃんを海に帰してあげればよいんですね。
「解決したTODOが1個」→「(海に|おうちに)帰ったトドちゃんが一頭」 ということにしましょう。
……今日は、トドちゃんが増えるばかりで、トドちゃんは一頭も帰りませんでした。 (^_^;
以下「トドちゃんを数えるPerlスクリプト」です。
# *.txtのファイルからTODOの個数を数える use strict; use warnings; my %count; my $total; for my $filename (glob("*.txt")) { open(FILE, $filename) or die "$!: $filename\n"; while (<FILE>) { next if not /TODO/; $count{$filename}++; $total++; } close(FILE); } for my $filename (sort { $count{$b} <=> $count{$a} } keys %count) { print "$count{$filename} = $filename\n"; } print "\n"; print 'ε( v ゜ω゜) < TODO '; print "${total}頭\n";
追記
読者さんから「globの結果をsortするのは不要」という指摘をいただきました。 その通りです(直しました)。ていねいに読んでいただきありがとうございます。 ご指摘感謝します!
追記
本を書いている。
一章一章ていねいに読む。 時間をたっぷりかけてゆっくり読む。 気になったところをメモしながら進む。 疲れてきたら「ここまで読んだ」マークをつけて休む。 一息いれて、続きを読む。
不要な言葉を削除する。 言い回しを簡潔にする。 長い文を短くする(ただし、短くしすぎない)。
フォーカスを絞る。 段落の一番目の文で読者の心をつかむように(そして、残りの文で放さないように)。 短い文の短さが際だつように、長い文を混ぜる。 とん、とん、とん、と進んだところで、ずばりと斬る。
読者の連想と共鳴させる。 あれ?これってさっき読んだのと関係してるかも、 と読者が気づきかけたところでキーワードを提示する。 響け、心の音叉。
見下さないで、励ます。 誇らないでへりくだる。でも、へりくだりすぎない。 力強く進み、ほっとくつろぐ。 新しい輝きと懐かしい香りを共存させる。
そんな、今日の仕事。
本を書いています。
本文全体はあらあら書けている。 いまは頭から一章一章ていねいにブラッシュアップしている段階。
…なんだけれど、じっくり攻めているうちに、わーっ!という気持ちになってきた。 ので、全体をがさがさと集めてLaTeXに変換してPDFに変換して、ぱらぱらっと眺めてみた。
すごく安心した。
何百ページかのPDFをぱらぱらとスクロールしていると、よく書いたなあ、と思う。 全体をつかんだ気分になれる。 安心感。
眺めているうちに、懸案事項のひとつにいい解法が見つかった。 それから、各章のタイトルでもいい案が見つかった。
木を見たり、森を見たり、また木に戻って、 花を愛で、枝振りを見て、また森を見て、葉っぱを見て、さらに葉脈を調べ……。 そういういろんなレベルの視点が大事なのかもしれない。
今回は「あっさり系」の本をねらっているのだけれど、 読んでいるうちに、意外と濃厚で深い内容を持っているということも分かった。
本を書く仕事は大変だけれど、とても楽しい。
今日も、本を書いています。
明確に書こうと努力している。 その結果、自分で作ったトラップにはまることがある。 自分で書いた文章を読んで、するすると理解できるために、
「なんだ、単にそういうことか。当たり前だね」
と感じてしまうというトラップだ。 理解する前は理解するのに四苦八苦していたのに、 理解したとたん、それは当たり前と感じてしまう。
で、ついつい「これじゃ物足りないから、こういう話題も書こう」などと欲張ってしまう。 でも、それは(程度問題はあるけれど)間違っているように感じる。 詰め込みすぎになりがち。フォーカスが曖昧になる。強調点を見失う。
忘れる努力が必要だ。知らない状態に自分を戻す努力。 初心に帰る努力といってもよい。 そして読んだ後に「ふうん、なるほどね。よくわかったよ。でも、もうちょっと学びたいな」 というあたりの理解度に落ち着くようにしたい。
望みすぎかな。
でも、旗は必要なのだ。旗——目標——ヴィジョン。
本を書いています。
言葉って難しいなあ。 いや、言葉が難しいんじゃないな。 本というものが十分複雑で、 書いている途中でさまざまな判断を必要とするからだな。 未知の情報がたくさんあるのに、現在判断しなくてはならないからだな。 ソフトウェアと似ている。
細心の注意を払って、大胆に判断を行い、 間違ったことがわかったら早急に方向転換するのがよいのだろうか。
…なんとなく後付けの理屈っぽいな。捨て。
判断は会議室で行われるのではなく、 エディタのキーボード上で行われるような気がしている。
…比喩も冴えないな。却下。
祈りつつ、次の一歩を歩め。
午前中は礼拝。
お昼からみんなで図書館。
帰ってきて私はソファでごろんとお昼寝。 セミの声が遠くで聞こえて「ああ、夏だなあ」と思う。 起きると、奥さんも別のソファでお昼寝していた。
夕方から奥さんと二人で夕食の買い出しに行く。
いまは、食事も終わり、子供たちがピアノの練習をしている。
今月末までの大きなお仕事みっつのうちのひとつが一段落した。感謝。
「なかなか思ったように書けないものだ」とあなたは言うのですね。 けれども、この言葉には二つの意味が混ざり合っているように思います。 書きたい文章が心の中に確かにあるけれど、それを取り出せないという意味。 そして、心の中の文章は取り出せたのだけれど取り出してみたら思っていたことと違うように感じられるという意味。 この二つの意味がある。この二つ、同じようだけれど違う。
…いやいや、言葉の端をピンセットでつまむような話はどうでもよい。
「思ったように書けない」というのは誤りではないか。 「あなたが書いたことが、あなたが考えたこと」というのが真実なのではないか。 書いたこと。書けたこと。 それだけが考えたこととはいえまいか。
ときに、文章の内在律によって、あなたが思ってもいなかったことすら書ける場合がある。 それは考えてはいなかったことだけれど、結果的にはあなたが考えたことだ。
だから書くのが難しいのは当然のことだ。 考えることが難しいからだ。
文章は思考を前提とする。思考は難しい。
文章は理解を前提とする。理解は難しい。
文章は選択を前提とする。選択は難しい。
文章は主張を前提とする。主張は難しい。
さらに読み手の問題もある。 ときに読者は、あなたが書いた以上のことを読み取る。 それはあなたが書かなかったこと。だから当然考えもしなかったこと。 しかし、ときおり、不思議な偶然によって(偶然なのか?)、 読者が受け取った内容が、あなたの思考の未来の帰結に一致することがある。
そのとき、不思議なことが起こる。
一日の仕事を終えると、どろりんとしたべったら漬けのような気分になる もちろん、べったら漬けの本当の気分など知らないのですがね…。 それに…べったら漬けってどういうのだっけ。
でも、とりあえず作業ログを書いてsvn commitする。 そんな、べったら漬け。
夜も仕事。
作業ログを読んで、 次の一歩を考えて、 次の一歩を進め、 作業ログを書き、 Subversionにcommitし、 バックアップを取る。
さまざまなメディアのビットパターンをいくつか反転させる仕事——たいていの仕事はそうだよね——も、今日の分は終了。
ビットパターンの中に、喜びと驚きと輝きが詰まっている。
今日も仕事です。
今日は、全自動化はできないけれど、機械的な作業が多い。 こんなときには、こうする。
機械的な場面では「私は機械。淡々と仕事をこなし心を動かさない。正確無比で同じペースで作業を進める」と自分に言い聞かせる。
機械的ではない場面では「私は人間。作業全体を俯瞰し、心を広げ、読者のことを思い、総合的に判断する」と自分に言い聞かせる。
「私は機械」などと言っていても、心は勝手に動くから、面白いことに気づく。 そんなときには、メモを取るために人間に戻る。
二つのモードを行き来していると、 単調な作業であっても「自分が作業をきちんとコントロールしている感覚」があるためにけっこう楽しい。
リズムとメロディに乗って、今日も進め!
最近は、ばりばり仕事。 読み読み読み読み、書き書き書き書き。 トドトドトドトド、バシバシバシバシ。 ふひー。
午前中は礼拝。 午後からは次男とデート。 おもちゃ屋さんで、ひとしきりレゴブロックを楽しんでから、 スーパーに寄ってアイスクリームを食べる。 お家に帰ってきてお昼寝。
『増補改訂版Java言語で学ぶデザインパターン入門』は、 増補改訂されてから、早くも第6刷になろうとしています。 読者のみなさん、いつも応援をありがとうございます。 この機会にぱらぱら読み返していたのですが、 自分でいうのも何ですけれど、この本、すごく面白いですね。 思わず最後まで一気に読んでしまいました。
謝辞にレビューアのみなさんのお名前を掲げています。 その中に、先日列車の事故でお亡くなりになった石井勝さん(まさーるさん)の名前もあります。 石井さんからは何度もすばらしいアドバイスをいただきました。 お人柄がしのばれる優しい文体のメールでした。 時の流れや人生というものを思い、 何だか…しみじみとした思いになってしまいました。
でもって、こちらはお約束。
追記:第6刷ではなく、第7刷でした…(^_^;
拙著『Java言語プログラミングレッスン』の読者さんから、 とても嬉しいお便りをいただきました。 許可を得て公開いたします。
読者さんから
『Java言語プログラミングレッスン』の読者です。
数年前に下巻のサイン本を購入させて頂きました。 それ以来、何度も読み返しぼろぼろになるまで読んでいます。
今日、Javaを使ったプロジェクトがひとつ区切りがつきました。
この本のおかげで、これまで苦手意識のあったオブジェクト指向をしっかり理解できました。 また、基本的な考えがしっかりと書かれているため、 プロジェクトで必要な技術を理解する上で困る事はほとんどありませんでした。
Java によるプログラミングの楽しさも教えていただけたようで、 おかげさまで(?)プロジェクトの最後に修羅場を迎えても楽しみながら対応できました。
このプロジェクトでは、最初は自分の周りの数人が幸せになれるように作業を行っていましたが、 最終的には国際的なメーリングリスト(とはいえ数十人ほどですが...)で紹介されるぐらいになりました。
人に喜ばれるプログラムを書く事ができるのは幸せです。
次のプロジェクトでもJavaを使ってみたいと思っています。 今はデザパタ本を読んで吸収しています。(とても楽しいです。)
とても良い本をありがとうございました。
結城より
修羅場を越えつつも、 楽しみつつ、また生き生きと仕事をなさっている様子が伝わってくるようなメールですね。 拙著が少しでもお役に立てたようで、本当にうれしいです。
これからも、お仕事がんばってくださいね!
『Java言語プログラミングレッスン』は何度か改訂を行い、 ロングセラーとなっているので、このような著者冥利に尽きるようなメールをときどきいただきます。
読者のみなさん、ありがとうございます。
あなたのご意見・感想をお送りください。 あなたの一言が大きなはげみとなりますので、どんなことでもどうぞ。