レビュー:史上最高の出来映えのInkscape 0.45

オープンソースソフトウェアの中で傑出した完成度を誇るベクタグラフィックスパッケージであるInkscapeが先月、新たな安定版をリリースした。Inkscape 0.45には、新機能、スピードの向上、ユーザビリティの改善が詰め込まれており、Inkscapeの今後の発展に期待を抱かせる仕上がりとなっている。

Inkscape.orgでは、ソースコード、Linux用Autopackageビルド、Mac OS X用バイナリ、Windows用バイナリが提供されている。Fedora用のRPMパッケージはFedora Extrasレポジトリから入手することができるが、今現在のところ、その他のディストリビューションのユーザは非公式のパッケージを探し出す必要があるだろう。

Inkscapeをソースからコンパイルしたい場合には、プロジェクトのwikiに詳しいハウツーが用意されている。依存関係は複雑ではないが、リリースノートにある通り、Inkscape 0.45にはGTK+ に関する「既知の問題点」があることに注意しよう。厳密に言うとInkscape 0.45はGTK+ 2.8以降に依存しているだけなのだが、クラッシュの原因となるバグがあるため2.10.7を使用することが強く推奨される。

私の場合、Ubuntu Edgy上にAutopackageのパッケージをインストールすることができなかったので、Ubuntuのフォーラムを検索してみたところ、親切なフォーラムメンバーがUbuntu Edgy専用パッケージを用意してくれているのを見つけることができた。このパッケージは非常に安定しており、日常的に使用しているマシン上で使うことにもためらいがないほどではあったが、一般的には、そういったコミュニティ製のパッケージをダウンロードする際には、パッケージの出来/成功率を知るために他のメンバーが投稿しているコメントをまずは読むようにすると良い。

新機能

inkscape45-screenshot-thumb.jpg
新機能(クリックで拡大)

Inkscape 0.45において最もわくわくする飛び切りの新機能は何と言っても、初めて実装されたSVGフィルタであるガウスぼかし(Gaussian blur)だ。このガウスぼかし機能はSVG仕様に準拠しており、図中すべてのオブジェクトに対して(塗り潰しの色や線の幅や透過度を調整するのとまったく同じように)ぼかしの設定を調整することができるようになっている。

今の時点ではガウスぼかしが唯一のフィルタではあるものの、このガウスぼかしは実は様々な場面で役立てることができる。このことについてInkscapeプロジェクトのBulia Byak氏がXaraXtreme-devメーリングリスト上でそのロジックを説明してくれている。「Xaraにはファンシーな影付けツールやこれもまたファンシーな “フェザリング” はあるけれど、そのような効果のベースとすることのできる基本的な機能が提供されていない。つまり “ガウスぼかし” が提供されていないんだ(ちなみに “フェザリング” と “ぼかし” は同じものじゃないよ!)。対照的にInkscapeでは、まずは汎用的に使える “ガウスぼかし” の実装から始めたんだ。そうすれば、影付けやフェザリングだけでなく、その他にも多くの効果を(ガウスぼかしを利用して)作ることができるからね。そして今やInkscapeではガウスぼかしが実装されているわけなので、そのガウスぼかしフィルタをベースとして影付けやフェザリングのようによく使われるようなものをプログラマや拡張の作者たちが追加するのは簡単にできるんだ」。

そして実際に、ガウスぼかしフィルタを使うと目を見張るようななかなかの効果を実現することができる。Inkscape 0.45リリースには事例としての画像集が付いており、車やコップなど世の中に実在する物体のフォトリアリスティックなレンダリングもいくつか含まれている。また上記でByak氏が述べていたような拡張の作者たちも非常に熱心に作業に取り組んでおり、彩度調整のようなカラー効果や、描画オブジェクトを再分割/ランダマイズするフラクタル効果や、ページのレイアウトのデザイン/テスト用のデタラメな文章を柔軟に生成することのできるLorem Ipsum拡張など、多くの補足的なツールがInkscape 0.45には搭載されている。

またカリグラフィー用の筆が好きな人には、新しくなった筆も嬉しいだろう。様々なオプションが新たに増えたのに加え、グラフィック用タブレットを使用する際に(前リリースで)起こっていた震えという不具合の修正など、重要な修正もいくつか行なわれた。

さらにInkscape 0.45リリースでは、描画のための機能だけではなくユーザビリティを支援するためのものもいくつか新たに追加されている。その中でも筆頭に挙げられるのは、履歴(History)ツールだ。これは本格的なアンドゥ履歴で、文書に対して行なった変更のすべてをバックアップしているのですべての変更を元に戻すことができる。素晴らしいことに、履歴のリストボックスでは一つの変更における複数のステップ(例えば何回かかけて少しずつオブジェクトを新しい場所へドラッグした場合など)は1つのグループとして表示されるようになっている。そのためステップを逐一バックアップしていながらも、履歴リストはより整然と見やすいものとなっている。

またそれほど目立たないものの、同様に重要な変更として、オブジェクト上にカーソルを持っていき、そこでマウスのホイールをスクロールすることでノードを選択することができるようになったことがある。なおマウスホイールをスクロールアップするとカーソルに最も近い位置にあるノードから始めて選択されたノードが増えていき、スクロールダウンすると選択されたノードが減っていく。このことは、ベクタグラフィックスをあまり使用しない人にとってはそれほど便利に思えないかもしれないが、でも信じてほしい、すごく便利なのだ。複雑なパス上にある複数のノードを選択しなければならないとき、旧式のやり方ではイライラさせられた。重複してしまうこともあれば、違うノードを選択してしまうこともあれば、失敗してすべてのノードを選択から外してしまったりすることもあったのだ。

個々のツールや機能に対する小さな変更は山ほど行なわれており、ここで挙げるには多すぎるが、詳しくはリリースノートを見て欲しい。中でも特にAdobe IllustratorやFreehandをよく使う人にとっては、いくつかの新しい機能のおかげで、移行やインポートやエクスポートがよりやりやすくなっている。

期待外れの点

私はInkscapeを気に入っているのだが、謳われているほどのスピードの向上が感じられなかったという点は正直に書いておかなければならないだろう。今回のリリースではレンダリングが最大10%高速化していると謳っており(それは当然、描画の種類によっても変わるのだが)、また、独立した複数の改良点のおかげで、特定のタスクに関してはInkscapeが速くなったことを感じるはずだと謳っている。

例えば、Inkscape 0.45では、画面上のオブジェクトを移動したり変更したりするとき、新しいユーザの入力に対応した再描画を即座に行なうようになり、それまでしていた再描画を中断するようになった。つまり、以前はInkscapeは移動のたびに毎回最後まで(中断せずに)再描画していたのだが、今現在のInkscape 0.45では、移動をし続けると古い移動に関する再描画を中断して、新しい移動に関する再描画を開始するようになったのだ。これによりユーザに対して瞬時に反応するようになるため、インターフェースの反応が良くなったように感じるはずなのだが、 私の場合は単に、これまで通りの遅延時間プラス再描画の間にUIがハングする、という症状となって表われた。

またガウスぼかしフィルタ効果は非常に素晴らしいのだが、オブジェクトのクローンに対して使用すると、いくつかの不可思議なバグに出くわした。そのようなバグを確実に再現するステップが不明(これが不可思議と言ってる理由)なのだが、時折オブジェクトはぼかし効果を設定されていることを単に忘れてしまっているようだった。

今後

inkscape45-examples-thumb.jpg
アートワークの一例(クリックで拡大)

今述べたような難点があるからと言って、Inkscape 0.45へアップグレードするのをためらう理由にはまったくならない。バグは常にあるものだし、私が遭遇したガウスぼかしの不具合(これについては私がテストに使った非公式パッケージに限定した問題である可能性もある)の原因が何であれ、取り返しのつかない被害があったわけではない。

今やSVGフィルタの基本的な枠組みは整っているので、追加の各フィルタを作成することは気が遠くなるほどの作業ではなくなった。SVG 1.1仕様では16種のフィルタプリミティブが記述されているが、Byak氏によるとブレンド(Blend)についての要望が中でも最も大きいという。Inkscape 0.45のSVGフィルタの基本的な枠組みに関しては2006年のGoogle Summer of CodeのInkscapeのプロジェクトの一つであったということもあり、開発者たちは現在、同プロジェクトとして2007年は特定のフィルタの実装に関して提案することを議論しているところだ。

また、開発チームはレンダリング用のコードを内部的なInkscapeのレンダラからCairoベクタグラフィックスライブラリへ移行する準備を行なっており、スピードの問題についても次期開発サイクルにおいて改めて取り組む予定となっている。これはInkscapeの目下のレンダラを書いた開発者がかなり前にプロジェクトから離れてしまったため、そのコードを維持するのがますます困難になりつつあるためだ。また、Cairo自体のスピードがInkscapeの現在のレンダラに追い付くまでにしばらく時間がかかったものの、現時点ではスピードも安定性も移行に見合うものになっているということもある。

2月16日にはByak氏が、アウトラインモードでのパスのレンダリングにCairoを使用する変更をSVNにコミットした。これにより25%の高速化が報告されている。5~10%の高速化では人間にとっては認識しにくいが、25%ともなるとどういう基準で考えてもはっきりと分かるはずだ。

Byak氏によると「現在の計画は、Inkscapeの表示エンジンの様々な部分をCairoへと徐々に切り替えていくこと。この方法だと比較的やりやすい上、コードの単純化や性能やメモリ使用といった面でのプラスがすぐに得られるようになるからね」とのことだ。さらにByak氏によると、InkscapeはゆくゆくはCairoのハードウェアアクセラレーションバックエンドを使用するよう切り替えることができるようになり、それによりさらなるスピードアップが期待できるという。

ハードウェアアクセラレーションの効いたベクタ編集というのはなかなか素晴らしいことだ。しかしそれが実現するまでの間は、今回の0.45リリースが史上最高のInkscapeだ。Inkscapeプロジェクトは開始以来、常に一貫して高品質でプロフェッショナルなリリースを維持してきたが、0.45リリースも期待通りの出来映えだ。

まとめると、Inkscape 0.45はガウスぼかしSVGフィルタだけをもってしても、まったく新しい創作の世界を切り開くものなのだが、それだけに留まらず新しい拡張効果やユーザビリティの改善によっても完成度が高まっている。…とは言っても正直なところ、なんちゃってラテン語のローカライゼーションまで提供しているアプリケーションを好きにならずにはいられないでしょう?

NewsForge.com 原文