Google Cloud Next'17 で GCP の中の人達と話してきた

こんにちは。村田 (yuichi1004) です。スマホアプリが PC でプレイできるプラットフォーム AndApp の開発に携わっています。App Engine + Go が好きです。

この度、3/8-10 にサンフランシスコで行われた Google Cloud Next'17 (Next) に参加してきました。その中で、『Next は GCP の中の人と話をする絶好の機会である』ことが分かったので、その話をしようと思います。

Nextとは

各地で開催される Google Cloud Platform (GCP) の技術発表会です。昨年までは GCP 中心のイベントでしたが、今年からは GSuite を中心としてエンタープライズ系の技術発表も兼ねたイベントとなりました。その関係もあってか、昨年の 2,000 人を大きく上回る 10,000 人規模で開催されました。

IMG_3016.JPG

我々 DeNA は、積極的に GCP を使っています(弊社のGCP導入にあたってはGoogle Cloud Platform Japan Blog の紹介記事をご確認ください)。今年は特に本腰を入れて、総勢 12 名でイベントに押しかけ、情報収集とディスカッションにあたりました。

Next は中の人と話す絶好の機会

Next の情報はすでに各種メディアで公開されていますし、各セッションの動画 は無料で公開されています。ですから、話を聞きに行く・情報を仕入れるだけならばわざわざカリフォルニアまで出向く必要はありません。Next の真髄は GCP の中の人と話せる絶好の機会 であるということです。

GCP の各セッションで登壇する人は各プロダクトを担当するプロダクトマネジャーやエンジニアになります。セッション以外にも、プロダクトの紹介ブースや、Meet The Expert というコーナーもあります。普段自分たちが使っている製品や興味のある製品を開発している人たちと直に話せるということです。

「Cloud Spanner のインスタンスって何なの?」と質問をぶつけてみました

自分は Cloud Spanner に特に興味をもっているのですが、どうしても Cloud Spanner の「インスタンス」や「ノード」が何を指しているのか分かりませんでした。そこで Cloud Spanner のブースに行ってプロダクトマネジャーとセールスエンジニアにこの疑問をぶつけてみました!

cloud-spanner-instance.JPG

担当者がその場で図を描いて事細かに説明してくれました。Google の Spanner の論文 と見比べてみると、ノードとは論文で言うところの Spanserver であり、インスタンスはノードの集合のようです。

ここで大事なことは、Cloud Spanner 上でノード数を 1 と指定すると、3 つのゾーンにそれぞれノードと書かれた箱が描かれる点です。つまり、 特定の物理マシン上で稼働するソフトウェアではなく、3 つのゾーンに分散して動作するソフトウェアスタックをノードと呼ぶ ということのようです。そのため Cloud Spanner は仮にノード数 1 で動作させたとしても 3 つのゾーンに分散して可用性を確保してくれます。

こうしたディープな話をダイレクトに聞くことができることこそが Next 最大の魅力だなと思いました。

英語が苦手、わざわざカリフォルニアまで行けないという方も多いと思います。そういう場合は Google Cloud Platform Community Slack をチェックすることをおすすめします。こちらの Slack にも、プロダクトマネジャーや開発者が目を通しています。質問すると丁寧に返事が返ってきます。

社内報告会も行いました

帰国後、DeNA 社内で Next 参加報告会を開催しました。各自現地で仕入れてきた情報や、ディスカッションを経て得られた情報を共有しました。

internal-report.jpg

GCP の注目度が上がる中、DeNA 社内でも GCP を活用したプロダクトの開発が注目されつつあります。現地のプロダクトマネジャーやエンジニアから得た情報を活かしつつ、今後のより魅力的な製品開発に活かしていきたいです。

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA TechCon 2017 開催レポート【4】

こんにちは。ゲーム事業本部開発基盤部の池田です。

去る2月10日、DeNAは技術カンファレンス「DeNA TechCon2017」を開催しました。
全4回に渡る振り返り記事も本記事で最後となります。

今回は、筆者が聴講した以下のセッションの内容を紹介します:

  • Bステージ「AndApp開発における全て」KOBAYASHI ATSUSHI
  • Dステージ「DeNA内製ゲームエンジンの現状と目指す未来」ERA KAZUTAKA

また、最後のレポート記事ということで、カンファレンスのクロージングの模様なども合わせてお伝えします。

AndApp開発における全て

オープンプラットフォーム事業本部システム開発部のKOBAYASHI ATSUSHIは、2016年11月にローンチされたAndAppというサービスの舞台裏について発表しました。

056_20170227.JPG

AndAppはスマートフォン向けゲームをPC上でプレイできるプラットフォームで、2017年3月現在、15タイトルが配信されています。
そのサーバサイドのシステムは、従来のオンプレミス環境のサービスとは異なり、Google App Engine Standard Environment(以下、GAE SE)上で動作しています。
また、開発言語も従来のPerlとは異なり、GAE SEで利用可能なGo言語が採用されました。

講演の前半では、AndAppの開発の中で、どのように技術選定を行って上記の構成となったかを述べました。その大きな理由の1つとして、開発・運用する上で絶対に必要な工数以外は、サービスを作る工数に当てたかったから、という点が挙げられました。

後半のトピックは、AndAppのシステムアーキテクチャや開発体制、コストについてでした。
アーキテクチャとしては機能単位でコンポーネント化するMicroservices構成が取られ、それに合わせて、少人数チームを数多く作る開発体制が取られました。
Microservicesとして、本講演時点で26のサービスが稼働しています。

講演のまとめの中で、既存の技術や運用にとらわれずにモノづくりに集中できる環境を作ることの重要性が述べられました。
最後に、「一番大切なことは、めいっぱい楽しむこと。ワクワクしよう!」と締め括られました。

スライド資料

DeNA内製ゲームエンジンの現状と目指す未来

Japanリージョンゲーム事業本部開発基盤部のERA KAZUTAKAは、DeNA内製ゲームエンジン「Lift Engine」の現状と目指す未来について発表しました。

DSC_4350.jpg

Lift Engine®Cocos2d-xをベースとして、ゲーム開発において不足していた機能を実装し、最適化を施した内製ゲームエンジンです。
採用タイトルとしては、「デナレンジャー」や「ガールアックス(*1)」があります。

2DゲームエンジンとしてのLift Engineの紹介の後、Lift Engineを3Dゲームエンジンとして使うための取り組みについて、説明しました。

Lift Engine 3Dで新規に実装した機能として、コマンドバッファを用いてレンダリングを専用スレッドで行うレンダリングパイプライン、コリジョン判定やSIMD対応した行列演算を含む算術関数、独自クラスを用いたシリアライザなどが挙げられました。

Arcana」は、Lift Engine 3Dと共に用いられるゲーム開発のためのアプリケーションフレームワークです。
Lift Engine 3Dでは汎用的・基本的な機能の提供に留め、上位レイヤに位置付けられるArcanaによって、よりゲーム機能の実装に即したモジュール群や、ゲームの作り方を規定する仕組み等を提供します。

講演のまとめの中で、「面白いゲームを作るためには、品質向上に時間を割くことが重要」と述べられました。
今後のLift Engine 3Dでは、まずはゲーム開発のトライ・アンド・エラーの周期を短くすることに注力し、開発・運用効率の最大化を目指していきます。

スライド資料

クロージング

カンファレンスを締め括るクロージングでは、今年も弊社取締役の川崎が登壇し、総括と謝辞を述べました。

DSC_7597.jpg

以前のDeNAでは、レガシーな技術にこだわって使い続ける傾向もありましたが、最近はユーザにより大きな価値を届けるため、新しい技術も積極的に採用しています。
本カンファレンス全体を通して、そのようなDeNAの技術に対する姿勢が伝わったなら幸いです。

昨年に続いて今年も会を開催できただけでなく、昨年を上回る規模のご来場を頂けたことを嬉しく思います。
この場をお借りして、御礼を申し上げます。
特にカンファレンスに足を運んで頂いた方々については、誠にありがとうございました。

本記事執筆時点では、まだ各セッションの動画は公開されておりませんが、追ってTechConのサイトにて公開を予定しています。
Twitterの公式アカウントFacebookページによる案内をお待ち下さい。

それでは、来年もTechConでお会いしましょう!

IMG_0390.jpg

スタッフ集合写真

脚注

(*1) ガールアックス - Google Play の Android アプリ

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA TechCon 2017 開催レポート【3】

こんにちは、 SWET グループの加藤です。

DeNA TechCon 2017 が2017年2月10日に開催されました。

DeNA TechCon レポート第 3 回となる本記事では、 DeNA の基盤技術に迫った

の 3 つの発表をご紹介します。

DeNAの動画配信サービスを支えるインフラの内部

024.JPG

IT基盤部の HATA がライブ配信の SHOWROOM とスマートフォンの生放送・実況配信サービス Mirrativ を題材に、動画配信サービスを安定して運用するためのノウハウについて発表しました。

生放送のための Origin サーバと Edge サーバの構成、負荷分散、障害発生時の自動対応、低遅延を実現するための工夫、インスタンスの状態遷移、監視体制、オートスケールの仕組みについてなど、盛りだくさんの内容でした。

特に、オートスケールに関しては、求められるものに応じて何度もスクラッチから実装し直しているとのこと。

こうして作られたインフラ基盤によって、 SHOWROOM 3周年記念の 24 時間生放送や AKB48 45th シングル選抜総選挙、横浜DeNAベイスターズ主催試合生中継など多くの視聴者のいた放送でも安定して配信できたそうです。

スライド: DeNAの動画配信サービスを支えるインフラの内部 #denatechcon from DeNA

DeNAでのチート診断・脆弱性診断の取り組み

134.JPG

セキュリティ技術グループの SUGIYAMA が、サーバー・クライアントで成り立つスマホ向けゲーム開発におけるチート対策について発表しました。

セキュリティ・キャンプでの講義 にも使われたチート対策の学習用アプリを題材に、典型的なチート手法が紹介されました。

この学習用アプリはブラウザで動くため開発者ツールで簡単に改竄できるため、チートを行う攻撃者の視点から脆弱性対応を学べるとのこと。また、ネイティブアプリであってもチートの手法は基本的に同じであり、クライアントに関しては完全なチート防止は無理なので、サーバ側でのデータ改竄を防止することが重要だそうです。

スライド: DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み from Toshiharu Sugiyama

147.JPG

また、スマートフォン向けゲームのチート対策に関しては、同じセキュリティ部の MURAKAMI の発表「SafetyNetを使ってゲームを守る」もありました。こちらもあわせて見ると、より理解が深まると思います。

DeNAの取り組むテストエンジニアリング

157.JPG

SWET グループの OKITA KUNIO が発表しました。 SWET は SoftWare Engineer in Test を意味する言葉であり、 DeNA ではソフトウェアテストをリードする役割を持つ部署です。

テストエンジニアリングに求められるスキルの紹介や、事業サポートとテスト基盤といった、ロールにあわせた SWET 内でのチーム体制が説明されました。

また、新たな取り組みとして、ツールのバージョンアップを監視し、即座に動作確認を行い、アップデートしても安全化をチェックするマスティフというツールや、安定したパイプラインを実現するための Microservices の構成、クローラの探索による自動チェッキングといった挑戦が語られました。

さらに、 AI による E2Eテストの自動化にも取り組んでいるとのこと。現在はまだ学習データを収集するための基盤づくりの段階だそうですが、将来的にはこれまで踏み込まれなかった領域にまで自動化が進みそうです。

最後に

この他にも、 TechCon では数多くの発表がなされました。公式サイトのスケジュール画面 に、発表の動画とスライドへのリンクがありますので、どうぞごらんください。

次回の記事が DeNA TechCon レポートの最終回となります。お楽しみに!

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA TechCon 2017 開催レポート【2】

こんにちは。ゲーム事業本部開発基盤部の池田です。

去る2月10日、DeNAは技術カンファレンス「DeNA TechCon2017」を開催しました。
公開可能な資料については、公式サイトのスケジュール画面からリンクしておりますので、まだチェックしていないという方は是非ご覧ください。
追って、各セッションの動画もアップ予定です。

本記事は、この「DeNA TechCon2017」振り返り記事の第2弾となります。

今回は特に、DeNAの新たなチャレンジ領域である AI 分野について、Aステージで筆者が聴講した以下の3講演について取り上げます:

  • 基調講演:「実世界の人工知能」株式会社Preferred Networks岡野原大輔様
  • 「強化学習を利用した自律型GameAIの取り組み〜高速自動プレイによるステージ設計支援〜」MASHIKO RYOSUKE, SEKIYA EIJI
  • 「DeNA AIシステム部におけるクラウドを活用した機械学習基盤の構築」SEO NAOTOSHI

基調講演―実世界の人工知能

基調講演では、株式会社Preferred Networks岡野原大輔氏が登壇しました。

DSC_6045.jpg

講演の前半では、畳み込みニューラルネットワークが近年の研究でどのように複雑に進化し、ディープラーニング(深層学習)と呼ばれるようになったかを解説しました。
深層学習で使われる畳み込みニューラルネットワークでは、ネットワークの層数やニューロン数が、それまでのものより桁違いに多くなっています。

この深層ニューラルネットワークが、現在、様々な分野で応用されつつあります。

講演では、応用分野として「自動車」「ロボット」「異常検知」「バイオ・ヘルスケア」「コミュニケーション」「クリエーター」といった分野における取り組みについて取り上げられました。

特に、「クリエーター」分野においては、線画にいい感じに着色する PaintsChainer が最近インターネットなどで話題になったことは、記憶に新しいのではないでしょうか。

結びとしては、深層学習・教科学習の進化は著しく、研究段階から実用化・ビジネス化チームが付き添うことが大事と締め括られました。

強化学習を利用した自律型GameAIの取り組み〜高速自動プレイによるステージ設計支援〜

こちらのセッションは前半・後半の2部構成でした。

前半では、強化学習そのものについてAIシステム部SEKIYA EIJIが発表しました。
まず、強化学習の仕組みについて簡単な解説をした後、2014年に登場した新手法であるDeep Q-Networksの概要を示しました。
次に、強化学習に関する最新の動向として、NIPS 2016で発表されたDeepMind LabやOpenAI Universeなどについて取り上げました。

後半では、強化学習の利用例として、FINAL FANTASY Record Keeperにおける自律型GameAIの活用事例について、同じくAIシステム部のMASHIKO RYOSUKEが発表しました。

DSC_6525.jpg

FINAL FANTASY Record Keeperでは、ボスのパラメータ調整を行うため、バトルを自動プレイするAIに対するニーズがありました。

このバトルAIの行動決定アルゴリズムとして、探索的アプローチであるMonte Carlo Tree Searchと、ニューラルネットを用いたアプローチであるNEAT, Q-learningを適用した結果が比較解説されました。
結果として、ニューラルネットを用いた方法において、学習時間が掛かるなど課題はあるものの、人がプレイする場合と遜色ないレベルでの勝率を達成することができました。

講演の最後では、ゲームへのAI活用のポイントとして、ゲームシステムの設計段階でどこまでAIを利用するか考慮し、シミュレータやデータ形式を用意しておくことの重要性が挙げられました。

DeNA AIシステム部におけるクラウドを活用した機械学習基盤の構築

AIシステム部のSEO NAOTOSHIは、DeNAにおけるクラウドを活用した機械学習システム基盤の構築について発表しました。

DSC_6743.jpg

DeNAの機械学習システムのインフラ面においては、「潤沢なGPU」「隔離された環境」「素早い構築」「運用が楽」「自由度を高く」「ミスが起きにくい」という6つの要素が求められていました。
本発表では、これらの要素一つひとつを達成するために、AWSやGCPを活用したインフラ環境の構築方法について示しました。
例えば、「素早い構築」については、TerraformやItamaeといったツールを活用し、AWS, GCPの両方に対応した環境構築をコード化していることが語られました。

発表の後半には、GPU学習環境をオンデマンドでスケールさせるために整備したツールや、APIサービス環境の構成が取り上げられました。
GPU環境をスケールさせるための内製ツール「ec2-scale-run」の中ではDockerが活用されています。このツールでは、使われなくなったインスタンスを再利用し、また不要になったら確実にシャットダウンする仕組みがあることが説明されました。

結びに

本記事を通して、DeNAがAI分野においてどのようなチャレンジ・取り組みをしているか、少しでも伝われば幸いに思います。

余談ですが、Aステージの講演では社員によるグラフィックレコーディングがリアルタイムに行われ、完成したものは展示スペースに貼り出されました。

下の写真は、基調講演のグラフィックレコードとなります。

CR9A7145.jpg

次回の記事でも引き続き、発表されたセッションの模様を紹介していく予定です。
お楽しみに!

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA TechCon 2017 開催レポート【1】

こんにちは、 SWET グループの加藤です。

DeNA TechCon 2017 が2017年2月10日に開催されました。昨年に続き、第2回目です。

今回から全4回に渡り、 TechCon 2017 の様子をお伝えします。

第1回となる本記事では、 Opening の様子、そして SAKAI KENGO による『DeNA private cloudのその後』のセッションについてご紹介します。

CR9A6825.jpg

CR9A6920.jpg

オープニング

IMG_0018.jpg

オープニングでは木村 (hidek) による Dena TechCon の主旨が述べられました。

TechCon は DeNA の技術チャレンジ総決算です。先人の技術と知恵で DeNA はここまで成長したわけですが、その恩返しの意味も込めて、エンジニアの挑戦で得た知見を社会に還元したいという思いが語られました。

特に、 DeNA は、これから力を入れていく AI についてのアウトプットを増やしてゆくつもりです。 AI は社会を変革する可能性を持ちます。 DeNA の創業技術はインターネット関連技術ですが、それに加えて AI も DeNA の技術の中心に据えて、本気でやっていくという姿勢を表明しました。

展示

CR9A6814.jpg

IMG_9874.jpg

CR9A6801.jpg

トークセッションだけでなく、 DeNA の技術を紹介する会場展示も行われました。たくさんの方が、実機ゲームサンプルやキービジュアル、社内開発のミドルウェア紹介の展示に足を止めていました。

DeNA private cloudのその後

IT 基盤部の SAKAI KENGO が DeNA の社内インフラ基盤について発表しました。

スライド: DeNA private cloudのその後 #denatechcon from DeNA

昨年の Dena TechCon で紹介した、サーバやネットワークの構成がこの一年間でどう変わったかに焦点が当てられました。

過去のエンジニアブログの記事にも書かれたように、 DeNA はオンプレミスのサーバにおいて、 Ceph を SDS(Software Defined Storage) として使い、 OpenStack で構築した Private Cloud 構成を取っています。

2016 年 7 月より開発環境を OPenStack へ移行し、現在ではインスタンス数は 1730, Node 数は 34 まで増えたそうです。また、将来的には LXD の導入などを計画しているとのこと。

また、従来はネットワークとサーバの管理は担当エンジニアが分かれていましたが、それを統合し、 IT 基盤エンジニアがネットワーク、サーバどちらも担当できるようにしました。これによりネットワークグループへの「依頼」削減に成功したそうです。

DeNA のインフラに関する記事は こちらこちら など、 Mobage Developer blog にもあります。読み比べると、インフラ構成について理解が深まると思います。

他記事

DeNA TechCon 2017 を紹介した記事を探してみたところ、いくつかの Web ページが見つかりました。

セッションや会場の雰囲気が伝わってきますね。

最後に

DeNA TechCon 2017 に参加されたみなさま、ご来場ありがとうございました!

次回以降は、各セッションの様子をご紹介します。

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

Test Engineer Meetup #1 開催レポート

こんにちは。 SWET(SoftWare Engineer in Test) の加藤です。

2016 年 9 月 14 日、 Test Engineers Meetup #1 が開催されました。

この Meetup のテーマは

  • テストエンジニアとはどういう仕事なのか?
  • テストエンジニアがいることでどういうことがチームに起こるのか
  • テストエンジニアは今後どういう方向を目指すべきなのか

についてです。

300 名以上のかたが参加登録されるたいへん大きなイベントになり、当日は大盛況でした。あいにく会場のキャパシティから 130 名までしか受け入れられず、キャンセル待ちとなり参加いただけなかったみなさまには申し訳なく思います。

Talk (10 分 x 5)

5 人のテストエンジニアが、それぞれの組織での取り組みについて発表を行いました。

@Kazu_cocoa (Cookpad)

テストエンジニアの一端 from Kazuaki MATSUO

Cookpad でのテストエンジニアが解決する課題とスキルセットについての発表でした。

モバイルアプリのテストや、 OSS への貢献といった Cookpad 独特の取り組みが印象的でした。

@miyajan (Cybozu)

テストエンジニアと組織構造 @Cybozu from Jumpei Miyata

テストエンジニアと組織構造についての発表でした。

自ら設立したテストエンジニアリングチームが組織横断的な活動を行うようになった経緯や、今後はさらに各部署にも入り込むハイブリッドな組織にする、という展望が紹介されました。

@okitan (DeNA)

SWET (SoftWare Engineer in Test) という組織の取り組みの範囲についての発表でした。

もともとモバゲーというサービスだけを見ていた組織が、横断組織になり、それぞれの事業のチームが自ら成長し改善を行えるようにサポートする、と取り組み方を変えていくことについてが話されました。

@shoma (Mercari)

メルカリにおいての QA チームの取り組みと、そのなかでの SET (Software Engineer in Test) の担当領域についての発表です。

仕事の成果を数値化して説明しにくいこと、そして予防のコストを数字にする大変さについて、特に実感のこもったお話を聞けました。

Naito (Rakuten)

ソフトウェア品質とは何か、その程度は測定できるのか、などについての発表でした。

参加者への質問を交えたインタラクティブなセッションで、現実の問題にテストエンジニアリングで取り組むことについて、熱い意見が交わされました。

パネルディスカッション

テスト駆動開発の実践、 power-assert の開発で知られる @t_wada さんの司会で、テストエンジニアについてパネルディスカッションが開かれました。

お寿司とビール、そしてお菓子が会場に運ばれ、和やかな雰囲気でのトークになりました。

今回のために t_wada さんが用意した質問が、各登壇者に投げかけられました。

  • テストエンジニアってどんな仕事?
  • テストエンジニアがいるとどういうことが起こる!?
  • テストエンジニアの世界に興味を持ったきっかけは
  • 他チームとの関係はどうなっている?

会場からの質問も飛び交いました。

  • これから伸ばしていきたい能力は?
  • テストエンジニアとしてのロールモデルは?
  • 開発チームからの要求で工夫していることは?
  • 異なる文化圏の人間が協力して QA を行うときに壁になることは?
  • ソフトウェア品質をどうやって数値化している?

とてもすべての内容をここに書ききれないのですが、特に興味深かったのは、開発生産性の数値化という難問に対して、デプロイ完了までの時間やリグレッションテストの時間を計測し、それを指標にしているという Cookpad での事例紹介でした。

継続的なデプロイを行ううえで、待ち時間が発生するとかなりのマイナスになってしまう。それを避けるために、短時間でのデプロイとテストを実現することが価値の指標になる、とのことで、個人的にもこのアプローチに納得しました。

終わりに

DeNA の SWET グループでは、自動テスト、 CI 、ソフトウェア品質の向上・開発生産性向上に取り組んでいます。

テストエンジニアリングや CI/CD 技術基盤に興味のある方は、ぜひこちらの募集ページからご応募ください。

We are hiring です。

また、 Test Engineers Meetup #1 という名前からわかる通り、今回は第一回目。もちろん第二回目も計画しています。今回はテストエンジニアリングを行う組織に注目した発表が主でしたが、次回は具体的なテスト戦略、品質を上げる方法論についても触れていければと思います。

そしてですが、参加されたかたはぜひどんな形でも構いませんのでフィードバックをいただければ幸いです。ご参加された方にはアンケートを送付いたしましたので、ぜひ感想・ご意見をください。

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

CircleCI Meetup #1 開催レポート

こんにちは。SWET(Software Engineer in Test)の栗田です。

弊社SWETグループは、

  • DeNAサービス全般の品質向上
  • DeNAエンジニアの開発生産性向上

の2つのミッションのもと、ソフトウェアテストの自動化や、エンジニアの生産性向上のためのツールの開発・導入などを行うソフトウェア・エンジニアの集団です。

これらの取り組みの一環として、弊社では開発プロセスに継続的インテグレーション(Continuous Integration、以下CI)を早くから導入してきました。
近年、プロダクトの開発サイクルがどんどんと短くなっていくにつれ、その中で品質を担保する手段の一つであるテスト自動化と、それを開発プロセスに含めるCIは、開発に必須の要素となっています。

CIを実装するCIツールは世の中に数多くありますが、その中でもJenkinsは、フリーかつオープンソースであることや、豊富なプラグインによる柔軟性などから、CIの世界ではデファクトと言っていいほど広く使われています。
弊社でも、これまでJenkinsを利用して数多くのプロダクトのCIを実装してきました。

しかし社内のプロダクトが多様化することにより、開発プロセスそのものも多様化し、かつ開発サイクルが短期化するにつれ、Jenkinsを利用する上でのデメリットも顕在化してきました。

1.Jenkins構築の大変さ

Jenkinsはその柔軟さにより、様々な開発プロセスにおいてCIを実装可能です。反面、インストールした初期の状態から、実際に使い始められる状態にするまで、数多くの設定を行わねばなりません。この設定の多さが、素早くCIを始めたいプロジェクトでは障害となっており、開発開始と同時にCIを導入できない原因の一つとなっていました。

2.Jenkins運用の大変さ

開発プロセスが多様化すると、1台のJenkinsですべての開発プロセスに対応することが困難になります。
そのため、各プロジェクト向けにJenkinsを構築し、運用することになります。Jenkinsの運用では、プロダクトのビルド・テストに使うミドルウェア・フレームワークを定期的にバージョンアップする必要があります。
特にスマホアプリ開発では、android-sdkやXcodeなどを新バージョンが出るたびにインストールし、かつ古いバージョンも維持しておく場合がほとんどです。こういった作業は、ほぼすべてのプロジェクトで行う必要があり、そのコストはバカになりません。

これらの問題を解決すべく、SWETグループでは、

  1. Jenkinsへの機能追加を基本とした、新しいCIツールの開発
  2. クラウドCIツールの導入

の2つを進めています。

今回は、2. のクラウドCIツールの導入について、様々なツールの評価を行った結果、CircleCI Enterpriseを導入することとなりました。

CircleCIは、Githubと連携できるコンテナ型のCIツールです。ここでのコンテナ型とは、近年急速に普及しているコンテナ仮想化技術を使い、ビルドごとにコンテナを割り当てることで、各プロジェクトに独立したビルド環境を提供するタイプのツールを指します。
CircleCIでは、コンテナのベースとなるOSイメージに、よく利用されるミドルウェア群があらかじめインストールされており、初期セットアップが不要です。またデフォルトのミドルウェア群に含まれていないものでも、circle.ymlとよばれる設定ファイルに追加ミドルウェアを記述し、Githubのリポジトリに含めることで、容易に追加できます。
また社内に1台セットアップし、各プロジェクトで共有するため、管理コストを集約することもできました。

CircleCI Meetup 当日の様子

今回、CircleCI社のメンバが来日することに合わせ、弊社でのCIツールに対する取り組み紹介や、日本国内のCircleCIユーザの交流・技術共有などを目的に、弊社主催という形でCircleCI Meetupを開催いたしました。

Meetupでは、まずCircleCIエバンジェリストKevin Bell氏より、CircleCIの便利な機能の一つである、ビルド実行コンテナへのSSHログイン機能についてや、実行したテストの情報を閲覧するテストメタデータな機能などについてご紹介頂きました。
他CircleCIの機能については、公式ドキュメントがございますので、そちらをご覧ください。

次に、私から弊社でのCircleCI導入に至る経緯をお話させていただきました。

その後、CyberAgent社よりstormcat24さんにお越しいただき、同社でのCircleCI導入後、どのように活用されているかなどについてお話頂きました。弊社より先に導入されていることもあり、社内での導入推進や、その際に気をつける点など、頷くところが多く、今後の参考にしていきたいと思いました。

上記3つのセッションのあと、乾杯を挟んでLTがありました。事前応募のLT枠の方に加え、当日飛び込みのLTもあり、大変盛り上がりました。

  • はてなブログへの自動投稿
  • GCP/GKEへのデプロイ
  • CircleCIクライアントアプリ「CI2Go」(iOS)
  • 何台ものサーバへのセキュリティアップデートの適用
  • CentOSへのCircleCI Enterprise構築 ...など

どのテーマもこれまで見たことがない事例ばかりで、非常に興味深かいものでした。
当日の発表資料は、こちらのイベントページよりご覧いただけます。

circleci_meetup_1_1.JPG

満員のセッションの様子

circleci_meetup_1_2.JPG

会場で配られたCircleCIステッカー

circleci_meetup_1_3.JPG

参加者からの質問に答える Kevin Bell 氏(写真中央)

今回は130名の参加枠にかかわらず、キャンセル待ちが出るほどの応募があり、当日残念ながらご参加頂けなかったみなさまには大変申し訳ありませんでした。
しかしながら、これほどの多くの応募があり、改めてCircleCIの人気を実感いたしました。
また懇親会の中で、Jenkinsに対する課題や、CIをどうやって社内で広めていくかなどについて、参加者の方からたくさんの質問を頂き、私自身、企業内開発におけるCIについて、改めて考える機会をいただきました。

終わりに

SWETグループでは、CIだけでなく、プロダクトの品質向上・エンジニアの開発生産性向上に日々取り組んでいます。また、この役割に積極的に取り組んでくれる仲間を探しています。興味のある方は、ぜひこちらの募集をご覧ください!

最後に、今回のMeetup主催に快く協力いただいたCircleCI社メンバ、また会を盛り上げていただいた発表者の方に、厚く御礼申し上げます。
ありがとうございました!!

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA TechCon 2016のセッション動画を公開しました!

dena_techcon_2016_logo

TechCon 2016のセッションをスライド・動画アーカイブでご覧いただけます!

こんにちは。Iketakiです。

1/29に開催されました DeNA TechCon 2016 の動画アーカイブを公開いたしました! (※DeNA TechCon 2016については、こちらの記事などをご覧ください)

イベントの公式HP内の「SCHEDULE」より、各登壇者の当日のスライドと、動画アーカイブをご覧いただくことができます。

スライド・動画へはこちらから!

capture

(公式HPに遷移します)

また、動画は、YouTubeのDeNA Channelからもご覧いただけます。

当日ご来場することができなかったみなさまや、セッションにご興味のあるみなさまは、ぜひスライドや動画をご覧いただければと思います。

イベントレポートはこちらから!

当日の会場の様子や各セッションの要点を、以下の開催レポートにまとめております。 こちらもぜひご覧ください。

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA TechCon 2016 開催レポート【4】

こんにちは。SWETの加藤です。

1月29日、DeNAは技術カンファレンス「DeNA TechCon 2016」を開催いたしました。 DeNAエンジニアブログでは数回に渡りその内容を振り返り、発表がどのようなものだったかをご紹介します。

第4回となる本記事は、以下の講演についてのものになります。

DeNAが取り組む Software Engineer in Test

品質向上と開発生産性向上を目的とした、SWETという部署が紹介されました。

登壇者はSWETの NAKAGAWA MASAKI ( @ikasam_a )です。

3A4A4959.JPG

GoogleでのSET(Software Engineer in Test)に由来するSWET(SoftWare Engineer in Test)の役割や、DeNAでSWETが発足してから現在までの歩みが語られました。

SWETではブラウザテストを自動的に実行するSeleniumがよく使われており、Seleniumを実際のアプリケーションテストに導入する手順やTIPSを解説するSelenium実践入門にSWETのメンバーが執筆に参加しているそうです。

また、SWETが扱っている最新の案件として、スマートフォンアプリのテストを管理・実行する、STFというデバイスファームが説明されました。このSTFはCyberAgent社発のオープンソースのプロジェクトで、Android端末を管理し、ブラウザから操作できるという機能を持っています。SWETではこれをモバイル自動テストに導入するため、v2.0.0で追加されたAPIを実装しました。

最後は、SWETというキャリアパスについての話題となりました。SWETはまだ認知度は高くないが、開拓すべき新技術が多く、アーキテクトに繋がるひとつの道である、という見解が述べられました。

スライドはこちらからどうぞ: DeNAが取り組む Software Engineer in Test

DeNAの分析を支える分析基盤

DeNAのサービスにおいてユーザの志向や反応を分析する分析推進部から、弊社の YAMADA KENSHINが登壇しました。

IMG_8837.JPG

アナリストに求められる役割や、現在のDeNAの分析体制、分析基盤のこれまでの歩みについてが話されました。DeNAではもともとサービスの開発チームが評価・分析を行っていたのですが、モバゲーが急成長するにつれて、分析の専門チームが必要とされるようになってきたそうです。2010年に専門組織が発足し、大量のログからユーザ行動を分析するために、HadoopやVerticaなどを導入しながら、増大するデータに対処してきたのだとか。

さまざまなサービスの分析を行う全体構成についても説明されました。ログの回収と監視、集計バッチのフロー、分析結果の可視化のために、CassandraやStorm/HBaseを組み合わせて使っているとのこと。また、KPIレポートを作成するために、Argusという内製のレポートツールを開発したそうです。

また、分析にとどまらないデータ活用の取り組みとして、ハッカドールのような推薦システムが紹介されました。ユーザーの行動から、趣味にあったゲームを推薦したり、ファッションのテイストが似ている商品に誘導する仕組みに応用できるそうです。

スライドはこちら: DeNAの分析を支える分析基盤

これからの Microservices

理想的なMicroservicesの実現に求められるAPIやそのプロトコル、サービスのアーキテクチャがトピックとなりました。

弊社の YAMAGUCHI TORU (@zigorou)の発表です。

3A4A5470.JPG Microservicesの概念と、その目的、利点と欠点、実現するために必要な要素などが説明されました。

MicroservicesとMonolithicなアーキテクチャの違いや、RESTという制約が現実の課題にどこまで有効かなど、現実のアプリケーションとRESTの思想がどう結びつくのかが語られました。また、Content Negotiation、JSON SchemaとJSON Hyper Schema、API Gateway、Access tokenなどについて、Microservicesのアーキテクチャでアプリケーションを実装する観点からの見解が述べられました。

スライドはこちらです: これからの Microservices

結びに

DeNA TechCon 2016の紹介記事は今回が最後となります。

わずか1日間のイベントでしたが、非常に濃密な時間でした。高度な内容が多く、私個人としても学ぶことが大きかったと感じます。興味を持たれたかたは、ぜひ発表のスライド資料もご覧ください。

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA TechCon 2016 開催レポート【3】

こんにちは。IT基盤部の安武です。

1月29日に行われた「DeNA TechCon 2016」から、早2週間余りが経ちました。
2月16日現在、上の公式サイトでは、一部セッションを除くスライド資料が公開されております。
セッション動画の方はもう少し時間が掛かるようです。気になる方は公式ツイッターからの案内をチェックしてみて下さい。

さて、今回は筆者が聴講した以下の2セッションについて、かいつまんで内容を振り返って行きます。

Webを速くするためにDeNAがやっていること 〜HTTP/2と、さらにその先〜

本セッションでは、DeNA が行っている Web 基盤技術の研究開発について、特に HTTP/2 と H2O を主軸に発表を行いました。
登壇者は、H2O の主開発者 OKU KAZUHO (@kazuho) です。

発表の導入として、Web システムにおけるパフォーマンス向上の2つのアプローチが紹介されました。即ち、スループットの最適化とレスポンスタイムの高速化です。
スループット最適化の例としては、弊社の HIGUCHI (@ahiguti)が開発した HandlerSocket for MySQL についても触れられました。

3A4A4734.JPG

その後、HTTP/2 誕生の背景を示し、HTTP/2 におけるスループットの最適化とレスポンスタイムの高速化の仕様について説明しました。

OKU KAZUHO が開発する H2O は、現時点で世界最速の HTTP/2 実装と言われています。 発表では、H2O がどのように HTTP/2 を実装して、最適化・高速化を達成しているか解説しました。

発表の最後に、HTTP/2 が約束する Web の未来は明るいこと、DeNA が H2O 開発の成果を社会に還元し、HTTP/2 サーバ実装の分野で競争をリードしていることを述べました。

DeNAインフラの今とこれから

本発表は前後半の2部構成でした。
前半の「今編」では、DeNA の現在のシステム・インフラストラクチャーの概況とその運用について。 そして後半の「これから編」では、今後そのインフラ構成をどのように変えていくかと、そのねらいや意義について、発表しました。

前半 〜今編〜

登壇者は、入社4年目のインフラエンジニア KABE TOMOYA (@limitusus)です。

発表ではまず、DeNA のサービスを支えるシステム基盤のサーバ構成や台数といった概況、及びそれらを管理する人的体制について紹介されました。
その後は、主にシステム運用で使われる数々のツールや、それらの利用方法の説明に多くの時間を割きました。

最後に、DeNA インフラにおける AWS を中心としたクラウド活用の事例を紹介し、オンプレミスとの比較について見解を述べました。

3A4A4990.JPG

後半 〜これから編〜

後半には、IT基盤部部長の ONO ATSUSHI が登壇しました。

発表の導入には、2つの数字を紹介しました。 1つ目は、IT基盤部が2015年に関わった新規案件の数、そして2つ目は、IT基盤部が関わる事業ドメインの数です。

3A4A5008.JPG

多くの案件を少人数で運営していくには、Deep なものを Deep にしていくだけでなく、Easy なものを Easy に運用するための工夫が必要になります。
本発表では、主に後者の点にフォーカスした今後の取り組みについて紹介しました。

具体的には、OpenStack、Ceph、LBaaS といった要素技術を組み合わせて、オンプレミス上にプライベートクラウド環境を構築し、既存システムをリプレースしていく取り組みを行っていく方針です。

結びに

今回、紹介した2セッションは、現在の私の業務範囲にも非常に近いものです。
上手く紹介できたかわかりませんが、ご興味を持たれた方は是非、スライド資料や、今後公開される発表動画も合わせてご覧ください。

来週もまた、別セッションの振り返り記事が投稿される予定です。
そちらも、どうぞお楽しみに。

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA TechCon 2016 開催レポート【2】

こんにちは。SWETの加藤です。

1月29日、DeNAは技術カンファレンス「DeNA TechCon 2016」を開催いたしました。 DeNAエンジニアブログでは数回に渡りその内容を振り返り、発表がどのようなものだったかをご紹介します。

第2回となる本記事は、以下の講演についてのものになります。

カンファレンス全体を紹介する、前回の記事はこちらです

DeNAのゲーム開発を支える技術クライアントサイド編

弊社の BONO HIRONORI による、HTML5のブラウザゲームの基盤技術の発表です。

DeNAがパートナーに提供している、CreateJSベースのゲームエンジン CreateJS-Lite(仮)と、さらにネイティブAPIを使うことにより高速化したCreateJS-Lite Acceleratorが紹介されました。

CreateJS-Lite(仮) Acceleratorは近日リリース予定のラプラスリンクに使われています。

ちなみに、CreateJSはオープンソースのJS製ゲームエンジンで、CanvasなどHTML5の機能を利用したブラウザゲームを開発できるものです。

発表概要

3A4A4616.JPG

CreateJS-Lite(仮)と CreateJS-Lite Acceleratorは、ネイティブアプリ並の品質を、ブラウザゲーム並の開発費で作るために作られているとのこと。

なお、CreateJSの実行速度を10倍にする(!)というミッションで作られたそうです。

CreateJSはもともとCanvas 2Dで画像を描画しているが、CreateJS-Lite(仮)ではCanvasではなくWebGLやNative OpenGL ESを使うことで高速化したらしいです。また、サウンドも、CreateJSで使われるWeb AudioやHTML Audioだけでなく、OpenSL ESも使うようにしているのだとか。

さらに、CreateJS-Lite(仮)では、キャッシュにIndexedDBを利用しているそうです。IndexedDBはバイナリを扱えるので、それを使って画像や音声をキャッシュしているんですね。

ただ、CreateJS-Lite(仮)はCreateJSの100%互換ではなく、バグもあるそうです。たとえば、メモリ使用量が多くなり、CSSアニメーションみたいなCPUを使う機能と同時に使いにくいなど課題もあるのだとか。そういった事情から、CreateJSアニメーションの負担を軽くしたり、不要なCreateJSオブジェクトを削除するなどの工夫をゲーム開発者にしてもらっているそうです。

CreateJS-Lite(仮) AcceleratorはCreateJS-Lite(仮)を更に高速化したものです。こちらはネイティブAPIを直接呼び出しているため、理論上はネイティブアプリと同等の処理速度が出せるようになっています。

感想

スピーカーのユニークな人柄が表れた発表でした。「CreateJSの速度を10倍にする」と聞いたときは本気かこの人はと思ったものですが、やろうと思えばネイティブアプリレベルまで高速化はできるんですね。驚きました。

スライドはこちら: DeNAのゲーム開発を支える技術 (クライアントサイド編) from denatech2016

DeNAのゲーム開発を支えるGame Backend as a Service

Sakashoという、社内で開発・運用しているBaaSについての発表です。Sakashoはネイティブアプリゲーム開発のサーバサイドを担当するもので、これさえあれば、ゲーム開発者がサーバ側の開発をほぼしなくてもよくなります。

Sakashoという名前が表に出るのは今回初めてとのこと。妙なネーミングですが、これは日本酒のプロフェッショナルを意味する「酒匠」からとったようです。

なお、当初は弊社の YOKOTA TAKEHIKO (@i_am_skirnir) が発表する予定だったのですが、スピーカーを交代して HARUYAMA MAKOTO (@Spring_MT) の発表となりました。

発表概要

IMG_8648.JPG

Sakashoはゲームのサーバサイドを担当するが、それをクライアントで利用するためのSDKも提供しており、課金・Push通知などOS依存の機能も用意しているそうです。ランキング、掲示板、ギルド、ログインボーナス......。「スマートフォン向けゲームならあるだろう」という機能が一通り揃っているとのこと。

Sakashoを開発するにあたり、最初からMicroservices的な設計で開発していったのですが、そのことを今は後悔しているそうです。

まず、Microservicesは運用工数がけっこうかかるとのこと。Sakashoチームは10人前後で構成されているのですが、担当を細かくわけてはおらず、全員が全部を見る状態になっていて、結局管理工数が大きくなってしまったのだとか。今では「最初はモノリシックな作りにして、あとで必要になってから分けたほうがよかった」と考えているそうです。

また、Sakashoの開発言語にはRubyを選択したそうです。DeNAはPerlの会社のイメージが強かったが、Rubyで開発、運用をこなしているメンバーが多かったし、フォローできる人材もいたため、Rubyを採用できると考えたのだとか。

ただ、Perlで作られた資産をRubyに移行するにはそれなりの苦労もあったようです。たとえば、DeNAで使っているdaemontoolsでRubyのWebアプリケーションを管理するための仕組みを作ったこと(詳しくは 「Server::Starterに対応するとはどういうことか」の補足 に書かれています)や、社内でのPerl Webアプリケーションと同様の運用体制を実現するために、UnicornのWorker状態監視ライブラリやUnicornのデバッグ用ライブラリを作ったことなどが話題になりました。ほかにも、社内Rubygemsサーバーを構築したり、社内アプリ配信ツールのIotaをRailsで作って、社内での実績を作ってRubyへの信頼を高めていったそうです。

感想

Sakasho便利そうですよね。これがあったら、面倒な、それでいて必要不可欠な作業がかなり省略できて、ゲーム開発が楽になりますね。

Microserviceの失敗について、率直な振り返りがなされたのが印象的でした。開発の初期段階ではモノリシックに作ったほうが効率が良くなってしまうのですよね。設計をMicroservices的にするかはよく考えてからのほうがよく、もしもMicroservicesにするのなら、軌道に乗ってからにすべき、という教訓が得られました。

そういえば、先日開催されたCookpad TechConf 2016で、巨大なモノリシックアプリケーションとなったサービスの分割に関する発表がありました。こちらの発表では、モノリシックなアプリケーションを分割するのに苦労したという話だったのですが、開発効率の観点からすれば、開発の初期ではモノリシックに作ったほうがよく、最初期にモノリシックなサービスにしたのはむしろ大正解だったのではないかなと思いました。

また、開発言語にRubyを採用した結果、自分たちでRubyのライブラリをたくさん作ることになったというエピソードも興味深いです。Webアプリケーションの開発といえばいまや「とりあえずRubyでRails」と考えてしまいがちですが、案外、PerlにあってRubyにないライブラリがあったりするのですよね。欲しいライブラリがRubyにないとき、自分たちでライブラリを作れる技術力がSakashoチームの強みになっていることがわかりました。

スライドはこちら: DeNAのゲーム開発を支える Game Backend as a Service from Makoto Haruyama

他の来場者の方のまとめ

DeNA TechCon 2016をブログ記事にまとめてくださった方もいます。ぜひこちらもご覧ください。

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA TechCon 2016 開催レポート【1】

こんにちは。IT基盤部の安武です。
去る1月29日、DeNA で初となる技術系カンファレンス「DeNA TechCon 2016」を開催いたしました。
当日は雨天にも関わらず、のべ1000人以上の方々にご来場いただきました。ありがとうございました!

さて、本エンジニアブログでは、これから数回に分けて「DeNA TechCon 2016」の内容を振り返り、紹介していきます。
第1回となる今回は、カンファレンス全体の進行や内容を、ざっと振り返りたいと思います。

進行

カンファレンスは、以下のような流れで進行しました。

  • オープニング
  • 講演(4トラック×4〜8本)、及び カジュアルトーク
  • クロージング
  • 懇親会

前日までの準備やリハーサルを積み重ねたおかげで、特に大きなトラブルもなく、スムーズに会を進行することができました。

内容

まず、オープニングでは、弊社の執行役員システム本部長である木村から、カンファレンスの概要と意気込みをお伝えしました。

IMG_8531.JPG

続くメインの講演の内容について、各トラックのコンセプトを簡単に紹介します。

  • 会場A「DeNAが切り拓く最前線」 ... HTTP/2 や Software Test など、業界の中でも比較的新しめの技術トピックについて、DeNA の直近の取り組みを発表しました。
  • 会場B「DeNAの新しい挑戦」 ... VRサービスや自動運転など、DeNA の様々なサービスにおける技術的挑戦について紹介しました。
  • 会場C「DeNAを支える技術」 ... DeNA の数多くのサービスを支えるインフラや技術基盤について発表しました。
  • 会場D「DeNAのゲーム開発」 ... DeNA の主力事業であるゲームについて、開発技術の変遷や要素技術に関するセッションを行いました。

一部を除く発表の動画や資料は、追って「DeNA TechCon 2016」のサイト上で公開される予定です。

講演の裏では、会場の1部屋を使ってカジュアルトークの発表を行っていました。
「新卒エンジニアから見たDeNA」「シニアエンジニアから見たDeNA」という2つのお題で、何名かのエンジニアに各々のテーマでトークを行ってもらいました。

IMG_8441.jpg

IMG_8744.jpg

そして、クロージングでは弊社取締役の川崎から、本カンファレンスの総括と謝辞を述べました。

3A4A5563.JPG

その後は、会場のレイアウトを一部変更して、懇親会が催されました。
お寿司やビールなどの飲食物が提供され、和やかな雰囲気で交流が行われました。

簡単でしたが、以上で今回の振り返りは終わりです。

次回以降は、私や他の社員が実際に聴講したセッションについて、ピックアップして内容を紹介します。

紹介するセッションを直にお聞きになった方には、新しい内容はないかと思いますが、「気になっていたけど見られなかった」というものがありましたら、次回以降の記事もご覧いただければ幸いです。

おまけ

カンファレンス当日の様子がわかるような写真を、何枚か掲載しておきます。

20160129_110852.jpg
通路の展示物
IMG_8353.JPG
会場で配布したノベルティの一部
IMG_8385.JPG
ロボットタクシー実験車両
IMG_8498_m.jpeg
会場Aのオープニング前の様子
IMG_8919.JPG
会場Bでの発表のグラフィック・レコーディング
IMG_8301_m.jpeg
スタッフ集合写真

多数のご来場をいただき、ありがとうございました!!

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

Global Scrum Gathering Prague参加レポート#1

こんにちは。貝瀬です。 ヒューマンリソース部門で、組織開発や人材企画を担当しています。もともとはエンジニア畑の出身でして、4年ほど前に自部門の開発プロセスを改善することを目的にスクラムを導入しました。現在は、社内でスクラムを導入したい人たち、スクラムを実践するなかで困っている人たちをサポートする立場でスクラムに関わっています。

11/16〜11/18の3日間、国際学会派遣制度を利用して、プラハで行われたGlobal Scrum Gatheringに参加してきました。今回のブログでは、1日目に出席したセッションについてレポートします。

Scrum Gathering について

スクラムギャザリングは、大きく分けて、トーク型セッション、ワークショップ型セッション、オープンスペースから構成されるイベントです。Globalを冠するスクラムギャザリングは、ヨーロッパ、アメリカ、その他の地域でそれぞれ1回ずつ、年間3回開催されています。私見ですが、ヨーロッパはスクラムを取り巻く組織や人のテーマが多く、アメリカはスクラムフレームワークそのものやスクラムと相性の良い技術のテーマが多いようです。

ギャザリングが行われたホテルはこんな雰囲気でした。プラハの旧市街という場所にある、観光に便利なロケーションです。 IMG_2221.JPG

メイン会場です。場所が遠いせいか、アジア圏から参加した方は少なめでした。 IMG_2211.JPG

Organizing for Complexity

Evernote Camera Roll 20151124 200238_1.jpg

Speaker : Niels Pflaeging氏 Session : Opening Keynote

1日目のオープニングキーノートです。ダイナミックに変化する複雑な市場環境において、ビジネスで成功を収めるためにどのような組織であるべきかという話がされました。

Evernote Camera Roll 20151125 173042_1.jpg Evernote Camera Roll 20151125 173042_2.jpg

従来の組織の形を左側の図(Industrial Age)とすると、Niels氏の提唱する組織の概念は右側の図(Knowledge Age)となります。Knowledge Ageの組織では、意思決定の権限と顧客とのコミュニケーションを中央層(マネジメント)から外層(現場)に非中央化しています。外層に所属する人たちが市場とのコミュニケーションを通じて学習しながら、意思決定を行っていきます。中央層の人たちは、外層の人たちを必要に応じてサポートします。外層と中央層の人たちの役割は、動的にスイッチします。

Evernote Camera Roll 20151124 200238_2.jpg

このモデルでは、意思決定をするためのナレッジと権限が組織の隅々に分散され、ハイパフォーマンスな組織が実現できるそうです。概要は理解できたのですが、どのようにして実現するのかはまだイメージができていません。書籍も頂いたので、じっくり読み込んで理解を深めたいと思います。

SlideShareにスライドも公開用されています。

From Non-Violent Communication to Potential-Focused Communication

Speaker : Ralph Miarka氏 Session : Talk

コミュニケーション手法に関するトークセッションです。Non-Violent Communication(非暴力コミュニケーション:NVC)とソリューションフォーカスという2つのコミュニケーション手法を組み合わせたものが、Ralph氏の提案するPotential-Focused Communication(ポテンシャルフォーカスコミュニケーション:PFC)ということでした。

NVCでは4つの要素に着目してコミュニケーションを行う手法です。

  1. 観察(Observation)
  2. 感情(Feeling)
  3. ニーズ(Need)
  4. リクエスト(Request)

PFCでは、より解決策に焦点をあてるため、以下のようなコミュニケーションになるようです。

  1. Preferred Observation
  2. Preferred Feeling
  3. Need
  4. Solution-Focused Question

例が示されないと分かり難いですね。ということで、Ralph氏が紹介していたサンプルも掲載します。

  1. When I'll see that {preferred observation}
  2. Then I'd be {preferred feeling}
  3. Because I value {need}
  4. {Open question} e.g. How could we manage that?

※ 適当な日本語訳が用意できずすみません...

相手との関係性改善、問題の早期解決促進に有用なコミュニケーション手法だということです。色々な方と1on1ミーティングをすることが多いので、今回紹介した4つの要素を意識したコミュニケーションも実践してみようと思います。

Looking Beyond Agile - Using Customer Experience Management (CEM) to Build the "Right" Product

Speaker : De Gregorio, Biase氏 Session : Talk

Evernote Camera Roll 20151207 132158_1.jpg

スクラムでは、 Build the right thing(正しいモノを作る)のはプロダクトオーナーの役割、Build the thing right(正しくモノを作る)のは開発チームの役割と定義されています。本セッションでは、正しいモノを作るための方法論として、CEM(Customer Experience Management:顧客経験管理)、特にSCO(Successful Customer Outcome)についての紹介がなされました。

SCOはリーンキャンバスと似た用途で用いられるようで、SCOにアラインするようにフィーチャーを定義したり、MVP(Minimum Viable Product)を定義したりするようです。

Evernote Camera Roll 20151207 132158_2.jpg Evernote Camera Roll 20151207 132159_3.jpg

こちらも資料が公開されています。

まとめ

1日目に参加した3つのセッションを、簡単にレポートさせていただきました。次回は残りのセッションをお届けします。

雑記

チェコは個人的に大好きな国の一つです(縁あって、プラハは今回で二度目の訪問となります)。あまりなじみのない国かもしれませんが、日本人に親しみの深いラガービールやピルスナービールは、チェコが発祥だと言われています。ビールに合わせて作っているせいなのか分かりませんが、料理も日本人の口に良く合います。周りに海がないせいか、肉料理が主体です。観光客向けのお店は例外ですが、ビール1杯100円〜200円、メインディッシュ1皿500円程度でお腹いっぱいになることができます。夕食にお腹いっぱいビールと食事を頼んでも、2000円はかからない計算ですね。

次回の雑記ではチェコの町並みをレポートしたいと思います。

専用のビールグラスで提供されるお店が多いです。このサイズだと100円代で飲めます。 Evernote Camera Roll 20151207 195207_1.jpg

メインディッシュにはだいたいクネドリーキ(茹でパン)がついてきます。これが案外美味しいんです。 Evernote Camera Roll 20151207 195207_2.jpg

ザワークラウト(キャベツの酢漬け)のスープです。飲んだ日の翌朝に最高なのですが、これを食べているとまた飲みたくなってきます。 Evernote Camera Roll 20151207 195207_3.jpg

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

WWDC15参加レポート

こんにちは。@kenmazと申します。2013年にDeNAに中途入社して以来、マンガボックスのiOSアプリ開発を担当しています。

さて今回DeNAの国際学会/カンファレンス参加支援制度を利用し、Appleの開発者向け会議であるWWDC15に参加してきました。 私個人としても初めてのWWDC、そして初めてのサンフランシスコ滞在ということで、刺激の多い充実した一週間となりました。

WWDC15 について

WWDC15は6/8から6/12の5日間にわたって開催されました。

1_wwdc.jpg

初日のキーノートスピーチでは、ティム・クックを始めとするAppleのトップ陣が登壇し、一般のユーザー向けの内容を含む発表が行われました。初日の午後は、開発者向けのキーノートスピーチとも言える「Platform State of Union」というセッションがあります。開発者はまずこのセッションを聴講することで、今年のWWDCの発表内容の全体像を把握することができます。

3_keynote.jpg 朝4:30からキーノートの行列に並んだ結果、真ん中よりちょっと前よりの位置の席をゲット

2日目以降は、各技術の詳細を紹介するセッションがひとコマ40分で、9:00〜18:00の間にびっちりと予定されています。セッションのスケジュールはWebサイトやWWDCのiOSアプリで公開されているので、参加者は興味のあるセッションを調べスケジューリングし、各会議室に移動してセッションを聴講します。まるで大学時代の授業を受けているような感覚でした。

スクリーンショット 2015-06-18 18.25.18.png びっしりスケジュール

WWDC15注目トピックス

さて、今回のWWDCでは、iOS,OSX,watchOSという3つのOSの存在感が非常に強く打ち出されていました。昨年まではiOSとOSXに関するセッションがほとんどでしたが、今回新たにwatchOSがテーマに加わり、さらにSwiftに関するセッションも増えました。昨年のWWDCと比べてもセッションの数が増え、最終日まで非常に濃い時間を過ごすことができました。

そんな沢山のセッションの中から、個人的に興味深く感じたセッションの内容をざっくりと紹介します。

2_register.jpg レジストレーションを完了しご満悦の図

watchOS 2

従来のWatchKitを用いて開発されたアプリは、ユーザインタフェースの表示と入力操作のみApple Watchの実機上で処理され、その他のあらゆる処理はペアリングされたiPhone上で動作するExtensionのプロセス上で実行されていました。

そのためWatchアプリを動作させるには必ずiPhoneが近くにある必要があり、またWatchアプリを操作するたびにiPhoneとの通信が発生するので、動作も若干もっさりしていました。また、使用できるAPIにも大きな制限がありました。

今回発表されたwatchOS 2では、このあたりの問題が一気に解決されました。

まず、従来iPhone上で動作していたExtensionのプロセスがApple Watch上で動作することにより、基本的にすべてのアプリの処理がWatch上で実行されるようになりました。これにより、iPhoneが近くになくてもWatchアプリは動作するようになり、またほとんどの処理がWatch上で完結するため、もっさり感の解消も見込まれます。

また使用できるAPIの制限も大幅に緩和され、グラフィックス処理、モーションセンサーへのアクセス、そしてApple Watchから直接インターネットにアクセスすることも可能になりました。また時計盤上に表示される情報を制御するためのComplicationを開発するためのAPIも公開されました。

watchOS 2により、より多くのアイデアをWatchアプリとして開発できる環境が整ってきました。まだ世間一般にはまだいまいち浸透していないApple Watchですが、watchOS 2 の登場により、生活を大きく変える、あっと驚くようなアプリが登場するかもしれません。

4_breakfast.jpg

事情により写真は載せれないので代わりに朝食の様子でも・・

Universal linksとSearch

地味ですが今後iOSアプリを開発する上で重要になってきそうなのが、Universal linkと、App Searchです。

これまでアプリ上のコンテンツを友達に共有したい場合は、例えばアプリ内の"シェア"ボタンをタップしてURLをSNSやチャットなどで送信し、URLを受け取った側はwebブラウザ上でコンテンツを閲覧するか、対応するアプリを持っていればURLスキームの仕組みを使って、webブラウザを経由してアプリを起動する、ということを行ってきました。

どうしてもWebブラウザを経由する必要があり、あまりスマートな共有の方法とはいえませんでした。

Universal linkは、URLをタップしたらWebブラウザを経由せず、ダイレクトにアプリを起動し目的のコンテンツを表示する、といったスマートな体験を可能にする機能です。

Artboard 2.png

またApp Searchは、iOSのSpotlight検索画面から、アプリ内のコンテンツを検索可能にするための機能です。

検索のために必要なデータは、Cloud IndexというAppleがホストするサーバー上に集約されます。世界中のユーザがアプリを使ってコンテンツを表示するたびに、Cloud Indexにコンテンツのインデックスが蓄積されていき、それらが各ユーザのSpotlight検索の検索結果に反映されます。また、Web上のコンテンツにも対応するアプリの情報をタグとして記述しておくことで、Applebotと呼ばれるAppleのWebクローラーがクローリングを行い、その結果もCloud Indexに反映されます。

たとえば、「いま巷で"恋と嘘"というマンガが話題らしいな・・」と思ったらSpotlight検索で「恋と嘘」を検索すると、検索結果として「マンガボックス」が表示され、アプリがインストール済みであれば検索結果をタップするだけで、アプリが起動しダイレクトに「恋と嘘」を読み始めることができます。

あるいは「アップルパイを作りたいのでレシピを見たいな・・」と思った場合は「アップルパイ」と検索すると、アップルパイのレシピを表示できるアプリの一覧が検索結果として表示されます。

このように、Universal link や App Searchが充分に普及すれば、Webブラウザを経由すること無く、あらゆる情報やコンテンツへのアクセスにアプリが使われるようになるかもしれません。自分たちのアプリのコンテンツがきちんとCloud Indexにインデクシングされるように設計しておくことが、今後重要になりそうです。

Swift2

WWDC初日のキーノートスピーチでは様々な取り組みが紹介されましたが「Swiftをオープンソースとして公開する」という発表の時が一番客席が沸いていました。そんなホットなSwiftですが、Swift2では様々な新機能が追加されました。

個人的に興味深かったのは Availability Checking の機能です。以下のようなif文を書くことでiOSのバージョンごとにアプリの挙動を変えられるようになります。

available.png

これまでも respondsToSelector メソッドを使うことで同様の分岐を実現することは可能でしたが、あまり安全な手法とはいえませんでした。基本的にrespondsToSelectorの引数には任意の文字列を指定することが可能なので、タイプミスなどで存在しないメソッド名を指定してしまったり、そもそもうっかりrespondsToSelectorによるチェックをし忘れてしまったとしても、エラーもなくコンパイルは成功してしまいます。

一方で Availablity Checking ではコンパイラがアプリのDeployment Targetで指定されたOSバージョンと、コード上のAPI呼び出しをチェックすることで、このあたりの安全性を保証してくれます。

例えばDeployment Target = iOS8 に設定されたアプリでは、

if #available(iOS 9.0, *) {...}

でチェックされたブロック内でのみ、iOS9のAPIを呼ぶコードを書くことができます。Availabiliy CheckingをせずにiOS9のAPIを呼び出すコードを書くと、コンパイルエラーが発生するため、うっかりiOS9のAPIを呼び出すコードを書いてしまった、というようなミスを完全に排除できます。

Availablity Checking はBaseSDKがiOS9以上であれば使用可能なので、アプリ自体はiOS7以降のサポートを維持しつつ、最新のiOS9のAPIを積極的に使っていく、といったことも可能になります。

また、Availablity Checking機能を使えるのはSwiftだけなので、既存のコードをObjective-CからSwiftにマイグレーションする大きなモチベーションにもなりそうです。

その他にも、新たに以下のような機能や改善が追加されました。

  • 新しいコンパイラ最適化レベルであるWhole Module Optimaztionの追加
  • try-catchによるエラーハンドリングのサポート
  • protocol extension
  • guard構文
  • SDKが提供するAPIのSwift最適化など

また、Swiftによるプロトコル指向プログラミングについてのセッションや、Swiftプログラムのチューニング、ObjcとSwiftの相互運用性についてのセッションなど、プログラミングテクニック的なセッションも数多くあり、非常に興味深い内容でした。

以上のとおり、Swiftはバージョン2.0によってかなり進化を続けており、またSwiftのみで恩恵を受けられる機能の追加もかなり多くあり、今後よりいっそうObjective-CからSwiftへの移行がすすみそうです。

Multitasking

アプリから離れることなく別のアプリを起動することができるSlide Over、画面を2分割して複数のアプリを同時に操作できるようにする Split View などの機能が公開されました。

機能の素晴らしさもさることながら、これまで開発者に向けて Size Class や AutoLayout などのAdaptive UI系の技術の利用が盛んに推奨されてきましたが、それもこのような機能を実現するための布石のひとつだったのか、と思うと関心してしまいます。

ラボ

セッションだけでなく「ラボ」もWWDCの大きな魅力の1つです。WWDC期間中の9:00〜18:00まで、会場にはiOS/OSX/watchOSを開発したApple社員が多数常駐しているブースがあり、各技術についての質問や改善要望など、なんでも相談にしにいける、というのがラボです。またAppStoreのレビューチームもラボを開いているので、審査官に対して、直接アプリの審査について質問したり、リジェクトされた場合にその理由を詳細に深堀りして質問することもできます。またAppleのデザインチームもラボを構えているので、自分の作ったアプリのUIについてアドバイスを貰ったりすることも可能です。

ラボは、これまで日々の開発でつまづいたり悩んだりしたことを、一気に解決する絶好のチャンスです。また初日にXcode7が公開されたので、さっそくダウンロードし、新しいAPIを使ってみて、そこで出た疑問などもすぐにラボに聞きに行けるのが楽しかったです。

今回は、以下の様な質問や相談をラボに持ち込みました。

  • App Review Lab
    • コンテンツのエロ・グロ表現の基準に関する質問
    • IDFAの取り扱い方についての質問
    • IPアドレス制限によるコンテンツの出し分けに関する質問
  • StoreKit and Reeipts Lab
    • Sandbox環境における不可思議なIAPの挙動についての質問(=>結局原因がわからず、再現手順をまとめてフォーラムに投稿しといて!とのことでした)
  • Internationalization Lab
    • Export/Import Localization機能の改善要望
    • Storyboardをローカライズする際のstringsファイル再生成時の問題について
  • App Search and Spotlight Lab
    • iOS9で導入されたApp Search機能を実際に使ったサンプルアプリを作ってみたけど動かないんだけど?(=>僕のプログラミングミスでしたorz)
  • Core Data Lab
    • CoreData周りで原因が解決出来ないクラッシュがあったのでその相談(=>解決!)
  • UIKit and UIKit Dynamics Lab
    • UIViewController/UIViewのライフサイクルに関する質問

その他、細かい質問など、カジュアルに質問しに行ける雰囲気がよく、何度も質問しにいきました。

6_lab_coredata.jpg こちらはCore Data Labの行列。みんな問題を抱えています。

英語について

ラボで相談に乗ってくれるApple社員の方々とは、基本的に英語でのコミュニケーションになります。自分自身、そんなに英語が得意というわけではないのですが、意外となんとかなりました。とにかく質問しに行く前にしっかり質問したいことを頭のなかで整理すれば、とりあえず自分の言いたいことは伝わりました(と思っています)。ときどき相手が何を言っているかわからないこともありましたが、何度も聞き返すことで、(ありがたいことに)表現をいろいろ変えて説明してくれるので、助かりました。

また、ラボでのやりとりはすべてiPhoneのボイスメモアプリで録音させてもらったので、理解できなかった会話をあとで聴き直す、といったこともできて良かったです。

WWDC関連イベント

WWDC開催期間中は、サンフランシスコ現地のIT企業によるミートアップやパーティなどのイベントが盛んに行われていました。18:00までセッションを受講した後は、それらのイベントに参加するのも楽しかったです。今回私が参加したイベントを幾つか紹介します。

WWDC Hike

WWDCの開催前日にWWDC参加者が集まって、サンフランシスコの北部の海岸沿いをハイキングしよう!というイベントです。WWDCのレジストレーションを完了し、記念品としてもらったジャケットを着てサンフランシスコの街中をうろついていると、このイベントの主催者に偶然声をかけられ、ぜひ来なよ!と誘われたため参加することにしました。

イベントのwebページには集合場所が曖昧にしか書かれておらず、いざ集合時間になってもあまり人がいなかったのでがっかりしていましたが、徐々に腕にApple Watchを巻きつけた人々や、WWDCジャケットをきた人々がわらわらと集まりはじめ、最終的には200人ほどの参加者が集まりました。日本人の参加者はどうやら私だけのようでしたが、慣れない英語を使いながら、ロンドン、ドイツ、モロッコなど、世界中のアプリ開発者たちとプログラミングの話や母国についての話などが出来たりして、非常に楽しかったです。

計4時間ほど海沿いの歩きづらい道を歩いたので、日々の運動不足もあり、相当疲労しましたが良い思い出となりました。

10_hike.jpg

14_hike2.jpg

CocoaPods meetup

iOS/OSXアプリ開発におけるライブラリの管理の定番ツールであるCocoaPodsの開発者達によるミートアップです。Twilloという会社のオフィスを使って開催されました。普段からよく使っているツールの開発者たちの話を聞けるのは楽しいものです。

8_cocoapods.jpg

Foursquare WWDC15 Event

Foursquare/SwarmのiOSアプリ開発者によるプレゼンテーション&パーティのイベントです。Foursquareのオフィスはいかにもベンチャー、という感じでなかなか雰囲気が良かったです。こちらのイベントでも各国の開発者といろいろ雑談することができました。

9_foursq.jpg

Realm Party

iOS/Android向けの組み込みデータベースを開発しているRealmという会社で開催されたパーティです。日本のiOS開発界隈で有名な岸川さんや、rebuild.fmでお馴染みの宮川さんも参加しており、楽しい時間を過ごせました。後半はなぜかマリオカート大会が行われました。すごく難しかったです。。

15_realm.jpg

DeNA West訪問

DeNAのサンフランシスコの拠点であるDeNA Westにも訪問しました。海沿い&ジャイアンツの球場が目の前にあるというロケーションが非常に良かったです。現地のエンジニアと話したり、お土産をいっぱいもらったりしました。

11_denawest.jpg

シリコンバレー観光

サンフランシスコ滞在の最終日にはスケジュールに余裕が合ったので、現地の友人と一緒に車でシリコンバレーをめぐり、Apple、Google、Youtube、Twitterなどの有名IT企業を(外からですが)訪問しました。またエンジニアなら一度は行ってみたいと言われるコンピューター・ヒストリー・ミュージアムにも立ち寄ることができました。憧れの?シリコンバレーの雰囲気を味わうことができ、良かったです。

13_apple.jpg

まとめ

私は2008年ごろからiOSの開発に携わってきましたが、毎年WWDCのチケットが取れず悔しい思いをしていました。今回は幸運な事にチケットをゲットすることが出来、さらに費用面やその他の面で会社にバックアップしていただきました。また(チームのみんなには申し訳ないですが)しばし仕事のことを忘れWWDCにどっぷり浸かることができ、エンジニアとしても非常によい刺激を受けることができた一週間となりました。

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

げんなま「ゲームプラットフォーム開発の舞台裏」版開催レポート

こんにちは、エンジニアの新卒採用を担当している福島です。
先日行われた、学生向けイベント「げんなま」について、レポートします!

※げんなまプログラミング教育版SHOWROOM版MYCODE版のレポートも併せてご覧下さい。

今回の登壇者


登壇者.jpg

今回は、「ゲームプラットフォーム開発の部隊裏」と称して、
DeNAのプラットフォーム事業を牽引してきた2名のエンジニアと、
このイベントではお馴染みの南場が登壇しました。

  • 木村(執行役員 システム本部長)
  • 山口(オープンプラットフォーム事業本部 副事業本部長 シニアアーキテクト)
  • 南場智子(司会者)

Mobage Open Platformを立ち上げた2人のエンジニアですが、
この2人はプラットフォーム開発を通じて、事業を作ると同時に
DeNAの技術力・技術コミュニティへの関わりを強化してきました。

※その辺りの話が、山口のスライドにまとまっています!

そんな背景もあり、今回のげんなまは、
今までに比べて、かなり技術寄りです!

そんな中、ところどころ、司会の南場が非技術者ならではのわかりやすい言葉で
議論に食らいついていく、珍しい場面も見られました。


リクエストを1つも落とさない、Hot Deployへの挑戦

IMG_7391.JPG

イベント前半は、プラットフォーム立ち上げ時の技術的課題について触れました。

webサービスは日々細かな修正を加え、改善させていくことが多いですが、
動いているwebアプリケーションに修正を反映させる「deploy」という作業が発生します。

deployの仕方はサービス要件によって違い、
金融機関のシステムのように不整合が許されなかったり、
システムの変更の際にwebアプリケーションにアクセスが来ると不都合がある場合などには、
サービス停止を行って deploy を行う事もありますし、
直近来ているリクエストを捌き切るのを待ってプログラムのリスタートを行うといった仕組みなどがあります。

Mobage Open Platformも高頻度で deploy することを想定していたのですが、
その際、多大なリクエストを1件も落とさない、「Hot Deploy」に挑戦しようと
FastCGI Server としてwebアプリケーションを構築しました。
しかし、FastCGI Server と当時利用していた daemontools との相性があまり良くなく、
当時は断念しました。
このような、現場の生々しいチャレンジと失敗談についてもイベントでは語られました。

大規模トラフィックを支える技術

プラットフォームでは、複雑な更新処理も走りますが、
そのたびにユーザへのレスポンスを待たせるわけにはいきません。

Mobage Open Platformで使われている、Q4Mという仕組みを題材に、
Queue処理について説明しました。

Mobage Open Platformでは、Q4Mを使うことによって、
レスポンスの高速化だけでなく、DBへの都度接続を減らすことができ、
大幅な負荷削減に繋がりました。

若いエンジニアの皆さんへ

イベントの中では、座談会・質問を通じて学生エンジニアへのメッセージを伝えました。

■技術コミュニティとの関わり方

色んなサービスを作っていく中で、OSSにはいつもお世話になっている。
(前述のQ4Mもその一つ。)
その分、自分が作ったものは必要な人に使ってもらえるようにすることで還元することは、非常に大切。

気をつけたいのは、コミュニティなどの勉強会に出かけるのが楽しくて、
それ自体が目的化してしまうこともあるということ。

コミュニティで有名なスーパーハッカーになりたい、というより、
「あのプロダクトを作ったエンジニア」として有名になりたい、
そういうエンジニアがDeNAを選ぶ事が多いですね。

「技術はあくまでモノづくりの武器でしかない」という考え方を、DeNAでは大切にしています。

■どんな風に技術を学べばいい?

駆け出しのエンジニア(自称)からの質問にも、同じメッセージを伝えました。

RSSなどを使って最新の情報はキャッチするようにはしていますが、
結局は「何を作りたいか」がブレないことが大切。
そのために必要な技術を学んでいけば、自然と身についていくものです。


次回はキュレーション

今回は技術の難しめの話でしたが、技術好きな学生に好評を頂きました!
また、DeNAエンジニア共通で大切にしている考え方に改めて触れられたことが、
とても良かったです。

次回はまた、サービス開発に焦点を当てて、
キュレーションのエンジニア・プロダクトオーナーが登壇します!

開催日時:6月18日(木) 18:30 開場 19:00 開演
開催場所:渋谷ヒカリエ DeNA本社
対象:2016年もしくは2017年卒予定のエンジニア志望学生
申し込み方法:メールにてお受けしています。
 宛先:shinsotsu@dena.jp
 件名:6/18 げんなま参加エントリー
 本文:お名前、ヨミガナを明記してください


※2017年新卒エンジニアも参加できるようになりましたので、お気軽にご参加下さい!

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

げんなま「小学1年生へのプログラミング教育」版開催レポート

こんにちは。
エンジニアの新卒採用を担当している、福島です。

4月2日に開催された、「げんなま」は、
「武雄市で実施している小学1年生へのプログラミング教育」を題材として、
CTOの川崎が登壇しました。

こちらのプロジェクトについては、インターネットなどで話題になっている割に、
その詳細は社内でも殆ど知っている人がいないという程、表に出ていませんでした。

今回はプロジェクトの生々しい話のみならず、
CTO川崎の生々しいエンジニアライフについてもご紹介しており、
みなさん ドン引き 興味津津でした!

※げんなまSHOWROOM版MYCODE版のレポートも併せてご覧下さい。

今回の登壇者

DSC_0271.JPG


今回登壇したのは、DeNAのCTO 川崎修平。

「げんなま」の毎回のファシリテート役でもある南場(DeNA ファウンダー)とは、
大学院生時代のアルバイトの時から、固い信頼関係があります。

CTO川崎修平の実態


川崎は、モバオクから始まり、Mobageやポケットアフィリエイト、
SHOWROOMのアプリなど、DeNA数々のプロジェクトを成功に導いてきました。

DSC_0234.JPG
▲川崎のDeNAでの経歴

川崎はCTOになった今も、がっつり現場に入って、
難しい技術・スピードが求められる開発を
一手に引き受けています。

仕事をしていて楽しいことは、
「普通だったら、1ヶ月くらいかかるかな」という仕事を、
「1週間でできるでしょ?」って言われて、
2日で仕上げるような時

と言う通り、川崎の開発のスピードは社内のエンジニアをいつも驚かせます。


今回は、その集中力の源、ドーピングとも言える、
開発グッズもお披露目しました。

DSC_0255.JPG

開発の必需品。左から、「午後ティー」(毎朝1本飲む)、
「お腹をふくらませる錠剤」、「頭を冷やす冷えピタ」、
「呼吸を忘れた時のための酸素」


武雄市、小学1年生へのプログラミング教育


全員に触れてもらえる「公教育」というアプローチ


DSC_0217.JPG

(南場) 「私はずっと、プログラミングが出来る人を
増やす必要があると唱えてきました。」


プログラミング教育を事業として展開している会社に
出資もしているDeNAですが、
これまで、プログラミング教育を
自社で進めたことは一度もありませんでした。


(川崎) 「プログラミング教育は、絶対に必要だけど、
DeNAの強みを活かせる領域では無いと考えていました。
塾など、教育に慣れている会社の方が合っていると思っていたからです。」


ですが、今回のプロジェクトは、今まで行われていたものとは
違う要素を持ったものでした。


(川崎) 「対象が小学校1年生、しかも公教育で全員を対象とする。
これは、何かを良い方向に変えられる可能性を感じました。」


(南場) 「全員をエンジニアにしたいというわけではありません。
今の大人が当たり前にハサミやのりを使えるように、
全員がプログラミングが何かを知っていて、
それぞれの進む道で、ITを用いて何ができるのかを
考えられるようになって欲しいと思っています。」


(川崎) 「そのためには、一つ教科が増えた・・・と感じるのではなく、
楽しい、怖くない、と思ってもらう事が、一番大事なことでした。」

先生と何度も打ち合わせし、プログラムを決定

実際に授業をする前には、先生と念入りに打ち合わせをしました。
先生も、プログラミングに関しては全くの初心者。
カリキュラムは川崎が考え、
それが45分の授業に収まるように、プロの先生と調整していきました。

DSC_0261.JPG

最終的に実施した、全8回のカリキュラム


8回の授業ごとに、毎回振り返りを行い、ちょっとずつ教材も修正していきます。
そのため、Scratch等の既存言語は今回は利用せず、
小回りの効く、かつタブレットで操作できる
専用言語を川崎自ら開発しました。

DSC_0260.JPG


自分で書いた絵・写真が、タブレットの中を動き出す

その中でも特にこだわったのは、自分で書いた絵や写真を、
登場人物として動かせるようにしたところです。

子どもたちは、作り出したい世界を決めて、
そのために必要な手法をとして、
for 文や if 文の概念を学んでいきました。

DSC_0283.JPG

イベントの中では、1年生が卒業生に送った、
「卒業生がみんなでロケットにのって飛んで行く」
というプログラムも披露されました。

DSC_0304.JPG


7~9割辛くても、全部自分で作る

イベントの中で、いかにも川崎らしい、生々しい声を拾えたので、
掲載しておきます。

インタビューとかで「苦しかったことはありますか?」 と聞かれるといつも、「特にない」と答えてました。

実は今、あるプロジェクトの佳境なんですが、めちゃめちゃ苦しいです。
苦しい時になると、「そういえばあの時も苦しかった」と、色々思い出します。

開発をしていて、楽しい時間なんて、1割から3割あればいい方。
残り7~9割は、辛い、地味な作業。
でも、この地味な作業を、人に任せたり手を抜いたりすることで、
プロダクト全体のコンセプトが壊れてしまうことがあることも知っている。

一切妥協せずに作り上げたものが、世の中に出た時は素直に嬉しいし、
それが成功して不可能に近い負荷対策が要求されたりするのは、
最高のご褒美。

そうしていると、開発中の苦しかったことなんて、また全部忘れてしまうんですね。

DSC_0245.JPG


質疑応答

プログラミング教育に携わったことがあるという方も参加しており、
いろんな質問が出てきました。

for 文や if 文の概念は大人に教えても苦労する。どうやって教えるのですか?

川崎 「とにかく目的に合わせて使ってみて、
使ったらできた、を繰り返すことで、知っているという状態にしました。
進み続けるには、とにかくこのブロックの中に歩くという命令を入れるんだ・・・みたいな。
1回目の授業でif文を教えるのに大失敗して、10分の休憩時間に教材を作りなおしたというエピソードもあります。」

生活に密着ということであれば、ハードと結びつける所を教えたりも検討していますか?

川崎 「それは面白いし、有りだと思う。
一方で、タブレットの中で、自分が書いた絵が、
命令通りに動き出すという、エンジニアからしたらなんともないことで、
子どもたちが目を輝かせる、その面白さも大切にしたい。」

続きを読む
ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る