2004年2月

結城浩の日記

目次

2004年2月29日 (日) - 平原綾香の「Jupiter」/ クヌース先生の『The Art of Computer Programming』

アマゾンで注文した平原綾香の「Jupiter」が届く。 以前にも日記で書いたけれど、私は中学生の頃、ホルスト作曲、シンセサイザー冨田勲の『惑星』に夢中になっていた。 特に「木星」のメロディには心が締め付けられるような気持ちになったものだった。 気持ちが抑えきれず、自分で歌詞をつけようとトライしたこともある。 平原綾香の「Jupiter」は、まさにその「木星」に日本語の歌詞をつけた歌だ。

聞いてみた。

歌詞は、うーん、ちょっと私のイメージとは違ったかな。 でも歌はいい。特に声が良い! また、(たぶん)自分のオクターブ上の声と重ねた「一人ユニゾン」も素敵ですね。

ちなみにこのCDと同時に届いたのは、 クヌース先生のThe Art of Computer Programmingである。 p.xixの演習問題4.が[HM45]になっているのを見て、時代を感じるわけです。

2004年2月29日 (日) - BSで「マッチ売りの少女」放送

結城の翻訳した「マッチ売りの少女」がBSで放送されるそうです。 以下、放送の担当をしている方からの情報をお知らせします。 お聞きになれる方はぜひどうぞ。

「BS音ステージ」が2004年3月1日にスタートすることになりました。 毎晩23:00〜24:00, 24:00〜25:00の2回放送します。 内容はまったく同じです。それぞれ9本の朗読が行われ、 「マッチ売りの少女」はその8本目です。 したがって23時台、24時台の後半に放送されます。 BSのラジオ放送をお聴きになるには専用のチューナーが必要です。 455チャンネルに合わせれば視聴できます。 2004年3月28日までは毎日このスケジュールで放送します。

2004年2月29日 (日) - 『13歳のハローワーク』を読む

村上龍の『13歳のハローワーク』という本を読んでいる。 ベストセラーになったので読んだ人も多いと思う。 この本は「子供」が将来の職業を考えるときのガイドの一種なのだが、 単なる職業紹介にとどまっていない。 「働く」ということは単に「どこかの会社に勤める」ことではないのだということを気づかせてくれ、 さらに「よく生きる」というのはどういうことなのかを考えさせられる本。 13歳に限らず、中高生、大学生、あるいは大人でも読んでよいと思う。

この本は「スポーツをするのが好き」「心のことを考えるのが好き」など、 自分が「好き」なことを基準におき、そういう人に向いている職業が紹介してある。 「職業」を紹介してあるのであって、「会社」を紹介しているのではないことに注意。 そして職業ごとに短い解説が書かれている。

今日の午後は「画家」のところを読んでいた。 少し引用してみよう。

(どうすれば画壇に入れるかという記述がこの前にある) しかし、絵画というアートの本質と、画壇とは何の関係もない。 画家にとって、もっとも大切なことは、絵を描き続けることである。 (中略)アルバイトをしながら、親や恋人の支援を受けながら、何でもいいから、 とにかく描き続けることだ。 絵が売れても、売れなくても、絵画表現の意欲と喜びとともに、 何年も何十年も絵を描き続けることができれば、 その人は画家である。

ところで、この本の中ではプログラマについての扱いはそれほど大きくない。 ITというくくりの中でさらっと触れられてはいるものの、 その面白みと苦労についてはあまり述べられていない。 それだけ変化が激しい職業なのかもしれないし、 単に歴史がない職業だからなのかもしれない。

そうだ、文章を書くのが好き、というのはどういう扱いになっているだろうか。 作家/詩人/俳人/ゲームプランナー/ジャーナリスト/ライター/コピーライター/新聞記者/評論家/出版業界/編集者/校正者/… このうち、ライターを引用してみよう。

(多数の出版物があるという記述の後) だから一般に思われているより、フリーランスのライターの数はかなり多い。参入するのが非常に簡単なのもこの職業の特徴。 多くの仕事があり、しかも専門性やノウハウをあまり必要としない仕事が多いからで、その意味ではフリーターに似ているかもしれない。 (以下略)

…ふうむ。 私の考える「ライター」のイメージとはずいぶん違うなあ…。

アマゾンの読者書評の中にもあるけれど、 この本の内容を「鵜呑み」にするのは危険。 この本を参考にし「いろんな職業があるんだ」「大きな会社に勤めるだけが人生ではないのだ」と考えるのはよいけれど、 この本だけを頼りに自分の進路を決めるのはよくない。 著者の村上龍によるフィルタリングとバイアスがかかっており、 また職業の記述にも、不正確な部分が多い可能性がある。 当然のことですけれど、念のため補足しておきます。

yomoyomoさんから、 ITProの「SE/プログラマは「13歳」に夢を与えない?」という記事を紹介していただきました。

2004年2月28日 (土) - AAA!CAFEにYukiWikiを設置

無料ホームページ提供をしているサイトにYukiWikiを設置する実験。 適当にGoogleで探して見つかったAAA!CAFEというサイトに設置してみる。

転送してごそごそいじると動き出した。 引っかかったのは二点。 動作確認できたので、すぐに撤収。

2004年2月28日 (土) - インタビューのアンケート到着

先月「オブジェクトの広場」で公開されたインタビュー記事に対する読者からのアンケートが、編集部から送られてきました。 とても好意的なアンケートやコメントが多く、 読んでいてたいへんはげみになりました。 読んでくださったみなさんに感謝します。 この栄光もまたイエスさまのものです。

2004年2月27日 (金) - 「固有IDのシンプル・シナリオ」デモCGI

「固有IDのシンプル・シナリオ」をデモするCGIを考えていたのだが、 時間がとれず私自身は作りそうもないので、CGIのアイディアだけメモしておく。

クッキーを用いて実現する。普通の人はクッキーは意識しないので、クッキーを「見せる」工夫が必要。 また「IDには意味のある情報は乗っていないが、固有IDであることが問題なのだ」というポイントをはずさないことが肝心。 たとえばクッキーにユーザ名などのsensitiveな情報を含める例はデモとしては正しくない。 ランダムな番号もいま1つ(本当にランダムなのか(この中にsensitiveな情報が隠されていないか)のユーザによる判断が困難なため)。 社会的に「良い例」と「悪い例」の両方がバランスよく入っていることが望ましい。 当然ながら、そのCGIには「このデモで使ったクッキーを削除する」というコマンドを明示的に用意するとよい。

ここでメモしたのは、もちろん「誰か興味がある人は作ってみては」という意味合いです。 技術的にはそれほど難しくない。CGIを自分で作れる人なら骨組みはすぐできるでしょう。 ただ、ユーザに固有IDのことを学ばせるという「見せ方」にはかなり工夫がいりそう。 そのCGIの「名前」も重要。 Webアプリケーション作成の期末試験みたいなレベルでしょうか。

ちょっとレベルを上げると「たとえ暗号化しても固有IDなら同じ」と「こういう暗号化ならばOK」もデモできたら最高!

「固有IDのシンプル・シナリオ」にはアクセスがたくさんありましたので、 上記のようなデモも(うまいものができれば)たくさんのアクセスがあるかもしれません。

誰か作ったなら、結城にお知らせくだされば、こちらからリンクします。 もしすでに類似したものが存在していたらごめんなさい。

2004年2月26日 (木) - YukiWiki 2.1.1公開 / 奥さんにWikiを勧める

プラグイン機能を入れたYukiWiki 2.1.1を公開しました。 大きなバグがなければ、この版を書籍『結城浩のWiki入門』に収録する予定。 これ以降、大きな修正はしばらく行わないつもりです。

奥さんが、 自分の「買うべきものリスト」や「やるべきことリスト」を管理したいのだが、 Windowsのメモ帳では不便だと言う。

Wikiを使ったらどうだろうと言ってみる。 Wikiだと雑多なメモも管理しやすいし、特別なソフトを起動する必要もなくて、 自分が普段使っているブラウザで入力できるし…。

奥さんは、ふーん…という反応。まだあまりピンとこないようだ。

料理のレシピも管理できるよ。と言ってみる。 Wikiはどう管理したらよいかわからないメモを突っ込むのによいんだよ。 自分の料理のレパートリーをとにかく突っ込んでおいて、 あとからたとえば「大根」で検索すれば大根を使う料理レシピが出てくるわけだ。

奥さんは、ちょっと興味を持ったみたい。

3月末に出版される『結城浩のWiki入門』を読んで 研究してくれるとよいのだが (^_^;

2004年2月25日 (水) - 解答編:REFERERにwikiを含むサイトはいくつあるか?

問題

www.hyuki.comのトップページのREFERERログを調べました。 この半年間で、REFERERの中にwikiという文字列を含んでいる、 ユニークなサイトはおおよそ何個あったでしょうか?

解答

あえて、数字を羅列してみます。

今回調べたのはwww.hyuki.comのトップページに対する過去半年のアクセスのREFERERです。 以下で「ユニーク」というのは、同じ値だったら複数回も1回にまとめているという意味です。

まず、URLに"wiki"を含んでいるユニークなURLは全部で6995個ありました (大文字小文字の違いは無視しています。無視してもしなくても大勢には影響はありませんでした)。

ふーん。 でも、これは、 http://websearch.yahoo.co.jp/bin/query?p=YukiWikiのように、検索エンジンの検索対象文字列がwikiを含んでいる場合もありますね。

そこで、今度は6995個のうち、QUERY以降を削除した上で、URLに"wiki"を含んでいるユニークなURLをカウントします。 すると、3387個になりました。

でも、これはあまりにも大雑把過ぎる。 というので、今度は上記の3387個を対象にして、ホスト名を調べてみます。

たとえば、http://cgi.example.com/cgi-bin/wiki/pukiwiki/とかいうのがあったらcgi.example.comだけを抽出し、数えてみました。 するとユニークホスト名2771個になりました。

でも、この2771個の中には、http://localhost/wiki/wiki.cgiとかいうのもlocalhostというホスト名でカウントされているわけですね。 それからhttp://127.0.0.1/wiki/wiki.cgi127.0.0.1というホスト名で。

じゃあ、というので、今度は外部からアクセスできるっぽいホストを探してみます。 (.jp|.com|.org|.net|.info)で終わるユニークホスト名をカウントしてみましょう。 本当はちゃんとアドレス解決できるかどうかを試せばよいのですが、面倒なのでごめんなさい。 すると、外部からアクセスできるっぽいユニークホスト名1792個になりました。

それじゃ、.jpだけだったらどうなるかな? 調べてみると.jpで終わるユニークホスト名1012個になりました。

さて、みなさんは「へえ」でしたでしょうか「ふーん」でしたでしょうか。

外部からアドレス解決できない(っぽい)プライベートなWikiが結構たくさんあるらしいというのも、興味深いです。 外部から見えないところで、Wikiって意外と使われているのかも。

2004年2月25日 (水) - 大量のHTMLの修正を行うPerlスクリプト

先日発見された、 content="css" という誤記はwww.hyuki.comのHTMLファイル全域にわたって広がっていた。 何しろHTML作成時にMakeWebの -include=define.txt という機能を使って共有していた部分が誤っていたから。 では define.txt を書き換えて全HTMLファイルを書き換えるかというと、それはそれで膨大なファイル転送が起きてしまう。 暫定措置として「フォームを含んでいるHTMLファイルのうち、 content="css" の誤記があるもの」だけを書き換えることにする。

まずは、上記の条件を含むHTMLファイルを探すスクリプトをPerlで書く(5分)。

use strict;
use File::Find;
find(\&wanted, "c:/your/own/root/dir/for/html/");
sub wanted {
    my $filename = $File::Find::name;
    if ($filename =~ /\.html$/) {
        open(FILE, $filename) or die;
        my $content = join('', <FILE>);
        if ($content =~ /<form/ and $content =~ /"css"/) {
            print $filename, "\n";
        }
    }
}

これでファイル一覧を作って眺める。 それから今度は書き換えを行うスクリプトを書く(5分)。

use strict;
foreach (<DATA>) {
    print;
    chomp;
    open(FILE, $_) or die("open:$_");
    my $file = join('', <FILE>);
    close(FILE);
    $file =~ s|content="css"|content="text/css"|;
    open(FILE, "> $_") or die("create:$_");
    print FILE $file;
    close(FILE);
}
__END__
(以下に修正するHTMLファイルの一覧を置く)

で、upftpで更新されたファイルだけを転送。 Perlって楽しい。

しまった、これ、Perlクイズに出せばよかった。

うう、更新情報が大量に更新されてしまった。しょうがないか…。

追記:

bulknews.netのみやがわさんから「私ならこうするかも」とメールをいただきました。

grep -rl 'content="css"' | grep .html | xargs perl -i -pe 's|content="css"|content="text/css"|' 

2004年2月25日 (水) - 『結城浩のWiki入門』予約開始

[WB]『結城浩のWiki入門』初校の著者校正が終わり、編集部へ戻す。 編集者さま、よろしくお願いいたします。

早くもインプレスダイレクトにて予約が開始されているようですのでリンクします。 副題は「YukiWikiではじめるシンプル・コラボレーション」から 「YukiWikiではじめる みんなで作るWebサイト」に変わりました。 ちょっぴりやわらかめに。

アマゾンはまだですね。アマゾンでWikiを検索すると、 Bo Leuf, Ward Cunningham著、yomoyomo訳の『Wiki Way』が「和書:全1件」で見つかります。

奥さんに「ねえ、今度の私の本は世界で2冊目のWikiの本なんだよ(たぶん)」というと、 奥さんは「ごめん、Wikiって何だっけ」と答える。 (^_^;

2004年2月24日 (火) - Web日記/Blogを書くことの楽しさ

梅田望夫さんの「Blogを書くことの心理的負担とそれを上回る魅力」という記事を読んで少し考えた。 この文章の中には「共通点のない人々に向けて書くということの難しさ」という項があり、 blogを書き続けているうちに疲れ果てていやになってしまうという話題が上げられている。 その原因は「共通点のない人々に向けて書く」ことが難しいから。

で、私は自分のことを考えた。 私はあまりwww.hyuki.comを運営して疲れたり、いやになったことがないように思う。 ほとんど毎日のように日記を書き、あちこちのページを更新していて飽きないし、疲れない(手が痛くなることはあるが)。 それは、読者が絞れているからなのだろうか。 と考えているうちに、私はあまり想定読者をおいていないかもしれないと感じ始めた。

たとえば私がいまこの文章を書いているとき「誰が」読むかを具体的には考えていない。 「読者のことを考える」というのが文章の鉄則だとは知りつつも、具体的な読者は誰もイメージしていない。 しいていえば自分か。自分に対して説明している。 自分に対してていねいに説明している。そして、自分がそれを読む。読み返す。

読み返してみてわからない部分があったり、わかりにくい部分があったら書き直す。 その繰り返しそのものを楽しんでいるように思う。 「わかりにくいったって、自分が考えていることなんだから、わかるはずじゃない」とあなたは思うかもしれない。 でも、ちょっと違う。 つまり、私が読み返すときには、自分の考えていることから情報を得るのではなく、 書かれている文章だけから情報を得ているようなのだ。

読んでいる私は書いている私に言う。 「おい、ここ、意味不明」

そうすると、書いている私は「そ、そうかな」と言いながらバックスペースキーをぱたぱたと打って、 書き直す。読んでいる私は再度読み返し「ふん、まあいいかな」などと言う。 そのやりとりが、どうも楽しいらしいのだ。

そうか。

私はウェブログ・ハンドブックでいう「自分という一人のオーディエンス」に向けて書くのが楽しいのですね。

それでは仕事に戻ります。

2004年2月24日 (火) - ぢみに校正

眠いぞ。 今日も『結城浩のWiki入門』の校正を「ぢみにやつてゐます」。 φ(x_x)

2004年2月23日 (月) - クイズ:REFERERにwikiを含むサイトはいくつあるか?

今日も『結城浩のWiki入門』の校正を「ぢみに」行っております。 φ(._.)

ふと「Wikiってどれだけ普及しているのかな」と思って、ログを見ていました。

ここで問題です。

www.hyuki.comのトップページのREFERERログをざっと調べて、 この半年間で、REFERERの中にwikiという文字列を含んでいる、 ユニークなサイトは何個あったでしょうか (URLの中で、?より後は切り捨ててからカウントします。サイトをカウントしたいので、同じURLは何回アクセスがあっても1と数えます。プライベートアドレス上のWikiからのアクセスも含めます)。

ざっくりした話なので、あまり統計的にどうかとか、REFERERの詐称がどうとかいう話は抜きね。

2004年2月21日 (土) - ぢみに校正

ぢみに校正をやつてゐます… φ(._.)

2004年2月20日 (金) - Wiki入門、初校の校正

『結城浩のWiki入門』の初校ゲラをいただいたので、楽しみながら校正を進める。 午前6時頃に私が食卓で朱を入れていると、長男が起きてきて「何しているの?」という。 Wikiの本の校正をしているというと、長男も読み始めた。 先日「ひとりWiki」を楽しんでいたので、興味深く読んでいる。

本を書く、というのは幸せな仕事だ。 自分の子供に「この本はお父さんが書いた本なんだよ」と示すことができるから。 形があり、重さがあり「これです」と相手の目の前に自分の仕事を置けるのは幸福なことだ。 私の活動を支えてくださるみなさんに心から感謝します。

2004年2月20日 (金) - 次男と遊ぶ

最近次男はLEGOやプラレールで遊ぶことが多い。 今日は少しまとまった時間がとれたので、次男と二人でLEGOで遊んでいた。 遊んでいた、といっても単に二人でそれぞれの制作にいそしんでいただけなんだが。

飽きてきたら、ソファに二人で並んで座り、 谷川俊太郎の『マザーグース』や、中川李枝子『三つ子のこぶた』を読む。 子供に詩を読む、というのは意外に面白い時間になる。 特にリズムが楽しい詩がいいね。 言葉の意味はわからなくても、リズミカルな言葉は心がうきうきとしてくる。 たとえば、谷川俊太郎のマザーグースにはこういうのがある (すみません、いま思い出しながら書いているので漢字の使い方は間違っているかも)。

あめがふる あめがふる
箱には こしょうがはいってる
おしゃまなレディはひとりのこらず
ドレスのすそをからげてる

いみはよくわからないけれど、 アクセントを強調してリズミカルに読むと、 踊りたくなるような楽しい歌になる。

本を読むのに飽きると、今度はリコーダーを吹く。テレマンの曲を吹いてから、 そこにあったアニメの楽譜をめくりつつ「天空の城ラピュタ」や「となりのトトロ」などを吹いて楽しむ。 「となりのトトロ」の「さんぽ」という曲を吹いていたら、 この歌の歌詞が中川季枝子作詞であることに気がつく。

2004年2月20日 (金) - 読者さんからのお便り

『改訂版Java言語プログラミングレッスン』の読者さんから、 熱いお便りをいただきました。 ありがとうございます。Javaの勉強、がんばってくださいね!

こんにちは。

私は文系の学部に通っていて、 独学でJavaを身に付けたいと思い、最初は兄が使っていた参考書を読破しました。 でも、しっくりこない部分が多く、ちゃんと理解した気がしませんでした。

そんなとき情報処理学科に通う友人が 『改訂版Java言語プログラミングレッスン』を薦めてくれて、 早速買ってみました。 今までしっくりこなかった所がしっかり解説してあって、すごくすっきりしました。 また、オブジェクト指向に対する理解もまだまだですが、つかめてきました。

一言「感動しました!」

(大学2年@文系)

この方に限らず、Javaが専門ではない文系の学生さんから、 ときおりお便りをいただくことがあり、 とてもはげまされます。 拙著が少しでもお役に立てたなら本当にうれしいです。 イエスさまに栄光を帰し、みなさんに感謝いたします。

補足: ある方から「神さまに栄光を返す」という表現は不適切で、 「神さまに栄光を()する」という表現のほうが適切である という指摘をいただきました。まことにその通りです。

2004年2月19日 (木) - ぴゅきうき

PukiWiki(ぷきうぃき)とYukiWiki(ゆうきうぃき)を合わせて、PyukiWiki(ぴゅきうき)だそうです。 個人的にすごくウケました。 (^_^;

2004年2月19日 (木) - 書く

淡々と原稿を書く。 じいっと考え、考えて書く。 本当にそうだろうか、と考えつつ書く。 もっとよい表現はないだろうか、と考えながら書く。

書く。

静かに仕事をすることは派手なニュースにならない。 けれども、 淡々と仕事に向かい、今日の仕事をこなすことはとても大切だ。 日々の糧を食するように。 一定間隔で呼吸をするように。 心臓がきちんと鼓動を打つように。

今日という日。

いまという時。

2004年2月18日 (水) - Firefoxのバグ報告が展開

先日、textareaでFirefoxが落ちるというバグの話題を日記に書いた。 自分の日記でバグ報告をしてもしょうがないので、 オープンソースの精神(?)にのっとり、bugzillaを使ってバグ報告をすることに。 はじめてbugzillaを使ったのでドキドキでしたが、大きな失敗もなく報告できました。 いろんな方が結城の報告を読んでくださり、追加報告や、サマリーの変更や、対象プラットホームの修正や、 カテゴリの変更や…さまざまなアクションがbugzilla上で行われ、 その様子がメールベースで通知されてくるのです。 なるほど、といいながら新鮮な体験を味わっていました (バグを追う担当者さんはたいへんでしょうけれど)。 自分のちょっとした報告がいろんな人への情報提供になるのだなあと思った次第。

2004年2月18日 (水) - アイディア・マトリックス

原稿を書いている。 書きながら、ふと、思いついたアイディアをスプレッドシートにまとめてみようと思いついた。 各列は章に対応させ、各行はジャンルに対応させる。そして交点となるセルにメモを書く。 書いてみると新しい発想がいろいろわいてくる。 アイディア・マトリックスと呼ぶことにしよう。

2004年2月17日 (火) - セント・アイヴズへ行く道すがら (解答編)

先日の女の子からのクイズ(これは有名な英語の歌ですね)の解答を書いておきますね。

解答は以下です:(マウスまたは CTRL+A で範囲選択などして色を変えてご覧ください)

7人の奥さんがいて、奥さんは7つの袋を持ち、袋には7匹の猫がいて、猫には7匹の子猫がいるので、 全部で7×7×7×7=2401となります。 ずいぶんたくさんになるものですねえ。

ちょっと待った。2401というのは子猫の数ですねえ。 子猫と猫と袋と奥さんを全部あわせると、 7×7×7×7 + 7×7×7 + 7×7 + 7 = 2401 + 343 + 49 + 7 = 2800 となります。

でも、実は、このような計算をする必要はありません。

歌をよく読みますと、 子猫と猫と袋と奥さんはセント・アイヴズへ向かっているとは書かれていない。 セント・アイヴズへ向かっているのは私一人であることがわかりますね(!)。

ただ、この問題には若干あいまいな点があります。 さらによく歌を読みますと、 「子猫と猫と袋と奥さん」 と限定して尋ねているようにも解釈することができます。 この場合には、セント・アイヴズへ行ったのはゼロということになります。

昨日から今日にかけて、解答を送ってくださった方は12人いらっしゃいました。 ちなみに、その中で一人またはゼロと答えた正解者は7人でした。 多数の解答をありがとうございます。

2004年2月17日 (火) - 7行で書くWiki

Wikiで検索しているうちにリンクでたどりついた「7行で書くWiki」。 2ちゃんねるの「Webプログラミング板」で「nobodyさん」たちが作ったもののようです。 はっきりいってすごいです。これだけでちゃんと動くWikiになります。

#!perl -w
use CGI":all";charset$c='EUC-JP';$w='\b(([A-Z][a-z]+){2,})';$f=script_name;$/=(
);($p)=(path_info||FrontPage)=~/$w/;if(open F,($m=param z)?">$p":$p){eval{flock
F,2};print F$m||=<F>}$_=pre(escapeHTML$m).hr.ul map{li"".localtime((stat)[9]),
$_}sort{-M$a<=>-M$b}grep/^$w$/&-f,<*>;s|$w|(!-f$1&&$1).a{href,"$f/$1"},-f$1?$1:
"?"|eg;put header,start_html(-title=>$p,encoding,$c,lang,ja),h1($p),startform(0
,"$f/$p"),p(textarea(z,$m,6,60),br,submit),endform,hr,$_,end_html

改行とスペースとを補うと、以下のようになります。

#!perl -w
use CGI ":all";
charset $c = 'EUC-JP';
$w = '\b(([A-Z][a-z]+){2,})';
$f = script_name;
$/ = ();
($p) = (path_info || FrontPage) =~ /$w/;
if (open F, ($m = param z) ? ">$p" : $p) {
    eval{
        flock F, 2
    };
    print F $m ||= <F>
}
$_ = pre(escapeHTML $m).hr.ul
    map{ li "".localtime((stat)[9]), $_ }
        sort { -M $a <=> -M $b }
            grep /^$w$/ &-f,<*>;
s|$w|(!-f $1 && $1).a{href, "$f/$1"}, -f $1 ? $1 : "?"|eg;
put
    header,
    start_html(-title => $p, encoding, $c, lang, ja),
    h1($p),
    startform(0, "$f/$p"),
    p(textarea(z, $m, 6, 60), br, submit),
    endform,
    hr,
    $_,
    end_html

2004年2月16日 (月) - セント・アイヴズへ行く道すがら

「私は、すぐ行かなくてはなりませんわ。次の問題を出しておきますね」

「え?」

「コンピュータをやっている方でしたら、 ビット数がちょっと増えただけで、とても大きな数が表現できることはご存知ですね。 8ビットで256通り, 10ビットで1024通り, 16ビットで65536通り, 32ビットになったら…」

彼女が言葉を切ったので、私はあわてて「42億だったかな」と答える。

「そう、42億9496万7296通りのものを表現できます。 2のn乗は、プログラマにとってはfamiliarな「切りの良い」数ですね。 ここからが問題です」

彼女は突然、英語で歌を歌いだした。美しいソプラノだ。

As I was going to St. Ives
    (セント・アイヴズへ行く道すがら)
I met a man with seven wives,
    (7人の奥さんを連れた男に会った)
Each wife had seven sacks,
    (奥さんはそれぞれ7つの袋を持ち)
Each sack had seven cats,
    (袋にはそれぞれ7匹の猫がいて)
Each cat had seven kits:
    (猫にはそれぞれ7匹の子猫がいた)
Kits, cats, sacks, and wives,
    (子猫と猫と袋と奥さん)
How many were there going to St. Ives?
    (セント・アイヴズへ行ったのは全部でどれだけ?)

歌い終わると彼女は私の答えを待たず、 すぐに姿を消してしまった。

私はそれほど暗算に強いわけではないけれど、 このぐらいなら何とか計算できる。

2004年2月15日 (日) - TEXTAREA要素のレンダリングについて

HTMLに詳しい方への質問です。

TEXTAREA要素の中身の最初に改行があるとき、 その改行は無視されるんでしょうか? つまり、以下の0と1はどのようにレンダリングされるか、という話です (省略してあります)。

0.改行なし

<textarea>こんにちは。</textarea>

1.改行1つ

<textarea>
こんにちは。</textarea>

2.改行2つ

<textarea>

こんにちは。</textarea>

驚くことに(?)Internet Exploreでも、Operaでも、Firefoxでも、 0と1は同じようにレンダリングされるんです…(2は異なる)。 ごらんくだされ。

0.

1.

2.

付記

neroさんから情報をいただきました。 SGMLでは開始タグの直後、終了タグの直前のline breakは無視しなければならない。 これはHTMLの要素にも例外なく適用される、とのこと。 詳細は以下のリンクを参照。

これはまさに、この日記で述べた現象に合致します。 YukiWikiで、先頭の空行が消えるという現象が起きていたのはこのためでした。

2004年2月14日 (土) - JUGEM

JUGEM(じゅげむ)というレンタルブログサイトができたので、試しに作ってみた。 いかにもブログツールである(意味不明)。

2004年2月14日 (土) - Mozilla Firefoxを落とすフォーム

以前から、 Mozillaブラウザを使って「結城浩の日記」のフィードバックを 送信するとブラウザが落ちる(ことがある)という症状が起きていました。 Firefoxが出たこともあり、また読者さんから情報をいただいたこともあり、 いろいろ試して原因らしきものがわかりました。

落ちるフォーム

<html>
<head>
<meta http-equiv="Content-Style-Type" content="css" />
</head>
<body>
<form>
<textarea></textarea>
</form>
</body>
</html>

落ちないフォーム

<html>
<head>
</head>
<body>
<form>
<textarea></textarea>
</form>
</body>
</html>

なぜか理由はわかりませんが、 <meta http-equiv="Content-Style-Type" content="css" /> が書かれていると落ちるようです。 具体的には、textareaの中にフォーカスがあってもキャレットが表示されず、 改行をたくさんいれてスクロールする段階まで来ると落ちるようです。

試したのは、

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6) Gecko/20040206 Firefox/0.8

です。

…ってここに書いてもしょうがないか、 バグ報告せねば。

Firefoxで試してみたい方は以下をどうぞ。

はじめてbugzillaを使ってみました。 何かまずいことをしていないかドキドキです。

追記。

y-Akiさんから、

<meta http-equiv="Content-Style-Type" content="css" />

ではなくて、

<meta http-equiv="Content-Style-Type" content="text/css" />

が正しいのでは、というコメント。 下を試してみると、確かに落ちません。

単に私の書き方がまずかったのでした。 (^_^; (でも、ブラウザが落ちるのはまずいとは思いますが)

ご指摘感謝します。> y-Akiさん。

2004年2月13日 (金) - Yuki::RSSバグ

Spiegelさんの指摘でYuki::RSSのバグに気がつく。感謝。 channel elementのrdf:about attributeにコンテンツのURLを書いていました。 本当はRSSのURIを書いたほうがよいらしい。 Yuki::RSSを修正。 とりあえず、日記のRSSは直しました。

なお、y-Akiさんのご指摘によって RSS 1.0の仕様を読んでみますと「ホームページのURLかRSSのURLを記述するのが普通」とありますので、 コンテンツのURLを書くのは間違いではありません。 XML::RSSの記述では、aboutがあったらaboutを、なければlinkをaboutにしています。

YukiWikiにも修正がいるな…。 ほかにもバグがみつかりそうなので、 まとまったらまたリリースします。 修正点だけメモ。 (Yuki::RSS 0.4を使ってください)

うーん、 YukiWikiのリリースにもCVSを使ったほうがよいですかね。 そのうち検討します。ごめんなさい。

    $rss->channel(
        title => $modifier_rss_title,
        link  => $modifier_rss_link,
        about  => "$modifier_rss_link?RssPage",
        description => $modifier_rss_description,
    );

というようなことを朝の7時ころにごそごそやっていたら、 長男が起きてきて「何しているの?」という。

長男「何しているの?」

結城「うーんと、説明しにくいな。」

長男「何のプログラムを作っているの?」

結城「RSSを出力するプログラム。」

長男「RSSって何?」

結城「サイトの更新情報を共通化するためのデータ形式。あちこちのサイトで更新情報が公開されているけれど、統一しているとプログラムで情報を集めてリストを作ることができるでしょう。」

長男「ふうん…。わかった、ウィキで使うんだね。」

結城「(びっくりして)その通り。何でそう思ったの?」

長男「だってウィキのメニューの中にRSSってあったじゃない。」

結城「なるほど。」

2004年2月12日 (木) - 『結城浩のWiki入門』の作業ログ分析

『結城浩のWiki入門』の原稿はCVSで管理しているので、 作業ログを元に月ごとの作業量を調べることができる。 Perlで書いたスクリプトは次の通り。 こういうときに、Perlはとっても楽だ。

# cvs logの出力から月ごとの作業量を調べる
use strict;
my %ins_count;
my %del_count;
my %all_count;
while (<DATA>) {
    chomp;
    if (m|^date: (\d\d\d\d)/(\d\d)/(\d\d).*lines: \+(\d+) \-(\d+)|) {
        my ($year, $mon, $day, $ins, $del) = ($1, $2, $3, $4, $5);
        my $key = "$year-$mon";
        # my $key = "$year-$mon-$day"; # 日ごと
        $ins_count{$key} += $ins; # 追加行数
        $del_count{$key} += $del; # 削除行数
        $all_count{$key} += $ins + $del; # 変化行数
    }   
}
foreach my $key (sort keys %ins_count) {
    printf("%s: %8d %8d %8d\n", $key, $all_count{$key}, $ins_count{$key}, $del_count{$key});
}
__DATA__
(以下、cvs logの出力を貼り付ける)

実行結果は次の通り。 最後でがんばっているのが明らか。 もっと計画的に仕事してくださいね > 自分。

2003-08:      585      582        3
2003-09:      218      195       23
2003-11:      132       82       50
2003-12:     3615     2805      810
2004-01:     2591     1912      679
2004-02:     9234     5496     3738

yomoyomoさん、 さっそく 反応+応援ありがとうございます。

2004年2月12日 (木) - 新刊予定:結城浩のWiki入門

結城の新刊は 『結城浩のWiki入門 —— YukiWikiではじめるシンプル・コラボレーション』 になりました。 2004年3月末ころの出版を予定しております(インプレス刊)。

Wikiを中心的に扱った本といえば、 yomoyomoさんが翻訳した 『Wiki Way』 http://www1.neweb.ne.jp/wa/yamdas/wikiway/が有名です。 結城のWiki本は、 日本で(世界で?)2冊目のWikiの本ということになります(たぶん)。

ということもあり、 結城のWiki本では、あまりマニアックな方向には進まないつもりです。 それよりは、Wikiに対して「どんなものなんだろう?」「何に使えるんだろう?」 と素朴に関心を持っている方々に何らかのヒントとなる本にしたいな、 と思っています。マニアックな本はどなたかが書いてくださるでしょう… (^_^)

Wikiのイメージをつかむためには、 具体的に触れていただくことが大事だと思い、 Apache + ActivePerl + YukiWikiの組み合わせをWindowsマシンにインストールする手順や、 使い方の解説も第II部の中で行っています。 でも、第I部と第III部ではWiki全般の視点に立って書き、 YukiWikiを使わない人にも役に立つ内容としています。

先日脱稿したばかりですので、 出版までに新しい動きがありましたら、 下記ページやこの日記などでアナウンスしようと思っています。

どうぞよろしくお願いいたします。

2004年2月11日 (水) - YukiWiki

長男がたいくつそうにしていたので、 ノートパソコンにApacheとActivePerlとYukiWiki 2.1.0をインストールして渡す (つまりローカルにひとりWikiをするわけだ)。 少し書き方を教えたところ「なるほど!」と喜んだ。

コメント欄の作り方を教えると、うれしそうに目を輝かせる。 「ねえ、書き込んだものはどうやって削除するの?」と聞くので、 編集メニューを使ってページ全体を編集すればいいと教えてやると、 すごく納得していた。

長男「おとうさん、こんなソフト、なかなかよく作ったもんだね。」

結城「そう?それほど難しくないよ。」

子供にほめられて、ちょっとうれしい私であった。

長男「どんなふうにして作るのかなあ。」

結城「Perlというプログラミング言語で作ったんだよ。」

長男「あ、Perlって知ってる。 Perlクイズって本あったよね。」

結城「そうそう。そのPerlでね、1300行ぐらいかな。」

長男「ええええ! そんなにたくさん書かなくちゃいけないの?」

結城「ん? だって、たとえば10個機能があって、それぞれ100行ずつだとすると、それだけで1000行だよね。」

長男「ふうん。」

長男が眠る前に、家内に話しかける。

長男「ねえ、おかあさん。今日、おとうさんが作ったソフトを使ったんだよ。」

家内「へえ。」

長男「それを使うとね、タグを書かなくてもHTMLが作られるんだよ。」

家内「へえ。すごいねえ…よくわからないけれど。」

2004年2月11日 (水) - RSS

日記のRSS をUTF-8に変更。

2004年2月10日 (火) - 日記のRSS Feed

よく考えてみたら、 この日記のRSS Feedを提供していないことに気がついたので、 さくさくと作ってみました。 RSSアグリゲートなさる方はどうぞ。

エントリの時刻(dc_date)はいつもお昼になっちゃいますけれど。

作るのに使った情報は次の通り。

2004年2月10日 (火) - 次の本

さっそく次の本の目次を作り始める。 この段階は楽しいんですよね。 思いつくことを思いつくままにとっとと書いていく。 文章の手直しもせず、誤字脱字も気にせずに、 心に浮かぶことをどんどん書いていく。

2004年2月9日 (月) - 脱稿

「ぢみに」仕事をした結果、なんとか脱稿しました。

イエスさま、ありがとうございます。 すべての栄光を主に帰し、 お祈りしてくださったみなさまに感謝します。

2004年2月9日 (月) - 教えてクン状態→解決

すみません、結城浩@教えてクン状態です。

Webのどこかでどなたかが「WikiとWebは同じ素材でできている」 という主旨の文章を書いていたように記憶していますが、 見つけることができません(WikiもWebも素材も大量にありすぎ…)。 もし出典(?)をご存知の方がいらっしゃいましたら、 ご一報くださるととても助かります。

(小一時間後…)

たくさんのご連絡をいただきました。ありがとうございます! うるうる…。

江渡浩一郎さんWikiはWebと同じ部品からできているという言葉でした。 私はyomoyomoさんの、 『考えるヒント』で読み解く!経由で読んだのでした。

2004年2月9日 (月) - ぢみに眠い / 救いの証

眠い。

まだ10箇所ほど加筆が残っているが、 現状を整理し、今後の予定も合わせて編集部へメール。

ある方から「救いの証(あかし)」をいただきましたのでご紹介いたします。

「救いの証(あかし)」というのは 自分がどのようにしてイエス・キリストの救いに出会ったかの「証言」です。 「イエスさまの救い」は数学のような論理で「証明」することはできませんが、 救われた人々の「証言」によってあかしされるものです。 そして、その証言には多くの場合、涙や苦しみから引き出された喜びが満ちています。

2004年2月8日 (日) - 礼拝 / ぢみに

礼拝。

お昼を家で食べる。 炊きたてご飯においしい明太子。 くふふ。

午後はずっと「ぢみに」書き続ける。 だいぶ形になってきたかな。 あとはていねいに読んでブラッシュアップ。 それから スティーブン・キングの公式「第2稿=第1稿−10%」を使ってみようか。

2004年2月7日 (土) - まだまだぢみに

まだ、ぢみにやつてゐます… φ(._.)

2004年2月7日 (土) - まだぢみに

まだ、ぢみにやつてゐます。左手が痛い。

2004年2月6日 (金) - 読者からのお便り

主婦&在宅ワーカーをなさっている読者さんからのお便りを許可を得た上でご紹介します。

3年前、パソコンを手に入れてから元プログラマの血がうずき、 プログラミングの独習を始めました。 タダがきっかけで始めたJavaですが、 その魅力にすっかり取り付かれ、現在に至っています。

試行錯誤しながらある程度Javaを理解した時点で結城さんのお名前を知りました。 評判の入門本を書店で見ましたが「最初にこの本に出会えたら」と激しく後悔しました。 今さら入門本は買えないけれど、いつか結城さんの本を買いたいと思っていました。

最近、学習の幅がEJBにまで広がり、デザインパターンの学習が必要になりましたので、 迷わず結城さんの デザインパターンの本を買いました。 デザインパターンは思ったより複雑で難解でしたが、 結城さんの解説は分かり易いのはもちろん、 暖かいお人柄が感じられる著作だと思います。

全体を一通り目を通したところで、 今は、じっくりと読み返しています。 すっかり理解できたら、 続編を購入するつもりです。

すてきなメッセージをありがとうございます。 「元プログラマの血」っていうのがよいですね。 (^_^) 拙著のご愛読を感謝します。

2004年2月5日 (木) - ぢみに

今日も今日とて、ぢみにやつてゐます。左手が痛い。

夜遅く帰ると、家内と次男は眠っていて、長男だけが起きていた。 ふとんの中から私に「お帰りなさい。クイズ出して…」と眠そうな声を出す。

結城「夏は、なぜ暑いんだろう。地球が、太陽に近くなるからかな?」

長男「ん? …ちがうと思う。日本は夏、暑いけれど、そうでない国もある…」

結城「ふむふむ」

長男「地球の地軸が傾いているからかな?」

結城「ほほう! じゃあ、地軸が傾いていると、どうして夏が暑いんだろう」

長男「えっとねえ…。太陽が照っている時間が長くなるから、かな」

結城「うん、いいね!」

(注意:後から気になって調べたところ、これは間違い。 太陽が照っている時間よりも、太陽の光に地面に対する角度が重要なのでした)

結城「それじゃ、次の問題。 地球上で、一日中太陽が見えるところはあるかな?」

長男「ええと、北極や南極?」

結城「そうだね。時期にもよるけれどね。一日中太陽が照っているのは何ていう?」

長男「知らない」

結城「白夜」

長男「ひゃくや?」

結城「違う。白い夜と書いて、びゃくや。地軸が傾いていなければ、一日中太陽が照っている場所は、南極と北極の二点しかなくなる」

長男「ふうん」

結城「そのとき、南極や北極では太陽はどんな位置に見えるだろう」

長男「どこかな」

結城「きっと、地平線すれすれをぐるっとまわるんじゃないなかあ」

長男「ねえ、お父さん。もしも地軸がこうなっていたら(太陽と地球を結ぶ線と一致していたら)、どうなるかなあ。地球の半分は一日中昼になるよねえ」

結城「そうだね。残りの半分は一日中夜。」

長男「それじゃ、まるで月みたいだ」

結城「なるほど、なるほど。…はい、それではおやすみね」

長男「おやすみなさい」

2004年2月4日 (水) - 今日も

今日もどんどん文章を書く日。

2004年2月3日 (火) - 眠い

眠い。

2004年2月2日 (月) - 毎日ぢみに / 立方体の切断

毎日、ぢみにやつてゐます。左手が痛い。

[WB] とっとと書いている。 最前線を拡大しつつ、以前書いたところを読み直して朱を入れ、 朱をファイルに反映させている。 動作テストを行い、画面のキャプチャを試しにとってみる。 ソフトのまずい部分を修正し、あちこち整える(CVSって便利だ)。

長男との会話。 先日「立方体を平面で切って、断面が正六角形になるようにせよ」というクイズを長男に出していた。

結城「(紙を出して立方体の見取り図を描き始める)」

長男「クイズの答えを描くの?」

結城「その通り。…こんな感じかな。」

長男「ふうん。これで正六角形になるの?」

結城「うん、そうだよ。ふうむ…この立方体の展開図を作ったら、断面の正六角形はどういう図形になるだろう。」

長男「展開図の上で?」

結城「そう。」

長男「うーん、どんな図形になるのかな。」

結城「やってみようか。」

(描く)

結城「うーん、作ってみたくなったな。これを組み立ててやると、断面に正六角形が現れる立方体になるのかな。」

長男「作ってみようよ。」

結城「作ってみようか。」

(作る)

結城「うーん、いまひとつきれいにできなかったが…。」

長男「でも、いちおう六角形。」

以下、画像へのリンクを張りますが、 立方体を平面で切って正六角形を作る方法をちょっと想像してみてくださいね。

私と長男の様子を見ていた次男も、つられてサイコロを作り始めました。 クレヨンできゅきゅっと展開図を描いて、私に「このサイコロ、数字書いて組み立てて!」とのたもう。 うーむ。面の数は合っているが、各面が正方形じゃないぞ…。 (^_^; 組み立てられるのかな。

2004年2月1日 (日) - きょうもぢみに / 色変更

ぢみにやつてゐます。

午前中は礼拝。 神さまを賛美しているうちに、涙が出るほどうれしくなりました。

お昼はデパートのデリカで食べる。 私は丼物、家内はセットメニュー、子供たちはパンを食べました。

2月になって、ちょっと気分転換にサイトの色を変えてみました。 CSSを使うと変更が楽ですね。 ちなみに私はCSSの生成にも MakeWebを使っています。そうすると、 CSSの中のあちこちにある色設定がマクロ展開で簡単に書けるからです。 現在は、モノクロ系 / ピンク系 / 緑系 / 秋色 / 青系を作ってあり、 30秒で www.hyuki.com 内の(ほぼ)全ページの色を切り替えることができます。 切り替わらないページもあります。

ぜひ、感想をお送りください

あなたのご意見・感想をお送りください。 あなたの一言が大きなはげみとなりますので、どんなことでもどうぞ。

あなたの名前: メール:
学年・職業など: 年齢: 男性女性
(上の情報は、いずれも未記入でかまいません)


何かの理由でうまく送れない場合にはメール hyuki@hyuki.com でお願いします。

豊かな人生のための四つの法則