はじめに — なぜ暗号資産BOTだったのか
フリーランスエンジニアのぽんです。C言語を書き始めて23年になります。組み込みやシステムプログラミングを中心にキャリアを積んできましたが、2025年のある日、ふと思ったんです。
「自分の技術で、自分のためにお金を稼ぐプロダクトを作れないか?」
フリーランスとして受託案件をこなす日々。技術力には自信がある。でも、自分のプロダクトは持っていない。クライアントのためではなく、自分のために動くコードを書きたい。そう思い始めたのがきっかけでした。
暗号資産には少額を保有していて、取引所の画面を眺めながら「これ、自動化できるよな」と。C言語で低レイヤーを触ってきた人間にとって、APIを叩いて売買を自動化するなんて技術的には難しくない。問題はそれをどうプロダクトにするかでした。
技術選定の悩み — C言語脳からの脱却
最初に悩んだのが言語とフレームワークの選定です。
C言語歴23年の脳が「Cで書けばいいじゃん」と囁くんですが、さすがにWebアプリやモバイルアプリをCで書くのは現実的じゃない。ここで大きな決断をしました。
バックエンド: Python (FastAPI)
暗号資産BOT界隈ではccxt(暗号資産取引所の統一ライブラリ)がデファクトスタンダードです。ccxtはPython/JavaScript/PHPに対応していますが、Pythonのエコシステムが圧倒的に充実している。
FastAPIを選んだ理由は明快です。
- 型ヒントが使える — C言語脳にとって、型がないのは恐怖。FastAPIはPydanticで型安全を担保できる
- 自動ドキュメント生成 — Swagger UIが勝手に生える。API設計が楽になる
- 非同期対応 — 複数の取引所APIを同時に叩くのに必須
# C言語脳でも安心の型安全なAPI
class BotCreate(BaseModel):
name: str
exchange: str
pair: str
strategy: str # "dca", "rule", "grid", ...
invest_amount: float
フロントエンド: React Native (Expo)
ここが一番の賭けでした。TypeScript自体、まともに書いたことがなかった。
でも要件を考えると、スマホで自分のBOTを管理したいというのは自然なニーズ。PCの前にいなくても、BOTの状態を確認して、止めたり再開したりしたい。
Expoを選んだのは「とにかく速く動くものを作りたかった」から。ネイティブのビルド設定と格闘する余裕はなかった。
結果的に、React Native (Expo) + FastAPIの組み合わせは個人開発にベストだったと思います。1人で全スタックを面倒見る以上、各レイヤーのボイラープレートが少ないことは正義です。
開発で苦労した3つのこと
1. 取引所ごとの「癖」がひどい
ccxtのおかげで統一的にAPIを叩けるはず……だったんですが、現実はそう甘くなかった。
例えばZaif。OHLCVデータ(ローソク足)のAPIがccxt経由だと使えない。ルールベースの戦略はOHLCVに依存していたので、Zaifユーザー向けにはDCA(ドルコスト平均法)戦略を独立実装する必要がありました。
# DCA戦略: OHLCVに依存せず、ティッカー価格のみで動作
ticker = exchange.fetch_ticker(pair)
current_price = ticker["last"]
# 下落トリガーで購入判断 — シンプルだが堅実
注文の約定確認も取引所によって返り値の型が違う。ZaifはBooleanで返すのに、他はStringだったり。こういう地味な型の不一致をひとつずつ潰していく作業が、開発時間の3割を占めました。
C言語で型の重要性を叩き込まれていて本当に良かった。isinstanceガードを入れる習慣がなかったら、本番で謎のクラッシュに悩まされていたでしょう。
2. リアルマネーの恐怖
テストでは完璧に動いているコードが、本番ではバグるかもしれない。しかも扱うのはリアルマネーです。
「テストで100回成功しても、101回目に全財産を溶かすかもしれない」
この恐怖から、安全設計には異常なほどこだわりました。
- 利確/損切りの強制設定 — BOT作成時に必ずTP/SLを設定させる
- 最大積立総額の上限 — DCA戦略で青天井に買い続けないよう制限
- 自動停止機能 — 異常を検知したらBOTを即停止、プッシュ通知で知らせる
- 123個のテスト — バックエンドのテストカバレッジを徹底
組み込み開発で「バグ=人命」という世界を経験してきたことが、ここで活きました。金融系のコードに必要なのは、派手な機能ではなく地味な安全設計です。
3. フロントエンドの状態管理
C言語にはグローバル変数とポインタがあればなんとかなる(暴論)。でもReactの状態管理は別世界でした。
Zustandを採用してからは楽になりましたが、最初はuseStateの嵐で画面がチカチカ再レンダリングする地獄を経験しました。
最終的にstale-while-revalidateパターンのキャッシュ(30秒TTL)を実装して、タブ切り替え時のローディング問題を解決。UXが劇的に改善した瞬間は本当に気持ちよかったです。
Claude Codeとの開発体験
このプロジェクトで最大の転機は、Claude Code(AnthropicのCLIツール)を開発に導入したことです。
正直に言います。React NativeもTypeScriptもFastAPIも、23年間C言語を書いてきた自分にとっては「初めての技術」に近かった。それを個人開発で同時に使いこなすなんて、普通なら数ヶ月かかるところです。
Claude Codeとの開発は「AIにコードを書かせる」のとは違います。設計を議論し、一緒にアーキテクチャを考え、テストを書き、実装し、レビューする。まさに優秀なペアプログラマーです。
具体的に助かった場面をいくつか挙げると:
- React Nativeの画面設計 — 8画面のUI構成を一緒に考えて実装
- Expoのプッシュ通知 — expo-notificationsの設定は公式ドキュメントだけでは辛かった
- テスト作成 — 123個のテストケースを効率的に書けた
- MCP連携 — GitHub, Sentry, Playwrightなどのツールチェーンを統合
開発効率は体感で3〜5倍になりました。特にTypeScriptの型エラーとの格闘が減ったのが大きい。C言語の厳密な型システムに慣れた身としては、TypeScriptの型推論は時に不可解で、Claude Codeに「なぜこの型エラーが出るのか」を聞けるのは本当にありがたかった。
ただし一つ注意点。AIに丸投げすると、自分のプロダクトではなくなる。設計の意思決定は必ず自分でやる。AIはあくまでツールです。
販売するまで — エンジニアの苦手領域
コードを書くのは楽しい。でも売るのは全く別のスキルです。
LP(ランディングページ)を作る
「いい商品を作れば売れる」——そんなエンジニアの幻想は早々に捨てました。
Renderに無料デプロイしたLPを作り、機能一覧・スクリーンショット・価格表を並べました。ここで学んだのは、ターゲットに刺さる言葉の重要性。
「FastAPIで構築された高性能バックエンド」と書いても刺さらない。
**「スマホ1台でBOTを管理。寝ている間も自動取引」**と書くほうが伝わる。
Stripe決済を導入
Stripe Checkoutは本当に楽でした。審査も通り、クレジットカード決済がすぐに使えるようになりました。エンジニアにとっては「支払いフォームを自作しなくていい」というのが最高です。
価格設定の悩み
これが一番悩みました。3つのプランに分けたのは、ターゲットごとにニーズが違うから。
| プラン | 価格 | 想定ユーザー |
|---|---|---|
| ライト版 | ¥1,980 | React Nativeの学習教材として |
| スタンダード版 | ¥4,950 | 実際に自動売買を動かしたい人 |
| フル版 | ¥9,790 | 全戦略+サポート付きで本格運用したい人 |
暗号資産BOT系の商材は3,000〜15,000円が相場。スマホアプリ対応は他にほとんどないので、そこが差別化ポイントです。
noteでの記事販売や、月額500円のメンバーシップ(AutoTraderLab)も並行して開始。複数の販路を持つことで、リスクを分散させています。
個人開発で学んだこと
技術は手段でしかない
23年間、技術を磨くことが目的になっていた部分がありました。でも個人開発で「誰に」「何を」届けるのかを考えると、技術は手段に過ぎない。
C言語の低レイヤー知識は、安全設計やデバッグ思考に活きました。でも「C言語で書けるから偉い」わけじゃない。PythonでもTypeScriptでも、ユーザーの課題を解決できればそれでいい。
「完璧」は永遠に来ない
戦略エンジンの一部はまだスタブ実装です。でも、動くものを出して反応を見るほうが、完璧を目指して出さないよりずっといい。
123個のテストが通っていれば、最低限の品質は担保できている。あとは実際のユーザーからフィードバックをもらいながら改善していく。
個人開発は「開発」だけじゃない
コードを書く時間は全体の5割程度。残りはドキュメント整備、LP作成、販売計画、価格設定、マーケティング……。
エンジニアとしては辛い部分もありますが、プロダクト全体を自分でコントロールできる楽しさは受託では味わえません。
おわりに
C言語23年のキャリアから、Python + TypeScriptで暗号資産自動売買アプリを個人開発し、販売を開始するまで。振り返ると、技術の転換よりもマインドの転換のほうが大きかったかもしれません。
「受託で食べていく」から「自分のプロダクトで食べていく」へ。その第一歩として作ったのがAutoTraderです。
AutoTrader — 暗号資産自動売買アプリ
スマホ1台でBOTを管理できる暗号資産自動売買システム。
主な特徴:
- React Native (Expo) + FastAPI のフルスタック構成
- Zaif / bitFlyer / Coincheck 対応(ccxt経由)
- 6種類の戦略: DCA、ルールベース、グリッド、スキャルピング、マーケットメイク、AI
- プッシュ通知でBUY/SELLをリアルタイム通知
- バックテスト機能で戦略を事前検証
- 無料インフラ(Render + EAS Build)で運用コストゼロ
LP: https://autotrader-lp.onrender.com/
最後まで読んでいただきありがとうございます。個人開発仲間の参考になれば嬉しいです。質問やフィードバックがあればコメントをお待ちしています。
タグ: #個人開発 #暗号資産 #Python #ReactNative #FastAPI #自動売買 #ClaudeCode