記事の更新日:2022年5月3日
auカブコム証券「kabuステーション®API」Pythonサンプルコードを丁寧に解説しています。
このブログ記事は下の解説ページの続きです。
auカブコム証券API Pythonで発注する方法を、超初心者向けにゆっくり解説。Page1[kabuステーション®API]
Pythonサンプルコード解説
トークンを取得するサンプルコードを、Jupyter Lab(ジュピター・ラボ)で編集・実行が出来るようになりました。
トークン取得
トークンを取得するサンプルコードはこちらです。
トークン取得のリファレンス
トークン取得のリファレンスを確認しましょう。
最初に言ってしまいます。
初心者がリファレンスを見ても、何が何だか分からないと思います。
公式ホームページ中央の REST APIリファレンス のリンクをクリックしてください。
左の認証をクリックすると、その下に[POST]トークン発行と表示されます。
重要な部分は赤枠で囲ってありますが、今は「何か書いてあったなぁ」レベルで覚えておいてください。
トークン取得コードを要素で分解する
ここからじっくり解説をすすめます。
まず、コードを要素で分解しましょう。
1~4の要素に分解しています。
- 要素1:ライブラリーのインポート
- 要素2:送信データーの作成
- 要素3:処理内容の指定
- 要素4:処理の実行
要素1:ライブラリーのインポート
要素1では、ライブラリーをインポートしています。
ライブラリーとは
Pythonの特徴としてライブラリーが豊富であることがよく上げられます。
ライブラリーとは何者でしょうか?
正式なライブラリーの定義は「Python ライブラリーとは」などで検索してみてください。
ここでは、「誰かが作ってくれた、汎用性のあるプログラム」このように覚えても良いでしょう。
Pythonライブラリは、そのほとんどを無料で使うことが出来ます。
AI開発などに繋がる機械学習分野のライブラリが豊富なのも、Python人気に拍車を掛けているようです。
import ○□△ の記述で、ライブラリー○□△をインポートすることが出来ます。
◇import urllib.request
はじめにurllib.requestライブラリーをインポートしています。
urllib.requestとは?
Pythonの日本語ドキュメントでは以下のように説明されています。
urllib.request — URL を開くための拡張可能なライブラリ
https://docs.python.org/ja/3/library/urllib.request.html
ここで思い出してください。
auカブコム証券API公式ページにはこのような記載がありました。
注目するキーワードは「REST形式」。
そして、REST形式の解説はこちら。
「REST(REpresentational State Transfer)」(レスト)とは、広く普及したWebのインフラをそのまま利用して、簡易な手順でWebサービスへのアクセスを可能にする仕組み。
出所は以下url:
https://atmarkit.itmedia.co.jp/ait/articles/1601/13/news033.html#:~:text=%E3%80%8CREST%EF%BC%88REpresentational%20State%20Transfer%EF%BC%89,%E3%81%95%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82
解説が小難しくなってきましたね。
いま、細かいことを覚える必要はありません。
サンプルコード8行目にこの記述があります。
url = ‘http://localhost:18080/kabusapi/token’
http://******** ホームページのアドレスの記述とほぼ同じですね。
auカブコム証券APIでは、このホームページを閲覧するような仕組みを使って、データーのやりとりを行います。
このデーターのやりとりを行うプログラムコードを、どこかの誰かさんが作ってくれています。
それを、import urllib.request と記述するだけで使うことが出来るんです。
素晴らしいですね。
◇import json
次にインポートしているのがjsonです。
JSONとは「JavaScriptのオブジェクト記法を用いたデータ交換フォーマット」です。
Python、PHP、JavaScript、C++、Javaなど様々な言語でサポートされており、JSONを間に挟むことで各プログラミング言語間のデータの受け渡しがとても簡単にできます。出所:https://products.sint.co.jp/topsic/blog/json
auカブコム証券APIでもデーターはJSON形式でやりとりされます。
このJSONを扱うためのライブラリーをインポートしています。
◇import pprint
最後にpprintをインポートしています。
pprintは出力されるデーターを見栄え良く(人間が判読しやすいよう)自動で整形してくれるライブラリーです。
要素2:送信データーの作成
要素2では、サーバーへ送るデーターを作成しています。
◇obj = { ‘APIPassword’: ‘qwerty’ }
5行目の obj = { ‘APIPassword’: ‘qwerty‘ } は、’APIパスワードをPythonの辞書型にして変数objに代入しています。
‘qwerty‘はサンプルコードで仮に登録されている文字列です。
ご自分が設定したパスワードに置き換えてください。
kabuステーションのAPIシステム設定で登録したパスワードになります。
ここで、トークン取得のリファレンス思い出してください。
下図は中央の赤枠部分を拡大しました。
APIPasswordパスワードは必須(required)。
形式はstring(文字列) という意味です。
◇json_data = json.dumps(obj).encode(‘utf8’)
6行目の json_data = json.dumps(obj).encode(‘utf8’) は、辞書型のAPIパスワードをJSON形式に変換しています。
そして、Python の標準の文字コードである UTF-8を指定しています。
データの送信や処理を要求する通知などのことを「Request(リクエスト)」と言います。
リファレンスでは、JSON形式を指定しています。
要素3:処理内容の指定
要素3では、処理内容を指定しています。
◇url = ‘http://localhost:18080/kabusapi/token’
8行目の url = ‘http://localhost:18080/kabusapi/token’ は、要素2で作成した送信データー(リクエスト)の宛先を指定しています。
ここでまた、トークン取得のリファレンス思い出してください。
1番右の赤枠を拡大しています。
青く表示されている[POST]をクリックすると、表示が下のように変わります。
ここに表示されたURLが、8行目のコードで指定されたURLです。(本番用)
◇req = urllib.request.Request(url, json_data, method=’POST’)
9行目の req = urllib.request.Request(url, json_data, method=’POST’) は,8行目で指定した宛先に送る送信データー(リクエスト)を作成しています。
カッコ内の引数は、それぞれ何を示すかは下図を参照願います。
◇req.add_header(‘Content-Type’, ‘application/json’)
10行目の req.add_header(‘Content-Type’, ‘application/json‘) は、サーバーから返される値の形式を指定しています。
JSON形式を指定。
サーバーから返される値をレスポンスと呼びます。Pythonの日本語ドキュメントでは次のように説明があります
リクエストの形式
kabuステーション®APIのリクエストには、「xxxをxxxしてください」という能動的なPOST/PUT形式と、「xxxを送ってきてください」という受身的なGET形式が存在します。
POST/PUT形式のリクエストをする際には、必ずルールに従わなければなりませんが、GET形式のリクエストをする際には出てきたものをそのまま受け取ればいいです。
次に続く
新しく聞く言葉も多かったかも知れません。
ここらで、一息つきましょう。
続きは、こちらからどうぞ。
auカブコム証券API Pythonで発注する方法を、超初心者向けにゆっくり解説。Page3 [kabuステーション®API]
この記事を書いた人
あしおゆたか
株式投資歴22年のシステムトレーダー(←主な取引手法)
机上の理論ではなく、実体験に基づいた記事作りをモットーにしています。
スポーツクラブに毎週2日~3日通い、サウナ後の暴飲暴食が趣味。
◇主な投資対象
日本株式
株式ETF(上場投資信託)
日経225先物
日経225先物オプション
◇運営者情報はこちら