JJUG_CCC 2017 Spring

2017/05/20(土)に行われたJJUG(ジェイジャグ)に参加してきました。JJUGは毎年2回春と秋に行われていて、今回で20回目とのことでした。1コマ45分のセッションが複数のルームで同時に行われ参加者はどれに出るか自由に選ぶというものになっています。参加者は前回の約700名からさらに増えて1000名近くいたようでとにかくたくさん人がいました。人気のセッションはルームに入る前に行列ができてすぐに満席になっていました。会場の整備や入場規制、タイムキーパーなどで対応いただいた運営の方は忙しい中ありがとうございました。

エンプラ開発におけるレガシーアプリケーションの巻き取りとモジュール分割の戦い

https://www.slideshare.net/KazuhiroWada/2017spring-jjug-cccf2-76144077
既存のレガシーアプリケーションを巻き取ることになったベンダーさんがどうやって品質の改善に取り組んだのかという話でした。元々struts1で作られたアプリがあってそれと連携するアプリを開発して2つのアプリをearで固めてデプロイするということをやっていたらしいです。元々のアプリをアプリ1とし、新しく作るアプリをアプリ2としたら、連携するにあたりアプリ1側で持っていた認可判定の処理をアプリ2に持って行きspring security OAuth2のOAuth2 Providerという機能を利用してアプリ1から認可判定の処理を行うときもアプリ2側に作ったロジックを利用するとのことでした。目標が決まった後はクリスさんのレガシーソフトウェア改善ガイドのような手順で進めていたようです。 Gitリポジトリの管理にはBitbucketを情報共有やバグトラッキングにはAtlassianのConfluenceとJIRAを利用し継続的インテグレーションにはBambooを利用したとのことです。ビルドツールがgradleならGradleWrapperを利用することもできるのでjenkinsでも良さそうな気がしましたが、Bambooは触ったことがないからわからないです。リファクタリング自体で工数が取れることはないので、機能追加とかのタイミングの修正タイミングで少しづつ変えていくしかないのかなと思いました。作業を効率化するにも普段から意識すべきことが聞けてよかったと思います。

Scala機械学習基盤PredictionIOとSparkによるレコメンドシステム

https://speakerdeck.com/takahiro/building-a-recommendation-engine-with-spark-and-apache-predictionio
PredictionIOのコミッタの方が発表していました。PredictionIOはGithubScalaOSSでStar数がApacheSparkについで2番目とのことらしいです。SparkやPredictionIOのstar数が多いあたりScalaにはデータの集計や分析の需要が多いのでしょうか。開発元が2016年にSalesForceに買収されたニュースで知った人もいるかと思います。PredectionIOは機械学習に必要となる機能を体型的に備えているため、Datastoreや集計、機械学習APIサーバとだいぶ機能が豊富な印象です。
発表では求人広告のデータを学習させてオススメの求人を見つけれるようにするための方法について話していました。手順については学習データを用意して前処理を行いモデルを学習しテストを行い、交差検証で一番よかったモデルを採用するというものです。PredictonIO導入前はElasticsearch連携用にインデックスを張ったり学習結果をバルクファイルで出力したり実行フローのスクリプトが属人化して最初に作った人もよくわからない状態であったりなどしたらしいですが、PredictionIO導入により改善が行えたようです。Sparkが流行った流れでPredictionIOにもブームが来るんじゃないでしょうか。