hugahuga秘密結社 仮想通貨支部

hugahugaがぼっとさまの力を借りて仮想通貨界を暗躍するその一部始終

ぼっとくん入門 第一回 環境を整えて、ハローAPI

だいぶ遅れましたね 絶賛夏休み大忙しのhugahugaです

そんな合間にも我がぼっとさまは着々と取引してくれています

さて、今回からC#によるぼっとくん入門を始めていきます

適当にアンケートとったら

質問です
はてなぶろぐでお伝えしたc#ぼっとですが
OSはどうしましょう?

うん、

ギリギリwindowsでの解説が許されそうなので、windowsでいきます

一応、プログラミングをしたことがない 〜 大学の講義でちょっとやったなぁ

くらいでもなんとかなることを目標にいきます

まず、プログラミングをするための環境を整えましょう

初心者からプロまで使える VisualStudioCommunityさんを入れます

Free IDE and Developer Tools | Visual Studio Community

ここからダウンロードしてきて

あとは流れに身を任せればいいです

途中、(おそらく)ユーザー登録とかもあると思うので、

適当に個人情報を投げつけましょう

VisualStudioCommunityを起動して、求められるままに受け答えして

さて、これでc#プログラミングを始める環境が整いました。


f:id:hugahuga_bit:20160909095126j:plain

実際にAPIを叩くところまでやってみましょう。


まずプロジェクトを作ります

(一つのプロジェクトが一つのプログラム(アプリ)になります )

取引画面とかボタンとかグラフとか表とかそういうのはぼっとさんには不要なので

文字だけのプログラムであるコンソールアプリケーションを選びます

ファイル→新規作成→プロジェクト

f:id:hugahuga_bit:20160909095231j:plain

コンソールアプリケーションを選択します。

下のほうの名前は適当でいいです。自分がわかるようにしましょう。

f:id:hugahuga_bit:20160909095343j:plain

さて、プロジェクトが作られました。

f:id:hugahuga_bit:20160909095510j:plain

これが最もシンプルなプログラムになります。

CTRL + F5 を押すと実行できます。

実行してみましょう。

f:id:hugahuga_bit:20160909095705j:plain

特に何も起きることなくプログラムが終了しました。

さて、プログラムがどうなっているかというと

f:id:hugahuga_bit:20160909102326p:plain

という感じになっています

なんだか多い、、、どうしても最初は書くこといっぱいになりますね

さて、ここに、bitFlyerc#サンプルを足してみましょう

bitFlyer Playground

https://lightning.bitflyer.jp/docs/playground

より、getTicker ティッカーの取得のサンプルを持ってきました。


それが以下のコード

using System;

using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

namespace bitFlyerAPItest
{
    class Program
    {
        static void Main(string[] args)
        {
            Task task = Sample.Main();
            task.Wait();
            return;
        }
    }
    class Sample
    {
        static readonly Uri endpointUri = new Uri("https://api.bitflyer.jp");

        public static async Task Main()
        {
            var method = "GET";
            var path = "/v1/ticker";
            var query = "";

            using (var client = new HttpClient())
            using (var request = new HttpRequestMessage(new HttpMethod(method), path + query))
            {
                client.BaseAddress = endpointUri;
                var message = await client.SendAsync(request);
                var response = await message.Content.ReadAsStringAsync();
                Console.WriteLine(response);
            }
        }
    }

}

bFのサンプルをあれやこれやしてこうなりました。
やったことは、

  • サンプル最初のusingを、一番最初に記述
  • Sampleクラスを自分のnamespace以下にコピー
  • static void Main(string[] args)から呼べるようにした

こんな感じです。

Sampleクラスの中にあるMainはメソッドと呼ばれ、
SampleクラスのMainを呼び出せばtickerが得られる。

        static void Main(string[] args)
        {
            Task task = Sample.Main();
            task.Wait();
            return;
        }

でSampleクラスのMainメソッドを呼び出しています。
bfのサンプルでは、SampleクラスのMainメソッドは
呼び出すとTaskを返してきます。
なので、受け取ったあと、Waitで終わるのを待ちます。

これは、WebAPIを叩いたときなど、時間がかかる動作をするときに、
こっちはこっちで処理しとくから、他のこと先に進めといてーという雰囲気のやつです。

この辺は気になったら調べてもらうとして、
ここでは、

bFのサンプルメソッドを呼ぶ
↓
Taskを受け取る
↓
TaskをWaitする

を一連の流れでおまじないにしておきます。


ここからこのプログラムを動かすために必要なことがもう一つあって、
パッケージの追加をします。
HTTPリクエストを送るためのnamespaceなどは、最初から使えるわけではなく、
パッケージの追加をする必要があります。

プロジェクト→NuGetパッケージの管理
f:id:hugahuga_bit:20160909183802j:plain

検索窓で適当に検索して
System.Net.Http
をインストールします。

f:id:hugahuga_bit:20160909184048j:plain

これで、

using System.Net.Http;
using System.Net.Http.Headers;

あたりが使えるようになります。

これでプログラムが動くようになったはずです。
さて、上のプログラムを実行してみると

f:id:hugahuga_bit:20160909180648p:plain

無事tiker情報が表示されました。

とりあえず今回はここまで。


さて、残りbotくんを作るための流れを考えると

  1. 他のメソッドを呼び出せるようにする
  2. データを変換して得られるようにする
  3. 注文データを送れるようにする
  4. 戦略を実装する
  5. 有り金全部溶かす

こんな流れになります。

後半になればなるほど、プログラムの知識は欲しいなぁという感じではあるので、
どこかで補足しないとねぇ