10年運用して限界がきた個人開発サービス「あにはい」を作り直した話
この記事は 個人開発サービス Advent Calendar 2025 の22日目の記事です。
はじめに
この記事では、10年以上運用した個人開発サービスを一度クローズし、なぜ・どのように作り直したのか、技術的・運用的な観点で振り返ります。
個人サービスを開発運用している人、これから開発をしたいと考えている人の何か参考になれば幸いです。
あにはいとは?
僕が個人で開発運用しているどうぶつしょうぎの敗着を解析するWebアプリケーションです。
棋譜を入力することで手の善し悪しを判定し、敗着や最善手を調べることができます。
東京大学情報基盤センターの田中哲郎さんが発表した完全解析ロジックを応用した解析アルゴリズムを用いています。
どうぶつしょうぎとは?
女流棋士の北尾まどかさんがルールを考案した将棋を簡略化したゲームで、ルールは簡単ながら奥が深く初心者からプロまで楽しめます。
初期開発
きっかけ
2014年頃どうぶつしょうぎが一時期大流行していました。
将棋プロの間でも流行っていたと思います。
僕もどうぶつしょうぎウォーズにハマっていて、1級程度の棋力でした。
そんな中で当時勤めていた会社でどうぶつしょうぎのトーナメント大会が行われ、流石に余裕で優勝できるだろうと思ってたら思わぬ手練がいて決勝で敗れ準優勝でした。
その悔しさから棋力を向上したいと奮い立ちました。
どうぶつしょうぎは東京大学情報基盤センターの田中哲郎さんによって完全解析されています。
どうぶつしょうぎは二人零和有限確定完全情報ゲームなので、特定の局面は先手勝ち・引き分け・後手勝ちか特定できます。
そこで、自分の棋譜を入力したらどれが敗着かわかるアプリを作れば、対局に負けた時に効率的に振り返りができ、次回からは同じ手で負けることがなくなると考えました。
これにより、棋力向上に大きく繋がると思ったのです。
また、自分と同じどうぶつしょうぎ棋力向上の課題を抱えている人もいると思ったので一般公開もすることにしました。

ver 1.0 - 2014/12/29 First public release.
ちなみに、あにはいの名前の由来はどうぶつのアニマル+敗着チェッカーの略語です。
アーキテクチャ
以下技術スタックです。
- フロントエンド: AngularJS + jQuery
- バックエンド: Scala (Playframework)
- サーバー: EC2
- データベース: SQLite
事前に全ての局面を計算してSQLiteに保存しておき、フロントエンドでどうぶつしょうぎのゲームロジックを実装し、バックエンドは指定された局面をDBにアクセスして返します。

反響など
当時はどうぶつしょうぎが流行ってたこともあり、結構なアクセスがあり、5chのどうぶつしょうぎスレのテンプレなどにも載っていました。
SNSなどでも利用者の反響がありました。
サービスクローズ
どうぶつしょうぎの人気も徐々に落ち着いてきて、サイトへのアクセスも徐々に減っていきました。
細々と機能追加やバグ修正などを行ってきましたが、原因が特定できないサービスダウンがあったりで色々古すぎてローカルでの起動や動作確認もままならず、技術的負債が積み重なりクローズしました。
(もうAIで解析もできるのかと思いきや、まだまだ今のLLMでは難しいようです)
既存の課題として以下がありました。
- 謎のサービスダウンが頻発
- 監視設定が入ってないためサービスダウンしても気づきにくい
- コードやライブラリが古すぎて機能追加がバグ修正が難しい
- デプロイ方式がレガシーで手動のため大変
- EC2を用いているため維持コストがかかる
- httpsに非対応
作り直し
きっかけ
もうほぼ使われてないだろうとサービスをクローズしたところ意外に反響がありました。
世界コンピュータ将棋選手権優勝経験のあるレジェンド棚瀬さんからもお言葉を。
あにはいクローズの追悼大会も行われたようです。
桑名七盤勝負という競技ではまだまだどうぶつしょうぎは現役だったようです。
というわけで、まだ一定の需要はありそうだったので、丁度AIによるバイブコーディングで他言語へのリライトが容易になったこともありサクッとフルリプレイスで復活させてみました。
復活を喜んでくれてる方々がいてくれて何よりです。
アーキテクチャ
前提として
- 個人アプリなのでほぼ無料で運用したい。
- 総局面データの5GB程度を保存するデータベースが必要。
- 旧アプリの課題を全て解決したい。
手軽に使えるCloud Runを使いたかったのでGoogle Cloudを使おうとしたのですが、Firestoreの無料枠が1GBまでなので断念。
DynamoDBは25GBまで無料枠があったのでAWSでサーバレス構成を組むことにし、10年ぶりにフルモダナイズできました。
最近は職種としてSREをやってることもあり、高信頼性を保った構成になっています。
以下技術スタックです。
- フロントエンド: React + Next.js
- バックエンド: Go
- サーバー: Lambda
- データベース: DynamoDB

費用の変化など
サーバレス構成にしたのでインフラ費用は激減。
今は監視にRoute53のヘルスチェックで監視を行っているため費用がかかりますが、ここをもう少し工夫することでほぼ無料での運用が可能になりそうです。
(9月の費用が跳ねてるのはドメインをRoute53に移管してきた費用)

今後の展望
今後は以下の機能などの追加を考えています。
- 特定の局面の最善手を1種類ではなく全種類解析する機能
- 特定の局面を保存して、その局面から再開できる機能
- 盤面を上下逆にする機能(ひふみんアイ)
もし追加してほしい機能などあればXまで連絡ください。
おわりに
勢いで作ったアプリが、10年以上も使われ続けていたことに改めて感慨深いものがあります。
個人サービスを長期運用するには、やはりパッションが必要不可欠だと思います。
では自分のパッションは何だったのかと振り返って分解してみると以下のような感じです。
- 自分の好きな趣味の領域であること
- 自分自身が積極的に使うアプリであること
- 使ってくれる人がいること
- 直接の代替がないこと
ニッチな領域でも、誰かにとって必要とされる場所で輝くことが、個人開発を長く続ける一つのコツなのかもしれません。
今後も自分のパッションの赴くままに、さまざまなアプリを開発・運用していきたいと、あにはいの10年を振り返って感じました。
Discussion
お世話になっております。
リプレイスおめでとうございます。
個人開発の体験談、10年以上の思いは心にくるものがあり感動しました。
覚えていらっしゃらないかもしれませんが、
わたくしも、最近の技術によって、以前ご高覧いただいたあるアプリを
リニューアル復活させました。
「解析解説」をON、人間vs人間にすると、
「あにはい」に相当するようなことができそうです。
完全にオフラインのみで動作でき、サーバが一切不要になっております。
技術的にも、また、指し手としても、もし楽しんでいただければ嬉しく思います。