Vivliostyle のこれからの開発課題

村上 真雄 (@MurakamiShinyu)
Vivliostyle Foundation 代表

先日のイベント〈Vivliostyle 開発者とユーザーの集い 2019 夏Vivliostyle 開発者とユーザーの集い 2019 夏開催しました! https://vivliostyle.org/ja/blog/2019/09/04/vivliostyle-dev-user-meetup-tokyo20190831/ の《第 1 部》開発者ミーティング「Vivliostyle 開発のこれまでと、これからへ「Vivliostyle開発のこれまでと、これからへ」http://bit.ly/vivdev20190831で、Vivliostyle.js ソースコードの TypeScript 化が完了したことで今後の開発が楽になったことと、開発課題(issue)を課題カテゴリーごとのプロジェクトに整理して GitHub Projectshttps://github.com/vivliostyle/vivliostyle.js/projects/ で管理するようにしたことを説明して、ミーティング参加者(30 名くらい)にどのプロジェクトが重要か聞きました(複数回答)。結果は以下:

この結果を見てわかるのは、どのプロジェクトもそれぞれ重要だけど、特に CSS ページメディア関連仕様や高度なレイアウトの CSS 仕様のサポートを拡充することへの期待が高いということです。それからドキュメントの充実ということも。

これを踏まえて今後、とくに要望が多い項目を意識しながらも、どのプロジェクトも進めていきたいところです。とはいうものの、どれもそんなに簡単なプロジェクトではありません。もっと皆様の協力が得られることが必要であるし、そのためには、その課題について理解を広めなければと思います。そこで、各プロジェクトの主な課題について、解説します。

Bugs(レイアウトの不具合など直す)

現在、約 30 数件のバグが残っています。プログラムの誤りや、実装が不十分であるために期待されるレイアウトにならないなどです。バグというより現在の実装での制限事項であって解決には本格的な処理の見直し・再設計が必要という問題は別のプロジェクトに割り振っているので、ここにあるのは比較的単純な問題です。

そのいくつか:

PDF printing(PDF出力および印刷に関する問題を解決する)

現状はブラウザの PDF 出力に依存するため、これらの問題があります。

Input formats(多様な入力文書フォーマットのサポート)

Vivliostyle は現在、入力文書フォーマットとして (X)HTML 文書、複数の HTML 文書をまとめた Web 出版物、および、ZIP 解凍済みの EPUB をサポートしています。また、文書中で使える数式のフォーマットとして、MathML、AsciiMath、TeX の数式をサポートしています(MathJax ライブラリを利用)。これをもっと充実させたいという要望があります。主なもの:

Paged media(CSSページメディア関連仕様のサポート)

CSS Paged Media および CSS Generated Content for Paged Media 仕様のサポートに関する課題です。主なもの:

Typography(文字組版関連CSS仕様サポート)

文字組版の問題:CSS Text 3, CSS Text 4CSS Fonts 仕様などのサポートに関する課題です。主なもの:

Layout enhancement(高度なレイアウトのCSS仕様サポート)

高度なレイアウトを実現する CSS 仕様のサポート:CSS Page FloatsCSS Grid LayoutCSS Multi-column Layout などに関する課題です。

Web standards(Web標準仕様のサポート)

Web 標準仕様のサポート:最新ブラウザでサポートされている HTML や CSS の機能など。他のプロジェクトに分類できるものを除きます。

Other improvements(その他の改良)

その他の課題として、エラー処理の改善、Viewer UI の課題、ブラウザ拡張機能の要望、ドキュメンテーションについて、などがあります。

まとめ

以上、Vivliostyle の今後の開発課題の主なものでした。

開発体制の現状と、まずできること

さて、これらをどうしていくかです。現在このオープンソース・プロジェクトの主体である Vivliostyle Foundation は、昨年、それまで Vivliostyle を開発してきた会社(現在の社名は Trim-marks Inc.)がオープンソース製品の取り扱いを終了したことに伴い、会社から独立してオープンソース・プロジェクトを維持していくために発足したものです。代表の私は、元々の Vivliostyle 社の創業者ですが、自分が Vivliostyle.js のメインの開発者だったことはそれまでなくて、そのコードに少しずつ手を入れ始めたのは昨年からです。そんな私と数名のボランティアの協力で維持しているものなので、開発リソースはとても限られていて、資金があるわけでもありません。

この記事の最初のほうで「とくに要望が多い項目を意識しながらも、どのプロジェクトも進めていきたい」と書いたものの、実際は今すぐ取りかかれそうなことはバグを直していくことや、すでにブラウザで実装されている機能を Vivliostyle から利用可能にするなど、比較的簡単な作業に限られそうです。

要望が多い、Paged media(CSS ページメディア関連仕様のサポート)の柱(欄外見出し)の機能や、Layout enhancement(高度なレイアウトの CSS 仕様サポート)の段組レイアウトの制限をなくすことなどは、それぞれ本格的な開発作業を要するものであり、それらを進められるようにするためには、資金的な支援が得られてじっくり開発に取り組めるようになることや、あるいはボランティアでの貢献をしたい開発者・協力者たちのコミュニティを育てられるかということに掛かっています。

Vivliostyle を活用してください! それから、開発支援に感謝!

多くの人に使ってもらえることで Vivliostyle が世の中に認知されて、プロジェクトへの協力が得られやすくなることを期待しています。

Vivliostyle をどう活用するかは、そのオープンソースのライセンス(AGPLv3)に違反しないかぎり自由です。自費出版への利用などはもちろんですが、企業内での利用、商業出版への利用、出版コンテンツの閲覧サービスへの利用、Web コンテンツの印刷機能への利用など、いろいろと使い道があるでしょう。

そのような Vivliostyle 活用の相談については、コミュニティでの投稿歓迎ですが、オープンにできない案件については私に直接ご相談くだされば対応します(内容によって有料でのコンサルティングも)。また、現在の Vivliostyle に足りない機能や修正が必要な問題(すでに issue 登録されている課題でもそれ以外でも)がある場合、その開発についてご相談ください。オープンソースですので、特定ユーザー(企業など)の必要によりそのユーザーの負担(共同開発や開発費負担)で開発された機能もオープンソースで公開されて、あとから利用する別のユーザーにも恩恵があるということになります。現在 Vivliostyle で利用できる機能の一部はそのような形で支援を受けて開発されたものです。Vivliostyle のリリースノートの謝辞(Acknowledgements)に開発貢献・支援いただいた企業などのお名前を入れております。開発支援に感謝します。

開発に興味ある人は、一緒に Vivliostyle のソースコードを読もう

Vivliostyle.js ソースコードの TypeScript への移行は、ソースコードを読みやすくして、今後の開発がよりスムーズに行えるようにと行ったものですが、それでもこのプログラムを理解して開発できるまでになるのは容易ではないと思います。

そこで、みんなでソースコードを読もうという、Vivliostyle コードリーディング会をやっていこうという声が上がってます。そのスケジュールなど決まったら案内しますのでご参加ください。

Vivliostyle Viewer (vivliostyle.js + vivliostyle-ui) をソースコードからビルドして、テスト、デバッグ実行する手順などは、Vivliostyle.js Development にあります。ぜひこの手順でビルドして試してみてください。

以下、Vivliostyle の開発に関係する URL のまとめです:

不具合や要望などフィードバックをお寄せください

Vivliostyle を使っていて気になったことや、必要な機能の要望などは、どんどんお寄せください。ユーザーからのフィードバックがあることは励みになります。

不具合や要望などのフィードバックは、GitHub の issue に登録してくれるとありがたいですが、Vivliostyle のコミュニティ: Slack、Twitter、Facebook グループでの質問やフィードバックも歓迎します。

Vivliostyle コミュニティをチェック!

ここから参加できる Vivliostyle の Slack が、Vivliostyle 開発者とユーザーのコミュニティの中心になっています。現在の参加者数45名くらい。 まだの方はぜひご参加ください。次のチャンネルなどがあります:

それから Vivliostyle の Twitter や Facebook グループもどうぞよろしく。 Vivliostyle への皆様のご支援に感謝します!