🖱️

ワンクリックでPDFを根こそぎDL!ブックマークレット「pdf-bulk-downloader」を開発した話

に公開

🎯 この記事の対象読者

  • 自治体や官公庁にお勤めの方で、日々の情報収集や資料作成に追われている方
  • ウェブサイトからの大量の資料(PDF)ダウンロードに「もう嫌だ!」と感じたことがある方
  • プログラミングで業務改善って言うけど、「何から始めたらいいかわからない…」という方
  • 手軽に使える便利なツールに興味があるすべてのエンジニア

💡 この記事を読むと得られること

  • 単純なダウンロード作業をブックマークレットで自動化する具体的な方法
  • サーバーの準備もインストールも不要な「ブックマークレット」という武器の手に入れ方
  • JavaScriptだけで、いかに現場の課題を解決できるかの実例
  • 明日からのあなたの机上調査が、ちょっとだけ(いや、かなり)楽になるヒント

🚀 はじめに:なぜこの記事を書いたか

皆さん、こんにちは!

行政職員の仕事って、本当に多岐にわたりますよね。その中でも、多くの職員が避けては通れないのが「机上調査」です。国の統計データ、審議会の報告書、先進事例の資料…。気づけばブラウザのタブは開きっぱなし、ダウンロードフォルダはPDFの山。

特に、報告書ページなんかにありがちな「関連資料はこちら」で大量のPDFがリストアップされているのを見ると、一つ一つ右クリックして保存していく作業に、思わず天を仰ぎたくなりませんか?(私はなります!笑)

この単純作業、どうにかならないものか…」。そんな個人的な切実な悩みから、「ページ上のPDFを根こそぎダウンロードしてくれるツールがあれば、多くの同僚や同じ悩みを持つ人たちを救えるはずだ!」と一念発起。

この記事では、そんな想いから生まれたブックマークレット「pdf-bulk-downloader」について、開発の背景から使い方、そしてちょっぴり苦労した点まで、語っていきたいと思います!


😫 課題:手作業ダウンロードのつらい現実

まずは、このツールが生まれるきっかけとなった「つらい現実」を共有させてください。多くの方が「あるある!」と頷いてくれるはずです。

例えば、ある政策の参考にするため、国の研究会サイトから全20回分の議事録・会議資料(PDF)をダウンロードする、というミッションがあったとします。その時のフローは、だいたいこんな感じ…。

このフローの何が辛いって、「誰がやっても同じ結果になるのに、ひたすら時間がかかる」こと。創造性のかけらもない、まさに"作業"です。この時間を、もっと企画を練ったり、住民の方と対話したり、本来やるべき業務に充てたい!その一心でした。


✨ 解決策:ワンクリックPDF一括DLツール「pdf-bulk-downloader」

そんな辛さを解消するために開発したのが、ブラウザでサッと使えるシンプルツール「pdf-bulk-downloader」です!

使い方は超シンプル。ダウンロードしたいPDFリンクがたくさんあるページを開いて、ブックマークからこのツールをポチッと起動するだけ。あとはいくつかの簡単な設定をすれば、ツールが自動でPDFを次々とダウンロードしてくれます。

項目 内容
ツール名 pdf-bulk-downloader
概要 表示しているページに含まれるPDFリンクを、簡単な設定で一気にダウンロードしてくれるブックマークレット
利用シーン 国や県の統計データサイト、審議会の資料ページ、過去の広報紙アーカイブなど
GitHubリポジトリ https://github.com/HosoyaYusaku/pdf-bulk-downloader

🛠️ 技術スタックと選定理由

このツールの開発にあたり、大掛かりなシステムは目指しませんでした。とにかく「誰でも」「手軽に」「すぐに」使えること。これを最も重視した結果、以下の技術スタックにたどり着きました。

技術 役割 選定理由
JavaScript 開発言語 これ一択でした! サーバーも特別な環境も不要で、ブラウザさえあれば動く「ブックマークレット」を実装するためです。利用者に「〇〇をインストールしてください」という手間を一切かけさせたくありませんでした。

そう、技術スタックはJavaScriptのみ!シンプル・イズ・ベストを体現したツールです。


💻 使い方

① 環境構築

環境構築、という言葉を使うのもおこがましいくらい簡単です。インストールは一切不要!

  1. GitHubリポジトリにあるソースコードを全部コピーします。
  2. ブラウザのブックマークマネージャーを開き、新しいブックマークを追加します。
  3. 名前に「PDF一括DL」のような分かりやすい名前をつけ、URL欄にコピーしたソースコードをそのまま貼り付けます。

はい、準備完了です!これだけで、あなたのブラウザに新たな相棒が加わりました。

② ツールの実行

実際の操作フローは以下の通りです。

  1. PDFをたくさんダウンロードしたいページを開きます。
  2. 先ほど登録したブックマークをクリックして、ツールを起動します。
  3. 「ダウンロード間隔をミリ秒で入力してください」というプロンプトが表示されます。サーバーに負荷をかけすぎないよう、ダウンロードの間隔をミリ秒単位で入力します(例: 2000 と入力すると2秒間隔になります)。
  4. 次に、見つかったPDFの件数と設定した間隔が表示され、最終確認を求められます。「OK」をクリックしましょう。
  5. あとは待つだけ!自動で次々とPDFがダウンロードされていきます。すべての処理が終わると、成功件数と失敗件数がダイアログで報告され、処理の完了を知らせてくれます。

③ 出力結果(Before / After)

Before
マウスとキーボードをカチカチ…。30個のPDFをダウンロードするのに15分かかっていた。集中力も途切れ、他の作業が全く進まない。

After
ブックマークを1クリックし、設定プロンプトで間隔を 2000(2秒)に設定。あとはコーヒーを淹れて一息ついている間に、全ファイルのダウンロードが完了!かかった時間は実質1分。ストレスフリー!
画面イメージ1

画面イメージ2


🧗 開発でつまづいた点と解決策

  • 課題:1ページ100件!サーバーに優しくない連続ダウンロード問題
    • 原因・解決策: 当初、見つけたPDFリンクを一気にダウンロードする処理を書いていました。しかし、これだと短時間にサーバーへ凄まじい数のリクエストが飛んでしまい、相手方のサーバーに多大な負荷をかけてしまいます。最悪の場合、アクセスをブロックされかねません。
      そこで、ダウンロード処理の間に意図的に「待ち時間」を入れることにしました。setTimeoutを使い、1つのファイルをダウンロードしたら数秒待ってから次のダウンロードを開始する、という流れです。さらに、この「待ち時間(ダウンロード間隔)」をユーザーがツールの実行時に自分で設定できるようにしました。これにより、サイトの反応を見ながら、柔軟にダウンロード速度を調整できる、サーバーにも自分にも優しいツールになりました。

🔭 今後の展望と野望

今回、ブックマークレットという非常に手軽な形で、日々の業務の「ちょっとした不便」を解決することができました。

今後の展望としては、大掛かりなシステム開発だけでなく、このような「かゆいところに手が届く」系の便利ツールを、引き続きブックマークレットのような形でどんどん作っていきたいと考えています。

そして私の願いは、「行政の職員が自分で課題を見つけ、自分でコードを書いて解決する」という文化を、もっと広めていくことです!


🔚 おわりに:小さな一歩が、大きな変化を生むと信じて

この記事では、私が開発したPDF一括ダウンロードツール「pdf-bulk-downloader」をご紹介しました。

DX(デジタルトランスフォーメーション)と聞くと、何かすごく壮大で難しいものに感じてしまうかもしれません。でも、私はこう信じています。現場の職員一人ひとりが感じる「これ、めんどくさいな」という小さな気づきこそが、大きな変化を生む最初の、そして最も重要な一歩なのだと。

この記事が、あなたの「めんどくさい」を一つでも減らすきっかけになったり、「自分も何か作ってみようかな」と思うきっかけになったりすれば、これ以上嬉しいことはありません。

ぜひ「pdf-bulk-downloader」を使ってみて、皆さんの業務効率化に役立ててください!
最後まで読んでいただき、ありがとうございました!

Discussion