Search jakarta

Jakarta POIプロジェクトの歴史 -- MS-OFFICE WITH JAVA

プロジェクトの略歴

POIプロジェクトは2001年4月ごろ、つまり、アンディー・オリヴァーがExcelへのJavaベースのレポートに関する短期契約を交わした頃に遡ります。このようなプロジェクトを彼は今まで数回行っていた為、必要なツールがどこにあるか、等を的確に把握していました。しかし、皮肉な事に、以前使っていたツール(API)の値段は約300ドルから1000ドルに跳ね上がっていました。彼は、クライアントに対し、1000ドルを支払うよう薦めました。Excelへ書き込む処理を実装するのに2人で6か月ほどかかるだろうと判断したからです。

2001年6月頃、アンディーは思いをめぐらし始めました、オープンソースのJavaツールを開発するなんてどれほど素晴らしいことか、と。彼は、当時ある程度時間が取れた関係もあり、そのプロジェクトに早速取りかかり、OLE 2 複合ドキュメント形式についての知識を身に付けていきました。現実には、いくつかの難題が彼の目の前に現れ、結局、彼は、他者の助けが必要であると思うようになりました。彼は、Javaユーザグループ(JUG)へのメッセージを投稿し、誰か興味を持っている人がいるかどうか尋ねました。運良く、今までで最も才能のあるJavaプログラマであるマーク・ジョンソンと出会い、その彼もプロジェクトに加わりました。マークは、OLE2複合ドキュメント形式の処理に関しはるかにアンディーに勝っており、アンディーのスケルトンコードをよりもっと洗練された形でライブラリ化しました。自分達にとっても喜ばしいものを確保するために、マークは何度か繰り返し書き直しを行いました。

マークの作業の一方、アンディーはマークの書いたライブラリに基づいて、XLSをJava化する作業を行いました。XLS(元々計画されていた、書き込み処理だけではなく)の読み込み処理機能追加の依頼がある一方、1人のユーザが、POIFSの異なる利用法の要求をしてきたりもしました。やがて、プロジェクト範囲は3倍になりました。計画より1か月遅れたものの、はるかにより多くの機能を引っさげ、POI 1.0はリリースされました。マークは、記録的な速さで、シリアライザフレームワークおよびHSSF Serializerの機能を実装しました。また、アンディーは外に多くのドキュメントを書き殴り、他の人々にプロジェクトを知ってもらうよう、取り組みました。

リリースの直前、POIプロジェクトは、幸運にもニコラ・ケン・バロッツィと出会いました。彼は、それらにHSSF Serializer用のサンプルを作成し、不運なバグ(即座に修整されましたが)の存在の指摘をしてくれました。ごく最近、ケンは、アンディーがStar Officeで書いたPOIプロジェクトのHTMLドキュメントから殆どのものをXMLに書き直しました。

リリースとほぼ同時期、グレン・スタンポルティスがこのプロジェクトに参加しました。グレンは、アンディがHSSFのグラフ機能のサポートに関し優柔不断であった事に憤慨し、大鉈を振るって結局自分でやる事にしました。彼はPOI開発コミュニティーの中で必要不可欠な存在になりました。HSSFに対する彼の投稿は、いまや大きなうねりになり始めています。

そうこうしていくうち、私達は、このプロジェクトを最終的にApache Cocoon Project に受け渡す事に決めました。しかし、結局、このプロジェクトがあまりに大きくなりすぎたため、Cocoonプロジェクトが扱う範疇を超えるものが多く存在する事がわかりました。そこで、アンディはPOIの機能を付け加えると良いと思しき別のプロジェクトに目を向け始めました。そこで、CocoonにはSerializerとGeneratorを寄贈し、他のPOI統合コンポーネントは違うプロジェクトに、そして、POIのAPIはJakartaプロジェクトの一部にする事を決めました。前途洋々たるものではなく紆余曲折を経てきましたが、(結果として)貴方がこの文書を見ているという事実からしても、全てのもの(訳注:物事と言うのは必ず波があっても結局良い方向に向かうもので・・ってことです)が辿る道であるのでしょうね!

POI で次に来るものは?

先ず初めに、プロジェクトの観点から次の事に取り組まなければなりません:Microsoft社及びActuate社に、とても大きな小切手を書いて下されば(訳注:手に余るほどのお金を寄付して下されば、ということ)このプロジェクトを辞めてリタイアしたい、と申し出ました。電話も電子メールもまだありませんので、両社はまだ我々が身を引く為のお金を払うつもりはないのではないか、と勝手に思っています。(訳注:まあ、無理でしょう・・)

次に、POIをJakartaコミュニティ上に統合完了するためにここで行わなければならない事があります。更に、未だSerializer を Cocoon に移行しています。

HSSFは、Version 2.0 のサイクル(訳注:2.0から3.0へのメジャーバージョンアップを行う間、という意味)の間、いくつかの最適化を経験することになるでしょう。”式(Formula)”やカスタムテキスト形式のフル実装といったような新しい機能を付け加えています。RK(訳注:エクセル内部形式の数値のことで、レコード番号は7E)や MulRK(訳注:複数のRKで、レコード番号はBD)やMulBlank(訳注:複数の空で、レコード番号はBE)といったレコードの書き込みサポートを加える事で、サイズの小さいファイルを生成可能ではないかと期待しています。筆者は、また、Cocoon 2 の Generatorに対する作業も行っています。現在、HSSFでの読み込み処理は効率的とは言えません。これは主に、書き込み・修整処理を行う場合にアップストリームポインタをダウンストリームデータに更新可能にさせる必要があるからです。これを実現するため、メモリ上に全て展開しなければならなくなっています。その代わりGenerator がSAXイベントの処理をさせる必要があるでしょう。(これは、下位レベルAPIに基づくものでしょう)。素晴らしい事に、より効率的にファイルを読み込むための道を開くだけではなく、XMLデータソースとしてエクセルシートを使えるようにする素晴らしい道が開ける事になるでしょう。

HSSF Serializerは、他の形式のシリアライザを生成するための汎用フレームワークに今後分離していく予定です(今でも殆どはそうなのですが)。HSSFでは既にサポートされている(スタイル、フォント、テキスト形式)機能のサポートの追加も行っています。Version 2.0のサイクル内で、式(formula)のサポートを加えたいと思っています。

また、私達が扱う対象を広げていき始めています。もし、XLSファイルに関する機能実装を全て完了すれば、DOCファイルやPPT(訳注:Microsoft Power Point で使われるファイル形式です)ファイルはどうでしょう?私達は、次のコンポーネント(HDF - Horrible Document Format)も同じパターンを辿るべきではないかと思っています。私達は、新しい血(訳注:献身的な人、という意味)が我々のチームに加わり、この問題にもっと素早く対応できるようになるとよい、と思っています(POIFS は殆ど終わっていますから、部分的に、ですが)。しかし、我々が本当に求めているのは貴方かもしれないのです!

by Andrew C. Oliver