うまい寿司が食いたい。

うまい寿司が遠慮なく食べれるようになるまで,進捗とか垂れ流すブログ

google cloud platform はじめました。with 競馬のデータセット取得

動機・概要

手元のマシンスペックがあまり良くないため(下図),計算などを行うとフィンが大変なことになります。

f:id:Leo0523:20180816174148p:plain

先日twitterでそのことをボヤいていたら,「クラウドは使わないのか?」「クラウドを使うべきだ」と言われたので,とりあえず使ってみました。
GCPを使う目的は競馬のデータセットを取得することなのですが,以前に書かれたコードのscalaバージョンが古く,現在のバージョンに対応していませんでした。その点に関しても書いておきます。

目的

最終的に機械学習による競馬予測を行おうとしているので,データセットgoogle cloud platform上で取得することを目的としています。
競馬のデータセットを取得するコードは,

stockedge.hatenablog.com

こちらの方がscalaで書かれていたので,これを利用します。

GCPインスタンスの立ち上げ

適当に初心者ガイドを参照して立ち上げました。理屈はおいおい理解します。

www.topgate.co.jp

f:id:Leo0523:20180822212847p:plain

こんな感じにポチポチ選んでいくとインスタンスができます。思っていたよりもずっと簡単でした。
国によって値段が微妙に違うのを見て楽しむぐらいでした。

以前にnardtreeさんが

とつぶやいていたので,Debianを選んでみました。いまいち違いはわかっていません。

そんなこんなで,GCPインスタンスが立ち上がり,ターミナルを立ち上げることができました。

競馬のデータセットを取得する。

スクレイピングするコードは

github.com

にあるようにscalaで書かれていました。
一切触ったことがなかったので,とりあえず,

git clone https://github.com/stockedge/netkeiba-scraper

を行った後に,実行コマンドである

sbt "run collecturl"

をそのまま打ち込むと,「sbtのコマンドが無い」というエラーがでたため,

sbt Reference Manual — Linux への sbt のインストール

にてインストールを行いました。
再び,

sbt "run collecturl"

を実行しようとすると

  • scalikejdbcの2.0.7に対応していない。
  • xml関連の機能は現在のバージョンでは廃止された。参照

というエラーが出たため,いろいろ調べていると,この2つはbuild.sbt

libraryDependencies ++= Seq(
  "org.scalikejdbc" %% "scalikejdbc"       % "2.0.7",
  "ch.qos.logback"  %  "logback-classic"   % "1.1.2"
)

libraryDependencies ++= Seq(  
   "org.scala-lang.modules" %% "scala-xml" % "1.1.0",
   "org.scalikejdbc" %% "scalikejdbc"       % "2.5.3",
   "ch.qos.logback"  %  "logback-classic"   % "1.1.2"
 )

と書き換えることで,意図通り動かすことができました。

f:id:Leo0523:20180822215524p:plain

pull requestも一応送っていますので,製作者様,もし見ていればマージお願いします。
プリリクも初めて送ったので大変緊張しました。

まとめ・今回やったこと

  • GCPインスタンスを初めて立ち上げた。
  • scalaに初めて触った。
  • scalaのライブラリのimportする方法をしった。
  • プルリクを初めてやってみた。

です。