【ICT担当の先生が教える】メモ帳ひとつで「PDF自動分割ツール」を作る方法!≪コピペOK≫

さて、何を作りましょうか

保護者会の会長さんからもらった資料なんですが、pdfでたくさんあるんです。児童に配るのは一部分なのですが……

それ、わたしやりますよ!

いいんですか?印刷して該当のページたげもう一回スキャンしようと思ってました……

もっと簡単にできますよ!
1.なぜ「メモ帳」と「Python」なのか?
- あなたのPCは、実は「魔法の杖」です。
- 学校でよくある「PDFの1ページずつ手動分割」。これを一瞬で終わらせるツールを自作します。
- VS Code(専用ソフト)は使いません。
- あえてWindows標準の「メモ帳」を使うことで、パソコンの仕組みをダイレクトに体験しましょう。
- プログラマーの秘密: 全部暗記している人はいません。見よう見まねで、目の前の仕事を楽にすること。それがプロへの第一歩です。
2. これがないと始まらない「下準備」
Pythonを動かすために必要な「部品」をコマンドプロンプト(黒い画面)で1つだけ追加します。

PDFを扱うための「道具箱」をインストール
CMDを開き、以下のコマンドを打ち込みます。
pip install pypdf
- 解説:Python自体はシンプルな状態。そこに「PDFを操作する能力」を後付けする作業です。
3. 実践!メモ帳でコードを書く
メモ帳を開き、提示されたコードを貼り付けます。ここでは「保存」が最大の難所です。
運命の保存作業
- ファイル名:
pdf_split.py(最後に必ず.pyをつける) - 文字コード:
UTF-8(これにしないと日本語が化けます)
4. プログラム解析:この「呪文」は何をしているのか?
初心者の方が「うわ、難しそう…」と感じる部分を、先生方の日常に例えて解読します。
① import = 助っ人を呼ぶ
コードの最初にある import。これは、「PDFのプロ」「ファイルのプロ」「システムのプロ」という3人の助っ人を職員室に呼び出しているイメージです。
② os.path.join = 住所の整理
「元PDF(分割前)」というフォルダ名が出てきます。これはプログラムが「どこに荷物を置いて、どこに完成品を出すか」という住所(パス)を自動で作ってくれる命令です。
③ try...except = 保健室のような安心感
もしPDFが壊れていたり、変な文字を入力したりしても、プログラムがパニックになって止まらないように「エラーが起きても優しく受け止める」ための仕組みです。
4.5 【コピペでOK】コードの仕組みを1行ずつ解読!
ここでは、実際に使うコードの主要なパーツがどんな「役割」を担っているのか、職員室の業務に例えて解説します。
準備:助っ人を呼ぶ(インポート)
Python
from pypdf import PdfReader, PdfWriter
import os
import sys
- pypdf: PDFを「読む人」と「書く人」を専門業者から派遣してもらいます。
- os / sys: Windows(パソコン自体)の操作を得意とするベテラン職員です。
1:作業スペースの確保
Python
input_folder = os.path.join(base_dir, "元PDF(分割前)")
output_folder = os.path.join(base_dir, "分割完了")
「どこから書類を持ってきて、どこに置くか」のトレイを決めています。もしフォルダがなければ、プログラムが気を利かせて自動で作ってくれます。
2:PDFの中身をスキャン
Python
reader = PdfReader(input_path)
total_pages = len(reader.pages)
「このPDF、全部で何ページあるかな?」と数えています。人間が数える必要はありません。
3:1枚ずつ新しいファイルに綴じる
Python
for i in range(0, total_pages, pages_per_split):
writer = PdfWriter()
# (中略)
output_filename = f"{base_name}_{part_num:02d}.pdf"
ここで「1ページ目から、指定した枚数分だけ切り取って、新しい名前をつけて保存する」というループ作業をしています。人間なら発狂しそうな反復作業ですが、Pythonは1秒間に何十回もこなします。
5. 【重要】初心者が必ずハマる「3つの落とし穴」
落ち穴1:全角・半角のトラップ
- プログラムは全角のスペースが大嫌いです。エラーの9割は、どこかに紛れ込んだ「全角」が原因。国語の作文とは違う、デジタルの厳しいルールです。
落ち穴2:拡張子「.txt」が隠れている
pdf_split.pyと名付けたつもりが、実はpdf_split.py.txtになっていることがあります。Windowsの「表示」タブから「ファイル名拡張子」にチェックを入れる方法を丁寧に図解。
落ち穴3:フォルダの場所
- プログラム(.pyファイル)と同じ場所にフォルダが自動で作られます。「どこに行ったかわからない!」とならないよう、専用のフォルダを一つデスクトップに作ってから作業しましょう。
6. これをコピペすれば完成!「PDF分割ツール」全文
お待たせしました。メモ帳を開き、以下のコードをすべてコピーして貼り付けてください。
【ポイント】
- メモ帳に貼り付ける。
- 名前を
pdf_split.pyにして保存。 - 保存するときに、下の方にある「文字コード」を
UTF-8に変えるのを忘れずに!
from pypdf import PdfReader, PdfWriter
import os
import sys
def split_pdf():
# 1. プログラムがある場所(フォルダ)を特定する
# これにより、どこにファイルを置けばいいか自動で決まります
base_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
# フォルダの名前を設定
input_folder = os.path.join(base_dir, "元PDF(分割前)")
output_folder = os.path.join(base_dir, "分割完了")
print("=" * 40)
print(" PDF 分割ツール (先生応援版) ")
print("=" * 40)
# 2. フォルダがなければ自動作成
if not os.path.exists(input_folder):
os.makedirs(input_folder)
os.makedirs(output_folder)
print(f"★作業用フォルダを新しく作成しました。")
print(f" 1. 「{os.path.basename(input_folder)}」に分割したいPDFを入れてください。")
print(f" 2. もう一度このプログラムを起動してください。")
input("\n[Enterキーを押すと終了します]")
return
# 3. フォルダの中からPDFファイルを探し出す
files = os.listdir(input_folder)
pdf_files = [f for f in files if f.lower().endswith('.pdf')]
if not pdf_files:
print(f"エラー:「{os.path.basename(input_folder)}」にPDFが入っていません!")
input("\n[Enterキーを押すと終了します]")
return
# 4. ユーザー(あなた)に分割のルールを聞く
print(f"現在、{len(pdf_files)} 個のPDFが見つかりました。")
print("1つのファイルにつき、何ページずつに分けますか?")
try:
pages_per_split = int(input("数値を入力してください (例:1枚ずつなら 1) > "))
if pages_per_split < 1:
pages_per_split = 1
except ValueError:
print("数値以外が入力されたため、1ページずつ分割として処理します。")
pages_per_split = 1
print("-" * 40)
# 5. 実際の分割処理(ここがメインの仕事です)
for filename in pdf_files:
input_path = os.path.join(input_folder, filename)
try:
reader = PdfReader(input_path)
total_pages = len(reader.pages)
base_name = os.path.splitext(filename)[0]
print(f"処理中... {filename} (全部で {total_pages} ページあります)")
part_num = 1
for i in range(0, total_pages, pages_per_split):
writer = PdfWriter()
# 指定されたページ数分だけ、新しいPDFにコピーする
for j in range(i, min(i + pages_per_split, total_pages)):
writer.add_page(reader.pages[j])
# 分割後のファイル名(例:テスト_01.pdf)
output_filename = f"{base_name}_{part_num:02d}.pdf"
output_path = os.path.join(output_folder, output_filename)
with open(output_path, "wb") as f_out:
writer.write(f_out)
part_num += 1
print(f" -> 成功! {part_num - 1} 個のファイルにバラしました。")
except Exception as e:
print(f"× 失敗してしまいました: {filename} -> 原因: {e}")
print("-" * 40)
print("すべての作業が完了しました。お疲れ様でした!")
print(f"「{os.path.basename(output_folder)}」フォルダを確認してくださいね。")
input("\n[Enterキーを押すと終了します]")
if __name__ == "__main__":
split_pdf()
6.5 運命の瞬間!実行方法と「自分専用ソフト」にする方法
せっかく作ったプログラムも、動かし方を知らなければ宝の持ち腐れです。誰でもできる2つのステップを解説します。
ステップ①:基本の実行方法(まずは動かしてみる)
- 作成した
pdf_split.pyがあるフォルダを開きます。 - フォルダの上の「アドレスバー」をクリックし、
cmdと打って Enter を押します。 - 黒い画面(コマンドプロンプト)が開いたら、以下の呪文を打って Enter!
python pdf_split.py
※もし動かなければ
py pdf_split.py
と打ってみてください。
ステップ②:EXEファイル化(自分専用ソフトに変身!)
毎回コマンドを打つのは大変ですよね。Pythonには、プログラムを「ダブルクリックで動くアイコン(EXEファイル)」に変える魔法があります。
- 専用の道具をインストール コマンドプロンプトで以下の呪文を打ちます(一度だけでOKです)。
pip install auto-py-to-exe - 変換ツールを起動 インストールが終わったら、同じ画面で以下を打って Enter。
auto-py-to-exeすると、初心者でも分かりやすい「ボタン操作だけの画面」が立ち上がります! - 設定して変換!
- Script Location:
pdf_split.pyを選択。 - One File: 「One File(1つのファイルにまとめる)」を選択。
- 一番下の大きな青いボタン「CONVERT .PY TO .EXE」をクリック!
- Script Location:
- 完成! しばらく待つと
outputというフォルダの中に、おなじみのアイコンがついた EXEファイル が出来上がります。
これでもう、Pythonが入っていない同僚の先生のPCでも、このファイルを渡すだけでPDF分割ができるようになります。まさに「先生メイド」の便利ソフトの誕生です!
7. 「神ツール」に化ける4つの活用シーン
「PDFを分けるだけ?」と思うかもしれませんが、学校の業務に当てはめると、実はこんなに使い道があります。
① 児童のテスト・通知表データの仕分けに
スキャナーの「連続スキャン」でクラス全員分のテストを一つのPDFにしてしまった時。このツールで「1ページずつ分割」すれば、一瞬で出席番号順の個別ファイルが出来上がります。
② 必要なページだけを「配布用」に切り出す
数百ページある教科書の指導資料や、分厚い自治体の研修資料。「この3ページだけ学年で共有したい」という時、わざわざ印刷してスキャンし直す必要はありません。
③ ギガスクール端末への「課題配布」に
ロイロノートやGoogle Classroomで課題を配る際、大きなPDFだと子供の端末が重くなることがあります。必要なページだけを切り出して配ることで、通信環境にも優しい授業が実現します。
④ 添付メールの容量制限を突破する
「容量が大きすぎてメールで送れない!」という時、2~3個に分割して送るという力技が、このツールなら数秒で完了します。
8. さらに差がつく!Python時短の裏技(プロの視点)
ツールを動かせるようになったら、ぜひこの「時短テクニック」もブログで紹介しましょう。
裏技A:フォルダを「右クリック」で開く
コマンドプロンプトでいちいち場所(cdコマンド)を打つのは大変です。
- 時短技:作業フォルダを開いた状態で、アドレスバーに「cmd」と打ち込んでEnter。これだけで、その場所を起点に黒い画面が開きます!
裏技B:ファイル名の先頭を「出席番号」に
今回のプログラムは 元ファイル名_01.pdf のように書き出されます。
- 時短技:元々のPDFファイル名を「算数テスト」ではなく「00_算数テスト」のようにしておけば、分割後もファイルが綺麗に並び、管理が圧倒的に楽になります。
裏技C:デスクトップにショートカットを作る
毎回コードをコピペする必要はありません。
- 時短技:一度作った
.pyファイルを右クリックして「ショートカットの作成」を選び、それをデスクトップに置いておけば、次からはダブルクリックするだけで魔法が始まります。
9. あなたの「30分」を、子どもたちのための「30分」へ
プログラミングは、単なる技術ではありません。 これまで「手作業でやるしかない」と諦めていた30分の単純作業を、1秒に変える魔法です。
浮いた30分で、子供たちのノートに丁寧にコメントを書くもよし。早く帰って家族と夕食を囲むもよし。
「メモ帳」という、どこの学校のPCにも入っている道具だけで、あなたは今日、その魔法を手に入れました。 「自分にもできた!」というその自信こそが、これからのICT教育を支える最大の武器になります。
さあ、次はどんな「面倒くさい」を退治しましょうか? あなたの挑戦を、心から応援しています!

ね、簡単でしょ

簡単詐欺にあいました……

次からはこれを使えばすぐに終わりますので、長い目で見れば簡単でとっても早いです!

価値観が長命種なんですか?

学校は基本的に発生する業務は子どもにかかわること以外毎年同じような業務が発生しやすい環境です。なので、1つずつこういった作業をシステム化することは業務改善になるはずです。

なるほど、プログラム?ソフトをつくることと相性がいいんですね。

そうです、楽をするために苦労するって感じですね。
児童に努力しなさいて言っていますよね。我々の努力はこういったところに必要です。まぁコピペでいいので幾分か楽ではありますね。
もし作成が難しいようでしたらこちらをご覧ください。





