第2回の記事で、「APIとは何か?」を説明し、実際にパブリックAPIを利用してbitFlyerの板情報を取得する方法を説明しました。覚えていますか?
そのときにも説明しましたが、実際に売買注文をAPI経由で出したり、自身のJPY残高を確認したりするためには、「プライベートAPI」を利用する必要があります。今回の記事では、プライベートAPIを利用するのに必要なパスワード(=APIキー・シークレットといいます)を取得しておきましょう。
APIキー・シークレットの取得
まずは「bitFlyer lightning」にログインしてください。
(bitFlyerのアカウント登録がまだの方は、ぜひこちらから登録してください)
▽ bitFlyer lightningのログイン後の画面
ログインしたら、左上の「三」MENUマークをクリックして、メニューの一覧から「API」をクリックしてください。
「新しいAPIキーを追加」をクリックします。
免責をキチンと読んだ上で「同意」してください。
APIキーの権限の設定
以下のような画面が出てきます。
これはAPI経由での命令について「どのような行為まで許可するか?」という権限の設定です。
ここでチェックを入れた項目については、APIキーとシークレットを知っていれば、誰でも実行することができます。つまり万が一、APIキー・シークレットが漏洩した場合には、実行されてしまう可能性のある項目です。
単に自動売買BOTを作るだけなら、入出金の機能は不要なので、すべて外しておきましょう。特に銀行への「出金」の指示をBOT経由で出すことはまずないと思うので、「出金」は外しておいてください。
「資産」と「トレード」の項目はすべてチェックを入れて構いません。(権限は後からでも変更できるので、あまり考えこむ必要はありません)
またラベルは単に自分がAPIキーを識別するためのものなので、何でも構いません。「自動売買BOT作成用」とでもしておくといいでしょう。これで「OK」を押せば、APIキーの作成が完了します。
APIキーとシークレットを厳重に保管する
作成が完了したら以下の画面になります。
「表示」の部分をクリックした上で、API KeyとAPI Secretをメモして安全ば場所に保管してください。
このブログは、仮想通貨トレードのブログなので、暗号技術に多少興味のある方も見ていると思います。そのため、一応、簡単にAPIシークレットの意味を説明しておきましょう。(興味のない方は以下の段落は読み飛ばしてくださいw)
API注文の暗号化の仕組み
API経由でbitFlyerに売買注文などの命令を出すときは、「メッセージ認証コード」(HMAC)という暗号技術が使われています。この方式では、APIで実行したい指示の内容を、APIシークレットとセットにしてハッシュ値を計算し、そのハッシュ値をWEB経由で送ります。
そのため、もし通信内容が途中で漏洩したとしても、そこからAPIシークレットが判明することはありません。またAPIシークレットを知らないとハッシュ計算ができないので、APIシークレットを知らない人が、自分に成りすまして勝手に注文を偽装することもできません。
APIキーの方は、平文のまま通信のヘッダーに含まれて送信されます。とはいえ、こちらもhttps通信で暗号化されていますので、一般論としていえば、通信内容を傍受することはできません。要するに、APIキーとシークレットは、通信途中で漏れることはない、という話です。
【重要】信用できないソースコードにAPIシークレットを入力しないこと
ただし初心者の方に気を付けて欲しいのは、自分のよく理解していない売買BOTのプログラムやライブラリに、「安易にAPIシークレットを渡してはいけない」ということです。
上記のように通信の途中で、第三者に傍受されてAPIキー・シークレットが漏洩することはありません。しかし、自分の理解していないPythonのソースコードにAPIシークレットを入力すると、そのPythonプログラムがどこか第三者にこっそりAPIシークレットを送信している可能性は0ではありません。
ソースコードはなるべく読んで意味を理解しながら書き写し、また外部のライブラリを使う場合は、githubなどでソースコードが公開されているもの、有名で皆が使っているもの、を使うようにしましょう。
またAPIキーの権限には、出金などの権限を与えず、常に必要最小限にしておくことが大事です。
こんにちは、先日からryotaさんのHPで勉強させて頂いております。ありがとうございます。
いきなり質問失礼します。
現在2.API入門編が終わり、3.売買注文編を勉強しようと思っているのですが今はビットフライヤーが新規会員登録受付しておりません、代わりになるおすすめ取引所などありませんでしょうか?
よろしくお願いします。
コメントありがとうございます!
そうですよね…。他の取引所でしたら、BitMEXなどはAPIも使いやすくて日本語の情報も比較的多くあり、プログラミングの勉強はしやすいと思います!