'cause I am a foolish man
今日という日
18時ごろ起きる。酷い生活だ。 で、音楽を聴いたりセキグチさんの図を修正したりしてから、 5時15分ごろ寝る。
今日のブックマーク
- マキノさんの日記:
CSSがつけられている。
pre
要素の背景色が本文と違うと分かりやすい。 - カワチ君の日記: 本人は大分 (と愛媛) にいるようなので本文の更新はないが、 写真の方はmoblogなので更新されているようで、チェックしている。 ……それにしても、 写真180番に「凶」の文字があるのが不吉だ。 そういえばぼくは今年になってからまだ初詣に行っていない。
- 『粗悪な記録型DVDメディアが、なぜ“怖い”のか』 (2003-03-11:ZDNN): ノガミ君の日記経由で知った。
絶滅のおそれのある日本語?
『絶滅危惧の日本語、書物で保存 元電通局長が出版』 (2004-01-05)にあるように、 『懐かしい日本の言葉』という本が出るそうだ。 面白そうなので買ってみてもいいかもしれない。
それはいいとして、 この記事に取り上げられている言葉をどのくらい知っているか一つ一つ調べてみたら、 次のような結果になった。
- 聞いたことがない。何それ?
-
- 「空茶でごめんなさい」
- 「お平らに」
- 「粉をかける」
- 「お膝送り」
- 「乳母日傘」
- 「惻隠の情」
- 「磯のアワビの片思い」
- 「引かれ者の小唄」
- 何処かで聞いたことがある気はするけれど……。
-
- 「おためごかし」
- 「うちの助六」
- 「来たか長さん待ってたホイ」
- 小さいころ読んだ童話などの本や、映画で使われていて知ってはいる。
-
- 「ちちんぷいぷい」
- 「へちゃむくれ」
- 「おきゃん」
- 「夜もすがら」
- 「そこはかとなく」
- 「たおやか」
- 「唐変木」
- 「感謝感激雨あられ」
- 他人が使っていたのを聞いたことがある。
-
- 「お天道様に申し訳ない」
- 十分に使うことがありそうなくらい“生きている” (でも実際に自分で言葉を発する機会はない気がするが) 。
-
- 「夜なべ」
- 「お足もとの悪いところ」
- 「がってん承知の助」
- 「べっぴん」
- 「日和見」
- 「おたんこなす」
- 「ちょこざいな」
- 「川の字に寝る」
- 使うでしょ。
-
- 「人聞きが悪い」
- 「舟をこぐ」
- 「かまとと」
明日からNYS (New Year School) IIIだ
プログラミングなど全く正月らしくないことをしていて年始を完全に潰してしまった (しかもやろうと思っていたことがまだあまり終わっていない) のだが、 もう明日の夕方からNYS IIIで筑波に行かなくてはならない。 ということで明日は起きたらその準備をしなくてはならない。 きちんと忘れものをしないようにしなければ……と考えていたら、 色々なことに気付いた。
年賀状
何だかんだ言って今年はまだ1枚も年賀状を書いていないので、 向こうで年賀状を書けるように葉書や住所のメモを持っていかなければならない。 しかも、 出すのは遅くてもある程度の数を出すぼくは、 もらっていない相手に新年になってから出す迷惑な奴だ (というか例年は1日には書き始めているので、今年は例年に輪をかけて酷いな……) 。
日記
「向こうで日記を書けるようにiBookも持っていかないとなぁ」などと考えていて、 とんでもないことに気付いた。 というのはまだ文章を書く目的でiBookを使ったことがない。 もちろんウェブブラウザを利用してウェブ掲示板に日本語の文章を書くことはよくする。 だが、 FinkのEmacsで日本語を使えるようにできていないので、 「エディタはEmacs!」な人間であるぼく[*1]は、 自然と日本語の文章を書けないのだ。 ということで、明日までに何とかしないと (いざとなれば紙に書いておいてもよいのだから重要性は低いが) 。
叱られている
マキノさんのところに『勝手にプログラミング談義』というページができている。 そこの紹介に「Web 上に転がっているいろんな人が書いたプログラムやらその断片やらをネタにして」とあるのを読んだ瞬間、 「「転がっている」と言っても、遭遇確率的には比較的近くの人間の書いたものが多くなるのだろう。だから、ネタにされているかも……」と感じた。
実際に記事を読んでみたら、 見事に 『とっても強力な道具』 でネタにされている。 取り上げられているのは1日の日記の『バグの記録』に書いたスクリプトだ。 まぁ、 「誰か何かコメントをくれるかもしれないし」と思って自分でわざわざウェブ上に載せたスクリプトなので、 厳しいことを書かれてもそれは自分の意図どおりである。 むしろ有難いと思うべきだろう。 ただ、 折角なのでここには少しだけ感想を書いておこうと思う。
REXMLかUconvか
記事の前半で、 「プログラム開発とデバッグの方法が基本的に理解されていないように見えるのがまずは問題」だと書かれてしまった。 バグの原因について、 REXMLとUconvのどちらか一方またはそれらの相互作用で起きている可能性があるというようなして適当な記述をしたからだ。
確かに自分でもどちらが悪いのか追求すべきだったと思う。 というのは、 入出力するXMLデータにASCII文字しか使わないようにすれば (すなわち日本語を排除すれば) Uconvを使わなくて済むので、 少なくともUconvが原因に絡んでくるかこないかを調べるのは簡単だと分かっていたからだ。 ただ、 とりあえずスクリプトの中に標準出力に様々なものを出すくらいの記述は入れたが、 徹夜明けで眠かったので、 スクリプトをコピーして新たにテスト用のスクリプトを作ったりデータを入れ換えたりするのが面倒だった。 「とりあえずまともな動作をするようにすることができたから今日のところはいいかな」と適当に作業を終えて、 そのまま日記に適当な記述をしてしまった。
少なくとも原因の分離をする方法が分からなかったのではなくて、 その気力がなかっただけである。 きちんとそう書かず、 正しく受け取られなかったのはぼくの文章力がないせいだ。 それに、どちらにしても自分がバグの原因の追求を怠ったまま記述したことは確かだ。 反省しなければならない。
ライブラリの使用・クラスの作成
記事の後半では、 「問題はこのプログラムの構成原理だ」と書かれている。 長々と書かれているが、要点を自分なりにまとめると次の二点のようになるだろう。
- 特にXMLを解析するのではなく、 ただ単にファイルの末尾近くに数行 (要素で言えば1つ) 加えたいだけなのに、 無駄にREXMLというライブラリを使っている。 わざわざDOM-likeなtreeをメモリ上に作らせているので、 コードの面だけでなく時間・資源の面でも無駄である。
- インスタンスの生成の必要などないのに、 無駄にクラスを作っている。
確かに、 言われてみると全くそのとおりだと思う。 REXMLのようなXMLをparseするものは本来XMLを読み出すためにあるので、 ろくに内容解析をせずただ内容を追加するだけの場合は「XML」として処理せずテキストとして処理した方が圧倒的に簡単になる。 むしろ、XMLがテキストファイルであることの利点は、 人間が扱えるだけでなくフィルタプログラムを書けることにもあると言える。 一方で、 特定のデータ構造をもったインスタンスを幾つも作成できるというクラスの大きな利点も、 このスクリプトでは全く必要ない。
何故自分があんなスクリプトを書いてしまったのか、本当に不思議だ。 色々と考えてみると、 結局のところ原因は次のようなことにあるのだと思う。
- とりあえずXMLを扱う (すなわち自分の作ったファイルを読み込ませ、要素を追加したり消したり移動したり、あるいは一括処理したりする) スクリプトを書いてみたいという気持ちがあった。
- とういわけで、細かいXMLの文書型などは決めずにREXMLを使ってスクリプトを書き始めた。
- なんとなくいつもやっているように幾つかの関連付けられた変数を1つのクラスのフィールドとしてまとめておきたくなった。
- というわけで、別にインスタンスは1つしか作らないのにクラスを作り、 関連付けられた変数をそのフィールドにまとめた。
- 結果として、 非常に簡単なフィルタプログラムでもできるようなことをわざわざXMLを使ってやるようなスクリプトにいつの間にかなっていた。 おまけにクラスの無意味になってしまった。
結局、「何も考えずにプログラムを書き始めるという頭の悪いことをしたから」となるだろう。 今度から、プログラミングをするときにはもう少し全体の構想を作り、 どんな作業をするのがベストか考えたい。