河野真治 @ 琉球大学情報工学です。

FreeMind のファイルフォーマットをいじって、自分のいつも使っ
ているテキスト形式に相互変換しようとしてます。2週間ぐらい前
にやって敗れさってました。昨日、一昨日と、飲み屋さんで「先生、
なにやってるの?」とか言われながら変換プログラム書いて、一応、
動きました。

FreeMind の何があほかって文章に改行が入れられないこと。<html>
にして<br>入れるってのをようやっと発見。MS-DOSな文化とか西欧
文化だと改行は入れないのが普通なのか? 

Unicodeの変換とかは NKF.pm があるんで楽勝。PerlのUnicodeの機
能は、iconv とかと同じで入出力コードを指定しないといけないの
で、ちょっと使いづらいんだよね。vim とかは、iconv に受け入れ
るコードを順に食わしてチェックなんてことをやっているらしいが...
とはいえ、自分のPCの内部コード(っていうのか?)を全部、Unicode
にして、もはや問題ない。問題は、むしろ、大学にある時代遅れの
Vine Linux なんだよな。

ただ、UTF-16って2byte目に0Aが入るのね。0Aは、Perl の正規表現
の.にデフォルトでマッチしないってのがあるので、ちょっとはま
りました。s option で回避。

で、引っかかったのは<node.../>と<node...></node>の区別。混合
されているとは気づきませんでした。普通、後者で統一だろ? あと、
ID="Freemind_Link_1690494718" という謎のID。最初は、それで落
されているのかと思って、思わず、ソースを確認にいきましたよ。

  grep Freemind_Link **/*.java         

とかで一発で見つかりましたが(zsh 偉大)、

freemind/modes/LinkRegistryAdapter.java:                
 returnValue = "Freemind_Link_" + 
   Integer.toString(ran.nextInt(2000000000));

なんじゃ、そりゃ。結局、付けなくてもいいってことが判明。そん
なものファイルに吐き出すんじゃね〜 好意的に取れば、セキュリ
ティかなんかに使いたかったのかも知れないが、Hash も計算して
んだから、まったく不要なものだよな... もちろん、この後で「乱
数だから衝突しているかどうかをcontainsKey()で調べる」なんて
ことをやっているわけで... 

 うちの学生みたいなプログラミングするな〜

と思いました。これを含めて、作り方は微妙なソフトだ。でも、ID
なしフォーマットを受け付けるのは許せる。どんなにたこくても、
動くソフトは偉い。

ソース読んじゃったから、本体側に入れてもいいんだよな。

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科