皆さんこんにちは、MDHのkogetsuです。
今回は、アドテクスタジオのセミナールームにお邪魔してCAリワードとの合同勉強会を行いました。同じ会社の中でもだいぶセミナールームの雰囲気が違うのだなあということを感じました。今後も交流を増やしていきたいですね。
- 大澤(MDH) 「JVMクラッシュの事例について」
1人目はA.J.A.レコメンドエンジンチームでサーバサイドエンジニアを務めている大澤の発表でした。
レコメンドエンジンは、メディアの収益性と回遊性の向上を実現する事を目的としたプロダクトです。
まずは、不穏なエラーメッセージが会場に提示され、「これを見たことがあるか?」という問いから勉強会が始まりました。
大澤はこのメッセージは、機械語に変換する部分であるJVMでエラーになった時に出る
エラーメッセージである事を強調。
A.J.A.レコメンドエンジンのチームでは、とある改修を行ったあとから負荷の高い時間帯に頻繁にこのエラーメッセージが出るようになり、前兆が全く無いので困ったと言います。
解決しなければいけないこのエラーですが、エラー時には3つのファイルが同時に出力されるようです。
それが、コアファイル、エラーレポートファイル、コンパイラーリプレイファイルの3つですが、エラーレポートファイルを追跡して解決をしていきました。
大澤のプレゼンでは謎のJVMクラッシュとの戦いの記録がレポートされますが、最終的には意外な方法で解決がされました。
その様子はプレゼン資料に記されていますので、どうぞご覧ください。
最終的には以下の教訓が得られたようです。
JVMがクラッシュしたら、エラーレポートファイルをじっくり読むべし
クラッシュがシステムスレッドで起きてるのかどうかだけは確認すべし
システムスレッドでクラッシュしているなら、JDKの更新を検討すべし
行き当たりばったりの行動は避け、巨人の肩に立つべし
- 平田さん(CAリワード)「 10年物のレガシーPHPをGoにリプレイスしている話」
2人目はCAリワードの平田さんの発表でした。
平田さんは普段CAリワードの基盤開発と、最近はサービス側の開発もしているそうです。
平田さんのプレゼンでは確認できる最古のコメントが2006年という
PHPで書かれたレガシーシステムをGo言語でリプレイスした話が共有されました。
長い歴史の中で引き継ぎ開発が行われていたため、テストがしにくく保守性が
低いコードを、テストしやすくパフォーマンスの高い構成にリプレースしていったそうです。
もともとの状態では1,000行くらい引っ張ってきた引数が関数に渡され、
しかもそれが関数内で使われてない、といった事もあったようです。
質問では、「移行を検討しているが、Scalaと比べてどれくらいのコード量が増えるのか?」
「エディターは自由に選択しているのか?」など具体的な質問が沢山出ました。
技術的負債は少しずつ返済したほうが良いなと改めて思いました。
- 阿部(MDH)「Neural Networkの歴史と深層学習」
3人目はすっかり Phantom Boy の名称が定着したMDHの阿部が発表しました。
「リンゴを食べずにおいしいかどうかを判断する」という問題から初心者にも
わかりやすくNeural Networkの歴史と深層学習が解説されました。
まずは分類問題という機械学習の基礎からわかりやすく解説をしてくれ、
それから各項目についての話となります。
パーセプトロンの流行
↓
多層ニューラルネット
↓
深層学習
という風に順をおって、どのような課題が解決され、
どういった特徴を持っているかが解説されていきました。
初心者でもとてもわかり易い資料だったと思います。
- 宮西さん(CAリワード)「 機械学習を利用したCAリワードでの不正対策事例」
最後はCAリワードの宮西さんが発表しました。
ヤクルトの応援を趣味にされているようです。
不正対策についての内容になりますので、スライドは非公開です。
残念ながら公開はできないのですが、報酬詐取に対して
機械学習を用いて効果的に対応している事が発表されました。
不正をいかに漏らさず検知するかというカバー率、
正確に不正であることを見分ける正解率を指標としているとの事で、
初期バージョンであるにもかかわらず抜群のカバー率でした!
いかがでしたか?
最後に、LT Thursdayは合同勉強会をする会社や組織を募集しています。
われこそはという方は是非以下のアドレスまでご連絡ください!
ltthursday@cyberagent.co.jp