前の記事で、OSSのプロジェクト管理ツール「Plane」をコーディングエージェントにAWSへ立ち上げさせ、ブラウザで開くところまで到達しました。今回はその続きで、実際に触って評価し、不採用と判定して、AWS上のリソースをすべて削除するところまでを書きます。
削除のリスクは二つあります。一つは消し残しです。EC2を止めても、IPアドレスやディスクは持っているだけで課金が続きます。もう一つは消しすぎで、同じ口座にある無関係なリソースに手が触れることです。対策として、構築時に付けておいたタグで対象を限定し、削除の前に一覧を人へ見せて承認を取る、という順序を最初に指示しました。
評価の観点 — 判定は人が担当する
ブラウザからPlaneに入れる状態になったとき、エージェントは評価で見る順番を5つ提示してきました。
| 優先 | 確認すること |
|---|---|
| 1 | プロジェクト作成時に Public / Private(Secret)が選べるか。Community Editionのソースでは制限なしと確認済みで、UIに出るかが最終確認 |
| 2 | ワークスペースを複数作れるか(会社ごとに分ける案が成立するか) |
| 3 | メンバー招待と権限(Admin / Contributor / Commenter / Guest) |
| 4 | 日本語の表示・入力・検索 |
| 5 | 非エンジニアが説明なしで起票できそうか |
判定はエージェントではなく人が担当する、と手順書に書いてあります。触ってみた印象を伝えれば記録には残す、という分担です。
日本語の設定場所は、こちらから聞きました。
日本語の表示設定ってどこで行いますか?
エージェントは推測で答えず、webコンテナの静的ファイルを grep して、このCommunity Editionのビルドに日本語が入っていることを先に確かめました。設定はサイドバーのプロフィールから Settings → Preferences →「Timezone and language」で、18言語に日本語が含まれます。ただしこれはアカウント単位の設定です。インスタンス全体やワークスペース単位ではないので、招待した各社のメンバーが、それぞれ自分で切り替える必要があります。この点は、5番目の観点にそのまま効いてきます。
判定 — 決め手は機能表ではなく、最初の1画面だった
結論は不採用です。理由は二つありました。
一つ目が最大の理由で、今回の利用者の多くが非エンジニアであることです。ログイン直後のホーム画面には、ダークテーマの上に、ワークスペース・プロジェクト・クイックスタートガイド・ウィジェットといった用語と選択肢がまとめて出てきます。機能が足りないのではなく、多すぎる。この画面を見た時点で敬遠されるだろう、と判断しました。評価の観点を5つ用意しましたが、判定を決めたのは5番目の「非エンジニアが説明なしで起票できそうか」の1項目でした。

二つ目はコストです。セルフホストの維持費は、評価に使った t4g.medium を常時稼働させて月約$39でした。これは現在使っているプロジェクト管理SaaSの月額を上回ります。2027年1月に始まる新プランのいちばん安い月額(エコノミー ¥21,000)よりは低いのですが、いま払っている額との比較では見合いませんでした。
Planeそのものは、エンジニアが自分たちで使うなら十分に候補になるツールです。今回は使う人と目的に合わなかった、という判定です。
SaaSは人数比例、セルフホストは固定費
コストの形を整理しておきます。SaaSは利用者数に比例し、セルフホストは人数に関係なく固定です。
| 選択肢 | 月額 | 13人なら | 30人なら |
|---|---|---|---|
| セルフホスト t4g.medium 常時稼働 | $39 | $3.0/人 | $1.3/人 |
| 同・Savings Plans 1年併用 | 約$29 | $2.2/人 | $1.0/人 |
| Plane Cloud Pro($6/seat/月) | $78〜$180 | $6.0/人 | $6.0/人 |
人数が増えるほどセルフホストが有利になる、という当たり前の形が出ます。ただし、この差額は運用の手間と引き換えです。バックアップ、復旧、アップグレード、障害対応は自分たちで持つことになります。そして今回のように利用者が少ない、あるいは既存のSaaSが安いプランで足りている場合は、固定費$39のほうが重くなります。「セルフホストなら安い」は、人数と運用の手間の両方が条件付きでした。
削除を依頼する — 対象はタグで限定し、実行前に承認を取る
不採用が決まった時点で、エージェントに撤収を依頼しました。渡したのは、次の内容です。
Planeの評価は「不採用」で確定しました。フェーズ2以降は中止し、AWS上のリソースを撤収してください。
前提
- 対象は Project=plane タグの付いたリソースのみ。タグの無いものには触らない。
- 削除の実行前に「これを消す」の一覧を私に見せて確認を取ってから実行すること(一覧→承認→実行)。
手順
1. 棚卸し: タグで引いて、削除対象の一覧を出す。スナップショットやS3バケットなど、意図せず作られたものが無いかも確認する。
2. 私の承認を待つ。
3. 依存の順序で削除する(インスタンス終了 → EBS → EIPの関連付け解除と解放 → SG → インスタンスプロファイル・ロール → サブネット/ルートテーブル/IGW → VPC)。EIPは「解放」まで終えること。
4. 事後確認: 同じタグで再検索して0件になっていることを示す。
5. 費用: aws ce get-cost-and-usage で今回の総費用を取る。
やらないこと
- バックアップやスナップショットの取得は不要(データはデモ用のみ)。
- 上記以外のリソースやプロファイルには触らない。
構築時に全リソースへ Project=plane のタグを付けておいたことが、ここで効きました。リソースIDの台帳を持たなくても、--filters Name=tag:Project,Values=plane で対象を漏れなく引けます。撤収のしやすさは、構築時に決まっていました。
一覧 → 承認 → 実行
エージェントはまず棚卸しをして、削除対象11個の一覧を出してきました。識別子は伏せますが、種別と備考はこの通りです。
| # | 種別 | 備考 |
|---|---|---|
| 1 | EC2インスタンス | t4g.medium・停止中 |
| 2 | EBSボリューム | 30GB gp3。#1の終了で自動削除される設定 |
| 3 | Elastic IP | 関連付け解除 → 解放まで実施 |
| 4 | セキュリティグループ | インバウンド0のまま |
| 5 | インスタンスプロファイル | ロール切り離し後に削除 |
| 6 | IAMロール | SSM用ポリシーをデタッチ後 |
| 7 | サブネット | 10.0.1.0/24 |
| 8 | ルートテーブル | 関連付け解除後 |
| 9 | インターネットゲートウェイ | VPCからデタッチ後 |
| 10 | VPC | 10.0.0.0/16 |
| 11 | EBS暗号化キー | AWS管理キー。削除不要・課金なし |
一覧には「触らないもの」も添えられていました。元からある既定VPC、今回と無関係なS3バケット、CloudWatchのロググループ、IAMユーザーと他のプロファイルです。加えて、意図せず作られたものが無いかも確認済みで、スナップショット0件、自己所有のAMI0件、キーペア0件(SSHを使わなかったので当然ですが確認した、とのこと)、他リージョンのEC2も0台でした。
EBSを消すとPlaneのデータは完全に消える、という注意も付いていました。デモデータだけなので、バックアップは取らずに承認しました。
承認後、依存の順序で削除が実行されました。インスタンスの終了から VPC の削除まで、実行時間は48秒でした。棚卸しから承認、実行、事後確認までを含めても約5分です。
事後確認 — 残存0件、そして実費
Project=plane タグで8種類のリソースを再検索して、すべて0件。タグを外した全件確認でも、Elastic IP・EBSボリューム・稼働中のEC2・plane関連のIAM・スナップショットはすべて0件で、残ったのは元からある既定VPCだけでした。Elastic IPは関連付けの解除だけでなく「解放」まで終えています。解放しないと課金が続くためです。
最後に費用です。ここで一つつまずきがありました。aws ce get-cost-and-usage は撤収当日の時点で $0.0000 を返しました。Cost Explorerの反映は約1日遅れるためです。エージェントはこれを待たず、CloudTrailのイベント時刻(RunInstances、StopInstances、AllocateAddress、TerminateInstances)から実稼働時間を出して、単価をかけて計算しました。
| 項目 | 稼働時間 | 実費 | 割合 |
|---|---|---|---|
| Elastic IP | 11.28時間 | $0.0564 | 42% |
| EBS gp3 30GB | 11.28時間 | $0.0445 | 33% |
| EC2 t4g.medium | 0.74時間(44分28秒) | $0.0320 | 24% |
| データ転送 | — | $0.00 | — |
| 合計 | $0.133(およそ20円) |

EC2本体が動いていたのは44分だけです。管理者アカウントを作り、日本語設定を確認したところで停止し、11時間後に撤収しました。その結果、実費の中でいちばん高かったのはEC2ではなく、使っていないIPアドレスでした。次がディスクで、この二つが75%を占めます。EC2を止めれば計算料金は止まりますが、IPとディスクは持っているだけで課金されます。撤収を先延ばしにすると、この二つだけが積み上がっていきます。
確定値との突き合わせ — 費用を調べた分が請求されていた
2日後の2026年9月8日、Cost Explorerに反映された確定値を取り直しました。期間合計は $0.1638 で、課金は9月6日の1日に集中し、他の日は$0でした。自己計算の$0.133との差は$0.031です。内訳を並べます。
| 項目 | 確定値 | 自己計算 | 割合 |
|---|---|---|---|
| Amazon VPC(Elastic IP) | $0.0566 | $0.0564 | 35% |
| EC2 – Other(EBS) | $0.0452 | $0.0445 | 28% |
| EC2 Compute(インスタンス本体) | $0.0320 | $0.0320 | 20% |
| AWS Cost Explorer | $0.0300 | 計上なし | 18% |
| 合計 | $0.1638(およそ25円) | $0.1329 |
Elastic IP・EBS・EC2本体の三つは、自己計算とほぼ一致していました。差のほぼ全額が、4行目の「AWS Cost Explorer」$0.03です。費用を調べる行為そのものが課金されていました。Cost ExplorerのAPIは1リクエスト$0.01で、無料枠の確認、アカウントの利用履歴の確認、撤収時の費用取得と、aws ce get-cost-and-usage を3回叩いていたので、ちょうど$0.03です。CloudTrailのイベント時刻から積み上げる自己計算では出てきようのない項目で、確定値と突き合わせて初めて見つかりました。
順位で見ると、①使っていないIPアドレス $0.0566、②空きディスク $0.0452、③サーバー本体 $0.0320、④費用を調べたAPI料金 $0.0300 で、サーバー代は4項目中3位でした。本体と費用照会がほぼ同額です。見積もりのときに使ったPricing APIは無料なので、同じ「料金を調べる」でも課金の有無が違います。エージェントに費用の確認を任せると、人が手で叩くより回数が増えがちなので、Cost Explorer APIは1回$0.01と知ったうえで頼む必要があります。今回の確定値を取った1回分も後日$0.01として乗るので、最終的な着地は$0.1738になる見込みです。これ以上は取り直しません。
まとめ
Planeをブラウザで触って評価し、不採用と判定して、AWS上のリソースを削除しました。判定を決めたのは機能表でも料金表でもなく、非エンジニアが最初に見る1画面でした。コストは、人数が少ないうちはSaaSの安いプランのほうが有利で、セルフホストの固定費$39/月は見合いませんでした。
削除は、タグで対象を限定し、一覧を見て承認し、依存の順序で実行する、という流れで48秒で終わり、残存は0件でした。試すのにかかった費用は確定値で$0.16、持ち続けていれば月$39でした。実費の内訳で高かった順は、止めた後も残るIPアドレス、ディスク、サーバー本体で、それに並ぶ大きさで費用を調べたAPI料金が入っていました。
出典・参考: Plane Docs「Account settings」(言語設定・18言語)/Plane「Pricing」(Cloud Pro $6/seat/月・2026年9月6日確認)/株式会社ヌーラボ「Backlog プラン改定に関するお知らせ」(2026年6月17日・新プランは2027年1月1日開始)。AWSの単価は2026年9月6日に AWS Pricing API(東京リージョン・オンデマンド)で取得した値、稼働時間は CloudTrail のイベント時刻から算出した値です。
