GMOリサーチシステム部では、半期に1回システム部メンバーによる、システム部メンバーのためのシステム部のシステム研修を実施しています(言葉の渋滞がすごい)。
今日は3日間にわたって実施されたシステム研修の様子をレポートしていきますー!
システム研修とは?
システム研修は前述の通り半期に1回実施されるのですが、毎回今後の業務に役立ちそうなスキルを中心に、社内の有志が講師となって講座を開きます。
これまで部内のスペシャリストによるハッキングの実践講座やデータセンターの見学などを実施していて、前回は品質管理の基礎について学びました。
▼前回の様子はこちら
実施方法
今回は初のオンライン開催!
ご時世柄リモートで働く社員(※フィンランドやメキシコなどから働く社員もいます)も多いため、オンラインカンファレンス実施ツールの「Remo」を使っての実施となりました。
システム研修委員会の方が、事前に用意してくれていたイベントページより会場へ入場することができます。
zoom開催だと中々グループワークなどがしづらいところがあるのですが、Remoを使うと席ごとにメンバーを分けることができる&それが可視化できるので、実際に同じ会場にいるような臨場感を味わえてよかったです。
今回の題材
今回用意された講座は下記の4種類です。
- データ分析/機械学習(kaggle)by kaggleのブロンズメダル保持者 廣橋さん
- データ分析/機械学習(Tableau)by 野町さん
- AR/VR(unity)by Sharif さん
- AR/VR(unity)by 廣橋さん
システム研修の日程は全3日間。
その内講座の実施期間は2日間あり、上記4つの中から2つの講座を選択して受講しました。
実際にやったこと
ここからは、実際に3日間のシステム研修で実施した内容についてご紹介していきます。
振り返りと普段の業務効率化について
1日目は普段一緒に働いているチームごとに分かれて、普段の業務の課題や効率化を妨げる要因を洗い出しました。
ゴールは、より効率的に業務を進めていくための解決策をプロジェクトベースでTODOまで落とし込むこと。
実際にどんな協議が行われたのか、参考までにQCチームの一例を挙げさせていただきます。
What & Why ?(どんな課題があるか)
①事業部、QAがテスト並行して、開発PL側の窓口業務が発生する場合がある。
➡POによって、受入テストの粒度間も異なるので、テスト量によるばらつきもある。
➡そもそもの仕組み的なところもまだない
➡プロダクトオーナーを取り纏める的な立ち位置があっても良さそう。。
②テスト設計、テストデザインをアウトソースで現状実施している。
※テスト実施はアウトソースでやっている。
➡開発からQAに引き渡しタイミングで、「開発ENG」側が次のプロジェクトにスムーズに移動が出来てない。
How to improve ?(改善策)
①テストフェーズに移行したタイミングで、PO側の受入テスト結果の取りまとめ、窓口をして、開発PL側の作業負担を軽減させる。
①プロダクトオーナ(機能責任者の定義、更新)を明確化する。
②プロジェクト単位で、開発ENGからテスターリソースを出す形にしたりする。
具体例:CI:内製 / 多段階:外注
リソース見合いも鑑みて、テスターリソースを分割する。
➡プロジェクトによってQAが対応するを判断する。
➡スタブを用意してテスト実施側で出来る仕組みを用意すれば可能
TODO(タスクに落とし込む)
①STEP0
プロダクトオーナーの管掌範囲の定義
予算、仕様決め、仕様把握レベルとしての責任者
∟MOPM海外は「佐藤(仮)さん」/MOPM国内「XXX」
∟MO集計「田中(仮)さん」
∟機能A「XXXXさん」
∟機能B「XXXXさん」
∟機能C「XXXXさん」
STEP1
プロダクトオーナーを明記したシステムの機能群一覧の用意。(過去資料掘り起し、更新) ※誰に聞けばよいか分かる粒度間で
STEP2
現状の人員に合わせて、空いたポストに対して人のアサイン定義
体制図を用意する。プロダクトオーナを取りまとめる
②Tリリース後のQAフェーズにおいて、QA,事業部側での受入テストの過程で発生する「検知事象」「問合せ」「仕様調整」などを、一元管理して QA側で一次切り分けをする。
上記はほんの一例ですが、全12チームの代表がそれぞれ持ち時間5分で発表し、1日目の振り返りは終了となりました。
機械学習チーム
2日目、機械学習を選択した人はDeep Learningについて学ぶことになります。
*Kaggleとは?
引用元:https://www.codexa.net/what-is-kaggle/
「The Home of Data Science & Machine Learning」(データサイエンスと機械学習の家)と題されている通り、世界中の機械学習・データサイエンスに携わっている約40万人の方が集まるコミニティーです。
Kaggleでは、企業や政府などの組織とデータ分析のプロであるデータサイエンティスト/機械学習エンジニアを繋げるプラットフォームとなっています。単純なマッチングではなく、Kaggleの最大の目玉とも言える「Competetion(コンペ)」がKaggleの特徴の一つです。
Competition(コンペ)は、企業や政府がコンペ形式(競争形式)で課題を提示し、賞金と引き換えに最も制度の高い分析モデルを買い取るという、最近でいう一種のクラウドファンディングに近いような仕組みとなります。
公式サイト:https://www.kaggle.com/
本講座のゴール
本講座のゴールはKaggle competitionに参加し、与えられたソースコードを改善することでより良い結果を残すことでした。
Kaggleに登録してみる
まず簡単に機械学習についての説明を受けた後、実際にkaggleに登録します。
その後、画面左のメニューから「Compete」をクリックしてコンペ画面に進んでいきます。
Digit Recognizerを選択
「All Competitions」の中から「Digit Recognizer」を選択します。
Digit Recognizerについての説明書きがありますが、簡単に言うと機械学習の入門編となるようなコンペで、MNIST(大量の手書き数字画像と、テスト画像を集めた、画像データセット)のデータを使用して手書き文字認識をするようなプログラムになっています。
実際にコンペに挑戦!
次に、実際にコンペに挑戦していきます。
最初からプログラムを組むには時間が足りないため、今回の講師である廣橋さんが用意してくれたプログラムをいじくりまわして、より高精度な画像認識プログラムを作っていきました。
結果
※1に近づくほど精度が高い
ソースを変えないで実行した結果
0.99846
ソースを変えてみた①
learning_rate = ReduceLROnPlateau(monitor=’val_acc’, patience=10, verbose=1, factor=0.6, min_lr=1.0e-5)
factor=0.5 → 0.6に変更した結果少しスコアが下がった
0.99807
ソースを変えてみた②
model.add(Dropout(0.2))
model.add(Dropout(0.25))→0.2にした結果少しスコアが上がった
0.99850
というような結果になり、②では元の結果より1に近づけることができました。
Tableauチーム
Tableauの講座はシステム部のTableauマスターこと野町さんによって行われました。
*Tableauとは?
Tableauは、BIツールの一種です。
BIツールとは「ビジネスインテリジェンスツール」の略で、ビジネス・インテリジェンスとは、企業に蓄積された膨大なデータを分析し企業の意思決定に役立てることです。
弊社では、主に弊社で提供している「Market Observer(※以下MO)」というサービスから得られるデータを分析するために使用しています。
要するに、Tableauを使えば様々な要素を組み合わせたデータ分析が行える、かつ、グラフや表などへのビジュアル化も超簡単にできてしまうのです!
本講座のゴール
今回の講座のゴールは、Tableauの基本的な使い方を理解することです。
まずはTableauをインストール
まずはTableauのデスクトップアプリをインストールします。
今回は14日間無料体験を利用しました。
Tableauの使い方について説明
用意してくださっていた「世界のサッカー選手のデータ」が詰まったcsvファイルを用いて、実際にTableauを操作してみました。
各国の選手の平均年齢をグラフにしてみたり。
グラフや表化したデータを一ページでまとめて見れるようにダッシュボードを作成したり。
実際にテーマごとに分析を実施してみた
一通り説明いただいた後、4-5人のチームに分かれて分析課題に取り組むことに。
例えばあるグループ(たまたまお酒好きが集まってましたw)が取り組んだテーマは「日本の飲酒量」についてで、日本酒、焼酎、ビール、ウィスキー、ワインの各酒種毎の都道府県別飲酒量の調査をTableau上で行いました。
例えばワインだと、1位山梨県、2位東京都、3位北海道という結果。
また、このグループは講義の内容を応用して酒別での飲酒量TOP3の県を抽出することにも成功していました。
グラフ作成後、TOP3以外の県を全選択し、右クリックメニューから「除外」を選択することでTOP3のみの抽出が可能なようです。
結果として、上図のように酒種別飲酒量TOP3の県をダッシュボードに並べて表示することに成功しています。
このグループのメンバーだった大山氏からは『最初はTableauの操作を覚えるのも一苦労で、ついていくのも大変だったが、グループワークでは自分たちが思い描いていた「データの可視化」が少しづつ形になっていくにつれてどんどん楽しくなっていった』というコメントをいただきました!
AR/VRチーム(Unityでシューティングゲームを作ってみる)
AR/VRチーム1日目は、sharifさんによるUnity講座(VR編)でした。
実施背景
そもそも今回AR/VR講座を実施することになったきっかけはと言いますと、米国の調査会社ガートナーが今後マルチエクスペリエンス流行ると思いますよ〜(概略)といった趣旨の調査結果を発表したことに起因いたします。
(参考:https://www.gartner.com/jp/newsroom/press-releases/pr-20191113)
弊社でも今後、消費者の方とのタッチポイント創出にVRやAR、そしてそれらが複合したMRを活用する機会が訪れるかもしれないよね。という話の流れから今回の講座が実施されることとなりました。
Unityとは
Unityとは、簡単にいうとゲームエンジンのことです。
音声再生機能や入力機能、物理配置機能などのゲーム制作に必要な機能がプリセットされているため、近頃のゲーム開発者にとっては必須のものとなってきています。
本講座のゴール
本講座のゴールはUnityを使ってシューティングゲームを作ってみることです。
実際にやってみる
まずは「プレイヤー」「ステージ」「弾丸」「敵」など、シューティングゲームに登場するオブジェクトの基盤を画面上に作成していきます。
敵を表示させる位置や、敵の数なども設定が可能です。
次に、敵を動的に動作させる必要があります。
画面に追加したオブジェクトに対して、動作のスクリプトを対応させ、更にそれをプレハブ(※参考:https://docs.unity3d.com/ja/2018.4/Manual/Prefabs.html)と呼ばれるコンポーネントとして保存します。
これと同様のことを、自分が動かす存在である「プレイヤー」や「弾丸」でも実施していきます。
最後に、これまで作成してきた機能たちにそれっぽいデザインを乗せていくことで完成となります。
半日でゲームを作れてしまうだなんて、Unity恐ろしい子・・・!
AR/VRチーム(Unityで3Dアニメーションを動かしてみる)
AR/VRチームの2日目は、廣橋さんによるUnity講座(AR編)でした。
本講座の目的
本講座のゴールは、Unityを使用して「こはくちゃん」と呼ばれるキャラクターを、3DアニメーションとしてスマートフォンにDLしたアプリ上で動かしてみることです。
ちなみに今回動かしたい「こはくちゃん」とは、Unityの公式キャラクターの内の1人です。
参考:https://unity-chan.com/contents/character/
© Unity Technologies Japan/UCL
実際にやってみる
プレハブ(※参考:https://docs.unity3d.com/ja/2018.4/Manual/Prefabs.html)と呼ばれるプリセットのコンポーネントをDLし、それを使ってこはくちゃんを動かしていきます。
ちなみにこちらはUnity社が無償提供しているものです。
こはくちゃんのプレハブを画面に表示させることができたら、状態遷移図を編集します。
こちらの状態遷移図を編集することで、動作の順番や持続時間、どんな動作をさせたいかなどのこはくちゃんの動きを制御することが可能です。
(例:3秒歩く→その場で5回ジャンプ→10秒間走る→10秒間歩く、など)
PC画面上でこはくちゃんを上手く動かすことに成功したら、ARとして現実の画面の中にこはくちゃんを登場させていきましょう。
具体的には、iOSであればAppleの提供する「ARkit」、AndroidであればGoogleの提供する「ARcore」というARフレームワークをPC上にインストールし、先ほど作成したVRアプリケーションと組み合わせ、iPhoneやAndroidスマートフォン上のアプリとしてインストールします。
これにより、PC上で作成したこはくちゃんとスマホの背面カメラの画面が合成されます。
ARなので、スマホを持ったままこはくちゃんの周囲をぐるっと回ると、こはくちゃんを360°見ることができたり、こはくちゃんに接近したり遠ざかったりすることが可能となりました。
以上、完成です!
ここまで、基本的にプログラムは必要ありません。すごいぞUnity!
(たまに動作にエラーが出るので直してあげる必要がありますが・・・)
まとめ
半期に一度のシステム部による、システム部のためのシステム研修。
3日間のプログラム終了が金曜日だったので、そのままオンライン打ち上げも実施しました。
次回の研修内容もこちらのブログ内で報告していこうと思いますので、引き続きチェックしていただけると嬉しいです!
それでは最後までお読みいただきありがとうございました〜!!
*
GMOリサーチでは、WEBエンジニア(サーバーサイド、インフラ、フロントエンド)を随時募集しております。
興味のある方は、ぜひこちらからご応募ください!
詳しい募集要項など採用情報はこちら