この連載(全3回)
個人開発している「見開きPDFビューア(MihirakiPDFViewer)」のサンプルマンガ『ためし部』を、検索できる多言語PDFにしました。日本語の縦書きと英語の横書きで共通の絵を使い、翻訳、文字組み、PDF化、版管理を進めた記録です。
第1話「ひと息マップ」と第2話「机、ひろがる。」は各8ページで、日英の配布版はiOS・Androidで共用しています。10月27日には第3話の日英PDFも制作しました。本稿では、作品の設定・演出とは分けて、文字情報と表示をどう組み立て、確認したかを扱います。
PDF制作の引用元は、Codexに残る会話「考案するオリジナル4コマ設定」です。作者名の確認・修正では、Android StudioのGeminiチャットと送信リクエストログ、Android版ビューアのGit履歴も参照しています。本文の依頼文は原文全文、回答と図中の依頼文は抜粋です。日付・時刻は2026年・日本時間で記載し、当時のAIの検証報告と、記事準備時に確かめた内容を区別しています。
最初から「検索できるPDF」を依頼した
9月26日の最初の依頼では、作品の設定と一緒に、右綴じ・8ページ、日本語版の縦書き、英語版の横書き、セリフなどのテキストを検索可能にすることを指定しました。下の図は、そのPDFとしての要件です。初回の依頼全文と第1話のラフ修正は第1回、第2・第3話で編集判断が変わった経緯は第2回に掲載しています。
図1 最初の依頼に含めたPDFの要件。右綴じ、日本語の縦書き・英語の横書き、検索可能な文字情報を、作品の設定と一緒に指定した。
作画と文字を分ける
図2 制作メモと生成処理をもとに整理した工程図。台本・作画・文字組みを行き来しながら改訂しています。
今回の制作では、画像生成に文字や吹き出しを描かせず、後から文字を配置しました。作画には内蔵の画像生成機能、PDFの組み立てにはPythonのReportLabとpypdfを使っています。ページはA5縦です。
台本には、各コマの場面、話者、日本語と英語のセリフを持たせました。作画は2列×4段の8コマを1枚に描くよう指示し、その画像の各コマをPDF内へ配置します。見出し、吹き出し、セリフは別に描画しました。
画像と文字を分けたことで、セリフを直すたびに絵を作り直す必要がなくなりました。日本語の縦書きと英語の横書きも、同じ絵へ別々に載せられます。
英語版は、同じ絵に文字を組み直す
9月27日には、改訂内容を反映した英語版も依頼しました。
同じ内容の英語版を作成してください。
最新版と同じ内容・イラストの英語版を作成しました。セリフは横書きで、表紙・人物紹介・奥付も英語化しています。全56セリフの検索と全8ページの表示を確認済みです。
この「確認済み」は、当時の制作工程での回答です。すべての端末やビューアで検索動作を確認したという意味ではありません。
図3 第1話4ページ。絵は共通ですが、日本語の縦書きと英語の横書きで、吹き出しの形・大きさ・配置が変わります。
翻訳文の長さが変わるので、文字を差し替えるだけでは収まりません。英語版は吹き出しの幅と改行も調整しています。コマは日本語版と同じく右列から読みます。
縦書きのセリフを、検索できる文字にする
日本語版のセリフは画像に焼き込まず、フォントを埋め込んだ文字として配置しました。制作コードと掲載用PDFを確認すると、日本語の縦書きセリフにはIdentity-Vが指定され、文字コードをUnicodeへ対応付けるToUnicodeの表も付いていました。今回は、画像をOCRで読み直して検索用テキストを付けた方式ではありません。
図4 第1話3ページの同じコマを、作画素材、フォントを埋め込んだセリフを配置したPDF、iPad版ビューアの検索表示で比較。
文字データがあるかは、見た目とは別に確認できます。次は、図4のコマにある「中庭、静か。」を、掲載PDFから抽出した文字列の中で探す例です。図のアプリ画面では、そのセリフの一部の「静か」を検索しています。
from pypdf import PdfReader
reader = PdfReader("tameshibu_episode1_2_ja.pdf")
query = "中庭、静か。"
for number, page in enumerate(reader.pages, start=1):
text = "".join((page.extract_text() or "").split())
if query in text:
print(number) # 3
初稿準備の10月23日には、記事で紹介する日英4冊を台本と照合しました。空白と改行を除いて比較し、第1話は各56件、第2話は各54件のセリフすべてが文字抽出結果に含まれることを確認しています。これは記事作成時の確認で、引用したAIの当時の検証報告とは区別しています。
文字抽出だけではアプリ内の検索結果やハイライトの位置は確認できません。図4には保存済みのiPad版ビューアの検索表示を載せましたが、今回あらためて実機で再検証したものではありません。表示できること、文字を抽出できること、ビューアで検索が動くこと、翻訳が自然なことは、別々の確認項目です。
第3話も、台本と文字情報を照合する
10月27日に制作した第3話「出張、ためし部!」/“Out and About” の日英版についても、記事追記時に手元のPDFを確認しました。両版とも8ページ・13本の4コマで、表紙と8ページはカラー、2〜7ページはモノクロです。
セリフ・効果音・札の文など47件ずつが、空白と改行を除いた文字抽出結果に含まれることを台本と照合しました。PDF 1.5、TwoPageRight、R2Lも確認しています。各アプリでの検索や配布登録を確認したという意味ではありません。
言語版を増やし、版管理もそろえる
10月4日には韓国語版を依頼しました。
第1話と第2話の韓国語版を作成してください。
韓国語版を作成しました。各8ページで、表紙・人物紹介・奥付も韓国語化し、全セリフの検索を確認済みです。
同日に中国語簡体字版、10月8日には繁体字・ドイツ語・フランス語へ広げました。そして10月8日、7言語の第1話・第2話について版の管理方法をそろえています。
図5 第1・第2話の言語展開。日英2言語から4・7・14言語へ増やした流れを制作履歴から整理した。
各言語版の最新版に対して、次の変更を加えたPDFファイルを作成してください。
- (最新版の)元の日付を初版の日付にする
- 必要なら今日の日付を2版扱いにする
- ページ8の奥付にCC BY 4.0の表記を追加する
- ファイル名を tameshibu_episode[n][\_版数]\_[言語].pdf に揃える
- PDFのプロパティを、PageLayout TwoPageRight、Direction R2Lに設定する
確認したい内容があれば質問してください。
全7言語・14冊の第2版を作成しました。
この回答と奥付に記載された初版日は、第1話が9月28日、第2話が10月3日です。第2版日はどちらも10月8日。制作開始日と奥付の初版日、翻訳ファイルを実際に生成した日は同じものとして扱っていません。
図6 版管理ルールと保存ファイル名の例。版数の省略・第2版の「_2」、話数、言語コードを対応させ、奥付の初版日・第2版日とPDF形式のバージョンを区別した。
PDFにはPageLayout: TwoPageRightとViewerPreferences /Direction: R2Lを指定しました。10月9日には、今後のPDFをバージョン1.5にするよう依頼しています。掲載対象の日英4冊は、10月23日の確認ではPDF 1.5、TwoPageRight、R2Lでした。
表紙だけ白紙になった中国語版を直す
10月11日には、実際にPDFを見た結果を受け、修正を依頼しました。
中国語(簡体字)版と中国語(繁体字)版の最新版がページ1のみ白紙になっていました。修正版を作成してください。ページ8に記述の日付はそのままにしてください。
4冊の表紙を修復し、表示を確認しました。8ページの日付は変更していません。 PDF 1.5・TwoPageRight・R2Lも設定済みです。
「作れた」という回答の後にも、配布ファイルを開いてページを見る必要がありました。白紙になった原因や、全ビューアでの再検証までは、この記録からは分かりません。
移管資料の調査では、Android側リポジトリへの中国語PDFの更新は10月12日とされています。修正を依頼した日と、アプリ側へ反映した日は分けて記録しています。
ネパール語では、見える字形と検索用文字を分ける
10月16日には、さらに4言語を依頼しました。
ベトナム語版、フィリピン語(タガログ語)版、ネパール語版、インドネシア語版の漫画PDF(第1話・第2話)を作成してください。
制作中の回答には、次の記述があります。
4言語の本文翻訳が揃いました。ネパール語には専用フォントと字形処理を使い、検索用の文字情報も保持します。
生成コードのwork/nepali/typography.pyを見ると、ネパール語ではHarfBuzzを使って字形と配置を求めています。処理は大きく二つに分かれていました。
| 目的 | この制作コードの処理 |
|---|---|
| 見える文字を描く | HarfBuzzで得た字形・送り幅・オフセットを使い、フォントの輪郭をパスとして描画 |
| 検索用の文字情報を残す | 元の文字列をdrawString(..., mode=3, shaping=False)で別に配置 |
図7 今回の生成コードをもとにした概念図。表示用の輪郭と検索用の文字情報を同じPDFに持たせています。
フォントを切り替えて同じ文字列を描くだけで済ませず、表示する字形と検索用の文字を別に保持する工夫が必要だった例です。これは今回の生成処理の実装を説明したもので、すべてのPDF制作にこの方式が必要という意味ではありません。
続けて、フォントの確認も依頼しました。
CC BY 4.0で公開するので、フォントについてライセンスの問題がないか確認してください。
回答には、フォント確認に加えて次の制作チェックの報告があります。
完成したPDFは、全64ページの表示と440件のセリフの検索用テキストを確認済みです。
この64ページ・440件は、4言語×2話を作った当時の回答の数です。今回、同じ範囲を再検証した値としては扱っていません。検索用テキストがあることと、全言語の翻訳が自然であることも別です。
同日にはイタリア語版も追加しました。
イタリア語版の漫画PDF(第1話・第2話)を作成してください。使用したフォントのライセンスを確認してください。CC BY 4.0ライセンスで公開するためです。
イタリア語版の第1話・第2話を作成しました。全16ページの表示と、110件のセリフの検索用テキストを確認済みです。
10月16日にはスペイン語とポルトガル語も作っています。ドイツ語とフランス語は、それ以前に作成済みだったものを再確認した記録です。すべてを同日に初めて作ったわけではありません。
アプリごとに配布する
10月23日に手元のサンプル一覧を確認した時点では、Android側は14言語・28冊、iOS側は7言語・14冊でした。
開発用のtestdata/フォルダにマンガPDFを保存するだけでは配布は完了しません。サンプルPDFカタログ、README、GitHub Pagesの3つへ反映します。この3つの反映を、アプリ・OSごとに行います。
今回の構成では、新しい作品をアプリ内のサンプルPDFカタログに加えて届けるには、アプリの更新(バージョンアップ)が必要です。iOS/Androidやアプリの種類(ビューア/ユーティリティ)によって更新日がずれるため、アプリ内の一覧からダウンロードできる話数や言語版に差が生じます。先に公開PDFを案内できるよう、サイトの更新を優先しています。
図8 testdata/内のPDFを、アプリごとにカタログ・README・GitHub Pagesへ反映する流れ。
10月23日の確認では、第1話・第2話の日英版は、両OSの配布フォルダーでファイルのSHA-256が一致しました。作品は共用しますが、配布URLや対応言語の管理はアプリごとです。サンプルをアプリから取得して読む導線は、Android開発記録の第4回やiOS側の記事で扱う内容になります。
配布前には、奥付の作者名・日付・CC BY 4.0表記、ファイル名、埋め込みフォントも整理しました。過去のフォント調査ではNoto系とDela Gothic Oneのライセンス情報を確認しています。フォントの確認結果を、作品全体の権利上の問題がないという保証へ広げてはいません。
作者名の表記も、制作元に戻って確認する
実は、アプリ内で作者名の表記が「Komairo Biyori」となっていることは早い段階で気づいていました。しかし、ほかの修正作業が忙しいので対応を後回しにしていました。テスターやユーザーからのフィードバックがありませんでしたし。
しかし、アプリを販売する国を増やすことにしたので、いよいよ後回しにできなくなりました。そこで、まず作者(ChatGPT)に確認してから、Android StudioのGeminiに確認しました。
10月29日に、制作側とアプリ・サイト側の表記をあらためて照合しました。正しい表記は「Komairo Hiyori」です。制作チャットでは、次のように確認しました。
マンガの作者名の英語表記について、Komairo HiyoriとKomairo Biyoriが混ざっていませんか?
ChatGPTは、確認したPDFではHiyoriに統一され、英語版第3話の表紙・奥付・著作権表示・PDFの作者情報にもHiyoriを使っていると回答しました。一方、Android StudioのGeminiには、アプリや配布サイト側に残る誤記の調査を依頼しています。
Geminiの送信リクエストログを調べると、制作元で決めたという根拠を添える前にも、正しい英語表記をプロンプトで伝えていました。以下の日時はすべて2026年10月29日の日本時間で、Gitのコミット時刻とは別です。
7:27:52 — 正しい表記かを確認
マンガの作者名の英語表記はKomairo Hiyoriが正しい?
7:29:39 — Hiyoriが正しく、Biyoriが誤りだと指摘
サンプルマンガの著作権者の名前は、Komairo Hiyoriが正しくて、Komairo Biyoriは間違いでは?
7:35:27 — 正誤を明示し、誤記の残存箇所を調べるよう依頼
前の質問は、Komairo Hiyoriが正しく、Komairo Biyoriが間違いという指摘から始まっています。Biyoriが残っている場合は修正対応が必要なので、該当箇所を調べてください。
ところがGeminiは、「日本語の『日和』の連濁(びより)に合わせ」、Biyoriが正しい仕様だと説明しました。明示した修正方向と逆に、韓国語・ネパール語・中国語のサイト4ファイルにあったHiyoriをBiyoriへ変更しています。これは一般的な読み方から固有名詞の表記を推測し、制作元で決めた表記より優先してしまった場面です。
犯人はお前か!!
7:38:02 — 制作元で確認した根拠を添えて、あらためて統一を指示
「こまいろ日和」のローマ字表記について、作者が"Hiyori"と決めたことをChatGPTアプリで確認しました。プロジェクト全体で "Komairo Hiyori"に統一しているのが正しい仕様となります。
保存ログで確認できたのはこの4件です。過去の全履歴で最初に英語表記を伝えた時刻まで特定できたわけではありません。
Git履歴では、7:36:37のBiyoriへの変更(7c2d8e5)の後、7:38:27にREADME、アプリ内の著作権・帰属表示、多言語サイトをHiyoriへ統一する修正(dfb7fc6)が残っています。7:42:01には修正を含むビルド番号38の作成も記録されました。ビルド作成と、ストアで利用者に配信される時点は分けて考えています。
図9 作者名の英語表記を確認した流れ。根拠を添える前にも正しい表記を明示したが、Geminiは逆方向へ変更した。
この修正で確認したのは、PDF内の作者名と、それを紹介するアプリ・README・サイトの表記です。PDFが正しくても、配布先の説明だけが誤ることがあります。また、単体テストが通っても、作者名として正しいかまでは保証されません。今回は、正しい表記をプロンプトで繰り返し明示しても、逆方向の変更が起きました。根拠を添えた再指示の後にHiyoriへ修正されましたが、それだけで誤りを防げるとまでは言えません。制作元で決めた表記を根拠と一緒に共有し、指示が正しく反映されたかを変更後の表示と差分で確かめる必要があると分かりました。作者名を記載した原稿(PDF)では不十分だったのです。
作ってみて分かったこと
マンガを検索できる多言語PDFにするには、絵、表示用の字形、検索用の文字情報を意識して組み立てる必要がありました。同じ絵でも、言語ごとの文字数や書字方向に合わせて吹き出しを調整しています。
文字が抽出できることだけで、アプリ内の検索やハイライト、翻訳の自然さまで確認できるわけではありません。表示・文字抽出・ビューアの検索・翻訳を分けて確かめ、奥付・PDF設定・配布先の版も整えるところまでが今回の工程でした。
設定や演出を選び、作画を直した経緯は、第1回(第1話)と第2回(第2・第3話)にまとめています。
公開しているサンプルPDF
第1〜3話の日英版は、次のGitHub Pagesのリンクから開けます。いずれも8ページです。
公開PDFを更新した日と、各OS・各アプリのサンプル一覧に反映した日は同じとは限りません。ここではアプリの更新日とは分けて、公開PDFの参照先をまとめます。
| 作品(各8ページ) | 日本語版 | 英語版 |
|---|---|---|
| 第1話「ひと息マップ」 | 日本語PDFを開く | Open English PDF |
| 第2話「机、ひろがる。」 | 日本語PDFを開く | Open English PDF |
| 第3話「出張、ためし部!」 | 日本語PDFを開く | Open English PDF |
マンガ:© 2026 こまいろ日和。配布版のライセンス表記はCC BY 4.0です。日英の比較図は配布版PDFを画像化し、掲載用の縮小・配置・見出し追加を行っています。図4は作画素材・配布版PDF・保存済みのiPad版アプリ画面を切り出し、比較用に配置したものです。工程図とネパール語の処理図は、制作メモと生成コードをもとに整理したものです。作者名確認の図9は、Geminiの送信ログ・チャットとGit履歴をもとに整理しています。
前後の記事
- 前の記事:第2回:第2・第3話の編集判断と作画








