Claude Code 始めました
5年育てた自分専用Botを、SaaSにして売り出した話

はじめに

俺はMMOゲームのギルドで、オークションBotを5年間使ってきた。

Lineage2Mが2021年にリリースされた頃から、ギルドのボスドロップ分配を自動化するために作ったDiscord Botだ。HIT The Worldでも使った。メンバーが入札して、最高額をリアクション参加者で割って分配する。手作業でやるとスプレッドシートとにらめっこになるやつを、Botに全部やらせていた。

5年間、自分のギルドでずっと動いていた。便利だった。でも、あくまで自分専用だった。


「自分専用」の実態

5年も育ててきたとはいえ、中身はひどいものだった。

ギルド名がハードコードされている。タイムゾーンは決め打ち。言語は日本語しかない。設定ファイルなんてものはなく、変えたい値はソースコードを直接書き換える。

複数のサーバーで使いたい時は、コンテナごとコピーしていた。 同じBotをもう一個立てて、トークンだけ変えて動かす。マルチテナント? なにそれ。

課金システムなんてもってのほかだ。サブスクリプションも、利用規約も、決済画面もない。誰かに売るなんて想定していない。自分が使えればそれでよかった。


SaaS化を決めた理由

ふと思った。このBot、売れるんじゃないか。

多くのMMOギルドが同じ課題を抱えている。ボスのレアドロップが出た。誰が取る? オークションで決めよう。でもオークションの管理は面倒すぎる。入札を手動で集計して、分配金額を計算して、結果を全員に通知する。やりたいけど、手作業じゃ無理——そういうギルドは多い。

ただ、自分専用Botをサービスにするには巨大な改修が必要だ。マルチテナント化、課金、管理画面、多言語対応、法的対応。自分の手でやる気力はまったく起きない。

でも今はAIコーディングの時代だ。不確定要素がない決まった作業なら、AIに一気に終わらせてもらえる。研究や実験と違って「調べてみないとわからない」がないやつ。そう踏んで、やることにした。


コードの改修

マルチテナント化、Stripe課金連携、OAuth2認証、Web管理画面、4言語対応。やることリストは長かったが、どれも定型作業だ。パターンは決まっているし、公式ドキュメントもある。ゴールは明確だ。

設計方針を決めて、実装はAIに任せた。一つ一つは別に難しくないが、量が膨大で、手作業で片付ける気にはならない類の作業だ。

最初にClaudeが出してきた方針が「856行のserver.jsを8モジュールに分割して、ギルドごとに設定を持てる構造にする。大改修です」だった。脅されたが、もともと動いていたプログラムで動作のロジックは明確だし、上に書いた通り不確定要素がない。案外あっさり終わるんじゃないかと期待していた。AIが得意な仕事なんじゃないかと。

実際、コードの改修は1日で終わった。


大変だったのはコードの外側

コードの改修より、「商品にする」ための作業のほうがよほど考えることが多かった。

法律

サブスクリプションでお金を取るなら、特定商取引法に基づく表記が必要になる。利用規約も書かなきゃいけない。消費者契約法に配慮した免責条項、返金ポリシー、個人情報の取り扱い。個人開発者がサービスを売る時に避けて通れない部分だ。

これもAIと一つずつ潰していった。「特商法に何を書くべき?」「この条項いる?」と相談しながら、最終的に全17条の利用規約ができた。法律の専門家ではないから正確さの保証はできないが、少なくとも「何も考えてない」状態からは脱出できた。

Stripeの審査

決済にStripeを使っているが、本番環境で動かすにはStripeの審査を通す必要がある。セキュリティがちゃんとしているかもチェックされる。

そこでAIにプロジェクト全体のセキュリティ監査をさせた。13件の指摘が出た。JWT有効期限チェックの欠落、OAuth2のオープンリダイレクト脆弱性、オークション終了の二重通知、APIのレート制限なし——自分では気づけなかったものも含めて、全部その場で修正させた。

5年間「自分しか使わないから」で見て見ぬふりをしてきた部分が、商品にする段階で一気に表面化した。


デプロイ

Botの本番デプロイには、自宅サーバーを使っている。以前の記事で書いた通り、AIにSSHでサーバーを直接触らせるスタイルだ。deploy.shを一発叩けば、ビルドからコンテナ更新まで全部終わる。

Web管理画面はVercelにデプロイ。こっちはgit pushだけ。


AuctionBOT

5年間、自分のギルドだけで動いていたBotが、今日からサービスとして公開された。

AuctionBOT — DiscordでギルドオークションをBotが全自動管理する。

  • /setup でチャンネルを自動作成、/auction でオークション開始
  • メンバーがリアクションで参加登録、数字を投稿して入札
  • 終了後、落札額 ÷ 参加人数を自動計算して分配結果を通知
  • スナイプ防止(終了間際の入札で自動延長)
  • 4言語対応(英語・日本語・韓国語・中国語)
  • Free(1同時オークション)/ Pro(月500円、無制限)

ボスドロップの分配で揉めてるギルド、手作業の集計に疲れてるギルドリーダーがいたら、試してみてほしい。


おわりに

コードの改修は、正直AIに任せたら終わる時代になった。マルチテナント化も課金連携も多言語対応も、パターンが決まっている作業は一気に片付く。

でも「商品にする」のは、コードだけじゃ終わらない。法律、セキュリティ、値付け、ランディングページ。自分で判断しなきゃいけないことが山ほどある。AIは相談相手にはなるが、最終的に決めるのは自分だ。

5年間、自分だけが使ってきたツールが、今日から他の誰かに使ってもらえるものになった。売れるかどうかはわからない。でもまあ、出さなきゃ始まらない。