第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キーの権限には、出金などの権限を与えず、常に必要最小限にしておくことが大事です。