スレッドログファイルの形式

Thousandを作る前に、手元の適当なファイルでやった結果。

  • .thread形式:288KB
  • .dat形式:112KB
  • .dat.gz形式:40KB

スレッドのログファイルって結構溜まるものなので、チリも積もれば山となる。というわけでThousandは.dat.gzを採用してみた。
.thread形式は初期設定のProperty Listファイル、.plist形式と実質同じものであり、その内容はUTF-8エンコーディングされたXMLである。容量が比較的大きくなる原因としては、UTF-8エンコーディングが日本語の文字を表すのに3バイト要することと、一レスごとにXMLのタグやプロパティのキーを必要とすることがあると思う。
例えばメール欄一つ表すのにこれくらい必要。

Mail
sage

それでも、例えばこのファイルをCMLogBuccaneerが読もうという時には大変楽である。ただのテキストファイルであるから、最後の一部分だけを読んでスレタイを得るということは簡単であった。全体を読む時にも、CocoaAPIによって簡単にオブジェクトに変換できるし、2chに新たな仕様が出来ても、ファイル形式は互換性を保ったままに出来る。
そして.threadファイルも、容量を減らすことは簡単にできる。Property Listファイルにはバイナリという保存形式があって、中身はよく知らないけどだいたい半分から1/4くらいにはなったはずである。CMLogBuccaneerでは読めなくなるけど、こうすれば容量の問題はなくなる。


そうなれば*1.threadのほうがいろいろ便利なのであるが、今のところCocoMonarとBathyScapheのみの採用なので、例えばWindowsユーザーと交換したり、2chブラウザを乗り換えるときには面倒と言えば面倒であろう*2。.dat.gzは、解凍すれば.datに戻るのでちょっとは楽かな、と思った。もっともThousandには既存のdatファイルをインポートしたり開く機能が付いていないので、あまり意味は無い。

*1:現行のCocoMonarとBathyScapheはまだバイナリを採用してはいなかったと思う

*2:変換ソフトあるけど。ていうか作ったけど