Softgate Limited

株式会社ソフトゲート コーポレートブログ

ウェブ API 開発コースの概要

前回宣言した通り、トレードをテーマとしたプログラミング/技術のトレーニングコースやセミナーを来年からご提供していくつもりです。

その中で、最初に開催を予定しているのが、入門編という位置付けの「ウェブ API 開発」トレーニングコースです。

今回は、現在決まっている範囲で、「ウェブ API 開発」コースのご紹介をしたいと思います。

・・・が、このコースのコンセプトやプログラミング教育について考えたことなど、いろいろと書いていたら、とても長文になってしまいました。

熱い想いが溢れたということで、何卒暖かく見守ってくださいませ。(・・)(..)

概要

「ウェブ API 開発」コースは、FX 業者や仮想通貨の取引所が提供するウェブ API を使って

  • 裁量支援の半自動化プログラム
  • 自動売買プログラム

などを自分で思い通りに開発できる力を身に付けるためのトレーニングコースで、プログラミング言語としては Python を使用します。

「ウェブ API 開発」というと抽象的ですが、一言で言えば、このコースは、(そこそこ)高頻度に取引をする bitFlyer の仮想通貨 BOT を作る過程を通じてプログラミングおよび技術的知識の習得を目指す、トレーダーのためのプログラミング教育コースです。

価格取得や発注、注文/ポジション管理など、トレードに必要な一通りの処理をすべて実装することで、自動売買プログラムでも半自動化プログラムでも思いのままに作れるようになることを目指します。

また、Python を知らない方でも受講できるようにカリキュラムを組んでおり、プログラミング初心者やプログラミング学習で一度挫折したような方にも是非受講して頂きたいと思っています。

このコースの特徴としては

  • サンプルコードを示して終わりではなく、原理を理解して自分でプログラムを作ることを重視
  • コミュニティフォーラムでの学習サポート
  • 実用レベルのプログラムを作るための幅広い知識を提供
  • 将来にわたって通用する技術的なバックグラウンドを身に付けることを目標とする

などが挙げられます。

課題について

本コースは、受講者自らプログラムを組むことを重視しているため、毎回の講義において課題を出し、次回までに解答を提出していただきます。

(提出しないと脱落、ということはありませんが、極力頑張って欲しいところです)

全体的な流れとしては bitFlyer FX で取引を行う BOT を開発しつつ、発展的な事例として Liquid や FX の Oanda なども課題では取り上げる予定です。

もし、仮に課題通りのプログラムが作れなかったとしても、どのような試行錯誤をしたかを日本語で説明して欲しいと思います。

日本語で自分の意図や考えを明確に伝えることも、プログラミング学習の一環として十分に効果があります。

また、講師が解答を作成する過程を動画にして受講生に提供することで、実際のプログラミングとはどんな感じなのかをリアルにお伝えします(少々恥ずかしいですが)。

コミュニティフォーラム

本コースでは、弊社ウェブサイトにご用意するコミュニティフォーラムで質問を受け付け、学習の支援を行います。

Slack や Discord といったチャットシステムが当たり前に使われている中で、あえて旧式(?)なフォーラムを採用するのは、チャットには

  • リアルタイムにオンラインな人がリアクションしなければいけないような雰囲気が生まれがち
  • 仕事や外出から帰ってきたら、自分の質問とそれへの回答がログの奥の方に流れていたりする
  • そもそもトピック一覧が存在しないので長期的な情報アーカイブとしては優れていない

といった欠点があるからです。

ただし、あくまで補助的な位置付けにはなりますが、リアルタイムなコミュニケーションの場として Discord もご用意します。雑談などにご利用下さい。

なお、フォーラムは一年間のアクセスが有効で、それ以降は会費を払うことでアクセス権限の延長も可能です。

コース自体の受講料やフォーラムの会費などは、また後ほどご案内いたします。少々お待ちください。

このように、まだ概要しか決まっていない状態ですが、もしご質問/ご要望などあれば、ツイッターの DM や弊社ウェブサイトのお問い合わせフォームからお気軽にご連絡ください。

今なら、お寄せ頂いたご意見が反映されるかもしれません。(^^;

本コースの提供に至った背景

ここからは、ちょっと長いのですが、本コースを提供するに至った背景や、本コース設計の意図などを説明しております。

本コースの受講を検討している方のご参考になれば幸いです。

プログラミングを身に付けるとは

私事ですが、最近(大人を対象とした)プログラミング教育に興味があり、色々考えた結果、やはり

興味がある分野のプログラムをひたすら自分で作ることで自然とプログラミングを身に付ける

のが最も効率が良いと思っています。

・・・なんか当たり前のことを言っているようですが、まあ聞いて下さい。

プログラミングというと、どうしても、Python とか JavaScript といった特定の言語で処理を記述するコーディングの部分に目が行きがちですが、実際には細かく分けると

  • 調査
  • 実験
  • 仕様検討
  • 設計
  • コーディング
  • デバッグ

といった様々なタスクをこなす必要があります。

どこかが欠けていると、案外プログラムは完成しないものです。

「自分では結構勉強したつもりなんだけど、どうもプログラムが組めるようにならないんだよなぁ」という方は、おそらく、鍛えられていない弱い箇所がいくつかあるのでしょう。

もっとも、それも仕方の無いことだと思います。

既存のプログラミング教育コースや書籍での学習は、どうしても知識偏重になる上に、安易にサンプルコードを見せられて、受講者自身のプログラミングの機会が十分に確保されません。

これでは、まるで、登山家を志す人に対して、登山の知識だけ提供し、あとはヘリで山頂まで連れて行って登山気分を味わわせているようなものです。

あくまで登頂の体験が目的ならそれも良いと思いますが、そんな「教育」を受けただけで一人前の登山家になれるわけがありません。

本コースでは、自分の足で山を登る、すなわち、受講者自らプログラムを組んでもらうことを重視します。

あれこれ自分で実験したり、正しく書いたつもりのプログラムが動かずにデバッグしたりする過程を経て、リアルなプログラミングを経験して頂きたいと思います。

自分で作るということ

さて、さきほどプログラミングを身に付ける秘訣(?)は

興味がある分野のプログラムをひたすら自分で作ることで自然とプログラミングを身に付ける

ことだと申しました。

「興味がある分野のプログラム」というところがミソで、既存のプログラミング教育の欠点の一つがそこにあると思っています。

たとえば、仮想通貨の BOT を作るために Python の入門書を手に取ったのに、「ゲームのテト○スを作ってみましょう!」みたいなノリで解説とサンプルコードを提示されても、興味が無ければいまいち没頭できませんよね。

なんとか我慢しながらその本を読み終えたとしても、ただ読み終えただけではプログラムが組めるようにはなりません。

それは、自分の足で歩いていない、もしくは歩いた距離が圧倒的に不足しているからです。

そうは言っても、あまり興味の無いプログラムを作ったり、ましてやそれをどんどん改良したり、なんて、なかなか続かないというのも理解できます。

その点、「ウェブ API 開発」コースは、そもそもトレードに関心のある人だけを対象として、トレードを題材にしたプログラムを作っていくわけですから、モチベーションは持続しやすいはずです。

当初は、ロジックが簡単明快なので仮想通貨アービトラージの開発をテーマにするつもりでしたが、現実には椅子取り競争が激しく、初心者が作ったプログラムでは狙った価格でほぼ約定しないため、やや机上の空論のようになってしまい、面白みが半減すると思いました。

そこで、(利益は出なくとも)そこそこ高頻度で実際に取引をするプログラムを実装していくことにしました。

デモ口座ではなくリアル口座で、自分が作ったプログラムが、少額の利益と損失を繰り返しながら取引していく様子を実際に体験していただくのが、トレーダーには最もエキサイティングな題材ではないでしょうか。

そして、取引ロジックについては、コースを進めながら、受講者の皆さんと話し合って決めていこうと思います。

正直な話、そこで利益が出るロジックが完成する見込みは非常に薄いでしょう。

ただ、それを受講者が改良していくことで利益の出るシステムを作れるようになる可能性はありますし、そのために必要な技術的基礎は本コースで提供いたします。

発展的なプログラムを作るために

作成したいプログラムが本格的になればなるほど、コンピュータ全般にわたる知識を、幅広く、そしてある程度の深さまで要求されるようになります。

たとえば、Python でプログラムを組んだことがある方であれば、非同期とかマルチスレッドといった用語を聞いたことがあるかもしれません。

しかしながら、こういう用語を理解するために、プログラミングが本職ではない方にプログラミング言語や OS の専門書を読んでくださいと言うのも酷な話です。

「ウェブ API 開発」コースでは、ウェブ(HTTP)の話のみならず、実用レベルのプログラムを作るために必要な知識を幅広く提供します。

本コースで、各種の技術や用語を正しく理解し、それらをケースバイケースで適切に応用できる能力を身に付けていただきたいと思います。