インターンシップ体験記・2016(奈良先端科学技術大学院大学 原さん)


はじめに

奈良先端科学技術大学院大学の原です. 8月15日から9月2日までの3週間, アットウェアでのインターンシップに参加しました. そこで私はクラウド並列分散処理基板構築という内容を実施しました. 3週間で実施した内容を簡単に紹介したいと思います. また, 本記事が今後アットウェアへのインターンシップに参加する方のご参考になればと思います.

 

実施内容

本インターンシップで使用した主要技術は4つあります.

  1. Scala
  2. Spark
  3. Zeppelin
  4. Amazon EMR

これらの技術は私にとって経験値の少ないものでしたので, 学ぶことも多く, 非常に楽しく開発できました. そして, わからない所や深く知りたいことは, 社員の方々に聞くことができました.

本インターンシップで実施したことは2つあります. 1つ目は, アクセスログの並列分散処理と解析です. 2つ目は, 野球データの解析です.

アクセスログ

あるアクセスログを解析し, そこから何か有益なデータを見つけるといった内容です. 具体的には, アクセスログをSparkを利用して並列分散処理し, 集計されたデータをZeppelinで可視化するという流れです. このアクセスログは, 実際に運用しているプロジェクトのアクセスログであったので, ユーザが実際に利用している風景を想像しながらアクセスログを解析できました. ここで, 私はScala, Spark, Zeppelin, そしてAmazon EMRを利用し, データの並列分散処理と解析の基礎を身につけました.

野球データ

MLBで利用されているPitch f/xのデータを並列分散処理し, 解析しました. Pitch f/xは野球の投手の投球速度や投球軌道を追跡するスピード測定器システムです. イメージとしては, プロ野球1球速報のようなものです. このデータを元に, 投手はどのような配球で打者から三振を奪うのか調べました. 初めは, 下図のように三振を奪った投手の全ての配球を可視化したのですが, どのような配球で三振を奪ったのかよくわかりませんでした.

そこで, 三振を奪った配球を部分系列パターンとして抽出し, それを可視化しました. 全体的な流れを以下に示します.

  1. Pitch f/xのデータを習得
  2. Sparkで並列分散処理できるように, データセットを作成
  3. そのデータセットを用いて, 部分系列パターンとして抽出
  4. 抽出した部分系列パターンをWEBで可視化

また, 部分系列パターンとして抽出する際, データのフィルタリングしました.

  1. 投手と打者の指標
  2. 右打者, 左打者あるいは右腕, 左腕

これらを考慮することで, 優秀な左腕投手は, 優秀な右打者に対してどのような配球で三振を奪うのか知ることができます. 投手の指標として, 今回はK/BBを採用しました. これは奪三振数と与四球数の比です. 打者の指標として, 今回はOPSを採用しました. これは打者の出塁率と長打率の和です.

成果物

野球データに関する成果物を紹介したいと思います. 完成した成果物を下図に示します. これは右腕投手が右打者から三振を奪った際の部分系列パターン群です. 1つのパネルが抽出した1つの系列パターンの1要素となります.

下図は横から見た図です. パネルが奥行きを持って並んでいることがわかります. この奥行きを持って並んだパネルが1つの部分系列パターンです. また, パネルの1番奥の部分が三振を奪った球種とゾーンです. 例えば3つのパネルが奥行きを持って並んでいる所に注目すると, これは右打者に対する投球の中でアウトローのボールゾーンのスライダーが3球出現したことを示しています. そして, アウトローのボールゾーンスライダーで三振を奪ったことを示しています.

右打者や左打者, 右腕や左腕の組合せで, それぞれの傾向が見られたので, 非常に面白かったです.

 

まとめ

この3週間で私は以下のことを深く学び, 経験できました.

  1. Sparkを用いた並列分散処理
  2. データの可視化(見せ方)の難しさ
  3. エンジニアとしての振る舞い

私にとって経験値の少ないScalaやSparkを用いた開発, そしてデータの並列分散処理から可視化までの一連の流れを経験でき, とても価値のある3週間でした. 特に3については是非アットウェアへ行って自身の耳で聞いてください. 私がここで記事にするよりも有益な情報が得られます. また, 今回私はインターンシップ生同士でチームを組んでいなく1人でしたが, 隣でチームで作業しているインターン生や社員の方々を見て, 普段私がしているチーム開発を俯瞰的に見ることができ, 改めて振り返る機会を得ることができました. そしてインターンシップでの3週間, 私はとても楽しく有意義な空間と時間を過ごすことができました. 最後になりますが, 社員の方々やチームは異なりますが, 共に過ごしたインターンシップ生の方々, 本当にお世話になりました.