バイナンス公式サイトは一般ユーザーにとっては www.binance.com ですが、開発者にとっては状況がかなり複雑です。実際にコードを書いて接続するのはフロントのページではなく、api.binance.com、stream.binance.com、fapi.binance.com といったホスト名の一群です。新しく接続する多くのプログラマがフィッシングドキュメントや偽SDKで損をしており、核心的な原因は「ユーザー向け公式サイト」と「開発者向け公式サイト」を分けて見ていないことです。まずバイナンス公式サイトでアカウントとAPIキーの準備を整え、次に二段階認証プッシュ用にバイナンス公式アプリをインストールしてください。iPhone側の設定は iOSインストールガイド をご参照ください。
以下、完全に開発者視点でバイナンス公式サイトの入口構造を明確にし、ドキュメント入口の識別、本番環境とTestnetの区別、SDKダウンロード元の検証、WebSocketホスト一覧、changelog購読方法まで解説します。
バイナンス開発者公式サイトの正しい入口
開発者向けドキュメントは www.binance.com のトップナビゲーションには掲載されず、複数の独立したサブドメインとGitHub組織に分散しています。以下の入口だけを認識すれば迷うことはありません。
メインドキュメントサイト developers.binance.com
developers.binance.com はバイナンス開発者ポータルの統一入口で、Spot、Futures、Margin、Wallet、Stakingの各APIリファレンスマニュアルを集約しています。ページ右上でChange Logに切り替えることができ、API更新のたびに分単位のタイムスタンプが付きます。
このドメインのTLS証明書の発行主体は Binance Holdings Ltd で、メインサイト binance.com と同じ証明書チェーンを使用します。開いたときに証明書主体が一致しない場合、ハイジャックされています。
GitHub組織 binance
公式コードリポジトリは github.com/binance 組織配下に集約されており、SDKとサンプルコードの真偽を検証する最高権威のソースです。よく使うリポジトリ:
- binance-spot-api-docs:現物 REST/WebSocket プロトコル仕様
- binance-futures-connector-python:USDT建て先物 Python コネクタ
- binance-connector-node:Node.js 公式 SDK
- binance-api-postman:Postman デバッグコレクション
GitHub組織ページ下部に Verified バッジがあります。このバッジはDNS TXTレコードを binance.com にバインドして取得するもので、偽装組織は模倣できません。
バイナンスアカデミーの技術記事入口
academy.binance.com はコンテンツサイトでAPIサイトではありませんが、下の「Developer」タグにプロトコル設計の解説、手数料構造の変更、マッチングエンジンの挙動説明などの深い内容が掲載され、APIの背景にあるビジネスロジックの理解に役立ちます。
本番環境とTestnetのホスト名の区別方法
バイナンスは開発者向けに完全なTestnet環境を用意していますが、Testnetと本番環境のホスト名は非常に混同しやすいです。ホストを間違えると2つの破滅的な結果をもたらします。本物のお金でテストする、あるいはテストのお金で本番運用するというものです。
現物APIホスト一覧
| 用途 | 本番環境 | Testnet |
|---|---|---|
| REST API | api.binance.com | testnet.binance.vision |
| WebSocket Stream | stream.binance.com:9443 | stream.testnet.binance.vision:9443 |
| WebSocket API | ws-api.binance.com:443 | ws-api.testnet.binance.vision:443 |
Testnetは binance.vision という独立ドメインで、binance.com のサブドメインではない点に注意してください。これはバイナンスが意図的に行っているもので、本番キーとテストキーのドメイン類似による誤用を防ぐためです。
先物APIホスト一覧
| 用途 | 本番環境 | Testnet |
|---|---|---|
| USDT建て REST | fapi.binance.com | testnet.binancefuture.com |
| USDT建て WS | fstream.binance.com | stream.binancefuture.com |
| コイン建て REST | dapi.binance.com | testnet.binancefuture.com |
| コイン建て WS | dstream.binance.com | dstream.binancefuture.com |
先物Testnetは binancefuture.com でまた別の独立ドメインです。コード内で host が binance.com で path に /fapi がある場合、古いバージョンのSDKが統一ドメイン転送を使っている可能性が高く、新しいバージョンは分離されています。
APIキーは両環境で共有できない
本番環境のAPIキーはTestnetで使えず、逆も同様です。TestnetのキーはGitHubアカウントで testnet.binance.vision ページにログインして生成し、本番キーはバイナンス公式サイトのアカウントセキュリティページで作成します。2つの体系は完全に隔離されており、Testnetキーが漏洩しても実資金には影響しません。
SDKダウンロード元の真偽検証
開発者エコシステムで最も多い攻撃は pip の偽パッケージと npm の偽パッケージで、命名が非常に紛らわしいです。SDKのダウンロードは必ず以下の正規ソースから行ってください。
Pythonパッケージの正しい名称
バイナンスには「binance」という公式Pythonパッケージはありません。APIに接続するには以下のいずれかを使います。
- binance-connector:公式メンテナンス、PyPIの公開者はBinance
- python-binance:コミュニティの老舗ライブラリ、作者はSam McHardy、公式からも引用されている
以下の名称はすべて偽装:binance-api、binancepy、pybinance、binance-sdk(ハイフン入りの初期偽装バージョンに注意)。PyPIで公開者のメールドメインを確認可能で、公式パッケージの公開者メールは必ず @binance.com です。
パッケージ完全性の検証
pipは2023年からハッシュ検証に対応しました。requirements.txt でハッシュをロックして中間者による差し替えを防げます。
binance-connector==3.7.0 \
--hash=sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ハッシュ値はPyPIページの「Download files」で確認でき、対比して誤りがなければインストールします。
Node.jsパッケージの命名
npmでの公式パッケージのスコープは @binance/connector です。@binance スコープはnpmで組織検証がなされており、偽装者は登録できません。スコープなしの node-binance-api はコミュニティの老舗ライブラリで比較的信頼できますが、公式ではありません。
GoとRustの状況
Goは公式SDKを公開していません。現在主流なのはコミュニティメンテナンスの adshao/go-binance で、作者 adshao はバイナンス初期の協力開発者で、コード品質は高いです。Rustも公式非対応で、ccxt-rust と binance-rs はコミュニティ実装です。使用前に自分で監査してください。
WebSocket 長時間接続の運用の詳細
REST APIは1回呼び出して終わりですが、WebSocketは長時間接続するため運用上の落とし穴はRESTよりはるかに多いです。
24時間の強制切断
バイナンス現物WebSocketには硬い規則があります。単一接続は最大24時間までで、時間が来るとサーバー側が能動的に切断します。開発者は切断再接続ロジックを実装し、23時間前後で能動的に再接続するのが望ましく、切られてから対応するのは避けるべきです。
PING/PONGハートビート
サーバーは3分ごとにPINGフレームを送信し、クライアントは10分以内にPONGを返さないと切断されます。多くのWebSocketライブラリは自動で処理しますが、一部の低レベル実装は処理しないので、その場合はハートビートフレームを手動でフックする必要があります。
購読数の上限
単一接続で購読可能なストリームは最大 1024本 で、超えるとエラーコード -1013 が返されます。多数の取引ペアを同時監視するシステムでは、クライアント側で複数接続にグルーピングする必要があります。
組合せストリームの書き方
組合せストリームのURL形式は stream.binance.com:9443/stream?streams=btcusdt@trade/ethusdt@kline_1m で、複数ストリームをスラッシュで区切ります。単一ストリームは stream.binance.com:9443/ws/btcusdt@trade でpathが異なります。
APIの変更を追跡する方法
バイナンスAPIの変更頻度は多くの取引所より高く、Change Logを購読していないとAPI廃止やフィールド意味変更の踏み抜きに遭いやすいです。
公式Change Logの場所
Change Logは binance-docs.github.io と developers.binance.com の2か所で同時公開され、履歴は2017年までさかのぼれます。各変更には UPDATE、NEW、DEPRECATED の3種類のラベルが付きます。
GitHub Release の購読
github.com/binance/binance-spot-api-docs リポジトリで Watch → Releases only を設定すると、プロトコルドキュメントコミットのたびにメール通知が届き、ウェブポーリングより確実です。
警告メールリスト
重大なAPI変更は 2週間〜2か月前にアカウント登録メールに通知が届きます。したがってAPIキーを紐付けるアカウントは必ず常用メールを使い、一時メールは避けてください。
レート制限ポリシーの調整
頻度制限は最もサイレントに変更される部分です。バイナンスはHTTP応答ヘッダで X-MBX-USED-WEIGHT-1M をリアルタイムで返すため、この値の変動傾向を監視する方がドキュメントを見るより早くポリシー調整を察知できます。
セキュア接続のチェックリスト
接続前に以下を確認すれば、95%のセキュリティ上の落とし穴を回避できます。
- IPホワイトリストを必ず有効化:API管理ページで「Restrict access to trusted IPs only」にチェック、無効はパブリックネットで丸裸と同じ
- 権限の最小化:読み取り専用キーと取引キーを分けて作成、出金権限はデフォルトでチェックしない
- キーをコードリポジトリに入れない:環境変数または Vault を使い、CIで gitleaks でスキャンして誤コミットを防ぐ
- HTTPSを強制:HTTP版のAPI呼び出しを拒否し、中間者を防止
- 署名はHMAC-SHA256:パラメータを辞書順で連結、timestamp と signature の順序を逆にしない
- recvWindow は5秒を超えない:デフォルト5000ms、大きすぎると攻撃者にリプレイウィンドウを提供
FAQ よくある質問
Q1:公式サイトのドキュメントページと binance-docs.github.io は同じ内容?
短期間は同期されないことがあります。binance-docs.github.io は GitHub Pages でコードコミットで更新され、developers.binance.com は公式サイトCDNが配信する静的リソースです。両者は数分〜数時間ずれます。最新プロトコルを追うなら GitHub Pages の方が確実です。
Q2:Testnetの注文は実口座に影響する?
まったく影響しません。Testnetは独立したマッチングシステムで、資金は取得したテスト用トークン、注文板もメインネットと隔離されています。唯一の関連性は相場データがメインネットのスナップショット由来で、価格の動きが実市場に似ている点だけです。
Q3:Pythonパッケージの python-binance と binance-connector はどちらを選ぶ?
用途次第。binance-connector は公式メンテナンスでAPIカバレッジは最新ですが、関数型寄りのスタイル。python-binance はコミュニティ版で抽象化が進み、同期・非同期両対応、ドキュメント例が豊富です。本番環境は connector、迅速なプロトタイプは python-binance がおすすめです。
Q4:WebSocket の切断再接続に指数バックオフは必要?
必要です。バイナンスは異常トラフィック時に一時的にIPを封じるため、バックオフなしでは繰り返し封じられます。推奨ポリシー:初回1秒、以降毎回×2、上限60秒、成功後にカウンタをリセット。
Q5:バイナンスにも OKX のような Demo Trading がある?
ありますが呼び方が違います。現物は Testnet(testnet.binance.vision)、先物は Binance Futures Testnet(testnet.binancefuture.com)。入口とAPIキー体系はそれぞれ独立しており、OKXのように同一アカウントでデモに切り替えることはできません。