http://xml.apache.org/http://www.apache.org/http://www.w3.org/

Home

Overview
FAQ
License
Download
Install
Demo

In the news

Tools and Apps
Browser
Rasterizer
Font Converter
Pretty-printer

Architecture
Generator
DOM API
Scripting
JSVGCanvas
Transcoder API

Extensions

Testing

Contributors
Mail Lists

CVS Repository
Bug Database

Status

Glossary


Questions

Answers
Batikとは何ですか?

Batik ユースケース BatikはJava(tm)技術に基づく、スケーラブルなベクトル グラフィックス (SVG) フォーマットのイメージを、表示、生成、あるいは操作するといった様々な目的で、利用するアプリケーションのためのツールキットです。

このプロジェクトの目標は、開発者に、個別のSVGソリューションをサポートするために利用できるように、提携できるような、あるいは単体としての、一連のコア モジュールを提供することです。ジュールの例としては、SVGパーサであり、SVG ジェネレータであり、SVG DOM 実装であります。Batikプロジェクトのもうひとつの目標は、これを高度に拡張可能にすることです(たとえば、Batikでは開発者がカスタムSVGタグを操作することを可能にしています)。プロジェクトのゴールが、一連のコア モジュールの提供にあるとしても、その派生物のひとつは、完全に成熟したSVGブラウザの実装であり、それは各種モジュールとそのインターオペラビリティを検証するものです。

簡単に言えば、Batikは、開発者がJavaテクノロジー アプリケーションの中で、様々な方法でアセンブルすることができるような、SVGコンテンツを生成し、解析し、表示し、あるいはコンバートするためのビルディングブロックを提供します。たとえば、Batikには全てのJavaテクノロジー アプリケーションでSVG表示の機能を追加できるようなSwingコンポーネントが含まれます。Batikはクライアントあるいはサーバにおいて、SVGを生成するために利用することもでき、またBatikはSVGコンテンツをJPEGやPNGなど、他のフォーマットにコンバートすることもできます。Batikのゴールは、アプリケーション開発者が、様々な目的で、クライアントサイドあるいはサーバサイドにおいて、この図に示すとおりに、SVGコンテンツを簡単に扱えるようにすることです。


SVGとは何ですか?

SVG(スケーラブルなベクトル グラフィックス)は、2次元(2D)グラフィックスをXMLで記述するための、オープン スタンダードな言語です。これはW3Cによる勧告です。SVGは、グラデーション、透過、フィルタ エフェクト、そしてアニメーションといった機能を含めて、あなたにリッチなイメージを記述させてくれます。

SVGは3種類のグラフィックオブジェクトを有しています: シェイプ(たとえば直線、曲線からなるパス)、イメージ、そしてテキストです。グラフィック オブジェクトはグループ化され、スタイリングされ、変形され、そして合成されます(たとえば透過で描画される、など)。SVGは膨大なスタティック機能のセットを有しており、それらにはネストされた変形、クリッピングパス、マスキングやフィルタ エフェクトが含まれています。

さらに、SVGイメージはダイナミックに、またインタラクティブにもすることができます。'onmouseover'や'onclick'といった豊富なイベントハンドラのセットが、任意のSVGグラフィック オブジェクトに割り当てられます。これらのハンドラは、イベントのレスポンスとして、SVGドキュメント オブジェクト モデル(DOM) APIを通じてSVGグラフィックを動的に変更することができる、スクリプトを呼び出すことができます。たとえば、イベントのリアクションとしてグラフィック エレメントの色や位置を変更するスクリプトなどです。

SVGのグラフィック エレメントは、スクリプティングを通じてアニメーションすることができます。また、SVGはもうひとつのW3C 仕様であるマルチメディアのためのSMIL 仕様を利用しているので、アニメーション シーケンスは、XML中で明示的に記述することもできます。


Batikで何をすることができますか?

Batikは、独立して、あるいは SVG コンテンツを生成する (SVG ジェネレータ, SVG DOM 実装のドキュメントを参照)ために、 SVG コンテンツを表示する (JSVGCanvasを参照)ために、あるいは SVG フォーマットをコンバートする ( SVG トランスコーダ のチュートリアルを参照)ために結合するために、利用できる様々なコア モジュールを含んでいます。

さらに、Batikでは、 オブジェクト指向のグラフィック ベクトル ツールキット(GVT)、低レベルのSVG文法固有のパーサの集合と、(たとえば複雑なフィル タイプとフィルター エフェクトといった)Java 2D APIへの拡張の集合といった、低レベルモジュールを含んでいます。

最後に、Batikは開発者がコードと付き合いやすく、また様々なモジュールを迅速に利用することができるような、開発者を助けるためのパッケージされたアプリケーションを同梱しています: SVG ブラウザ ( org.apache.batik.apps.svgbrowser パッケージ) 、 SVG ラスタライザ ( org.apache.batik.apps.rasterizer パッケージ)、 フォント コンバータ ( org.apache.batik.apps.ttf2svg パッケージ) 、 SVG プリティ プリンタ ( org.apache.batik.apps.svgpp パッケージ)

SVG ブラウザ は、SVGドキュメントを、表示し、ユーザーにズーム、パン、ローテートさせ、SVGソースを表示し、SVGドキュメント間をリンクし、SVG DOMのツリー表現を表示する、などといったことができます。SVGビューアの重要なコンポーネントのひとつはorg.apache.batik.swing.JSVGCanvas コンポーネントで、これは任意のJavaアプリケーションでSVG表示機能を提供することができます。

SVG ラスタライザ は、ユーザーに、SVGファイルをJPEGやPNGのようなラスタ フォーマットにコンバートさせてくれます。これには拡張機構が備わっており、任意のラスタ フォーマットを追加することが出来ます。たとえば、このラスタライザは、あなたが特別なエフェクト(たとえば、シャドウ、グラデーション、などなど)を加えた1つのSVGファイルを作成してから、それをPNGイメージにして、その後SVGソースを変更したら(たとえば一部のテキストや色を変更したら)、そこから別のPNGイメージを生成することが出来ます。 こうして、あなたは簡単に共通のテーマやルック アンド フィールを提供する、一連のイメージを簡単に生成して、Webサイトに登録ことができます(参考までに、このラスタライザはWebサーバ上で利用して、これらのコンバートを自動的に行うこともできます)。

SVG フォント コンバータ は、ユーザーがTrue Typeフォント ファイルから、文字の集合を表すSVGフォントを簡単に作成させてくれます。このSVGフォント定義は、文字を利用しているドキュメント中に埋め込むことができます。これによって、ユーザーは、自ら包含してシステム フォントに依存しないようなSVGドキュメントを作成することができ、そのSVGファイルが全てのプラットフォームでオーサリングされたかのように正確に表示されることを保証してくれます。

SVG プリティ プリンタ は、SVGドキュメントを簡易印刷するための便利なツールであり、あなたが、任意の既存SVGドキュメントを再フォーマットして適切にフォーマットされた非常に読みやすいバージョンを作成することが出来るということを意味します。

これらのアプリケーションは、Batikがクライアントサイドで利用できる(ブラウザが任意のクライアントマシンで利用できる)ことも、サーバサイドで利用できる(ラスタライザが、SVGサポートのないクライアントマシンにSVGイメージを提供するために利用できる)ことも示しています。

SVGビューアとラスタライザは、Batikが可能にしているアプリケーションの種類の一部にすぎません。そのアーキテクチャは、異なるモジュール間において、異なる方法で利用されることを可能にしています。たとえば(他のベクトル フォーマット、たとえばPDFへの)トランスコーダのように、他のアプリケーションでも可能です。さらに、グラフィック ベクトル ツールキットが、XHTMLのような、他のグラフィック フォーマットをレンダリングするために用いられることも可能です。


どうやったらデモを見ることが出来ますか?

あなたはBatik SVGブラウザのオンライン デモンストレーションをデモ ページで見ることが出来ます。 また、Batikを ダウンロードしたり、Batik SVGビューアのスクリーンショット や、 ラスタライザが生成したイメージ、SVG Graphics2D generatorをどのように利用するかというを見ることが出来ます。


なぜApacheにこのようなプロジェクトが存在するのですか?

Apacheの目標は、Web上がオープン環境になれて、オープン環境であり続けることを可能にすることです。Batikは、今日と今後のWebにおけるキー フォーマットのオープンソースの実装であり、Apacheの目標にしっかりと合致しています。


Batikは他のApacheプロジェクトとどのように関連していますか?

Batik は、SVGイメージのサーバサイド ラスタライゼーションのためにCocoon で利用されています。 さらに、BatikはSVGイメージをPDFフォーマットにコンバートするために FOP プロジェクトでも利用されています。


これはどのようにして始まったのですか?

Batik はいくつものSVG関連のプロジェクトを行っていたチームが、それらの成果を、全体としてまとまっている方が個々のパーツであるよりも有益だという発想から始まりました。以下の企業や団体が、2000年秋までのBatikの初期プロジェクトに貢献や作成を行った、チームの一部です:

さらに、BatikプロジェクトはIBMにサポートされています。

我々はあらゆる人の参加を奨励しています。全てのASFプロジェクトと同様、全ての成果はボランティア ベースです。我々は、協調的なオープンソース ソフトウェア開発の精神に則って、一緒にBatikのゴールを目指してくれるような人を探しています。


私はどうしたら貢献できますか?

Batikプロジェクトは、Apache Software Foundation (ASF)の精神に基づく、オープンなボランティア プロジェクトです。これは、プロジェクトに貢献するには多くの方法があるということを意味します。直接的な参加(コーディング、ドキュメント作成、質問への回答、アイディアの提案、不具合の報告、バグフィックスの提案など)もできますし、リソースの提供(パブリシティ、ハードウェア、ソフトウェア、準拠性のプレゼンテーション、スピーチなど)もできます。ツールあるいは拡張としてBatikモジュールを利用するアプリケーションは、このプロジェクトにとって特に利益となります。

Batikへの貢献のプロセスは、Apacheの他のJavaプロジェクトと同様です。このプロセスの形式的な説明は、Jakarta のWebサイトで見ることができます。

直接的な参加については、Batik メーリングリスト に登録して(登録方法とメーリングリスト アーカイブにアクセスする方法へのリンクを辿ってください)、最新のコードをチェックアウトすることを提案します。


Batikはどこへ向かっていますか? 次は何ですか?

このSVGの実装は、完璧ではありませんし、それ以上に完全に機能するビューアとして達成しなければならない作業があります。

Batik 1.1 は全てのスタティックなSVGの機能、リンク、そしてスクリプティングを限定的にサポートしています。設計作業では、ダイナミック機能(スクリプティングとSMILアニメーション)のサポートを開始しました。

Batikに追加できる、あるいはされる予定のアプリケーションの種類(たとえばトランスコーディング アプリケーション)については、貢献とフィードバックに依存しています。


どのようにしたらSVGコンテンツを作成、オーサリングすることができますか?

あなたはいつものように、viあるいはxemacsのようなプレーン テキスト エディタを利用することができますが、SVGドキュメントをエクスポート出来るようなグラフィック オーサリング パッケージはたくさんあり、あなたにSVGコンテンツをヴィジュアルにオーサリングさせてくれるでしょう。

W3CのWebサイトの、SVGホームページの実装のセクションから、SVGをエクスポートするツールの一覧を得ることができます。あなたはBatikの上にツールをビルドする事を想像してもらっても良いでしょう: 貢献は自由なのだと感じてください!

オーサリングはSVGコンテンツを作成する1つの方法であり、グラフィック オーサリング パッケージはそのような目的には有用です。しかしグラフィックには、株価情報や統計データのような、生成できる種類も多くあります。それらの種類のグラフィックについては、SVGコンテンツを生成する方法は多様です。たとえば、あなたのデータ(株価情報とか)がXMLドキュメントの中に含まれていれば、あなたはそのXMLデータを、XSLTを使って変換することが出来ます。もしあなたのデータがデータベース上にあり、そのデータをWebサーバ上のサーブレットで(たとえばJDBCを用いて)扱う場合は、あなたはDOM APIのJavaバインディングを用いて、データベース データからSVGドキュメントを生成することが出来ます。あなたはBatikのSVGジェネレータを利用したり、Java 2D APIを利用して、グラフィックを生成することもできます。

以下のURLは、以上のそれぞれのソリューションについての詳細を知るために有益でしょう:


他にどのようなSVG製品が出ていますか?

SVGをサポートする企業はたくさんあります。あなたは W3CのSVG実装のページで、利用可能な実装の一覧を見ることが出来るでしょう


どこでSVG仕様を見ることが出来ますか?

SVG仕様はW3C Webサイトから利用可能です。


BatikはSVGをどれだけ実装していますか?

以下のステータス ページで、SVG仕様のどれだけをBatikが実装しているかを、SVG Basic Effectivityテストスイート中の、どのテストがBatikでパスしたかを示すことによって、表しています。


SVGがXML文法であることの利点は何ですか?

XML文法であるということは、SVGがXMLまわりの作業を活用することが出来るということを意味します。そしてSVGは実際に、リンクについてはXLink、アニメーションについてはSMILといった、他の文法を活用しています。

他のXML文法と利用あるいは混用する際には、XML文法であるということで、SVGは、SVGファイルを簡単に操作、生成、検索、編集させてくれるような、有り余るほどのXMLツールの恩恵を受けられます。


この名前は何に由来するものですか?

バティックとは、ジャワで発展してきた、高度な伝統芸術です(現在のインドネシアの一部となっている島ですね)。バティックは一般的に、インドネシアの独特の織物と考えられています。花、巻付き植物、葉、つぼみ、鳥、蝶、魚、虫そして幾何学模様のモチーフが、象徴的な繋がりと種類に富んでいます; バティックのパターンは約3000ほど記録に残っています。

Batikは、おいてこのツールキットのコアを構成する、Java、グラフィックス、高水準といった言葉を上品に想起させるものと考えています。

この ページが、バティックの模様がどのように見えるかの例を示しています。


Batikを動作させるためのシステム要件は何ですか?

Batik はJava言語で書かれており、今回の実装ではバージョン1.3を必要とします。


Batikはどのようにインストールしますか?

Batikを動作させるには JDK 1.3 が必要です。

Batikをインストールするには、バイナリまたはソースのディストリビューションをダウンロードして、あなたのコンピュータで解凍する必要があります。

詳しくはインストール方法を見ることが出来ます。


パッチやバグフィックスはどのように投稿すれば良いでしょうか?

あなたはバグフィックスやパッチをBatik developersメーリングリストに送信することができますし、Bugzillaにバグを入力することもできます。


SVGファイル中でどのスクリプト言語を使用できますか?

SVGファイル中のスクリプティングの制限付きサポートが、現在のバージョンのBatikでは提供されています(スクリプトは実行されますが、ダイナミックな更新がサポートされていません)。

Batikは以下のスクリプト言語を認識します:

  • ECMAScript については Mozilla Rhino JavaScriptエンジンに感謝して、このディストリビューションに含めています
  • Python については JPython エンジンをダウンロードする必要があります
  • Tcl については Jacl エンジンをダウンロードする必要があります

オプションのスクリプティング言語をインストールする方法についての詳しい情報は、インストール方法を見ることが出来ます。


Batikを実行しようとするとNoSuchMethodExceptionになります。何が問題でしょうか?

おそらく、あなたのclasspathに問題があります。環境変数CLASSPATHを明らかにして、Batikのアプリケーションを実行する前に、W3CのDOMバインディングを、利用する全てのライブラリを注意しながら、jre/lib/extから削除してください。


ソース ディストリビューションからはBatikの拡張タグを使用することが出来ますが、バイナリ ディストリビューションにはありません。何が足りないのでしょうか?

ソース ディストリビューションから実行すると、あなたは自動的にBatik拡張タグ(たとえばregularPolygonやstar)のサービス プロバイダ エントリを得ることができます。我々は、Batikアプリケーションのバイナリ ディストリビューションでは、それらをデフォルトで含めないことにしました。

'lib/batik-extensions.jar' ファイルをjavaのクラスパスに含めることによって、このBatik拡張タグを利用できるようになります。


samples/extensions ファイルを表示しようとすると、赤い円が出てくるのはなぜですか?

あなたはバイナリ ディストリビューションを使用しています。このディストリビューションには、我々の拡張の例のサポートが含まれていません(それらは例にすぎず、他の人たちはより複雑なことをすることができます)。

例を見たいのであれば、あなたのクラスパスに lib/batik-extensions.jar を含める必要があります。


BatikとFOPを一緒に使おうとしていますが、Batikが動作せず、org.w3c.xxx パッケージで失敗します。何が起きているのでしょうか?

FOP も Batik もorg.w3c.xxx packagesを利用しています。FOPとBatikのバージョンによっては、FOPが使用しているw3c.jarファイルより新しいパッケージを、Batikでは利用しています。しかし、もしFOPディストリビューションに由来するw3c.jarファイルがBatikのjarファイルより前にロードされた場合、FOPに由来するバージョン(つまり、Java仮想マシンがロードしたバージョン)が優先されます。そのバージョンがBatikと互換性がないために、あなたが失敗するのです。

この解決方法としては、Batikのディストリビューションに由来するw3c.jarファイルで再パッケージするか(そうするためにはBatikのソース ディストリビューションが必要です)、あるいは、それらをclasspathでw3c.jarの前に持ってくるなどして、Batikのjarがw3c.jarよりも前にロードされるようにしなければなりません。もしjarファイルを../jre/lib/extにコピーしているのであれば、単純にFOPのw3c.jarファイルをそのディレクトリから削除することが出来ます。


最新のCVSバージョンのBatikはどのようにチェックアウトしますか?

ただXML Apache CVS ページに記された方法に従ってください。


私はMac OS Xを使用していますが、表示したSVGファイルのいくつかが滅茶苦茶になります(内容がクリップされたり配置がなくなったりします)。これを直すにはどうすれば良いでしょうか?

Mac OS X リリース 10.1.1 については、Java 2D APIのAppleの実装に不具合が見られます。それらの問題の本当の原因や解決策はまだ判明していません(問題はApple JVMの'gstack underflow'エラーのメッセージと深く結びついているように見えますが)。我々はこれらの問題の原因や妥当な解決策を見つけることに関心がありますので、もしあなたがこれらのエラーの原因を知っていたら、Batikチームは非常にそれを(直接にでも、ユーザー/開発者メーリングリストを通じてでも)訊いてみたいと思っています。

他にMac OS Xに関して注意すべき事項としては、Mac OS Xでの他のJava 2Dの問題で、いくつかのフィルタ オペレーションが他のプラットフォームよりも顕著にメモリを消費することに気づくかもしれません。これは特に深くネストしたフィルタ ツリー(1つのフィルタ操作の結果が他のフィルタ操作によってフィルタされる場合)に当てはまります。

最後に、Mac OS Xでの問題を回避するためのヒントがいくつかあります。バグはフィルタによって起こっているようです(純粋なSVGドキュメントのラスタが「滅茶苦茶になる」というのは見たことがありません)。filter要素のfilterRes属性の使用が、特に問題があるようです。この不具合は100%の再現性がないため、他のコンテンツに問題があるとしても、もしあなたが自分で「直った」と思ったとしても、しばらくすると、それは再び壊れてしまうでしょう(私にはこの問題はある種のJVMの状態によって生じているのではないかと思えますが)。




Copyright © 2000-2001 The Apache Software Foundation. All Rights Reserved.