Search jakarta

POI 2.0 Vision Document

Apache POI -- Vision -- 序章

この文書は、POIの2.0バージョンのサイクルに関する「ビジョン」を表すものです。この「ビジョン」には特に変更がありませんでしたし、この文書は特に「時代遅れ」でもありませんけれども、このプロジェクトの構造は若干変更されています。この変更に関しても、私たちは「ビジョン」までも変更するつもりはありません。なぜなら、結局「削除」を伴う事になるからです。私たちは、自身が説明する情報を殆ど無駄にするつもりはありません。

この文書は、POIコンポーネントの一部をApache Cocoonプロジェクトに受け渡す前に作られたものです。また、POIがJakartaプロジェクトの一員となる前のものです。ですから、この「ビジョン」が変わっていないにせよ、実際には若干の部分については他のプロジェクトのものとなっているものもあります。これらに関し、大雑把に言って同じ時間枠の中で作業を依然として行っていますが(ただ、他のグループとの折衝の時間がマイナスになりますけど)、POIプロジェクト自身の技術的な担当ではなくなっています。

1. はじめに

1.1 この文書の目的

この文書の目的は、ハイレベルな要求・ユーザーのニーズ・POIプロジェクトの次期リリースの機能に関する、集積を行い分析し定義する事にあります。POIプロジェクトは、現在、以下のコンポーネントから成り立っています:HSSF Serializer・HSSFライブラリ・POIFSライブラリ

  • HSSF Serializer は、Cocoon2プロジェクトからのSerializerインターフェースをサポートし、シリアライズされたデータをMicrosoft Excel '97(スプレッドシートのあるプログラム)と互換のある形式で出力する、メインのクラスを含む、Javaクラス群のセットです。
  • HSSFライブラリは、 Pure Java を用いてMicrosoft Excel 97ファイル形式を読み込んだり書き込んだりする事の出来るクラスのセットです。
  • POIFSライブラリは、Microsoft OLE2 複合形式のドキュメントを100%Javaを用いて読み込んだり書き込んだりする事の出来るクラスのセットです。

このリリースバージョンのサイクルの完成時には、POIプロジェクトはHSSF Generator及びHDFライブラリも含める事としています。

  • HSSF Generator は、HSSFを用いて、XLS (Excel 97)ファイル形式を読み込んでSAXイベントを生成する事に専念します。HSSF Generatorは、Apache Cocoon2プロジェクトで設計される適切なインターフェースをサポートします。
  • HDFライブラリは、Microsoft Word 97ファイル形式を、Pure Javaで読み込み・書き込みが可能となる、ハイレベルなインターフェースを提供します。

1.2 プロジェクトの概要

POIプロジェクトの最初のリリースは、驚くほどの成功を成し得ました。このリリース版では、以下の機能による成功を模索しています:

  • イベント稼動型のAPI(読み込み用)と同じになるように、POIFSのinput・outputクラス群にリファクタリングを行う。
  • イベント稼動型のAPI(読み込み用)と同じになるように、HSSFにリファクタリングを行い、高パフォーマンスを達成する。
  • HSSFを拡張し、式(formula)を読み書きする機能を追加する。
  • HSSFを拡張し、ユーザ定義のスタイルを読み書きする機能を追加する。
  • HSSF Serializerと同じタグを使う事でHSSF用のCocoon 2 Generatorを作成する。
  • Microsoft WordのDOC形式を読み書き可能な新規ライブラリ(HDF)を作成する。
  • HSSFSerializerにリファクタリングを行い、拡張可能な二つのPOIFSSerializerとHSSFSerializerに分割する。
  • エクセルのチャート機能を提供する(チャート生成のみ)。

2. 対象となるユーザ

2.1 ユーザ/マーケットの統計

XML・UNIX・Java技術には、驚くべき数の熱狂的ユーザーがいます。更に、Officeドキュメント形式の出力に関するMicrosoftのソリューションは、OLEサーバーとしてソフトウェアを操作させる事である場合がよくあります。この方法では、極端に低いパフォーマンスで非常に高いオーバーヘッドがかかり、更に、一度に一つの文書しか操作できない、という結果になりかねません。

  1. 我々が対象とする、このプロジェクトのHSSF Serializer部品のユーザーは、XML形式でレポートを作成したりデータの抽出を行おうとする開発者です。
  2. 我々が対象とする、このプロジェクトのHSSFライブラリのユーザーは、我々自身です。というのも、HSSF serializerを我々は開発しておりますので。また、XMLのないJava環境でExcelスプレッドシートを読み書きしたいと考える全ての人です。最後に、Serializerで明記されていない特定のニーズを持つ人々です。
  3. 我々が対象とする、このプロジェクトのPOIFSライブラリのユーザーは、我々自身です。というのも、HSSF とHDFを我々は開発しておりますので。更に、Javaを使って、OLE2複合ドキュメント形式を他の形式に変換し読み書きするライブラリを作りたいと考える全ての人が対象です。
  4. 我々が対象とする、このプロジェクトのHSSF generator部品のユーザーは、ExcelスプレッドシートをXML形式に非独占的環境にてエクスポートする必要のある開発者です。
  5. 我々が対象とする、このプロジェクトのHDFライブラリのユーザーは、我々自身です。というのも、HDF Serializerを我々は今後のリリースで開発しますので。更に、自身のプロジェクトで.DOCファイルの処理及び生成をしたいと考える全ての人が対象です。

2.2. ユーザ環境

このソフトウェアの対象となるユーザーは、Java環境(どのOSでも良い)にある開発者、あるいはXML文書の生成と配置が出来るパワフルユーザです。

2.3. 主たるユーザニーズ

The HSSF library currently requires a full object representation to be created before reading values. This results in very high memory utilization. We need to reduce this substantially for reading. It would be preferable to do this for writing, but it may not be possible due to the constraints imposed by the file format itself. Memory utilization during read is our top user complaint.

The POIFS library currently requires a full object representation to be created before reading values. This results in very high memory utilization. We need to reduce this substantially for reading.

The HSSF library currently ignores formula cells and identifies them as "UnknownRecord" at the lower level of the API. We must provide a way to read and write formulas. This is now the top requested feature.

The HSSF library currently does not support charts. This is a key requirement of some users who wish to use HSSF in a reporting engine.

The HSSF Serializer currently does not provide serialization for cell styling. User's will want stylish spreadsheets to result from their XML.

There is currently no way to generate the XML from an XLS that is consistent with the format used by the HSSF Serializer.

There should be a way to read and write the DOC file format using pure Java.

2.4. 競合

元々は、Excelの読み書きに関するまともな競合はなかったのですが....どういうわけか、事態は変わってしまいました...

3. プロジェクトの概観

3.1. プロジェクトの展望

The produced code shall be licensed by the Apache License as used by the Cocoon 2 project (APL 1.1) and maintained on at http://poi.sourceforge.net and http://sourcefoge.net/projects/poi. It is our hope to at some point integrate with the various Apache projects (xml.apache.org and jakarta.apache.org), at which point we'd turn the copyright over to them.

3.2. プロジェクトの現状

Java及び/或いはXML環境にある開発者にとって、このプロジェクトは、XMLデータをMicrosoft Excel 形式に出力するために必要な全てのツールを提供するでしょう。このプロジェクトは、ファイル形式や完全なOLE2複合ドキュメント形式を扱うのにMicrosoft Windowsベースのサーバーの使用を不要とするよう努めています。このプロジェクトは、XMLをExcelやWordファイル形式にするツールやそれらのファイル形式の文書をJavaで書くことを目的としているばかりでなく、他のOLE2複合ドキュメント形式を純粋なJava API群 に変換する、といった後々のプロジェクト用のツールを提供することも目的としているのです。

3.3. 機能の要約

Apache Cocoon 2におけるHSSF Serializer

利点/メリット サポートする機能
Ability to serialize styles from XML spreadsheets. HSSFSerialzierは、今後、「スタイル」をサポートします。
Ability to read and write formulas in XLS files. HSSFは、今後、式(formula)の読み書きをサポートします。
Ability to output in MS Word on any platform using Java. 100% Java を用いて、Word形式の出力を行うAPIをこのプロジェクトで開発します。
Enhance performance for reading and writing XLS files. HSSFは、パフォーマンス上の向上を経験するでしょう。HSSFにて、XLSファイルを読み込む為のイベント稼動型の新規APIを持つ事でしょう。POIFSは、OLE2 CDF ファイルを読み込む為のイベント稼動型の新規APIをサポートするようになるでしょう。
Ability to generate XML from XLS files このプロジェクトでは、HSSF Generatorを開発します。
The ability to generate charts HSSFにて、チャート図に関する低レベル及び高レベルAPIを提供するでしょう。 初期段階では、チャート情報を読み取る機能を有しない事でしょう。

3.4. 前提条件・依存関係

  • The HSSF Serializer and Generator will support the Gnumeric 1.0 XML tag language.
  • The HSSF Generator and HSSF Serializer will be mutually validating. It should be possible to have an XLS file created by the Serializer run through the Generator and the output back through the Serializer (via the Cocoon pipeline) and get the same file or a reasonable facimille (no one cares if it differs by the order of the binary records in some minor but non-visually recognizable manner).
  • The HSSF Generator will run on any Java 2 supporting platform with Apache Cocoon 2 installed along with the HSSF and POIFS APIs.
  • The HSSF Serializer will run on any Java 2 supporting platform with Apache Cocoon 2 installed along with the HSSF and POIFS APIs.
  • The HDF API requires a Java 2 implementation and the POIFS API.
  • The HSSF API requires a Java 2 implementation and the POIFS API.
  • The POIFS API requires a Java 2 implementation.

4. プロジェクトの機能

Enhancements to the POIFS API will include:

  • An event driven API for reading POIFS Filesystems.
  • A low-level API for creating/manipulating POI filesystems.
  • Code improvements supporting greater separation between read and write structures.

Enhancements to the HSSF API will include:

  • An event driven API for reading XLS files.
  • Performance improvements.
  • Formula support (read/write)
  • Support for user-defined data formats
  • Better documentation of the file format and structure.
  • An API for creation of charts.

The HSSF Generator will include:

  • A set of classes supporting the Cocoon 2 Generator interfaces providing a method for reading XLS files and outputting SAX events.
  • The same tag format used by the HSSFSerializer in any given release.

The HDF API will include:

  • An event driven API for reading DOC files.
  • A set of high and low level APIs for reading and writing DOC files.
  • Documentation of the DOC file format or enhancements to existing documentation.

5. その他の必要条件

5.1. 一般標準

全てのJavaコードは、100% pure Javaで書かれています

5.2. システム要件

POIFS API の必要最小限のシステム要件は:

  • 64 Mbyteメモリ
  • Java 2 環境
  • Pentiumあるいはそれ以上のプロセッサ(または、その他プラットフォームで同等のもの)

HSSF APIの必要最小限のシステム要件は:

  • 64 Mbyteメモリ
  • Java 2 環境
  • Pentiumあるいはそれ以上のプロセッサ(または、その他プラットフォームで同等のもの)
  • POIFS API

HDF APIの必要最小限のシステム要件は:

  • 64 Mbyteメモリ
  • Java 2 環境
  • Pentiumあるいはそれ以上のプロセッサ(または、その他プラットフォームで同等のもの)
  • POIFS API

HSSF Serializerの必要最小限のシステム要件は:

  • 64 Mbyteメモリ
  • Java 2 環境
  • Pentiumあるいはそれ以上のプロセッサ(または、その他プラットフォームで同等のもの)
  • Cocoon 2
  • HSSF API
  • POI API

5.3. パフォーマンスに関する要件

全てのコンポーネントは、ウェブサーバー環境下(特に、3種の神器: Cocoon2/Tomcat/Apache 環境下)において、十分に実務レベルのパフォーマンスを確保しなければなりません。

5.4. 環境に関する要件

ソフトウェアは最初は開発環境上で動作することでしょう。我々は、あまり技術的に高度でないユーザがHSSFシリアライザ用のXMLドキュメントを書くことを斟酌すべきです。その他全てのコンポーネントは、中間くらいのJava2の知識を仮定しています。HSSFシリアライザの使用の際を除いて、XMLの知識は必要ありません。XMLが比較的新しい概念であるのと同じように、全てのコンポーネントにつき数多くの実践的なドキュメントが必要となるでしょう。また、スプレッドシートを書くという事、またPOIファイルシステムに導入されたコンセプトは、JavaやJava開発者にとって目新しいものとなるでしょう。

6. ドキュメントに関する要件

6.1 POI Filesystem

The filesystem as read and written by POI shall be fully documented and explained so that the average Java developer can understand it.

6.2. POI API

The POI API will be fully documented through Javadoc. A walkthrough of using the high level POI API shall be provided. No documentation outside of the Javadoc shall be provided for the low-level POI APIs.

6.3. HSSF File Format

The HSSF File Format as implemented by the HSSF API will be fully documented. No documentation will be provided for features that are not supported by HSSF API that are supported by the Excel 97 File Format. Care will be taken not to infringe on any "legal stuff". Additionally, we are collaborating with the fine folks at OpenOffice.org on *free* documentation of the format.

6.4. HSSF API

The HSSF API will be documented by javadoc. A walkthrough of using the high level HSSF API shall be provided. No documentation outside of the Javadoc shall be provided for the low level HSSF APIs.

6.5 HDF API

The HDF API will be documented by javadoc. A walkthrough of using the high level HDF API shall be provided. No documentation outside of the Javadoc shall be provided for the low level HDF APIs.

6.6 HSSF Serializer

The HSSF Serializer will be documented by javadoc.

6.7 HSSF Generator

The HSSF Generator will be documented by javadoc.

6.8 HSSF Serializer Tag language

The XML tag language along with function and usage shall be fully documented. Examples will be provided as well.

7. 用語集

7.1 ファイルシステム(Filesystem)

filesystem shall refer only to the POI formatted archive.

7.2 ファイル(File)

file shall refer to the embedded data stream within a POI filesystem. This will be the actual embedded document.

by Andrew C. Oliver, Marcus W. Johnson, Glen Stampoultzis, Nicola Ken Barozzi
Original English Page would be found from HERE     --    BBS/ApacheNews
Terra-International, Inc. -- テラ・インターナショナル
Special Thanks -- 【お問い合わせ/テキスト広告】