忘れたくないあの時の日記。

日頃の開発で起きたことや大学の話、その他諸々津々浦々に。

5月総括【2018/05】

先月も書いた総括、今月もやります!

月目標

  • 院進学者としてハイレベルな知識を持つ機械学習エンジニアとしての能力を育てる

    • 研究の進捗はいかがなものか?
    • 院に進学してよかったと思っているか?
  • iOSエンジニアとしての技術を常に磨き続ける

    • 新しいこと(新機能実装、外部イベント交流、etc...)をしたか?
    • 1ヶ月の中で、何時間取り組めたか?
  • その他の技術は何か学んだことがあるか?

ですね。先月決めました。

研究の進捗はいかがなものか?

論文ですが、投稿できました!

f:id:ni_san2000:20180606231356j:plain
やったぜ

教授にも色々と手伝ってもらいまして、First Author is 誰って感じになったけど、なんとか無事投稿しました。
締め切り10分前まで粘って投稿したので、査読通るといいなぁ・・・!

これからは研究アプローチがちょっと変わるので、今後も頑張りたいです。

院に進学してよかったと思っているか?

まだ分かりません。まだ就職した人を羨んでいたりしてます。
でも後2年の計画もできたし、いい感じにお金の心配をする必要もなくなって来たので4月時点よりはよかったと思っています。

でも、当分の間は論文書きたくないですね(笑)

新しいこと(新機能実装、外部イベント交流、etc...)をしたか?

あまり多くのことはできなかった月でした。講義の合間にアプリ内課金のドキュメントを読んだりしたくらいですかね。 あ、でも論文を投稿するにあたってアプリケーションを作ったので(詳細は学会発表まで言えないけど)、PythonGUIアプリケーションを作成する標準ライブラリ「Tkinter」は使ってみました。

ちなみに教授には後で「得意なSwiftで書けや」と言われてしまったので、他の製作が行き詰まったらやるかもしれません。

1ヶ月の中で、何時間取り組めたか?

うっ、頭が痛いが、10時間くらいでしょうか・・・?もっと研究に対する時間割合を増やしていきたいです。

この記事書いているのが6月だいぶ入ってますが、5月末はかなり自由時間も削られ追い詰められていました。論文投稿して解放された自由時間にどれだけiOS等の開発に時間を向けられるかが勝負のようですね。

また、6月も終わったら総括書いていきます〜

4月総括【2018/04】

4月終わってまったよー・・・!

早いことに4月、終わってしまいました。 18卒の就活勢だった人たちは社会人になってからもう1ヶ月ってことになるし、少しずつ慣れて来てるんだよなーと色々感じるこの頃。

やっぱり院進してそのままの生活していると就職勢から取り残されてる気がしちゃうので!常に意識して行動しないとね!
っていう一環のつもりで月末だし書こうかなって思いました。

月目標

  • 院進学者としてハイレベルな知識を持つ機械学習エンジニアとしての能力を育てる

    • 研究の進捗はいかがなものか?
    • 院に進学してよかったと思っているか?
  • iOSエンジニアとしての技術を常に磨き続ける

    • 新しいこと(新機能実装、外部イベント交流、etc...)をしたか?
    • 1ヶ月の中で、何時間取り組めたか?
  • その他の技術は何か学んだことがあるか?

研究の進捗はいかがなものか?

ぼちぼちです。新しい評価手法を作って精度が若干向上した?けれどもベースの主砲の精度が全然出ていないのは変わらず。まだ精度を上げられるアイデアはあるので、引き続き実装していきたいです。

ってか論文投稿まで1ヶ月なので、これからは精度向上に努めながら論文を書かねば・・・!卒論と同じで楽なセクションはあるけど、説明が大変なところはあるので気をつけないと。

院に進学してよかったと思っているか?

うーん・・・こればかりはあんまり思ってないんですよ。今のところ。
就職したラボの友人が研究の話をするたびに、「ああ、確かに働きながら機械学習の知識をつけ続けてもよかったんだ」って当たり前なことなんですけど気がつかなかったです。

進学したらしたで必修科目が飛び込んで多忙でなかなか進捗が伸びない・・・のよくない流れです。(今のところ)全く役に立たない科目もあるので久しぶりに講義受けるが辛い・・・w

院進の理由として、「もっと機械学習を学びたい!」っていうのは勿論あったけど、根幹の理由は、就活が納得いかなかったこともあって「エンジニアとしての知識・実装力をさらに2年間叩き上げる」っていうのが主でした。機械学習の知識は2年後、武器にでもなればという考え。
本末転倒さを感じる1ヶ月となりました。

iOS開発、新しいこと(新機能実装、外部イベント交流、etc...)をしたか?

ちょっとだけ大学スクールバスの時刻表アプリを進めました。バグ取りと時刻表改正、大幅なリファクタリングをしました。

あと、アプリ内課金の実装練習にとサンプルアプリを作りましたが、ちょうど研究の進捗報告を出す時期と重なって一時停止しちゃいました。再開再開!
Mobile ActでこのネタひっさげてLTしたかったなぁ・・・

1ヶ月の中で、何時間取り組めたか?

多く見積もっても15時間かな・・・という感じ。個人的には研究に費やす時間の10%くらいの時間は確保したい。コンスタントに確保できる生活スタイルを目指します。

その他の技術は何か学んだことがあるか?

勤怠管理システム構築の案件が個人的に来てるので、Ruby on Railsを使ったWebアプリの学習も兼ねてそれに取り組みたいところではあるけど、他のことで手一杯だったー・・・!

というわけでつらつらと書いていったけど、4月思っていた以上に新しいことが増えたので色々と追われてました。

5月、論文書きながらやりたいことやってくぞー!!

文通将棋ならぬ文鳥将棋を作ろう!①

卒論に追われていると他のことしたくなるよね!

部屋の片付けもそこそこに、面白そうなPythonで作れるサービスを考えたから、現実逃避に作ってみようって思いつきました。

研究室の先輩とか、身の回りの人が今ハマってるし、藤井四段とかで何かと知名度は高いしね。 (余談ですが自身も初段くらいは・・・いや、今はミス多いし下がってるかも・・・?)

そもそも文通将棋とは・・?

昔、インターネットも普及していなかった時の頃。

将棋を指すには2人将棋盤を挟んで指さないといけなかったけど、どうしても会えない遠い友人や、将棋好きの知り合いには手紙を送りあって将棋をしていました。

というのも、手紙の文面に自分が指す一手を書いてポストに投函。
届いた相手がそれを見て、指す一手を書いて手紙を返信。
また返信されて帰ってきた手紙の一手を見て、次の手が書かれた手紙を返信。

この繰り返し。一手に数日もかかることもあるので、非常にゆっくりとした将棋になるためじっくり考えることができるし、
何より手紙なので「こっちの地域は雪が降るようになりました」みたいなことも書けます。季節を感じながらゆったり将棋をするなんていうスローライフを過ごすことができます。素晴らしい昔の楽しみ方で将棋を指せるから、・・・・・・!

脱線しました

これをTwitterのリプライを使って再現できたらな!と思いました。ん?これtweetbot的な感じかな??んん?まぁいいや。

文鳥将棋!!

Twitterだから鳥をプロダクト名に入れました。手紙を届ける鳥を文鳥っていうし。

ルール

Twitterはいくらでもメッセージを送りあえたりするので、ルールを設けましょう。

  • リプライに対戦相手と文鳥将棋のTwitterアカウントを指定して送信
  • 【@[相手] @[文鳥将棋] 七六歩】みたいな感じかな?
  • 1日に一手だけ送れる、それ以上送っても無効
    ルールはもっと設けるかもしれないけど最低限。

仕様

自分が作るだけだから要件定義とかしないで「こんなの作りたいなー」を作ますかね。

  • 言語:Python(一番自分が、楽に実現したいアルゴリズムを書ける言語、他は知らん、必要になったら頑張って読むさ)
  • 棋譜付きのリプライが飛んだら解析して変換(KI2形式?)してpythonインスタンス作ったpythonサーバー上で指し手を実行する
  • 指した後の盤面を画像に出力して、文鳥将棋アカウントから対戦相手に画像付きツイート
  • 動かせないところに動かそうとしたらエラー吐かせる
  • 王手や詰みを一手ごとに確認してその時は専用メッセージを送る
  • そこそこ便利そうなライブラリがあるみたいなので、使っていきます (Twitter APIpython-shogi、pyogiとか)。ドキュメント無いものもあるのでそこはコード読みながら・・・

進捗だしたら、記事として書きます

途中で挫折するかもだけど、超超スローペースかもだけどちまちま作ってきます。 宣言したことに意味があるのかな?と思ってたり。その他の記事も上げたり上げなかったりします。

では次回の記事で!

これで君も億万長者になれる!?【仮想通貨取引シミュレーターを作ってみた】

この記事はOthloTech Advent Calendar 2017の12日目の記事です。

11日目の記事はito_ur_rightさんの非デザイナーのカラーコードきっちり配色法 でした!

仮想通貨のバブル到来??

ビットコイン、最近すごいですよね。急騰したのが数日前で、一気に120万円から一番高い時には228万円まで値上がりました。
ちなみに僕は5月から仮想通貨に手をつけてました。収益が大分長い間マイナスだったのですが、やっとこさ最近プラスになりました。うれしい!春から秋にかけてXナントカとかいう通貨で爆死したせいだよ

f:id:ni_san2000:20171212230637p:plain
ビットコインのチャート。1週間分

さて、話題の仮想通貨なので、買ってたりトレードしてたりする人も多いかもしれませんが、単刀直入に、儲かってますか?

今回は仮想通貨の値動きを目で追わなくても済むように、自動でデモ取引をするbotを作ってみました!

具体的に何を作るの?

1分間に1度仮想通貨の値動きを監視して、安くなったら購入、高くなって落ち着いたら売却。これだけです。

言語はPythonで、ちゃちゃっと作っちゃいましょう。

値動きの情報を取得しよう

データ元として、海外の仮想通貨の取引所として有名な「Poloniex」を使います。取引手数料が安くていいですね。僕はここで取引してます。

公式でAPIがあるのですが、データの取得ならラッパーがgithubにあるので有能。 github.com

pip install https://github.com/s4w3d0ff/python-poloniex/archive/v0.4.6.zipでいけちゃいます。

ここでは試しにドルでBTCを買うときの値動きを取得してみましょう。データの処理はpandasを使います。

import poloniex
import pandas as pd
import time

polo = poloniex.Poloniex()

chart = polo.returnChartData('USDT_BTC', period=300, start=time.time()-polo.DAY*0.005, end=time.time())
data = pd.DataFrame(chart)

print(data.close[0])

returnChartDataって関数は第1引数が通貨、第2引数が値動きの幅(今回は5分)で、第3第4引数が値動きを取得する期間の、始まりと終わりの時刻です。

これだけで、実行結果は16742.00000011のように実数値が取れます。1BTCが1万6千ドルもするんですね・・・改めて見ると恐ろしや。

シミュレーションをしてみよう

ここまでこればあとは自分の好きなようにコーディングできます。 僕はとりあえず適当ですが、次の条件で売買をするようにしました。

購入

①2連続で値下がりをした後に価格下落が止まった時。

売却

①2連続で値上がりをした後に価格上昇が止まった時。
②購入してから5分以内に2連続で値下がりをした時。

もっといい基準が絶対あるのでそこは試行錯誤。

利益

利益は【売却額】-【購入額】の差額にしました。手数料とかは今回考えてません。
<例> 15000ドルの時に購入して15500ドルの時に売却した
→ 500ドルの利益

まぁつまりは1BTCを買ったときのシミュレートってことですね。

botクラス

class Bot:
    status = 0
    hold = 0
    result = 0
    bought_length = 0

# 変数一覧-------------------------------
    # status = 現在の状況
        # 0 : 購入なし(購入可能)
        # 2 : 購入済み(売却可能)
        # 初期値は0からスタート

    # hold : 購入した値段
        # buy()を行う際に現在のレートが代入され、sell()を行う際に値が0になる
        # 初期値は0からスタート

    # result = 利益
        # 買値と売値の差が、売却のたびに更新される

    # bought_length = 購入してからの経過時間
        # 購入してからの経過時間をカウント
# -------------------------------------

購入・売却

bot = Bot()

def rate(now, prev):
    if now != 0 and prev != 0:
        return round(now/prev * 100 - 100, 4)
    else:
        return 'error (zero divide.)'

def buy(status, now):
    if status == 0:
        bot.hold = now
        bot.status = 2
        print('------------購入--------------')
        print('価格 : {0}'.format(now))
        print('-----------------------------')
    else:
        print('すでに購入済み')

def sell(status, now):
    if status == 2:
        bot.result += now - bot.hold
        print('result = {0}'.format(bot.result))

        bot.hold = 0
        bot.status = 0

        print('------------売却--------------')
        print('価格 : {0}'.format(now))
        print('-----------------------------')
    else:
        print('購入していない')

ソースコード全文githubに上げておきますので、拙いコードですが参考になれば幸いです。

動かしてみた!

さぁ、結果はいかに!かなりログが長いのでハイライトのところだけピックアップして載せておきます。

1回戦 (12/9/ 20:53 〜 12/10/ 10:52)

取引回数:21回 利益:-1175.4929445399976

f:id:ni_san2000:20171213010157p:plain
期間中のpoloniexの値動き。下がって上がって下がった

ありゃ〜めっちゃやられましたね・・・まぁ全体的に値動きが大きく上下してましたがいい感じに波に乗って欲しかったですね!

2回戦 (12/10/ 22:24 〜 12/12/ 23:24)

取引回数:73回 利益:1316.7837217100023

f:id:ni_san2000:20171213010151p:plain
期間中のpoloniexの値動き。グッと上がった後にヨコヨコ

よっしゃ、今度は勝てた!値動きが結構いい感じだったのも相まって、1回戦の負けを入れても総合的にプラスになりました〜これはうれしい。

1回戦、2回戦やって大きなトレンド(流れ)に結果が連動してる感じです。最初でこれはいい感じかもですが、もっと大域的に値動きを見られるように判定基準とかを調整していきたいですね!

まとめ

今回はシミュレーターでしたが、ちゃんと公式APIを使って実際にリアルマネーを突っ込んでやりたいですね!APIキーも発行されているので、そこまで難しくないと思います。

僕個人的には、機械学習でLSTMとか使って値動き予測してみようとか記事もたくさんありますが、結局ランダムウォークで上手くいかなかったりパッとしない。

一流トレーダーの売り買いのタイミングを勝敗のデータ含めて学習させた方が効率よく学習できるのかな?と思ったりします。
あとは強化学習とかもQ学習あたりは状況と判断と結果が分かりやすいのでとっつきやすいのかなーと思ったりもしました。

bot作りはめちゃくちゃ楽しいので、これからもパラメータいじったりして遊んで行こうかと思います!

それではまた次の記事で!

MobileAct Nagoya #7に登壇しました

いやーー1週間経ってしまいました。

登壇したよ!

MobileActはモバイルアプリ開発の勉強会。名古屋から始まった勉強会で最近関西でも開催されたようで。今回はタイトルの通り7回目のMobileActでしたが、僕は第3回から参加しているのですが、「そろそろ登壇したいなぁ」と思った所に第7回開催の案内が来たので俊足で参加登録しました。

登壇枠埋まるの早すぎ!公開から3日も経たず満員とか!

初めて参加したiOSDCは○○のようだった!

speakerdeck.com

800人が参加したiOSのトップカンファレンスに参加したレポートをLTにしました。

みんなLTうますぎ案件

登壇者も聴く人たちもiOS愛に溢れているようで、めっちゃ盛り上がりました。LT始まる前からスタッフも飲んでるしw

聴衆のテンションを上げる方法とかその他諸々わきまえてるから、
リアルに鳥肌が立つくらい感動しました。いやー、30分くらい感動でため息しか出なかったです。。体の全細胞が高揚した気分、久しぶりでした。

こんなレベルの盛り上げるLT会名古屋でも開きたい!!そんな思いをぶちまけるLTでした!

資料作成「裏」

スライドやイベントの度にブログ書こうと思ってまして、ちょっと毎回裏の話をここでしよーかなーと思います。

このブログの内容は所属している研究室、学生団体、その他の関係している部署とは一切関係ありません。

これを付け加えとかないといけないですねw

- 資料作成に焦った!!

これまでにも色々な場所で、何回かLTに登壇させていただいてますが、ここまで資料作成で焦ったことはありませんでした。

とある先輩が言うには「15分の発表なら前日、10分なら前夜、5分なら当日でいい。時間が掛かり過ぎてるのは返って情報を詰め込みすぎるサイン」と。

今回もそんなつもりで作り出しました。でも・・・

言いたいことがまとまらない!

LTは5分と短い時間で言いたいことを伝えるもの。伝えることが多過ぎて「結局何が言いたかったの?」となるLTにならないように気をつけなければいけません。

iOSDC、色々なセクションがあってまさにあれも言いたい、これも言いたい状態でした、発表2時間前まで結局何が言いたいスライドか自分でも分からなかったですねw

焦れば焦るほどいいまとめ案が出てこないループでしたが、LT上手くて全体的にめっちゃ楽しかった(小並感!!!!!)話にすればええやろ、と纏めてみました。実際に発表をみていた方々、いかがだったでしょうか。

お疲れ様でした!

また次回も行きます(卒論がヤバくても多分います)

次はCoreMLの実装とかやりたいですね〜〜f:id:ni_san2000:20171014025647p:plain

iOSDC2017に参加してきたよ!

ブログを書くまでがiOSDCです!

どうも。iOSDC2017、7日目になっている僕です。
話題と興奮とモチベーションが収まらないうちにブログ、書いちゃおうと思いました。この機会にブログを設立してみました!

えっ?あなたまだiOSDC2017、続いてるんですか?何日目なんですか??

きっと皆さんそれぞれいいレポートになると思うんで、まだの人は記事、今からでも書いちゃいましょうよ。


と言うわけで行ってまいりました!iOSDC2017!!

iosdc.jp

f:id:ni_san2000:20170918221758p:plain サイトデザイン、今年もオシャレでしたね。

実は僕、去年からこのカンファレンスの存在を知ってたのですが、チケット買いそびれてしまいました。去年のiOSDCも面白そうなトークばかりが並んでいて、「なんで行かなかったんだろう・・・」とめっちゃ後悔してました。

そんなわけで今年はチケット公開されたら迷わずポチりました。

ノベルティ

こんなにたくさん貰っちゃっていいの!?って量入ってました。各社のブース回ってサイバーさんの限定黒iRingもゲットしました〜!

iOSDCのバッグ、もう普段使いしてます。これめっちゃ丈夫だしおしゃれで最高じゃね!?

Tシャツも、クックパッドのバッグ&手ぬぐいも、LINEのケーブルも、どれもテンションが上がるものでした〜〜!

トーク

15分や30分のトークがなんと同時に4室で進んで行きました。いやはやなんてボリューム!
にわかSwiftエンジニアの僕ですが、それでも何を言っていてどこが面白い点か、はしっかり分かりました。

印象に残ったトークをいくつか。

節子、それViewControllerやない…、FatViewControllerや…。

www.slideshare.net

タイトル見て一気に惹かれました。一目で言いたいこと分かっちゃいますw
入門書とかは結構最初に生成されたViewControllerになんでも書いちゃう本あったりしますからね・・・。僕もその名残がこじれてます。

ちゃんとソースコードを役割分担してデバッグするときの自分を考えよう、そう思えるトークでした。

結婚式を支えた技術 Firebaseを活用したサーバレスiOSアプリケーション開発

1ヶ月もない上に多忙な時期にほんとよくできたな・・・と思うばかりでした。MVP決めるところ、Firebaseの知らなかった機能使うところ、奥様にもSlackやGitHubを使ってもらって仕事のイメージを掴んでもらうなど。忙しい中でも大事なところは丁寧に仕上げたんだな、と伝わってきました。

業務アプリの切札、Programable Kiosk Mode大全

前々からiOSエンジニアなら絶対楽しい職場って中の人がツイートしてた、ハンズラボのトーク。「Appleのドキュメントにも載ってないけど、試して見たらこんな挙動したからうまく活用してプロダクトに導入してみよう」、そんな他とは一味も二味も違う製作理念を持っていることがよく分かりました。

実際、聞いていて楽しかったし、新しいオモチャを手にしたかのようにワクワクが止まりませんでした。僕もこういう考え、嫌いじゃないです。

CoreMLでアイドル顔識別アプリを作ろう

機械学習トークは同じ時間に2つ被ってしまったので悔しい思いをしながらもCoreMLはすぐにでも使ってみたいフレームワークなので聞くっきゃない!って感じでした。VGGやYOLOの学習済みモデルがもう配布されてるのは驚きでした。

機械学習 on iOS、始まったな。しかも学習済みモデルをオンラインで更新出来るなんて気づかなかった・・・!

トーク後に1対1で質問できるAsk the Speakerで話させていただきました。もっと機械学習広まればいいですね〜

懇親会

2時間以上、初めての人たちと話をしてきました。 学生という身分だったためか、ちょっとだけチヤホヤされました。

どんなに自由な職場でも、会社に勤めてる以上、自社の作ってるサービスや製品に縛られた話が多いな・・・というのが印象に。

初めて、院進してあと2年学生身分でいられることに嬉しさを感じました。これ系の話は長くなるので割愛。。

ビール🍻も食事も美味しかったです。長谷川委員長ありがとうございます・・・!

にわタコさんに会えた!

数々のカンファレンスやイベントに顔を出し、すんばらしい書き起こしや分かりやすい解説をして下さるはてなのエンジニア、にわタコさんに一目会いたい、会場に入るんだけどな・・・と探してました。

最後のセクションまで見つからなかった僕。

(´・ω・`)シュン

そこでこんなツイートを。

するとすると。

キターーーー!!

どうも、にわタコさんのファンです。

LTの時、隣に座らせて頂きました。結構緊張してた記憶ありましたが、話も興味持って聞いてもらえて優しかったです・・・!

発表の書き起こし、Try! Swift ではめちゃ凄いと話題になってたので気になってました。横を見ると・・・

す、すごい。

これ、macのツールでリモート撮影してそのままドラッグドロップして投稿してるんですね・・・
臨機応変に写真を載せてツイートをしながらも、ちゃんと楽しんでるあたり流石や・・・と思いました。

LT

こんなアツい、盛り上がったLT会は初めてでした。

  • 寄付の仕組みを実装してリジェクトされた話
  • 徳島在住、地方エンジニアの悩み「地方在住を言い訳にするNG!」
  • 「width * height 「うぃどす・・・?へいと・・・?」」
  • 自分のイニシャルが入ったクラスのissue「ET問題」
  • iOSDC Japan 2016の賞金を放置しておくと1年でどうなったか⁈(なお、賞金はビットコインだった模様・・・・・・ね?)

この辺りが僕の中に印象深く残ったLTでした。

どの人も、しっかり要点が伝わるようにスライドに工夫してあったり、話し方、抑揚、聴衆をのせる方法が意識してあったり。

LTは2日に分けられて計30本。最終日、最後のLTが終わった時には感動と鳥肌で震えていました・・・。
マジでしばらく体がジーンとしてました。

地元名古屋でもこんな超盛り上がるLT会絶対開いてやるんだ、そう決意した瞬間でした。

そしてクロージング

感動も冷めやらぬまま、iOSDCは最後のクロージングへ。

iOSDCは本当に祭りだし文化祭のようなものだなと心の底から感じました。開発している人たちが1年に1度集まってこんなに楽しい2日間にできているのは、参加者、スピーカー、スポンサー、そしてスタッフの皆さん、ここにいる全ての人のおかげだと。
他のカンファレンスよりもスタッフと参加者の距離がめっちゃ近いんだろうなー、とクロージングを聞きながら思ってました。だってスタッフもまるで同じ立場のように楽しんでましたし、登壇してた人だっていましたから。

やっぱり1年に1度はこういうデカいカンファレンスに出て経験を共有したりモチベーションを上げるの大事だな・・・

また来年!!

一般参加者枠、8000円でこんなにも新しい学びが得られるとは思ってませんでした!知識はもちろん、iOS界隈のエネルギーや有名な人たちとの交流、トップカンファレンスに参加できる体験、どれもこれからの自分に良い刺激になったと思ってます。

「来年は登壇して学生の僕がベストスピーカー賞もらう!」って高い目標を立てても恥ずかしくないくらいモチベーションが上がりました〜、いやそう目標立てよう!!

あと来年スタッフやりたいな、と考えました。名古屋住みなのでコアは厳しいかもしれませんが当日でも。この規模のカンファレンスを別目線で盛り上げたいな!また新しい発見が得られるんじゃないかな、と来年を楽しみにしたところで、書きたい事言いたいことはもっとありますが締めようと思います。

僕のiOSDC2017、ついに閉幕です!お疲れ様でした!!