GCEの無料枠で運用!Gmailに届くパスワード付きPDFを自動解除してGoogleドライブに保存するシステムの構築
はじめに
業務で送られてくるパスワード付きPDFの開封作業を自動化したいと考えたことはありませんか?
本記事では、Google Compute Engine (GCE) の無料枠を活用し、PythonでGmailの添付ファイルを自動処理するシステムの構築方法を紹介します。
Google Apps Script (GAS) ではなく Python を採用することで、将来的な仕様変更にも柔軟に対応できる構成にしています。
システムの概要
このシステムは、5分ごとに仮想マシンがメールを確認し、特定の条件に合致するメールの添付PDFパスワードを解除してGoogleドライブに保存します。
主な機能
- Gmail API: 特定の送信元からの未読メールを検索・取得。
-
パスワード解除: Pythonの
pypdfライブラリを使用し、メモリ上で安全にパスワードを解除。 - Google Drive API: 解除済みPDFを自動保存。
- 後処理: 処理済みメールにラベルを付与し、既読化。
技術スタック
- IaaS: Google Compute Engine (GCE) e2-micro インスタンス(無料枠対象)
- 言語: Python 3.x
-
ライブラリ:
pypdf, Google Client Library - API: Gmail API, Google Drive API
構築手順
1. Google Cloud プロジェクトの設定
まずは Google Cloud Platform (GCP) でプロジェクトを作成し、以下の設定を行います。
- APIの有効化: Gmail API と Google Drive API を有効にします。
-
認証情報:
- OAuth 同意画面を設定。
- 「OAuth クライアント ID」をデスクトップアプリとして作成。
-
credentials.jsonをダウンロードします。
2. ローカル環境での準備と認証
GCE(GUIなし)にデプロイする前に、ローカル環境で認証を済ませる必要があります。
# リポジトリのクローンと環境構築
git clone <your-repo-url>
cd unlockpdf
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
初回実行(認証):
初回実行時にブラウザが立ち上がるので、Googleアカウントでログインします。完了すると、作業ディレクトリに token.json が生成されます。
3. GCE インスタンスの作成
コストを最小化するため、無料枠(e2-micro) の範囲で運用します。
-
リージョン:
us-west1やus-central1など、無料枠対象のリージョンを選択してください。 -
マシンタイプ:
e2-micro(以前のf1-microと間違えないよう注意)。
4. デプロイ
以下のファイルを GCE インスタンスへ転送します。
-
unlock_and_save.py(メインプログラム) credentials.json-
token.json(ローカルで生成したもの)
5. 自動化の設定
定期実行には crontab を使用するか、より堅牢な運用のために systemd でサービス化します。
Cron設定例:
0 9 * * * /path/to/venv/bin/python /path/to/unlock_and_save.py >> /path/to/cron.log 2>&1
systemdによる堅牢化(推奨):
OS起動時やクラッシュ時の自動再起動を可能にするため、サービス化を推奨します。
[Service]
Restart=always
RestartSec=5
ExecStart=/path/to/venv/bin/python main.py
セキュリティと運用の注意点 ⚠
認証情報の保護
以下の秘匿情報は、絶対に GitHub 等の公開リポジトリに含めないでください。
credentials.jsontoken.json-
PDF_PASSWORD(パスワードをハードコードする場合)
これらは環境変数での管理を強く推奨します。
運用上のベストプラクティス
-
メモリ監視:
e2-microはメモリが約1GBと少ないため、OOM Killer による停止に注意が必要です。 - 静的IP: 通信を安定させるため、静的外部IPアドレスの予約を推奨します。
-
ロギング:
loggingライブラリを使用し、Google Cloud Logging で遠隔から状態を確認できるようにすると便利です。
まとめ
GCE の無料枠を活用することで、実質無料でPDFパスワード解除の自動化システムを運用することが可能です。メモリ制限などの注意点はありますが、Python による柔軟な実装は小規模なプロジェクトや個人の学習に最適です。
注:本記事の内容は検証中の情報を含みます。Google Cloud の料金体系や無料枠の範囲には十分ご注意ください。