フリーランスとして働いていると、本業以外の雑務が地味に時間を食います。
請求書の作成、勤怠の集計、納品ファイルの整理、メールの定型文送信……。一つひとつは10分程度でも、月に換算すると8〜10時間。年間で100時間以上を雑務に費やしている計算になります。
この記事では、実際に自分が使っているPythonスクリプトを5つ紹介します。コピペで動くレベルまで簡略化しているので、Python初心者でもすぐ試せます。
1. 請求書PDFの自動生成
毎月の請求書作成、手動でやってませんか?
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from datetime import date
def create_invoice(client_name, items, output_path):
c = canvas.Canvas(output_path, pagesize=A4)
width, height = A4
c.setFont("Helvetica-Bold", 24)
c.drawString(50, height - 60, "INVOICE")
c.setFont("Helvetica", 12)
c.drawString(50, height - 90, f"Date: {date.today().strftime('%Y/%m/%d')}")
c.drawString(50, height - 110, f"To: {client_name}")
y = height - 160
total = 0
for item_name, price in items:
c.drawString(50, y, f"{item_name}")
c.drawString(400, y, f"¥{price:,}")
total += price
y -= 25
c.setFont("Helvetica-Bold", 14)
c.drawString(350, y - 20, f"Total: ¥{total:,}")
c.save()
# 使い方
create_invoice(
"株式会社サンプル",
[("Webサイト開発", 300000), ("保守運用(3月分)", 50000)],
"invoice_2026_03.pdf"
)
reportlabを入れるだけ(pip install reportlab)。テンプレートを一度作れば、あとはクライアント名と金額を変えるだけ。
実際には、Notionのデータベースと連携させて案件情報を自動取得→PDF生成→メール送信まで一気にやっています。Notionでの案件管理についてはこちらの記事で詳しく解説しています。
2. 勤怠・稼働時間の自動集計
💡 スクリプトで時間を作ったあとは、案件管理も仕組み化を
Python不要、CSVインポートするだけで案件・勤怠・収支をNotionで一元管理できるテンプレートを公開中。自動化と組み合わせると「稼いで・管理して・申告する」サイクルが完結する。
フリーランスOS — Notionテンプレート(¥980)
フリーランスにとって稼働時間の記録は確定申告にも必要。CSVで雑に記録して、月末にPythonで集計するのが一番楽です。
import csv
from collections import defaultdict
from datetime import datetime
def summarize_work_log(csv_path):
project_hours = defaultdict(float)
with open(csv_path, encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
start = datetime.strptime(row["start"], "%Y-%m-%d %H:%M")
end = datetime.strptime(row["end"], "%Y-%m-%d %H:%M")
hours = (end - start).total_seconds() / 3600
project_hours[row["project"]] += hours
print("=== 月間稼働サマリー ===")
total = 0
for project, hours in sorted(project_hours.items()):
print(f" {project}: {hours:.1f}h")
total += hours
print(f" 合計: {total:.1f}h")
CSVの記録すら面倒な人は、Notionのタイムトラッカーテンプレートを使うのもアリです。Notion活用術も参考にどうぞ。
3. 納品ファイルの自動整理・リネーム
import shutil
from pathlib import Path
from datetime import date
def organize_deliverables(source_dir, dest_dir):
source = Path(source_dir)
dest = Path(dest_dir)
today = date.today().strftime("%Y%m%d")
moved = 0
for file in source.iterdir():
if file.is_file() and not file.name.startswith("."):
ext = file.suffix.lower().lstrip(".")
ext_dir = dest / ext
ext_dir.mkdir(parents=True, exist_ok=True)
new_name = f"{today}_{file.name}"
shutil.move(str(file), str(ext_dir / new_name))
moved += 1
print(f"{moved}ファイルを整理しました → {dest_dir}")
納品前に毎回手動でフォルダ分けしてた時間が、これで0になりました。
4. 定型メールの自動送信
import smtplib
from email.mime.text import MIMEText
def send_template_mail(to_addr, subject, body, from_addr, password):
msg = MIMEText(body, "plain", "utf-8")
msg["Subject"] = subject
msg["From"] = from_addr
msg["To"] = to_addr
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server:
server.login(from_addr, password)
server.send_message(msg)
Gmailのアプリパスワードを使えば、2要素認証が有効でも送信できます。月初に稼働報告テンプレートを差し込んで送るだけ。
5. 定期バックアップ
import shutil
from datetime import datetime
from pathlib import Path
def backup_workspace(source, backup_root, max_backups=5):
backup_dir = Path(backup_root)
backup_dir.mkdir(parents=True, exist_ok=True)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
archive_name = backup_dir / f"backup_{timestamp}"
shutil.make_archive(str(archive_name), "zip", source)
print(f"バックアップ完了: {archive_name}.zip")
backups = sorted(backup_dir.glob("backup_*.zip"))
while len(backups) > max_backups:
oldest = backups.pop(0)
oldest.unlink()
Gitを使っていても、ローカルの全体バックアップは別で持っておくと安心です。
まとめ:自動化のコツ
- 完璧を目指さない — 80%自動化できれば十分。残り20%は手動でOK
- まず1つだけ自動化する — 一番面倒なやつから。成功体験が次につながる
-
Pythonの標準ライブラリだけで始める —
os,csv,datetimeで大体いける
年間100時間の雑務削減は、時給3,000円換算で30万円分の価値。スクリプトを書く数時間の投資で、確実にリターンがあります。
おすすめ関連ツール・テンプレート
-
ToolPlex — ブラウザで使える無料オンラインツール集。JSON整形、Base64変換、正規表現テスターなど、開発中にサッと使えるツールが揃っています
-
TechPlex Blog — Notion活用術やフリーランス向けの生産性テクニックを発信中
-
フリーランスOS — Notion案件管理テンプレート(¥980) — 案件・タスク・収支をNotionで一元管理。この記事で紹介した請求書・勤怠Pythonスクリプトと組み合わせると「自動化 + 管理」が完結する
関連記事:
あわせて読みたい(関連サイト)
- SoloStack — AI Tools for Solopreneurs: AIツールを活用してひとりビジネスを効率化するための英語ガイド集。ChatGPT・Claude・n8nなどの実践的な使い方を紹介
- FreeYourData — DeGoogle & Privacy Guides: Googleサービスからの移行ガイド。ProtonMail、NAS、GrapheneOSなどプライバシー重視の代替ツールを徹底解説
- GridFree — Portable Power Station Reviews: ポータブル電源・ソーラーパネルのエンジニアリングレビュー。EcoFlow、Jackery、Bluettiの実測データを比較
💻 Python自動化に役立つ機材
この記事のテーマに関連して、作業環境の見直しもおすすめです:
この記事で紹介したツールを最大限活用するには、ハードウェア環境も重要です。