DeNA Technology Conference 2016に行ってきました
著者:ふじさわゆうき
更新日:2016/02/04
DeNA Technology Conference 2016(主催: DeNA TechCon)に参加してきました!!
DeNAのこれからに期待の持てるプレゼンばかりでワクワクを感じることができたカンファレンスでした。
以下、カンファレンス概要、プレゼン資料、会場の雰囲気、参加したセッションの内容をまとめましたのでご参考ください!!
目次
- カンファレンス概要
- プレゼン資料
- 会場の雰囲気
- 13:30〜「DeNAのネイティブアプリ開発」
- 14:30〜「DeNAが取り組むSWETの道」
- まとめ
- 関連記事
カンファレンス概要
- 公式ページ #denatechcon
以下、4つのカテゴリ毎に平行して行われる形式のカンファレンスでした。
- 『DeNAが切り拓く最前線』
- 『DeNAの新しい挑戦』
- 『DeNAを支える技術』
- 『DeNAのゲーム開発』
DeNAが技術に特化した大規模なイベントを主催するのは初めてということでした。
以下、登壇者の一部です
- DeNA システム本部 技術開発室 奥 一穂
- DeNA オープンプラットフォーム事業本部 副事業本部長 山口 徹
- DeNA システム本部 技術開発室 小倉 豪放
- DeNA 執行役員 Japanリージョンゲーム事業本部 副事業本部長 池田 修
- DeNA 取締役 川崎 修平
- DeNA 執行役員 システム本部長 木村 秀夫
etc
後日、プレゼン映像も公開されるということで期待しましょう
*一部、公開できないプレゼンもあるみたいですが。
プレゼン資料
2016/02/04時点で公開されているプレゼン資料です。
*見つけ次第、順次、更新します
会場C 16:30〜 DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy) 杉山俊春さん
www.slideshare.net
会場の雰囲気
会場の雰囲気については、以下ブログに写真が多数掲載されていますので覗いてみてください!
blog.kushii.net
13:30〜「DeNAのネイティブアプリ開発」のメモ
プレゼンを聞いてみての感想
- ネイティブアプリ開発は、2013年11月から本格的に取り組み始めたとのことですが、その時点で150人以上のエンジニアのうち、3人しかネイティブ開発のスキルを持ったエンジニアがいなかったらしいです
- そんな状態から、色々な施策を経て、サーバーサイドエンジニアをネイティブエンジニアに転身させてきたのはすごいなと思いました
- 「コールバック使いすぎ問題」、「非同期プログラミング問題(プログラミングパラダイムの変化)」などを組織のトップである池田氏が把握して、解決に取り組んできた姿勢が大きいと思います。他の大手企業だと、上の方は「技術がわからない」でトンチンカンな方向に行きそうですが、それがDeNAではトップでも最新の技術に理解があるのはいいなと思いました
- そういう組織体制だからこそ、サーバーサイドエンジニアをネイティブエンジニアに転身させることができたんだろうなと思いました
- またネイティブアプリの技術面だけではなく、開発プロセスもしっかりしている面がすごいなと思いました。プロトタイプ版、α版、β版、RC版と段階を踏んでレビューをしっかり行っていて、「これって面白い」とユーザーが思えるアプリだけをリリースしようという姿勢もすごいなと思いました
以下、発表メモ
- スライドのターゲット
- ゲームアプリ開発でぐったりしてる人(笑
- DeNAがネイティブを始めたのは2015年からでまだまだ最近で「 DeNAのアプリ開発って遅くね→おっしゃる通りです」みたいなスライドがあった
- 2013年11月からネイティブ開発を始めるにあたってしたことは、17項目で150人以上をスキル評価したこと
- 評価の結果、3人しかネイティブ開発できるエンジニアがいなかったらしい
- メンバーの育成にあたってハードルになる部分は、「非同期プログラミング」と分析していた。なぜなら、その点がウェブアプリと大きく違う点だと感じていたから
- プログラミングパラダイムの変化をDeNAに求めたとのこと。同期(Web、サーバー)から非同期(ネイティブアプリ)へ
- マルチメディアも大きく違う。サウンドデータも開発者が悩まなければいけない
- Webは全データを全ユーザが共有できるが、ネイティブは、端末のリソースのみが利用できる点も違う。リソースマネジメントの違い
- チートも違う。ネイティブアプリはチート(不正利用行為)されやすい環境。ユーザーの手元にある
- DeNAの戦略としては、Webゲームの成功体験のある技術者をアプリ開発者に転身させること。アプリ開発者に人員を投下すること。勉強会を社内で開催して成長させること。ネイティブの難易度の高い技術要素はやらないと決めること。などの施策をやってきた
- サウンドなど、育成困難な部分は内製しないなど「やらないことはやらない」との割り切りもしてきたとのこと
- DeNAで採用しているゲームエンジンは2つ。UnityとLiftEngine
- 3DゲームはUnity。2DはLiftEngineという使い分けをしている
- サーバーサイドは、SakashoとIRISの2つ
- Sakashoはゲームアプリ向けのBaaSのこと
- IRISは、マルチプレイを実現するサーバーのこと
- ネイティブアプリの開発力を上げるために、サーバーサイド基盤であるSakashoで統一とすることとした。
- サーバーサイドに工数をかけない方針
- 新規タイトルは、30−40人で作成する規模。小規模開発はやらないこととした。過去の経験として、小規模開発してうまくいった場合に、大規模化するのが難しいことを踏まえての方針。始めから大規模前提でチームを構成することにしている
- 小規模開発でやるのは、最近だと危ないという考え。アイディア一つでヒットアプリを出すのは、最近、難しくなっているということらしい
- 開発プロセスをDeNAではカッチリしている。マイルストンレビューというものを実施していて、Proto/α/β/RCという段階を踏んでリリースするプロセスになっている
- α版では、基本となるゲームが体験できるもの。例えば、装備、ガチャの機能。1画面だけ、リリース品質にしてみる。1画面のどこかのパーツができていない状況だとレビューは通さない
- β版は、チュートリアルをやってみてゲームにのめりこめるかどうかをみるなど。10〜30分やってみて面白さが伝わってこないとレビューで指摘する
- 新規タイトルだと、新規バグが出ない(2日くらいテストしてみて)状態をクリアしないと、リリースはさせない体制
- ネイティブ開発を始めてみて、コールバック使いすぎ問題がネイティブ開発においては多発したらしい。コールバックによる通知とpollingを適切に使い分けできない
- ネイティブ開発をはじめてみて、データの設計がDBっぽい問題も発生。Webサーバーの感覚でネイティブアプリをつくるとメモリ等のリソースが大きくなりがち
- MVCモデルから離れられない問題も発生。ネイティブアプリだと、MVCが当てはまらない場合でも無理やり当てはめようとしてしまうというWebエンジニアだと陥りがちな問題
- サーバーサイドのエンジニアがネイティブアプリエンジニアに転身できることが実証できたとのこと
14:30〜「DeNAが取り組むSWETの道
プレゼンを聞いてみての感想
- DeNAにおけるSWETについてよくわかるプレゼンでした
- DeNAにおけるSWETを「開発生産性と訳されるDeveloper Productivityが大きな役割」と掲げて「プロダクトのサービス品質向上とエンジニアの開発生産性向上をミッションステートメント」としている点に非常に共感が持てました
- 自動化チームとしてとても守備範囲の広いグループだと思いました。WebAPI, WebUI, Smartphone,Applicationと幅広く取り組んでいるグループは、他企業では、なかなか居ない存在だと思います
- 自動化の勉強会にいくと熱い話題ですが、テストの分割、並列による高速化もSWETではすでに実現しているところもすごいなと思いました
- SWETが取り組んでいるSTF (Smartphone Test Farm)は、これから注目の技術だなと感じることができました。実機端末をブラウザから操作できることは素晴らしいですね。実機がどこかにいってしまったり、ちらばってしまったり、画面キャプチャが取るのが難しかったりとありましたが、STFという技術がもっと発展していけばこういう問題が解決されるだろうという期待が持てました
- SWETのメンバー3名が著者のselenium本が2016/2/2に発売されるらしいので手に入れたいと思います。
以下、発表メモ
- SWET = Software Engineer in Test
- SWETの定義では、WIKIではQAのジョブだと定義されている(Wiki > Set > Technology)。しかし、googleのテスティングブログでは開発者の役割としている。SWETは、開発者のコードがテストしやすくする環境を提供するのが役割
- Software Engineer in Test, a Quality Assurance job title in some software companies
- The SET or Software Engineer in Test is also a developer role except their focus is on testability.
- SWETでは、開発生産性と訳されるDeveloper Productivityが大きな役割だと考えているとのこと
- SWETでは、プロダクトのサービス品質向上とエンジニアの開発生産性向上をミッションステートメントとしている
- バックエンドのテスト自動化。次に、フロントエンドの自動化ブラウザテストの自動化で、Rubyを使ったブラウザゲームのプラットフォームのテストの自動化を上(フロントエンド)から下(バックエンド)まで押さえながらやってきた
- SWETのメンバー3名が著者のseleniumに関する書籍がでた!!
- Smartphone SDKの自動化も手がけている。Android, iOS, Unityに対応
- Mobile Automationは、まだデファクトが確立されていない分野で、現状、Try&Errorを繰り返している。泥臭く挑戦中。昔は、Calabashを使っていたが、最近は、ブラウザテストとの統合もみすえてAppiumに着手している
- 自動テスト対象として、WebAPI, WebUI, Smartphone, Applicationと幅広く取り組んでいる
- SWETは、Game BaaS(Sakasho)のサポートも開始している
- SWETは、テスト基盤チームも作って技術的な取り組みを強化している
- SWETでは、テスト環境の高速化にも取り組んでいて、テスト実行計画管理ツールを開発した。それを使って、並列数に応じて、シナリオを分割する、シナリオ単位の実行時間を集計するなどができるようになっている
- テスト環境の仮想化も進めている。Dockerの導入。Selenium + Appium + Docker。これによって、テストの並列実行が柔軟にできるように取り組んでいる
- SWETグループでは、STFも進めている。STF = Smartphone Test FarmというOSSのツールを使って社内で運用中。このOSSのコミッターがSWETチームに在籍という環境。STFとは、Smartphoneの実機検証がブラウザから可能になるという便利なもの
- STFの操作にAPIが提供されるようになっていて、JenkinsからSmartphoneのテストが自動実行できるようになっている。これは画期的!!
まとめ
DeNAのネイティブアプリ開発とSWETという自動テストグループについてブログに書きましたが、どちらもこれからの将来性に期待の持てるプレゼンでワクワクを感じることができました。これからも、DeNAの技術動向に注目していきたいと思います。
来年もDeNA Technology Conferenceが開催されることを期待しています!!
*それにしても、懇親会のお寿司は美味しかったです。ご馳走さまでした!
関連記事
わなみんさんが手書きでまとめた資料がすごかったので掲載しておきます
TechCon2016のLT8名分グラレコしました!音声小さめ&スライド見えなかったけどエンジニアさん方の熱意は話から伝わりました!同じチームの人も登壇してて嬉しかった!#denatechcon #graphicrecord pic.twitter.com/Gh1OGuxMBZ
— わなみん (@wanami3103) 2016, 1月 29
DeNA TechCon 2016のTogetter
DeNA Tech Con2016に行って来ました yoshida 261
下記セッションについて書いたブログです。
- 爆速でAndroidアプリをビルドするための仕組み(TOYAMA YOSAKU)
- DeNAが取り組むSoftware Engineer in Test(NAKAGAWA MASAKI)
- DeNAのマルチプレイゲーム用サーバ「IRIS」(IKEDA OSAMU)
- カジュアルトーク
- チラシルの話(途中から参加したためタイトル不明)
- シニアエンジニアが新規サービス立ち上げたあれこれ(とかなんとか)
DeNA Tech Con 2016に行ってきました! spangled shalalala blog
下記セッションについて書いたブログです。
- Webを速くするためにDeNAがやっていること〜HTTP/2と、さらにその先〜(KAZUHO OKU)
- DeNAが取り組むSoftware Engineer in Test(NAKAGAWA MASAKI)
DeNA TechCon 2016にデザイナーだけど参加してきました LOGzeudon
下記セッションについて書いたブログです。
- DeNAのネイティブアプリ開発
- Webエンジニアが学ぶ自動運転を支える技術
- Anyca におけるUIフレームワークとスマホによるドア操作の仕組み
- B2B2Cなヘルスケアサービスの作り方
- チラシルiOSでの広告枠開発
- MERYで CM 乗り切った話〜女の子のかわいいを守るために〜
- iOS レガシーコード改善ガイド〜マンガボックス開発における事例〜