GmailのPOP3廃止をきっかけに、代替メールサービス「CloudInbox」を個人開発した話
はじめに
Gmailの仕様変更により、これまで当たり前に使えていた POP3による外部メール取得 が使えなくなりました。
業務や個人開発で「POP3前提」の運用をしていた方にとっては、地味ですがかなり困る変更だったと思います。
この記事では、その代替として個人開発した CloudInbox というサービスについて、
- なぜ作ったのか
- どんな機能があるのか
- どんな技術・開発スタイルで作ったのか
を紹介します。
CloudInboxとは
CloudInbox は、POP3で取得したメールをクラウド上のメールボックスに集約し、
Webブラウザやスマホから安全に閲覧・送信できるメールサービス です。
特徴としては、
- GmailのPOP3廃止後も使える代替Inbox
- メール本文・添付ファイルは暗号化して保存
- PC / スマホの両方に対応
- 送信機能も制限付きでサポート
という構成になっています。
👉 サービスURL
https://cloudinbox.cloud
CloudInboxを作った理由
一言で言うとこれです。
GmailのPOP3廃止により、代替機能が必要になったから
自分自身が、
- 外部メールサーバー
- POP3前提の運用
- Gmailに集約して確認するワークフロー
を使っていたため、
今回の仕様変更はかなり致命的でした。
メール転送などでの回避策もありますが、
- セキュリティ面が不安
- 運用が複雑になる
- そもそも用途に合わない
と感じる場面も多く、
それなら 「POP3前提で完結するクラウドInbox」 を作ろう、というのが出発点です。
CloudInboxの主な機能
現在提供している(MVPとして実装した)主な機能は以下です。
- POP3による外部メール受信
- メール本文・添付ファイルの暗号化保存
- Webブラウザでのメール一覧・詳細表示
- Android / iOS アプリ対応
- 制限付きのメール送信機能
- Freeプラン / 有料プランを想定した設計
送信機能について
CloudInboxでは 送信も可能 ですが、
- 利用回数
- 利用条件
- プラン
などに制限を設けています。
これは、
- スパム対策
- 送信元IPやSMTP制約
- 個人開発としての運用コスト
を考慮した結果です。
「Gmailの完全な代替」ではなく、
受信を主軸にしつつ、必要最低限の送信もできるInbox
という立ち位置を意識しています。
CloudInboxの構築について
ここからは技術・開発スタイルの話です。
技術スタック
主な構成は以下の通りです。
-
フロントエンド(Web)
- Vue 3
- Vuetify
-
モバイルアプリ
- Flutter
-
バックエンド
- Firebase
- Authentication
- Firestore
- Cloud Functions
- Hosting
- Firebase
-
メール関連
- POP3(受信)
- SMTP(制限付き送信)
-
セキュリティ
- Secret Manager
- KMS を用いた暗号化管理
Vue経験あり、Flutterは未経験
自分は、
- Vue:業務・個人開発で経験あり
- Flutter:未経験
という状態でのスタートでした。
通常であれば Flutter の学習コストが高くなりがちですが、
今回は 開発スタイルそのものを変える ことで乗り切りました。
MVP仕様はChatGPTと相談しながら作成
まず最初に行ったのは、
「何を作らないか」を決めるためのMVP整理 です。
このMVP仕様は、
- 機能を詰めすぎていないか
- 個人開発として現実的か
- Gmail代替として最低限何が必要か
といった観点を、
ChatGPTと壁打ちしながら まとめていきました。
結果として、
- 受信を主軸にする
- 送信は制限付きでサポートする
- 高機能なメールクライアントは目指さない
といった 割り切ったMVP に落とし込めたのは、
一人で考えていたら難しかったと思います。
cc-sddを使った仕様駆動開発
MVP仕様が固まったあとは、
cc-sdd(仕様駆動開発) の形で実装を進めました。
① MVP仕様書をMarkdownで作成
-
doc/ディレクトリに - ChatGPTと整理した内容をもとに
- MVP仕様書のみ をMarkdownで作成
コードはまだ1行も書かず、
「やること・やらないこと」を明文化することに集中しました。
② /kiro:steering を実行
この仕様書をもとに /kiro:steering を実行し、
- プロジェクトの方向性
- 技術的な前提
- 守るべき制約
をAIに共有します。
③ 実装・変更は /kiro:spec-init
その後は、
- 「制限付き送信を追加したい」
- 「Freeプランの制限を入れたい」
といった要望を
/kiro:spec-init で都度追加する形で進めました。
MVP → 実装 → 微調整 のループが非常に速かったです。
完全バイブコーディング(Cursor)で構築
実装フェーズは ほぼCursor主導 です。
- Flutterの画面構成
- Firebase連携
- POP3 / SMTP 周りの処理
- UI調整やエラー対応
まで、
「どう書くか」より「どうしたいか」 を伝える形で進めました。
特に未経験だったFlutterでは、
「Web版と同じ構成でこの画面を作りたい」
「このVueのUIをFlutterに寄せたい」
といった指示だけで、
十分に実用的なコードが出てくるのはかなり衝撃でした。
作ってみて思ったこと
- GmailのPOP3廃止は、想像以上に影響範囲が広い
- 「制限付き送信」という割り切りは現実的
- バイブコーディング × 仕様駆動は個人開発と相性がいい
- 未経験のFlutterでも、ちゃんとサービスになる
おわりに
CloudInboxは、
GmailのPOP3廃止をきっかけに生まれた、
受信を主軸にしつつ、制限付きで送信も可能なクラウドInbox
です。
- POP3代替を探している方
- Gmailに依存しないメール運用を考えている方
- AI前提の個人開発に興味がある方
の参考になれば嬉しいです。
👉 CloudInbox
https://cloudinbox.cloud