blow

何かに集中していると、妙なことが起きることがある。今日の場合もそういうことだった。

書きものを始める直前に、たまたま残っていたポップコーンを食べていた。数個つまんだだけで、いつも通りコーヒーを横に置いてキーボードを叩き始めたのだが、どうもポップコーンの殻か何かが喉の奥に引っかかっていたらしい。ちょっとややこしい年号の書き換えをしていて、ふと横を向いてコーヒーを飲もうと口に含んだら、抑制し難い程の喉からの反射がきた。気管に異物が流入するのを防ごうとしてこうなったのだと思うけれど、ヤバい! と思った僕は、顔をコンピュータの横へ向けることしかできなかった。

一瞬の後、僕はマーライオンのように口からコーヒーを吹き出した。床一面にコーヒーが広がる……あ゛〜、と、まだむせながらも、とりあえずはタオルを取って辺りを拭き始めた。服にまでコーヒーは染み込んでしまっている。もう、午前中から何やっているんだろう、俺は……

Windows パーティションの掃除

前にも何度か書いているけれど、僕は音楽関連の作業をするとき以外、ほとんど Windows のシステムを使うことはない。仕事は9割以上は Linux 上で作業をしているし、残りの1割も Mac OS X での作業比率が高いので、Windows なしで困るということはないのだ。

しかし、時々は Windows のシステムを立ち上げて作業しなければならないことがある。今日もそういう一日で、昼過ぎから Windows を立ち上げて、まずはシステム関連のアップデートをきっちり済ませた。それからすることは……要するに、NTFS パーティションの掃除である。

この作業をするときに便利に使っているのが、Piriformのツール、特にCCleanerDefragglerである。自動的に行えるレベルでのレジストリの掃除、そして NTFS では当初は不要と言われていた defragmentation の作業において、これらのソフトはもうなくてはならないものになってきている。

そもそも、NTFS はフラグメントが生じにくい、と言われていた。僕が NTFS を使い始めたのは Windows NT 4 の頃からだけど、この当時の Windows NT にはそもそも「デフラグ」というツール自体存在しなかった。しかし、結局はファイルのフラグメントが少なからず生じる、ということで、現在の Windows 7 に至るまで、システムには「デフラグ」が入っている。

Linux 系のファイルシステムでは…… ext2/3/4、そして btrfs に関しては、デフラグは必要ないとされている。僕が知っている限りでは、たしか XFS にデフラグツールがあるはずだが、これだってそうそう使う必要があるものではない。Mac OS X の HFS+ の場合も、バックグラウンドでちょこちょこデフラグをしている程度で、ユーザが自らデフラグを行う必要はない。

Windows で言う C:\ に充当するパーティション以外の場合なら、バックアップを他のパーティションに取っておいてフォーマットして、そこにバックアップを展開すれば、これ以上ない、という程にきっちりとデフラグされるわけだけど、さすがに C:\ に関しては怖くてそれをする気にはなれない。そういうわけで、さっきまでまさにデフラグをしていたわけなのだが、何と言うか、ひたすらに時間の無駄、と言うか……不毛な作業である。どうして Windows はこんなに馬鹿なのだろうか?

程度が低過ぎる

民主党の代表選の話題で、ここ何日かのニュースは賑やかである。あの菅直人の後だから、誰に決まっても今以上に悪くなることはないだろう、という話がそこここで聞かれる。しかし、本当にそうなのだろうか。

海外から電力輸入を=小沢元環境相

民主党代表選出馬を目指す小沢鋭仁元環境相は22日、時事通信のインタビューに応じ、原発からの段階的撤退を目指す立場を改めて示した上で、代替エネルギーに関し「海外から電力の直接輸入を行う」と語った。ドイツなどは電力を輸入しているため「脱原発」への転換が可能だったとの指摘があることから、日本も原発依存度を減らすため、電力輸入に踏み切るべきだとの考えを示したものだ。

小沢氏は「(輸入先は)韓国、中国などいろんな国の可能性があっていい。国と国の間に海底ケーブルを1本引けば全て解決する」と語った。同氏は代表選の目玉公約として訴えていく考えだ。(2011/08/22-19:08, 時事ドットコム)

僕は、このニュースを聞いて、正直言って我が耳を疑った。はぁ?という感じである。

おそらく、小沢氏はヨーロッパにおける売買電の現状から安易にこういうことを言ったのではないか、と思う。しかし、ヨーロッパでの国際間の売買電は、そのほとんどが EU 圏内の話である。では日本はどうなのか。中国から電気を買う?では、先日のレアメタルのような「売り惜しみ」が起きた場合にどうするというのか。こんなことは小学生でも気がつきそうな話である。

政治家のちょっとした間違いだ、などと片付けてはならない。この小沢鋭仁という人は元環境相である。環境政策というのは、常にエネルギー政策と表裏一体の如くあるものだ。しかるに、エネルギー政策においてこのような不見識を平気で露呈する輩が、果たしてまともな環境政策を進めていたのだろうか?僕にはとてもじゃないが、そうは思えないのだ。そしてこういう不見識を平気で露呈してはばからない輩が総理大臣になったとしたら、この国の行く末は限りなく暗いと、言わざるを得ないのである。

とにかく、(民主党に限定した話ではないのかもしれないが)最近の政治家のこの手の発言は、あまりに程度が低過ぎる。あまりに程度が低過ぎるから、メディアも呆れてあまり批判しないのかもしれないが、こういうことはちゃんと指摘されなければならない。馬鹿は放置しておけば良いのではない。ちゃんと「こいつは馬鹿だ」と指摘しなければならない。そうせずに、それが周知されている保証は何一つないのだから。

nkc+

先日、『初めて文字コードで』に書いた文字コード変換で、どうしても QKC っぽい感じで変換をしたいので、ちょっと考えてから、もう公開されていない nkc のコードを読んでいた。

ruby という言語は、実は今まで一回も触ったことがないのだけど、まあ見て何も分からないというわけでもない。見ると、日本語コードの判定のために専用のライブラリを書いているのだが……そうか、これって ruby1.8 時代のコードなんだよな、と気付いた。ruby はかつて Perl よりも日本語処理においてパワフルでなかった時期があって、その頃に書かれたこのコードは、検出し誤りを防ぐために、検出部を自力で書いている。そして変換は iconv で行っている……のだが、今は、ruby のモジュールで新しい nkf の機能がフルに使えるので、こんなことをしなくてもいいかもしれない。

現在の nkf というのは、実は結構強力で、--guess オプションを使うと簡単に文字列のエンコーディングを判定できる。これを使わない手はない……ということで、独自ライブラリと iconv を使うところを nkf で済ませるように書き換える。まあね、ruby いじるの初めてでも、これ位はいけるんですよ、ええ……

などとやっていたのだが、1箇所で思いっきりハマった。改行コードの変換に gsub を使って、

body = body.gsub(/(\r\n|\r|\n)/) { newline }
……などと書いていたのだけど、場合によってここでエラーが出てしまう。んー???と思いつつ挙動を探ると、どうも body に ISO-2022-JP の文字列が入っているとこうなる、らしい。うーん???……などと考えつつ、30分程を空費してしまう。

おそらく ruby に慣れた方は、ここまで読んで「はいはい」と気付かれたことだろう。僕は、ruby が ISO-2022-JP の文字列操作を直接できないことを、今日まで知らなかったのだ。そりゃそうだ。ruby のスクリプト書くのは今日が初めてなんだから。しかしなあ。

え。で、どうしたか、って?

if to == "ISO-2022-JP" then
body = NKF.nkf("-m0 --cp932 --oc=UTF-8", body)
body = body.gsub(/(\r\n|\r|\n)/) { newline }
body = NKF.nkf("-m0 --cp932 --oc=ISO-2022-JP", body)
else
body = body.gsub(/(\r\n|\r|\n)/) { newline }
end
……まあこれで、QKC に UTF-8 拡張をしたのと同等の処理ができるようにはなった。なったけれど、これは、美しくない。ダメダメだ。あ゛ー。

【後記】後で気付いて、gsub を使わず NKF で変換するように変更。

  if newline then
case newline
when "\r\n"
print " (CR+LF)"
optio = "-m0 -x -Lw -c --ic="+to+" --oc="+to
when "\r"
print " (CR)"
optio = "-m0 -x -Lm --ic="+to+" --oc="+to
when "\n"
print " (LF)"
optio = "-m0 -x -Lu -d --ic="+to+" --oc="+to
end
body = NKF.nkf(optio, body)
end
……こんな感じ。こういう発想が出て来ないという時点でダメダメだ。頭が固くなってる。

……などとやって、夕食後、手持ちのテキストで変換を試していて、再びドツボにはまる。文字コード検出で不具合が出てしまうのだ。

CODES = {
NKF::JIS => "ISO-2022-JP",
NKF::EUC => "EUC-JP",
NKF::SJIS => "Shift_JIS",
NKF::UTF8 => "UTF-8",
NKF::ASCII => "ASCII",
NKF::BINARY => "BINARY",
NKF::UNKNOWN => "UNKNOWN",
}
(中略)
from = CODES.fetch NKF.guess(body)
のようにしてコード種別の検出を行っていたのだけど、
/usr/local/bin/nkc:96:in `fetch': key not found: #<Encoding:Windows-31J> (KeyError)
と怒られる。うーん……と、NKF の仕様を読んだり、ネットの海を彷徨ったりした挙句、
CODES = {
NKF::JIS => "ISO-2022-JP",
NKF::EUC => "EUC-JP",
NKF::SJIS => "Shift_JIS",
NKF::UTF8 => "UTF-8",
NKF::ASCII => "ASCII",
NKF::BINARY => "BINARY",
NKF::UNKNOWN => "UNKNOWN",
Encoding::EUCJP_MS => "EUC-JP",
Encoding::CP51932 => "EUC-JP",
Encoding::WINDOWS_31J => "Shift_JIS",
}
(中略)
from = CODES.fetch NKF.guess(body)
とする。--CP932 オプションも、不要な部分は消してしまう。これで……今度は OK ね。はぁ。

うーむ。やはり perl で書き換えた方が早かったような気がする。僕は ruby のエヴァンジェリストでも何でもないしなあ。

【後記】後でちょっと考えて、半角カナの処理も付け加える。まあ、この辺にしておこう。いわゆる「外字」のことまでケアするとなると面倒な話になりそうだしなあ……はあ。


Profile

T.T.Ueda
Tamotsu Thomas UEDA

茨城県水戸市生まれ。

横山大観がかつて学んだ小学校から、旧水戸城址にある中学、高校と進学。この頃から音楽を趣味とするようになる。大学は、学部→修士→博士の各課程に在籍し、某省傘下の研究所に就職、その2ヵ月後に学位を授与される(こういう経緯ですが最終学歴は博士課程「修了」です)。職場の隣の小学校で起こった惨劇は未だに心に深く傷を残している。

その後某自動車関連会社の研究法人で国の研究プロジェクトに参画、プロジェクト終了後は数年の彷徨を経て、某所で教育関連業務に従事。

New Entries

Comment

Categories

Archives(902)

Link

Search

Free

e-mail address:
e-mail address

Counter

11657730