Skip to content

feat: Office 文書を画像へ描画する経路を base の外に置く(containers/docs の新設・案 A/B/C の比較) #219

Description

@takemi-ohama

何を見つけたか

base に LibreOffice を入れないと決めたため、Office 文書を画像へ描画する経路が devbase のどこにも無いままになる。 #160 は base へ軽量の道具(poppler-utils / python3-pil / python3-defusedxml / python3-lxml / crosextra 2 種)だけを足し、LibreOffice(展開 372〜459 MB)は base に入れないと決めた。document-skills の視覚 QA は soffice --headless --convert-to pdf → pdftoppm の 2 段で、前段が欠けたままになる。

document-skills の thumbnail.py は office.soffice.run_soffice を import して LibreOffice を必ず呼ぶため、base だけでは動かない。clean.py と office/validate.py は soffice を参照しないので base で動く(#160 の実測)。

案の比較(#160 の本文から引き写す)

案 形 base への負担 制約
A 派生イメージに置く(containers/docs を新設、または containers/latex を文書系として広げる) 0。そのプロジェクトだけが払う containers/latex が同じ形の先例(containers/latex/Dockerfile:7 が FROM devbase-base:latest)
B 使い捨てコンテナで都度変換する 0。初回だけ pull base に docker-ce があるため成立する。イメージの選定と保守が要る
C Google Slides へ変換して確認する 0 gws(@googleworkspace/cli)が base にある。Google アカウントとネットワークが要る

#160 は A を推している。 containers/latex という先例があり、文書を作るプロジェクトだけが 372〜459 MB を払う形になる。devbase build <image> は $DEVBASE_ROOT/containers/<image> を汎用に建ててタグを devbase-<ディレクトリ名> にするため(lib/devbase/commands/container.py の _build_single_image)、containers/docs の新設に本体側の登録変更は要らない。

C はサイズ 0 で、しかも精度が高い。 配布する実物を見るため、書体の代替による字幅のずれが起きない。ただし Google アカウントが要るため、単独の解にはならない。実案件(volareinc/nyle-dx PR #5)ではこの手で 11 ページを確認した。

LibreOffice の実測(#160 の起票時、Ubuntu 26.04 / arm64)

セット 追加パッケージ 展開 ダウンロード base(7.09GB)比
libreoffice-impress のみ 78 372.1 MB 101.8 MB +5.2%
libreoffice-impress + -writer + -calc 90 458.6 MB 122.7 MB +6.5%
libreoffice(メタ) 98 475.0 MB 126.4 MB +6.7%

libreoffice メタと impress+writer+calc の差は 16 MB しかない。 11 ページの日本語スライドを稼働中のコンテナで通した実測では、soffice --headless --convert-to pdf が 0.6 秒、pdftoppm で 11 枚の JPEG が出た。

どこで見つけたか

#160 の本文「Office 文書を画像にする経路をどうするか」。PLAN63(#161 / #160 の設計)で、conductor が範囲を「base への追加」に限ると決めた。

なぜこの変更の範囲外なのか

#160 の表題の範囲は base への軽量の道具の追加であり、派生イメージの新設はそれを超える。PLAN63 の受け入れ条件はすべて containers/base の中で閉じており、新しいイメージの追加は 1 つも含まない。

直さないと何が起きるか

スライドや文書を作っても、出来上がりを目視で確認できない状態が続く。文字のはみ出し・要素の重なり・表と枠の衝突は、描画しないと分からない。当面は案 C(Google Slides のサムネイル)で凌げるが、Google アカウントとネットワークが要るため、オフラインの作業では通らない。

由来

issue #160 / PLAN63(issues/PLAN63_base-image-rendering.md)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions