$30 off During Our Annual Pro Sale. View Details »

7年間死んでたJavaライブラリを復活させようとしてる話

 7年間死んでたJavaライブラリを復活させようとしてる話

Open Developers Conference 2021のLTで話した内容です。COSCUP 2021、社内LTで三回も同じネタを使いまわす話。
OpenDocument FormatをPDF生成システムに使うと便利だよというのが主題で、jOpenDocumentをリブートしようとしてるよというのはつけたりです(でもjOpenDocument便利なのは本当なので、リブートできたらうれしいです。

Naruhiko Ogasawara

August 28, 2021
Tweet

More Decks by Naruhiko Ogasawara

Other Decks in Technology

Transcript

  1. 7 年間死んでた
    Java ライブラリを
    復活させようとしてる話
    おがさわらなるひこ

    View Slide

  2. OpenDocument Format (ODF)
    ● LibreOffice の標準フォーマット
    ● オフィス系ドキュメントの相互運用性を真に目的とした唯一の国際標準ファイル
    フォーマット
    ● 国際標準化団体 OASIS の OpenDocument TC にて標準化、その後 ISO 標準に
    ● アプリケーションの機能改善に伴う定期的な更新を取り込んで規格自体も更新、
    現在 1.3 が OASIS 勧告で ISO 化中
    ● 2006 年に規格化された後エラッタレベルでしか改訂が行われていない「 ISO 標準のファイル
    フォーマットであること」という調達要件を満たすことだけを目的としたものとは違う

    View Slide

  3. ODF の技術的特徴
    ● XML および一部埋め込みメディアの ZIP アーカイブ
    ● シンプルなスキーマ
    ● 人間にとっても機械(プログラム)にとっても高い可読性、操作

    ● 豊富なライブラリエコシステム( Java 、 C/C++ 、 Go 、……)
    ● レポート生成システムのバックエンドに最適

    View Slide

  4. ODF + LibreOffice → PDF レポート生成システム

    View Slide

  5. jOpenDocument
    ● http://www.jopendocument.org/
    ● JVM 言語で利用できる ODF の操作ライブラリ
    ● GPLv3 による OSS
    ● わかりやすいプログラマ向け I/F ( API )
    ● 専用のプラグインによる便利なテンプレート機能
    ● 結構便利で、弊社のツールは大体こいつに依存しており、オススメしたい……が

    View Slide

  6. だがしかし……
    ● に、 2014 年……
    ● さすがに 7 年前はつらい
    ● 実際につらみが
    ● Obsolute API 使ってるから将来
    の JDK だと動かないよ!と警
    告がバリバリ出る
    ● ODF 1.3 (LibO 7.x の標準)が操
    作できない

    View Slide

  7. じゃあフォークしよう!
    ● https://github.com/naruoga/jOpenDocument
    ● 仕事じゃないです。いまんとこプライベートワークです。
    ● もしかしたら仕事の一環としてやらせてもらえるかも……だけど

    View Slide

  8. ちなみに
    ● 自分 Java 業務で書き始めたの 5 年ぐらい前
    ● すでに世の中は Gradle + Intellij IDEA だった
    ● Ant? Maven? よくわからない
    ● Java といえば XML 文化だけど XML も実はよくわからない
    ● わからなくたってフォークはできる! OSS だもの!

    View Slide

  9. 現在できてること
    ● 2021 年に Ant はヤなので Maven 化
    ● JAR で抱いてた依存関係も pom.xml に移動し可能な限り最新化
    ● Jitpack で JAR ファイルも配布
    ● ユニットテストも一部動くように
    ● 超簡単なサンプルは動いた
    ● GitHub Actions による CI
    ● JDK 8, JDK11 での自動ビルド& UT 実行

    View Slide

  10. できてないこと(のほうが多い……)
    ● (細かいことだけど)まだパッケージ名が昔のまま
    ● XML ライブラリのくせにスキーマバリデーションが動いてない
    ● 誰か RelaxNG に詳しい人教えてくだされ
    ● やっぱ 2004 年開発のライブラリに依存してるのがよくないのかなあ
    ● なのでリアルなプログラムだとまだ動いてない
    ● 動かせなくて潰してるユニットテストがある
    ● というかユニットテストがぜんぜん足りない
    ● できれば下回りを別の ODF ライブラリに乗せ換えたい
    ● そしていつかは Maven Central にリリース……したい!

    View Slide

  11. まとめ
    ● 実力はなくても勢いがあればフォークはできる
    ● できるところから始めてれば実力は勝手につく(といいなあ)
    ● でも詳しい人の助言や PR やその他はウェルカム
    ● PDF 生成システムに ODF 使うの超便利なのでぜひ検討を

    View Slide

  12. おまけ

    View Slide

  13. ODFを用いて PDFレポート生成システムを作る話は
    2020年の台湾のオープンソースイベントCOSCUPで発表しました
    https://speakerdeck.com/naruoga/why-odf-is-the-best-intermediate-format-for-report-generation-systems
    技術面に興味がある人は
    よかったら見てください
    (なお YouTube にビデオも
     あるけど死ぬほど英語つらい
     ので見ないで…… >< )

    View Slide

  14. 本件について書いたブログ
    (わたしがいかにしょぼいことしかしてないかバレる)
    ● https://naruoga.hatenablog.com/entry/2021/07/11/172032
    ● https://naruoga.hatenablog.com/entry/2021/07/16/110327
    ● https://naruoga.hatenablog.com/entry/2021/07/16/161413
    ● https://naruoga.hatenablog.com/entry/2021/07/16/184505
    ※ ) 7 月 16 日から進捗がないのはどういうことなの……?

    View Slide