開発ノート

検索できるPDFを作って、「検索できる」と言わなかった

これは開発の記録です。現在の機能はできることをご覧ください。ArchiveSeal の7つの強みもあわせてどうぞ。

出来事の時期:2026年5月25日〜6月14日

最終更新:2026年9月17日

ArchiveSealは、運営者が開発しているChrome拡張です。

見た目をそのまま残すために、ページを画像として書き出す作りにしていました。そのぶん、PDFの中の文字は検索できませんでした。 これを解くために、画像の上に見えない文字の層を重ねました。

作ることはできました。それでも、公開のときには「検索できます」と書きませんでした。書けるようになるまで20日かかっています。

何が起きたか

2026年5月25日、見えない文字の層を実装しました。画像の上に、透明な文字を同じ位置に置く。見た目は変わらないまま、文字を探せるようになりました。

このとき、ひとつ欲張ったことをしています。ページが表示していなかった文字も、まとめて層に入れました。 折りたたまれたメニューの中身や、画面には出ないまま埋め込まれている文字です。「ページが隠していたものまで後から探せる」——他の保存ツールに対する差別化点になると考えていました。

その日のうちに問題が出ます。

保存したPDFを開いて、Chromeのビューアで検索すると——英単語は803回ヒットするのに、日本語のメニュー名は1件も出ません。 同じPDFの、同じ層に入っている文字です。macOSのプレビューで開くと、日本語もちゃんと検索できました。

検索した言葉ChromeのビューアmacOSのプレビュー
iPhone(英字)803件ヒットする
コンテンツにスキップ(日本語)0件ヒットする

原因は、こちらが文字を小さくしすぎたことでした。

長いページを1枚に収めるため、入りきらないときは文字をどんどん小さくしていく作りにしていました。見えない層なので、いくら小さくしても見た目は変わらない——そう考えて、下限を決めていませんでした。

ところがChromeのビューアは、小さすぎる日本語を検索の対象から外します。 画像の中に紛れ込んだノイズと、本物の文章とを区別するための仕組みだと思われます。英字は別のフォントで描かれていたため、この判定にかかりませんでした。

縮める下限を決めて、この問題は直りました。

そのあと、もっと厄介なものが残っていることに気づきます。 文字の位置です。

層に入れた文字は、画像に写っている文字と同じ場所には置かれていませんでした。 上から順に流し込んでいただけです。だから検索すると文字はヒットするのに、ハイライトはページの余白に出ます。

探している言葉は見つかる。でも、どこにあるかは分からない。

何を決めたか

2026年5月31日、公開を前に4つ決めました。

① 機能は入れたまま、「検索できる」と言わない

いちばん大きな判断です。層を外すことも考えましたが、そうしませんでした。

  • この状態で「検索できます」と書けば、使った人は「検索できていない」と受け取ります。機能が足りないより、説明と実物が食い違うほうが問題が大きい
  • 機能を外して後から入れ直すと、それまでに保存したPDFには層が入りません。入れたまま出しておけば、位置を直した時点で過去の保存物もそのまま活きます

宣伝しないおまけとして、黙って入れておく。そう決めました。

② 宣伝の言葉から「検索」を外す

決めただけでは漏れます。2026年5月31日、紹介文・商品説明・拡張機能の中の案内から、「検索できる」「全文検索」といった言い方を使わないことにしました。 プログラムの中の名前はそのままです(そこは利用者の目に触れません)。

決めたことと、実際に書かれている文言が食い違わないよう、言葉のほうを縛りました。

③ 隠されていた文字を、層から外す

最初に差別化点として入れた「ページが隠していた文字も検索できる」を、やめました。

位置を合わせようとすると、画面に出ていない文字には合わせる先の位置が存在しません。置き場所がないので、結局どこかへ流し込むことになり、それがまさに直したい問題そのものでした。

位置を合わせることと、隠れた文字も拾うことは、両立しませんでした。 どちらを取るかの判断になり、位置を取りました。検索して見つかった言葉が画面のどこにあるか分かること。そちらが先だと考えたためです。

外したのはPDFの透明な層からであって、本文そのものが消えたわけではありません。 v1.5.0 で「本文の閲覧」が無料で使えるようになり、保存したページのテキストは管理画面で確認できます。

④ 位置合わせの改修を3段に分ける

まとめて作らず、順番を決めて進めました。

  1. 位置を入れる場所だけ用意する(何も拾わない・何も描かない)
  2. 位置を拾うところまでやる(まだ描かない)
  3. 拾った位置に文字を置く

一度に全部やると、うまくいかないときにどこが悪いのか分からなくなります。 段を分けておけば、各段で「ここまでは正しい」を確かめてから次に進めます。

どうなったか

6月9日から10日にかけて位置を合わせました。すると、それまで見えなかった不具合が見えるようになりました。

折りたたまれたメニューの中身が、何もない白い場所でヒットするようになったのです。 画面には出ていない文字なので、画像には写っていません。それでも位置の情報は取れてしまうため、白地の上に見えない文字が置かれていました。

探していた言葉が、何も書かれていない場所で光る。位置を合わせる前は、どうせ余白に出ていたので気づけませんでした。直したことで、初めて別の問題が見えたという順番です。

6月14日に、これを直しました。文字が実際に画面へ出ているかどうかを見て、出ていないものは置かないようにしています。同じ日に、ページを分割したときの継ぎ目で切り出しが重なる問題も直しました。

そして同じ6月14日、拡張機能の説明文に「テキスト検索に対応」と書きました。

作ってから20日。この一行は、2026年9月の時点でも説明文に残っています。

分かったこと・まだ分かっていないこと

「動く」と「そう名乗ってよい」は、別の段階でした。

層そのものは5月25日から入っていて、検索するとヒットもしていました。機能としては動いています。それでも、ハイライトが違う場所に出る状態で「検索できます」と言えば、受け取る側には壊れているように見えます。

分かったことは3つです。

  • 説明と実物が食い違うほうが、機能が足りないことより重い。 足りないのは分かって選んでもらえますが、食い違いは裏切りとして受け取られる
  • 決めたことは、言葉のほうまで縛らないと漏れる。 「宣伝しない」と決めただけでは、どこかの文章に「検索できます」と書かれます
  • 直したことで、初めて見える問題がある。 位置が合っていないあいだは、白地の上の誤ったヒットに気づく手段がありませんでした

分かっていないこともあります。隠れた文字を拾う機能を捨てたのは正しかったのかは、まだ判断できていません。位置と両立させる方法を探しきったわけではなく、位置を優先すると決めた時点で片方を降ろしました。使う人からその機能を求められたことは、これまでありません。

PDFの文字検索がどういう仕組みで効くのかはPDFの文字検索のやり方に、検索できないときの切り分けはPDFが検索できない原因と対処法に書いています。

この記録の更新履歴

  • 2026年9月17日 初版。透明な文字の層を作ってから、説明文に「テキスト検索対応」と書くまでを記録