14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人開発の運用コストを本当に0円にした技術選定と設計判断のすべて

14
Posted at

筆者プロフィール: ソフトウェアエンジニア。「知った気にならない。いつまでも学び続ける」を信条に、業務と個人開発の両輪で技術を磨いています。AI 駆動開発で複数の個人開発アプリを構築・運用中。
👉 ポートフォリオ: 筆者ホームページ

この記事は約5分で読めます。

「個人開発はサーバ代がかかるから公開できない」 — そう思っていませんか?

私は現在 3 つのプロダクトをインターネット上に公開していますが、月額の運用コストは完全に 0 円です。この記事では、0 円を実現するために行った技術選定とトレードオフの判断をすべて公開します。

前提: 私のプロダクト構成

プロダクト 種別 技術スタック
ユメハシ 夢を目標に分解するアプリ Flutter Web / Drift (SQLite) / Riverpod
Defrago 頭の断片化を解放するタスク管理 Flutter Web / Drift (SQLite) / Riverpod
HomePage ポートフォリオサイト Astro / TypeScript

3 つともブラウザで動作する Web アプリです。

「作っては使わない」ループにいた過去の自分

以前の私は個人でアプリを作っても、公開する手段を持っていませんでした。

「サーバを建てるにはお金がかかる」「AWS の料金体系が複雑で怖い」——そんな思い込みから、ローカルでしか動かないアプリを作っては放置するループを繰り返していました。

転機は Claude Code との出会いです。AI と対話しながらインフラ構築を進められるようになったことで、「サーバ構築」という心理的ハードルが一気に下がりました。そして辿り着いたのが運用コスト 0 円という制約駆動の設計思想です。

制約駆動設計: なぜ「0 円」を目指すのか

AWS や Azure を普通に使えば、技術的な制約はほぼなくなります。でも、それでは面白くない

私が 0 円制約を自分に課している理由は 3 つあります。

  1. 設計力が鍛えられる — 制約があるからこそ、サービスの本質的な機能とコスト構造を深く理解できる
  2. 提案力が上がる — 「コストを抑えつつ要件を満たす設計」は実務でも求められるスキル
  3. 継続できる — 月額 0 円なら、モチベーションが落ちてもプロダクトを閉じる理由がない

技術選定のトレードオフ一覧

ホスティング

判断ポイント 制約なしの選択 0 円制約での選択 トレードオフ
静的サイト EC2 / CloudFront GitHub Pages カスタムサーバ処理不可。SSG で割り切る
SSR アプリ ECS / Fargate Vercel Free 月 100GB 帯域 / 100 時間 Serverless。個人開発なら十分

GitHub Pages は GitHub リポジトリから直接ホスティングできる無料サービスです。Astro や Flutter Web のように、ビルド成果物が静的ファイル(HTML/CSS/JS)になるフレームワークとの相性が抜群です。

# .github/workflows/deploy.yml(GitHub Actions でビルド&デプロイ)
name: Deploy to GitHub Pages
on:
  push:
    branches: [main]
  schedule:
    - cron: "0 21 * * *"  # 日次バッチ(UTC 21:00 = JST 6:00)

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: npm ci && npm run build
      - uses: actions/upload-pages-artifact@v3
        with:
          path: dist/
  deploy:
    needs: build
    permissions:
      pages: write
      id-token: write
    environment:
      name: github-pages
    runs-on: ubuntu-latest
    steps:
      - uses: actions/deploy-pages@v4

データベース

判断ポイント 制約なしの選択 0 円制約での選択 トレードオフ
RDB RDS / Cloud SQL Supabase Free 500MB / 50K MAU。スケールには課金が必要
軽量ストレージ DynamoDB Drift (SQLite in Browser) データはブラウザ内。デバイス間同期は別途設計が必要

ユメハシDefrago では、Drift(Flutter 用 SQLite ライブラリ)を使い、データをすべてブラウザの IndexedDB に保存しています。サーバサイドのデータベースが不要になるため、運用コストは 0 円です。

                    ┌──────────────────┐
 ユーザー ──────▶   │  Flutter Web App  │
                    │  (GitHub Pages)   │
                    └────────┬─────────┘
                             │
                    ┌────────▼─────────┐
                    │   Drift (SQLite)  │
                    │   on IndexedDB    │  ← ブラウザ内で完結
                    └──────────────────┘

トレードオフ: デバイス間同期ができません。スマホで入力したデータを PC で見ることはできない。しかし「まず使ってもらう」ことを優先し、同期機能は将来の課金ユーザー向け機能として切り分けています。

認証

判断ポイント 制約なしの選択 0 円制約での選択 トレードオフ
認証基盤 Cognito / Auth0 NextAuth.js + 自前実装 マネージドサービスの恩恵なし。セキュリティは自己責任
簡易認証 Firebase Auth 認証なし(ローカル保存) ユーザー登録不要で即使える。データ復旧は不可

ユメハシの Web 体験版は認証なしで設計しています。URL を開くだけで使える。これは「最初の一歩のハードルを下げる」という設計思想に基づいた判断です。

フォーム・メール

判断ポイント 制約なしの選択 0 円制約での選択 トレードオフ
お問い合わせ SES + Lambda Formspree(無料枠) 月 50 件まで。個人サイトなら十分
通知メール SendGrid Resend(無料枠) 月 3,000 通 / 1 ドメイン

バッチ処理

判断ポイント 制約なしの選択 0 円制約での選択 トレードオフ
定期実行 Lambda + EventBridge GitHub Actions cron 最小間隔 5 分。精度にばらつきあり
データ取得 Step Functions ビルド時 fetch リアルタイム性なし。日次更新で割り切る

HomePage では、ブログの予約投稿Qiita 記事の自動取得を GitHub Actions の cron で実現しています。

// 予約投稿の判定(ビルド時に実行)
export function isPublished(entry: { data: { draft?: boolean; date: Date } }): boolean {
  if (entry.data.draft) return false;
  if (import.meta.env.DEV) return true; // 開発時は全記事表示

  // JST で日付を比較(GitHub Actions は UTC で動作するため)
  const JST_OFFSET_MS = 9 * 60 * 60 * 1000;
  const nowJST = new Date(Date.now() + JST_OFFSET_MS);
  const todayJST = nowJST.toISOString().slice(0, 10);
  const entryDate = entry.data.date.toISOString().slice(0, 10);
  return entryDate <= todayJST;
}

ポイント: GitHub Actions は UTC で動作するため、JST との時差を考慮しないと「日本時間では今日なのに記事が公開されない」というバグが発生します(実際に踏みました)。

コスト比較: AWS 構成 vs 0 円構成

同等の機能を AWS で構築した場合の概算と比較します。

サービス AWS 構成 (月額概算) 0 円構成
ホスティング CloudFront + S3: ~$1 GitHub Pages: $0
DB RDS t3.micro: ~$15 Drift (ブラウザ内): $0
認証 Cognito: ~$0 (5万MAUまで) 認証なし: $0
バッチ Lambda + EventBridge: ~$0.5 GitHub Actions: $0
メール SES: ~$0.1 Formspree: $0
合計 ~$16.6/月 (~$200/年) $0

個人開発の規模なら AWS でも大した金額ではありませんが、「0 円である」ということ自体が継続の保険になります。忙しくて半年放置しても、課金が発生しない安心感は大きいです。

メンテナンスフリーの設計

0 円に加えてもう一つ重要なのがメンテナンスフリーです。

個人開発で最大の敵は「運用の手間」です。手動デプロイが必要、手動でデータ更新が必要——こうした運用負荷はモチベーション低下に直結します。

私のプロダクトでは、以下をすべて自動化しています。

運用タスク 自動化手段 頻度
ビルド&デプロイ GitHub Actions (push trigger) push ごと
予約投稿の公開 GitHub Actions (cron) 日次
Qiita 記事の取得 ビルド時 API fetch 日次
依存パッケージ更新 Dependabot 週次

コストもゼロ、メンテナンスもゼロ。 記事を書いて push するだけで、あとは全自動です。

0 円制約で得られた設計力

運用コスト 0 円という制約のもとで開発を続けた結果、以下のスキルが鍛えられました。

スキル 具体的な学び
コスト設計 無料枠の上限・制約を正確に把握し、設計に反映する力
トレードオフ判断 「何を諦めて何を得るか」を言語化する習慣
SSG 設計 サーバレスの制約内で動的な体験を提供する工夫
CI/CD 設計 GitHub Actions だけでバッチ処理・デプロイ・通知を組む力
顧客目線の提案 「コストを抑えたい」というお客様の要望に具体的な選択肢を示せる

これらは AWS を自由に使っていたら身につかなかったスキルです。制約こそが最高の教材でした。

まとめ: 「サーバにお金はかからない」

レイヤー 0 円で使えるサービス 制約
ホスティング GitHub Pages / Vercel / Cloudflare Pages 静的 or Serverless。常駐プロセス不可
DB Supabase Free / ブラウザ内 SQLite 容量・接続数に上限あり
認証 NextAuth.js / Supabase Auth 自前運用の責任
バッチ GitHub Actions cron 精度にばらつき。最小 5 分間隔
メール Formspree / Resend 月間送信数に上限あり

もし今、「作っても公開できない」と思っているなら、ぜひこの構成を試してみてください。サーバにお金はかかりません。公開する方法は、想像よりずっと簡単です。

最初の一歩を踏み出せれば、「作って放置する」の先に「作って届ける」という全く違う景色が待っています。


📌 関連記事

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?