2004年5月の技術日記


May.1,2004 (Sat)

作業のできる場所と電源問題

日本では、電源を使わせてくれるところがほぼ皆無なので、外で作業がなかなかできない。以下のITmediaの記事のように、自分も実際に「お金を払ってもいいから使わせてくれ」と何度かお願いしたことはあったが駄目だった。海外では、結構気前良く使わせてくれるところが多い。

新幹線のレールスターの指定席最前列にはそれっぽいの机と電源が用意されている。しかし、なかなか指定の席が取れないので、利用は難しい。

京都駅の新幹線構内のファーストフード店の前の食べる場所には自由に使えるコンセントがある。また、空港の有料の待合室でも自由に使ってもいいらしいコンセントがある。ここは飲み物も自由みたいなので、非常によい。しかし、大抵こんな場所に居るときはゆっくりしている場合ではないので、やっぱりあんまり使えない。

漫画喫茶やネットカフェも電源を使える場所があるが、こんな場所では作業になりそうにないし、雰囲気も良くないので個人的にはあまり近寄りたくない。理想的には、普通の喫茶店で使えるのがうれしい。しかも、「完全禁煙」「コーヒーおかわり自由」「作業できる机と椅子」「静か」なんて場所だと最高。

福岡のカフェでは、自分が発見したところではキャナルシティー4階の「CAFFE OTTO.Cyclo」。飲み物のおかわりはできないけれど、おしゃれで飲み物も悪くなくて、窓際の眺めの良い席で電源が使えてかなりポイントが高い。欠点は地下鉄から遠いので、ちょっと立ち寄って利用というわけにはいかない。

地下鉄近辺で電源使用可能場所というのはまだ知らない。電源が使えないけれど、交通の便が良くて作業がしやすい場所は、以下のよう。

中洲川端駅、中洲側のロッテリア
地下鉄出口のすぐ前で、禁煙席も広くて煙害もほとんど無くて、人もそんなに多くないので心置きなくキーをたたける。利用率は高い。
天神新天町のロッテリア
こちらも禁煙席がまあまあ広い。マックよりは人が多くないが、休日などはやっぱり人が多い。
天神アクロス側のアンクル
禁煙席が無いので煙害がひどいときは大変だけども、人が少ないときは非常に静かで作業がしやすい。打ち合わせなどにも最適。
天神地下街のApetito
時間帯(朝?)によっては禁煙席が狭くて人も多い。奥のソファーの場所は快適。空いていたら利用。
スターバックス(天神2件)
禁煙というのはいいけども、人が多かったりするのでほとんど入れない。平日の午前の利用が良い。九州にはまだWLANはまだ無い。

もちろん天神近辺には大量の喫茶店があるが、それらは喫茶店は作業に使えないばかりか煙害でゆっくり喫茶もできない。

いろいろ

近所の人に0120で始まるワンギリが着弾。非通知ではかけなおしてもつながらない模様。Net上の情報は少ない。

言葉の誤用では、よくある間違いがまとめられている。ただ、最近は間違いも正しいものとして認めていこうという雰囲気があるらしい。

「捨印」は誤字・細かな訂正を簡単に追記するための仕組みだということを知った。信頼できない相手に捨印を押すと、相手に契約内容を追記されてトラブルになるらしい。今まで捨印を押す機会はほとんど無かったけども、これからは気をつけなければいけない。というか、こういうことに限らず年金や税金など、そういう全員が当然知っておくべきことを学校で教えてくれないのはなぜなのか?

May.6,2004 (Thu)

データの解析ツール

MDなどの大量に出力されたデータの解析に便利なツールを探している。必要な要件は以下のよう。

  • 数百MByte〜数GByte規模のデータを扱える
  • 多少込み入ったプログラムが可能で、コマンドひとつで必要な処理を実行できる
  • 統計・回帰分析などの解析機能が使える

最初は pnuts を使って統計処理から各種解析関数の計算までやっていた。起動に多少時間がかるけども動けば実行速度はそれなり。Javaの全機能にアクセスできるのは良かったけども、込み入ったプログラムが多少面倒くさい。また、シェルコマンドの実行が手軽でなかったため、pnuts のプログラムを実行するシェルスクリプトを書いていた。

次にシェルとの親和性やプログラムの書きやすさで Ruby を採用し、pnutsとシェルスクリプトを全面的に書き直してみた。面倒だったシェルスクリプトが楽に書けて、込み入った処理も楽に書けて、テキストの処理も非常にスムーズ。しかし、実行速度が満足いかない。数GByteデータ処理がMDの計算時間並みに時間がかかるようになった。また、複雑な統計処理も必要になってきてRubyでは荷が重くなってきた。

現在は便利なシェルスクリプトとしてのRubyを用いつつ、時間のかかる統計処理や複雑な回帰分析をRを使って処理している。例えばRubyで以下のように書いて、Rのソースまで自動生成・実行・値取得ができるのが良い。(5月8日訂正)


# Gaussian - exp で非線形フィットを行うRのコード
Rtext = <<EOF
aset <- scan("some.dat",list(t=0,ta=0))
x <- aset$t
y <- (aset$ta)**2
F<-nls(y ~ a * exp(-t1 * (x * x)) + (1-a) * exp(-x * t2),data.frame(x,y),start=list(a=0.8,t1=300,t2=0.01),algorithm="plinear")
sink(file="ta_tau.log")
summary(F)
EOF
 
# Rの実行
fout = open("ta_tau.R","w")
fout.puts Rtext
fout.flush
fout.close
puts `R --no-save < ta_tau.R`
a,t1,t2 = getParams("ta_tau.log","a","t")
   # RのSummary表示から緩和時間をとってくるサブルーチン
 
# このあと、gnuplot のテンプレートスクリプトを処理して
# PSファイルの出力まで逝ってしまう。

今のところの欠点は、Rでのスクリプトを書くが面倒くさいこと。特にR→Rubyの値渡しがスマートでない。自分が慣れてないというのもあるけども、やっぱり一般的に複数の処理系での値の受け渡しというのはいつも頭の痛い問題でもある。パイプやソケットを利用してXMLを流すという手もあるけども、RでのXMLの操作がまだ良く分かっていない。

Rのグラフ表示もかなり素敵なので、そのうちグラフ表示もgnuplotからRに移動してしまうかもしれない。

ジョエル・テストとBTS

ジョエル・テスト(via みかままの覚書分室) を読んで自分の足りないものを考えてみる。バグ票と集中できる環境というのが駄目そう。あと、テスト担当者というのも居ない。このままでは点数が低そう。

現在、バグ票はテキストだったりメールのmarkの集合だったりするのだけど、「票」として定型化してないし、このままでは他の人とも共有できない。これから共同作業が増えていくらしいので、この機会にバグトラッキングツールについて調べる。影舞が丁度良さそうなので試そうと試みる。

水の話

水の話 (via xcorp.saposen.com)

一応本業が液体・溶液関係なので、こういう小話の1つや2つは持っておかないといけないのかもしれない。似たような話で21グラム(by goo映画)というのも。

May.8,2004 (Sat)

データの解析ツールのRubyソースを訂正(角括弧をエスケープし忘れ)。

影舞評価中

とりあえず入れてみた。多少動作が重いけども、DBにデータを入れると早くなるのだろうか。あと、操作や設定の仕方は分かるのだけれども、実際の使い方(活用?)が良く分かっていない。他のBTSを参考にしばらく試してみる。

途中、 noexec でマウントしたディレクトリにインストールしていて、スクリプトが実行できなくてはまる。

ちゃんと foo.rb に

#!/usr/bin/ruby

と書いてあって実行権限もあるのに、実行させると

bash: ./foo.rb: bad interpreter: Permission denied

となる場合は、マウントオプションが noexec になっているか、 exec が指定されていない可能性がある。

May.9,2004 (Sun)

RSS

ブラウザのブックマークを久々に整理。ついでに RSS でサイトを回れるように Firefox を設定。

ついでに日記の RSS を出力できるようにしてみる。ツッコミやトラックバックも実現するには、やっぱりtDiary導入しかなさそう。

輸入制限権

いまさらながら、ヘンじゃないか輸入権(by 山形浩生氏) を読む。国会での質疑(@benli)によると先月のうちに議会を通過していたらしい。電気の新作も CCCD になってしまったし、よく知りもしない人々による本質が抜けた議論や対策が行われていることであるかな(詠嘆)。

No Image
SINGLES and STRIKES (CCCD)』 CD
電気グルーヴ
発売日: 2004/03/24, 枚数: 2

近所のCD-ROMドライブではどれもCCCDをリッピングできるが、家のCDプレイヤーでは正常に再生できない。CCCDをCDRにコピーすることを消毒というらしいが、まさに的を得た表現だと思う。

JMFで各フレームアクセス

JMF を使って BufferedImage を作る方法をAVI ファイルのプレビューを作るで書いたが、あれでは任意のフレームにアクセスできないので、一般的には以下のように FramePositioningControl と FrameGrabbingControl を使って実装するのが良さそう。

まず、Processor を Prefetched にして、FramePositioningControl と FrameGrabbingControl を Processor から取り出す。


//準備
processor.setContentDescriptor(null);
processor.prefetch();
if (!waitForState(processor.Prefetched)) {
    throw new RuntimeException("Failed to prefetch the processor.");
}
framePositioningCtrl = 
    (FramePositioningControl)processor.getControl(
        "javax.media.control.FramePositioningControl");
if (framePositioningCtrl == null) {
    throw new RuntimeException("Can not get a FramePositioningControl.");
}
frameGrabbingCtrl = 
    (FrameGrabbingControl)processor.getControl(
        "javax.media.control.FrameGrabbingControl");
if (frameGrabbingCtrl == null) {
    throw new RuntimeException("Can not get a FrameGrabbingControl.");
}

次に、次にように画像を取り出す。


framePositioningCtrl.seek(index);
BufferedImage img = buffer2image(frameGrabbingCtrl.grabFrame());

ここで buffer2image は次のよう。


BufferedImage buffer2image(Buffer buf) {
    VideoFormat format = (VideoFormat)buf.getFormat();
    BufferToImage btoi = new BufferToImage(format);
    Dimension size = format.getSize();
    Image img = btoi.createImage(buf);
    BufferedImage bimage = 
           new BufferedImage(size.width,size.height,BufferedImage.TYPE_INT_RGB);
    Graphics2D g2d = bimage.createGraphics();
    g2d.drawImage(img,0,0,null);
    return bimage;
}

Buffer から BufferedImage への変換は標準の機能を使っているので、以前の方法で出ていた ClassCastException は出ないはず。

ところで、以前問題になっていた CinepakのClassCastException は Performance Pack for Windows のライブラリを使えば出なくなった。しかし、Windows以外で利用する場合には問題が解決していないし、バグ情報にも無いみたいなのでソースを見て自分で解決する必要があるのかもしれない。

匿名とか弱者とか

世の中には相容れない主張というものがある(by arai氏) や周辺を読んで匿名周辺について考えた。

匿名の問題については 自己紹介とは何か(by 黒木玄氏)周辺がまとまっている。匿名と実名の違いや立場の不平等、匿名に対するルールなどを議論。

実名/顕名/匿名の得失(by shin氏)では上のサイト周辺の問題についてゆるやかに議論している。ここで匿名と弱者が議論の中に出てくる。

タブーを巡る強者と弱者(@圏外からのひとこと) では弱者を利用する社会的構図があると指摘。

口にできないこと -What You Can't Say-(by Paul Graham, 訳 Shiro Kawai 氏) では、タブーで思考停止にならないようにしようとか、みんなと違う考えを持っている場合のより良い振舞い方について指摘。

結局分かったことは、匿名に対する姿勢は、匿名を相手にする人またはコミュニティーが決定するもので、絶対の解は無いという当たり前のもの。個人的にも、各地で言われているように「匿名か実名か」は問題でなくて「まともな人かそうでないか」ということが問題なのだと思う。

非礼なまともでない人に対してどう対応するかは、個人であればその人の気持ちしだいであろう。気分がよければ適当にたしなめるが、いらいらしているときなどは無視するかコテンパンにしてしまうかもしれない。コミュニティーであれば、対応に差が出ないように事前にルールを決めるというが良いのだと思う。

コミュニケーションの難しさ

上の黒木氏のサイトでも指摘してあるように、正確なコミュニケーションは議論に限らずやっぱり難しい。IT関係では、問題のほとんどがそこから起きているらしい。次の絵はそれを端的に表していておもしろい。

ITプロジェクトの実態とは!(@Dashi Blog via みかままの覚書分室)

May.10,2004 (Mon)

Winny開発者逮捕

かなり衝撃だった。大手の報道などはセキュリティホール memoにまとめられてある。

大昔、そこらのぬるいゲームよりも目の覚めるデモプログラムを次々と開発されて、Windowsを手に入れたばかりの自分にとっては目標のプログラマだった。それから何年か経って、未踏で実際にお会いすることができた。普通にアルゴリズムの議論や実装についていろいろお話できたことにえらく感動した。

警察が裏でどう動いて逮捕したのかや、法的な背景については各地でいろいろ議論されている。しかし、問題なのは今回の小手先の著作権保護という流れではなくて、技術に法律や体制が追いついていないとか著作権法が濫用されているという現状であろう。この本末転倒については自由か著作権か?(by リチャード・ストールマン @hyuki.com)にまとめられている。また、Winny開発者逮捕についてのコメント(@圏外からのひとこと)に今回の逮捕に関連した議論がある。良いコンテンツを作成した人が、そのコンテンツを評価する人からその評価に見合った報酬を受け取るべきだという理念を前提にして著作権法や現行社会システムが存在しているとして、次のように述べている。

現行のシステムは、コンテンツ作成者のみでは維持することができず、中間に多くの代理人が必要となります。その人たちにとっては、47氏の提案するシステムは困ったものですが、その人たちの本来の存在価値は著作権の理念に貢献することにあるわけで、自分たちの利害と社会全体としての得失をごっちゃにして論じることは不当なことです。

まず議論すべきは、どちらのシステムが社会全体で豊かなコンテンツを産み出すかということです。47氏の反社会性を強調する人たちは、そのような議論を抑圧したいのではないでしょうか。

技術の進歩によって不要となる職種について、一定の期間補償を与えるべきだという主張なら理解できます。ただ、それは理想のコンテンツ配分システムが何であるかという議論とは、切り離して考えるべきです。

Winny開発者逮捕についてのコメント(@圏外からのひとこと)より

このような著作権や著作物の流通に関する議論がまさに世界中で行われている中、身内の不祥事(*1)の仇や鬼の首をとったかのようにうれしそうに記者会見してみせる京都府警は、あまりにも滑稽でため息が漏れるばかり。

現在、金子勇氏支援(by arai氏)のサイトで実際に47氏支援に向けた動きが始まっている。自分もできる限りの支援に協力したいと思う。

May.12,2004 (Wed)

Winny開発者逮捕2

Winny開発者逮捕(*1)の記事では、著作権保護の駄目な部分が今回のそもそもの事の発端であるということを自分的にまとめてみた。

参考:
「出来損ない」の著作権保護が創造性をダメにする(@asahi.com)
P2Pに関するessa氏発言集すでに起こった未来の話すでに起こった未来の話:解説編(@圏外からのひとこと)
もうひとつの飛行機の話(@miki*labo)、もうひとつの飛行機の話(@圏外からのひとこと)

もちろん、世の中が間違っていると思っていたら何をやっても良いというわけではない。そこで、今回は「47氏の何が逮捕につながったか」について考えてみる。(法律には詳しくないので、間違いがあれば指摘してください。)

方々の情報によると、以下が警察側の主張。

  • 47氏は匿名掲示板に現行の著作権保護法に疑問を書き込んだらしい
  • 47氏は違法行為を摘発しにくい匿名ネットワークソフトを作った
  • Winnyで違法行為が大量に行われた
  • 違法行為が大量に行われていることを知りながら開発を続けた
  • Winnyで違法行為を行った者が逮捕された
  • その逮捕された人の違法行為を幇助した疑いで逮捕

これらの各項目に関しては、以下のように問題が無い。

  • 疑問や意見を述べることは、思想や言論の自由として認められている。
  • 「違法行為が摘発されにくい」とはいえ、ソフトウエアの開発は自由である。
  • Winnyで違法行為が行われても、それは開発者の責任ではなくて利用者の責任である。
  • 違法行為が行われていたと知っていても、違法行為が目的で無ければ開発を続けても問題は無い。

よって、これらをつなげて解釈して、

  • Winnyの開発は違法行為が目的
  • Winnyが先日逮捕された犯罪者の違法行為を助けた

ことが逮捕に決め手であるらしい。確かにこれだけ見ていれば警察の主張は問題なさそうに見える。Winnyが違法行為の一端を担ったのは間違いが無い。

しかし、開発目的はどう立証するのだろうか。報道では匿名掲示板の書き込みがその根拠のように書かれてあったが、そんな書き込みだけで「目的」が立証されてしまうのだろうか。今回の件は、開発者が何かソフトウエア(もしくはハードウエア)を開発して、別の誰かそのソフトウエアで違法行為を行った場合、開発者に関する過去の何かしらの発言や記録を元に不利な「目的」を持ってこられて、開発者が即逮捕される恐れがあることを示している。

*1: 書き始めた日時を基準にしているので、その日以降にアップされたり、その日以降の情報が入っていたりすることがあります。

May.23,2004 (Sun)

先週は FreeKaneko.com でいろいろ走り回る。途中体調も多少崩れる。

今日はいい天気なんだけど・・・。

WanderlustでGPG

参考:Wanderlust と mailcrypt で GnuPG を使う (by MATSU)

SEMI-1.14.6付属のPGGもとりあえず簡単に使えるのだけども、宛先とキーIDが異なる場合にはうまくいかない。

Mailcryptを使うもエラーが発生。

Spawning child process: no such file or directory

調べてみると、mc-gpg.el にて


(shell-file-name "/bin/sh") 

としているところを発見。Cygwin+Meadowではこれでは都合が悪い。すでに .emacs で設定してある変数なので、コメントアウトしたら解決。

JDEE on Meadow の文字化け

JDEE 2.3.3 にアップデート。コンパイル時の文字化けについては解決の情報が無いというか、治る気配が無いので今回もとりあえずの修正。

jdee-2.3.3/java/src/jde/util/ の AntServer.java, CompileServer.java の最初の static 初期化コードの中に


Locale.setDefault(new Locale("en","US")); 

を入れる。つまり英語で表示してもらう。根本的な解決ではないが、とりあえずエラーが読めるようになる。

jdee-2.3.3/java/src にて、以下のように入力してコンパイル。


$ javac -classpath ../lib/jde.jar jde/util/AntServer.java
$ javac -classpath ../lib/jde.jar jde/util/CompileServer.java

その後、jde.jarをアップデート。


# (jdee-2.3.3/java/classes/)にてアップデート作業
$ jar xvf ../lib/jde.jar 
$ cp ../src/jde/util/*.class jde/util/
$ jar cvf jde.jar jde
# 置き換え
$ cd ../lib
$ mv jde.jar jde.jar.org
$ mv ../classes/jde.jar .

とりあえずこれで、 AntServer と CompileServer の表示が読めるようになる。

そんなことより、そろそろ Eclipse を使うべきという話も。

May.28,2004 (Fri)

明日は停電。来週はいろいろ。今はへろへろ。

ソフトウエアの自由2

特許の不条理(by Matzにっき)
まつもとさんが指摘するように、とりあえず公知データベースは一番社会に要求する変化が少なくて、実際に導入しやすいと思う。ここから検索して何かを引き出すのではなくて、特許関連のトラブルになった時に、自分の方が先に開発していたことを証明する。これなら個人でもビッグプレーヤーを相手に対等に発明ができそう。ただ、相手が本気になったら別の武器が出てくる恐れもある。

研究開発系の仕事を他人と合同でやると必ず権利の話が出てくる。(*1)まだ何もやっていないのに、出来たものの話をするのはなんだかかゆい。実はプレッシャーなのかもしれない。当たれば大きな収益が出るのと同時に、莫大な報酬を後で要求されても困るということで、ちゃんとしなければいけないのはしょうがない。

そんな時、自分の要求は「商売の邪魔はしないから自分が作った技術は今後も自由に使いたい」というもの。報酬も大事だけども、重要なのはやっぱり自由ということで。

*1: 最近は大学も何か取り決めがあるらしいが、学生は関係ないらしい。


[最新にもどる]
桜井雅史: E-mail : m.sakurai@cmt.phys.kyushu-u.ac.jp
Web page : http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/