エンジニア的なネタを毎週書くブログ

東京でWebサービスの開発をしています 【英語版やってみました】http://taichiw-e.hatenablog.com/

Baseball Play Studyで発表してきたんだけど一応ささやかながら技術的な勉強もしているのよ という記録 #bpstudy

今年も野球バカの発表を
Baseball Play Study 2017 冬 野球振返りスペシャル(BPStudy#124) - connpass
でさせていただきました。
資料はこちら。*1

野球にご興味ある方には、是非内容も見てご一笑いただければ幸いなのですが、このブログでは「一応発表の過程で勉強した」技術的なことを書き残したいと思います。

Java

クラスってどう切るのが良いですかね

  • f:id:taichiw:20171223164349p:plain
  • f:id:taichiw:20171223165121p:plain

ってな感じで、
taichiw.hatenablog.com
よりも前に書いていたコードを、上記の本の実践によってリファクタする良い機会になりました。
なにせ、元が勢いで書いたコードなんでクソまたクソ。リファクタの題材としては我ながらとても素敵でした。

Parallel Stream たのしー

taichiw.hatenablog.com

パラレル処理が威力を発揮するとき
最後に、parallelStreamの速さの実験。YahooFinanceが提供している株価APIを連続でコールして、最も株価が高い銘柄を求めるというものでした。
通信が絡むため繰り返しによるオーバーヘッドが大きい処理です。
これをparallelStreamを使って並列化することでめっちゃ速くなる!という例。

以前はこういった処理を記述するためにはマルチスレッドで意図的に書く必要がありましたが、今後は非常にシンプルに書くことができるようになるようです。

これを4年越しで実践…

最近は「何でもかんでもParalellStreamにするものではない。かえって遅くなることもある」といわれているようですが、少なくともスクレイピングを簡単に高速で回すには速かったで!*2

Non-Java

久しぶりにPython使ってみたぞ

こういうグラフが描きたくてですね

なんか適当なオンラインツールとか無いかな-… と思っていたんですが

  • f:id:taichiw:20171223170655p:plain
  • f:id:taichiw:20171223170711p:plain

と、教えていただきまして、観念して(?)Pythonで書いてみました。
github.com

コードを書くの自体はちょっとググりながらで1~2時間程度だったんですが、きれいなグラフを描くのが予想以上に難しくて。
計算を始めるときのノードの初期位置に結果がかなり依存してしまうようで、実行のたびにグラフの絵が変わってしまう、という状況でした。

そんなわけで上のスライドの右下にもある通り、パラメータいじりながらの、何度も試しながらのの中で得られた、「奇跡の一枚」ですw

ソーシャルコーディング(?)たのしー

本来の単語の使い方と違う気がしますが…
上にもキャプチャ貼ったとおり、今回はあれやこれやとSNS上でつぶやいたり相談させてもらったりしまして、
たくさんの方から(主に技術的な)アドバイスを頂きました。*3

普段のお仕事だと、社内で似たようなことはできたとしても、どうしてもフルオープンでやるわけにはいかんので… 
こうやってオープンにワイワイやれるの、楽しいですね。

*1:SlideShareの再アップロード機能がなくなってしまったので、Speaker Deckに引っ越す。(比較表もあるよ) - エンジニア的なネタを毎週書くブログで書いたとおり、Speaker Deckに上げてみました

*2:当然、やりすぎると攻撃になってしまうので程々に…

*3:本当はLTのネタ自体も事前にレビューしてもらってブラッシュアップしたいところなんだけど… レビュアーとして最適な皆さんが、当日の一番の「お客さん」なのが悩みどころw