ワンクリックで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のみ!シンプル・イズ・ベストを体現したツールです。
💻 使い方
① 環境構築
環境構築、という言葉を使うのもおこがましいくらい簡単です。インストールは一切不要!
- GitHubリポジトリにあるソースコードを全部コピーします。
- ブラウザのブックマークマネージャーを開き、新しいブックマークを追加します。
- 名前に「PDF一括DL」のような分かりやすい名前をつけ、URL欄にコピーしたソースコードをそのまま貼り付けます。
はい、準備完了です!これだけで、あなたのブラウザに新たな相棒が加わりました。
② ツールの実行
実際の操作フローは以下の通りです。
- PDFをたくさんダウンロードしたいページを開きます。
- 先ほど登録したブックマークをクリックして、ツールを起動します。
- 「ダウンロード間隔をミリ秒で入力してください」というプロンプトが表示されます。サーバーに負荷をかけすぎないよう、ダウンロードの間隔をミリ秒単位で入力します(例:
2000
と入力すると2秒間隔になります)。 - 次に、見つかったPDFの件数と設定した間隔が表示され、最終確認を求められます。「OK」をクリックしましょう。
- あとは待つだけ!自動で次々とPDFがダウンロードされていきます。すべての処理が終わると、成功件数と失敗件数がダイアログで報告され、処理の完了を知らせてくれます。
③ 出力結果(Before / After)
Before
マウスとキーボードをカチカチ…。30個のPDFをダウンロードするのに15分かかっていた。集中力も途切れ、他の作業が全く進まない。
After
ブックマークを1クリックし、設定プロンプトで間隔を 2000
(2秒)に設定。あとはコーヒーを淹れて一息ついている間に、全ファイルのダウンロードが完了!かかった時間は実質1分。ストレスフリー!
🧗 開発でつまづいた点と解決策
-
課題:1ページ100件!サーバーに優しくない連続ダウンロード問題
-
原因・解決策: 当初、見つけたPDFリンクを一気にダウンロードする処理を書いていました。しかし、これだと短時間にサーバーへ凄まじい数のリクエストが飛んでしまい、相手方のサーバーに多大な負荷をかけてしまいます。最悪の場合、アクセスをブロックされかねません。
そこで、ダウンロード処理の間に意図的に「待ち時間」を入れることにしました。setTimeout
を使い、1つのファイルをダウンロードしたら数秒待ってから次のダウンロードを開始する、という流れです。さらに、この「待ち時間(ダウンロード間隔)」をユーザーがツールの実行時に自分で設定できるようにしました。これにより、サイトの反応を見ながら、柔軟にダウンロード速度を調整できる、サーバーにも自分にも優しいツールになりました。
-
原因・解決策: 当初、見つけたPDFリンクを一気にダウンロードする処理を書いていました。しかし、これだと短時間にサーバーへ凄まじい数のリクエストが飛んでしまい、相手方のサーバーに多大な負荷をかけてしまいます。最悪の場合、アクセスをブロックされかねません。
🔭 今後の展望と野望
今回、ブックマークレットという非常に手軽な形で、日々の業務の「ちょっとした不便」を解決することができました。
今後の展望としては、大掛かりなシステム開発だけでなく、このような「かゆいところに手が届く」系の便利ツールを、引き続きブックマークレットのような形でどんどん作っていきたいと考えています。
そして私の願いは、「行政の職員が自分で課題を見つけ、自分でコードを書いて解決する」という文化を、もっと広めていくことです!
🔚 おわりに:小さな一歩が、大きな変化を生むと信じて
この記事では、私が開発したPDF一括ダウンロードツール「pdf-bulk-downloader」をご紹介しました。
DX(デジタルトランスフォーメーション)と聞くと、何かすごく壮大で難しいものに感じてしまうかもしれません。でも、私はこう信じています。現場の職員一人ひとりが感じる「これ、めんどくさいな」という小さな気づきこそが、大きな変化を生む最初の、そして最も重要な一歩なのだと。
この記事が、あなたの「めんどくさい」を一つでも減らすきっかけになったり、「自分も何か作ってみようかな」と思うきっかけになったりすれば、これ以上嬉しいことはありません。
ぜひ「pdf-bulk-downloader」を使ってみて、皆さんの業務効率化に役立ててください!
最後まで読んでいただき、ありがとうございました!
Discussion