matplotlibで書籍図版を量産する — スクリプト作図の利点と落とし穴(連載⑥)


matplotlibで書籍図版を量産する(連載⑥)

matplotlibで書籍図版を量産する — スクリプト作図の利点と落とし穴(連載⑥)

「日本の測地系がわかる本」制作の裏側を綴る連載、第6回です。前回までの5回で、本の企画から市場調査・章の再構成・AI並列執筆・リーン初版の判断まで扱いました。今回は、本の中身を支える図版の作り方——手描きでもGemini生成でもなく、matplotlibスクリプトで作図するという選択について書きます。


「精密な図」はスクリプトで作る、と決めた理由

書籍の図版には性格の異なる2種類があります。

  • 世界観を伝えるイラスト:表紙や比喩的な図(「元期=座標の写真を撮った日」のカメラのイメージなど)。これはGeminiでのイラスト生成に向いています。
  • 数値・構造を正確に伝える図:H = h − N の断面図、年表、測地系の分布図など。これは生成AIの一発描画では、ラベル位置や矢印の向き、数値の整合性が保証できません。

後者について、今回の本では Python(matplotlib)で作図し、日本語フォントはHiragino Sansを指定する方針にしました。理由はシンプルで、同じスクリプトを再実行すれば同じ図が出るという再現性です。国土地理院の公表値が更新されたときも、スクリプト内の数値を直せば図を作り直せます。

matplotlibで作図したH=h-N断面図の例

上の図は、実際に本文で使っている「楕円体高・ジオイド高・標高の関係(H = h − N)」の断面図です。手描きのイラストではなく、座標・矢印・ラベルをすべてスクリプトで配置しています。


スクリプトを分業する

本の制作では、作図用のスクリプトを目的別に分けて images-work/scripts/ に置いています。

スクリプト 役割
generate_figures.py 概念図・断面図など新規作図の本体
concept_figures.py 初心者向けの比喩図(鉛直線の傾き、ミカンの皮の例えなど)
compose_ch08_figures.py 複数の補正パラメータ比較図の合成
compose_app_screens.py アプリの実機スクショを整えて章末に組み込む合成
collect_images.py ブログ画像などの流用素材を、章番号付きファイル名へ集約
check_images.py 完成画像の仕様(幅・容量・背景色)を一括検査

役割ごとにスクリプトを分けておくと、「年表だけ直したい」「ある章の図だけ再生成したい」というときに、影響範囲を絞って再実行できます。

matplotlibで作図した測地系の年表

この年表も同じ発想で、1892年の日本経緯度原点決定から2025年前後の改定まで、イベントをスクリプト内のリストで管理しています。年号や制度名を1行直すだけで年表全体を作り直せるのが、スクリプト作図の強みです。


落とし穴1:文字サイズと重なり

matplotlibのデフォルト設定のまま作図すると、Kindleのリフロー表示で図が縮小されたときに文字が読めなくなるという問題が起きます。今回の制作では「画像幅1600pxに対して文字は最小40px相当」という基準を決め、意図的にフォントサイズを大きめに設定しています。

実際に、初回レビューで「年表の右側の年号が密集して読めない」「断面図の下部の説明文が図と重なっている」という指摘が入り、レイアウトの間隔調整とフォント拡大で作り直したことがありました。生成AIのイラストと違い、matplotlibなら該当箇所の座標だけを直して再実行できるのが、修正の速さにつながります。

落とし穴2:グレースケール確認を忘れない

Kindle端末の中には電子ペーパー(グレースケール表示)のものがあります。色分けだけに頼った図は、こうした端末では線の区別がつかなくなることがあります。そのため、色だけでなく線種やラベルも併用し、さらに全画像をグレースケール変換したプレビュー画像を作って目視確認する工程を挟んでいます。「色は主張2色まで+グレー」という制約も、この確認を前提に決めたルールです。


まとめ

  • 書籍の図版は「世界観を伝えるイラスト(Gemini)」と「数値・構造を正確に伝える図(matplotlibスクリプト)」を使い分けている。
  • スクリプトを役割ごとに分けておくと、数値更新や部分修正のたびに全体を作り直さずに済む。
  • リフロー表示・電子ペーパー表示という制約が、文字サイズ・配色ルールの根拠になっている。

次回は、原稿(Markdown)からEPUBを組み立てるビルドパイプラインについて書きます。

関連記事


開発者より: アプリ・Kindle本・オープンソースの一覧は GitHub: amru195704 にまとめています。


お願い
本記事の情報は参考目的で掲載しており、正確性・完全性を保証するものではありません。誤記・不正確な情報がございましたら、コメント欄よりご指摘いただければ、確認のうえ修正いたします。


アプリを入手(App Store)GeoConverterPro(座標変換) | GeoPrism JP(測地系の可視化・学習)


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Back to top