KLab 福岡 Meetup #2 に参加してきました #klab_fukuoka_meetup

KLab 福岡 Meetup #2の参加レポートです。
2018.05.23

はじめに

少し時間が経ってしまいましたが、5/18(金)に KLab株式会社様 で開催された、KLab 福岡 Meetup #2 に参加しました。以下参加レポートです。

目次

  • KLabの勉強会の紹介
  • Unityネイティブプラグインの勧め
  • Google I/O 2018 参加レポート 〜I/Oの楽しみ方〜

KLabの勉強会の紹介

  • 前置き:ガルパン推し
  • エンジニアの市場価値を高める考え方
  • 市場価値とは?
    • 技術的要件を解決するためのスキル
      • 設計、実装、仕様策定、指導、コミュニケーションなど多岐にわたる
    • 給料高い
    • みんなで成長して給料をあげよう
    • 勉強会は価値を高めるための施策
  • 福岡勉強会
    • 毎週開催、福岡の開発メンバーが参加
    • 1人10分〜20分でテーマはフリー
      • 1年に2〜3回ぐらいの程よい持ち回り
    • 今までにやった内容
      • 新メンバーの自己紹介
      • 話題になってる便利なツール・WEBサービスを試してみる
      • 案件の情報共有
    • 色々なことのきっかけの場に
      • ジョークRFC
      • バランスボール
  • クリエイティブ勉強会
    • デザイナーのスキルアップ
      • CGソフトの使い方とか
    • 非デザイナーが参加してもOK
    • 月に1・2回
    • 運営者が発表社を支援
    • 外部向けにも活動している
  • ALM (All Layer Meeting)
    • あなたが話したいことを聴きたい人がいる
    • テーマ・セクション・拠点いずれもフリー
    • 月に1回
    • 1人5〜20分、4〜6名ぐらい
    • 任意で参加・登壇、途中参加・退室もOK
    • ベストプレゼンターを決める
      • おまけで商品をもらえたりする
    • Unity社を巻き込んだ内容も
  • まとめ
    • ニーズに応じた勉強会
    • 自分たちで開催すると会社も積極的に支援してくれる
    • 勉強会を通してみんなで成長する動き
      • 技術・知識の習得
      • 発表資料の作成
      • 人前で話す力

Unityネイティブプラグインの勧め

  • 目次
    • モバイルゲームに必要な機能
    • 共通ライブラリとは
    • ネイティブプラグインとは
    • ネイティブプラグインの実装事例
  • モバイルゲームに必要な機能
    • 様々なジャンルのゲームを作っている
      • RPG
      • 音ゲー
      • パズル
      • etc
    • 必要な機能とは
      • ゲームのコア部分の機能
      • コア以外にも必要
        • プラットフォーム上の課金処理
        • Push通知
        • データの引き継ぎとか
    • 個別実装はたいへん
      • 再利用できるようにしよう
      • 共通ライブラリを作ろう
  • 共通ライブラリとは
    • いろんなゲームで作ったコア以外の部分の共通部分を抽出
    • 他のゲームに組み込む、開発者はコア部分に注力できるようになる
    • ライブラリ化してる機能
      • クライアント開発の基本ライブラリ
      • チャットして有無
      • ストア課金
      • 統合アカウント
      • UIコンポーネント
      • KPIレポート
      • 運用管理
  • ネイティブプラグインとは
    • C#からネイティブを直接呼ぶ (C/C++/Obj-C/Java)
    • ネイティブ向けにのみ提供されている機能を利用できる
      • ディスク容量やバッテリー容量
      • iOS/Androidの最新機能
        • Androidのローカル通知
        • リッチなPush通知
        • etc
    • ios/Androidの両環境下で、共通的なインタフェースで利用できる
    • 機能を更新したい場合、ネイティブプラグインのみの更新で対応できる
      • Unityのバージョンは変更不要になる
      • 例: iPhoneXのセーフエリア取得
    • Unityからの呼び方
      • P/Invoke
      • AndroidJavaObject
        • JNI経由でAndroidのクラスを呼び出す
  • ネイティブプラグイン実装事例
    • ネットワーク通信機能をC#の既存からネイティブ実装に
      • 目的
        • 既存機能の不具合を解消したい
          • 特定条件で通信エラーを発生
            • 通信エラー復帰後も通信リトライが無限に続く場合がある
          • Wifi切断時も3G/4Gで通信を継続する
          • アプリの実装かAPIのバグか判別しにくい
        • サポートされていない機能を使いたい
          • SSL通信でSNIがサポートされていない
    • 書いたメリット
      • 既存よりも安定した
        • 通信異常関連の問い合わせ・レビューが激減
      • 通信の処理を把握できるように
        • 問題が発生しても開発者で対応できるように
    • 実際に解決した問題その1
      • 特定の環境での通信エラー
        • Okhttpはネットワーク接続失敗で暗黙にリトライ
        • 二重更新防止のためリトライをOFF、一部の環境(NTTフレッツ光)だと通信エラーが発生
          • IPv6接続失敗、IPv4のフォールバックでリトライしない
        • サーバへのリクエストを1回でも投げた場合のみリトライ不可に、それ以外はリトライ許可
    • 実際に解決した問題その2
      • オブジェクトの参照が増えすぎてクラッシュ
      • AndroidJavaProxy経由でC#の関数呼び出し
        • global reference table overflow が発生
      • ダウンロードの進捗表示のダウンロード、ファイルサイズを返す処理
      • 1リクエストにつき複数回呼ばれる、GC間に合わず回収されないJavaオブジェクトの参照が増えていき最終的にクラッシュ
      • Androidから呼び出す方法を見直す、C#から定期的にサイズを取得する処理を呼び出す
  • まとめ
    • ゲームの機能を共通化すると、ゲーム開発者はコア部分に集中できる
    • ネイティブプラグインを使うとUnity上でネイティブの機能を利用できる
    • アップデートを待たずに問題解決できる
    • KLabは共通化をすすめる
    • 技術の垣根を超えて開発できる Unity iOS Android
    • 共同開発パートナーを募集

Google I/O 2018 参加レポート 〜I/O の楽しみ方〜

  • Google/I/Oって?
    • Android OSの新バージョン発表
    • 2017はKotlin制式採用
    • 今年は5/8〜5/10の3日間
  • アジェンダ
    • I/Oって現地まで行く必要あるの?
    • 現地で楽しむ各種イベント
    • 現地会場の歩き方
    • Google I/O 2018情報
  • I/Oって現地まで行く必要あるの?
    • 行き方
      • 4月に申し込み→抽選
      • 当選したら支払い
      • イベント日程にあわせてカリフォルニアへ
      • 現地イベント参加
      • チケット代+航空券+ホテル+現地交通費 50万円ぐらい
    • 日本で参加する場合
      • 各種レポートやYouTubeなどで情報収集
      • YouTube
        • ほぼリアルタイム
        • 字幕機能が便利
      • 世界各地のI/O Extendedに参加
        • 現地映像をみんなで視聴
        • 発表された情報の報告共有会
    • どっちがいいの?
      • 日本国内派
        • さすがに高い
        • 日本での参加でも十分なんじゃない?
        • むしろ整理された情報とれて良い
      • 発表以外の楽しみは現地にいってこそ
  • 現地で楽しむ各種イベント
    • イベント5種類
      • Sessions
        • 新技術・サービスの公開
        • ベストプラクティス紹介
      • Office Hours & App Reviews
        • Google社員との1:1相談
        • アプリのレビューを受ける
        • 技術的な困りごとを質問・相談
      • Sandbox
        • Google提供のVR/AR体験
        • Firebaseを活用したゲームプレイ
      • Codelabs
        • サポートを受けながらサンプル実装
        • 新しい機能のベストプラクティス・活用シーンのヒントをもらう
      • After Hours
        • ライブや食事
        • 世界中の開発者との交流会
        • イベントをしっかり楽しむ
      • セッション + labsの一部以外は現地だけ!
    • I/O会場内の各所で様々なセッション
    • 会場の盛り上がりを知るには現地にいてこそ
      • 全世界の開発者たちがどういう発表に反応するか
    • 最新情報をGoogle社員に直接質問できる
      • Sessionsは表面的な部分で終わる
      • 実際に利用する場合の懸念は?
      • Codelabs か Office hoursで質問
    • Codelabs
      • サンプル実装のための環境が整ったPCが揃ってる
      • サンプル内容はネット公開されて日本でも試せる
      • 4つのサンプル実装をクリアすると、抽選で来年のI/Oチケットをプレゼント
      • 待ち行列がすごい
      • 自分のPC持ち込めば行列スキップ可
      • 中にはGoogleエンジニアがたくさん
      • サンプル実装でわからないことを聞ける
  • Office Hours & App Reviews
    • Googleエンジニアに1:1で相談できる場所
      • 日本語スタッフもほぼ常駐
    • アプリに対して技術的なレビューをもらえる
    • 発表直後の新機能への疑問・質問にも答えてくれる
    • 発表聞く→ラボで試す→オフィスで質問→再度ラボ
  • Sandbox
    • 新技術や新機能をすぐに試せる
    • ARブースはセッションで言及された Core + 機械学習を体験できる
  • After Hours
    • 色々な催しが開催される
      • 野外ステージでのライブコンサート
      • マジックショー
      • ヒップホップ/DJブース
      • etc
      • お酒片手に世界中のエンジニアと交流
  • 現地の歩き方
    • 英語について
      • 英語ができたほうがいいけど、できなくても楽しめる
      • 英語で話しかける度胸の方が大事
        • 上手でなくてもOK、カタカナ英語でも相手が聞き取ってくれる
      • 日本語の話せるGoogleエンジニアを呼べる
    • 日差しが強い
      • 配布されるサングラスと日焼け止めは必須
        • 塗らないとやけどする
      • 水分補給や塩分補給も忘れずに
    • ご飯事情
      • 結構おいしい
    • ノベルティ
      • Google Home Mini
      • Android Things Starter Kit
  • Google I/O 2018情報
    • 機械学習推し
      • Google Photoなど、既存のサービスへ導入
      • Android Pでの利用 (バッテリーの電力配分で使うなど)
      • 自動運転車 (Waymo)
    • AR/VRの人気衰えず
      • Sandboxは常に行列待ち
    • Google Maps API
    • Android App Bundle
    • 注目している背景
      • 64ビットライブラリ化必須でapkサイズの肥大化が想定されてた
      • 32ビット/64ビットの両方を含めると制限の100MiBにひっかかる
      • AppBundleを使うと環境に適したapkに分離される(32ビット用/64ビット用)
        • ユーザの環境に応じて必要最小限の内容をバンドルできる
          • CPUアーキテクチャごと
            • ARMv7
            • x86
          • 解像度ごと
  • まとめ
    • セッションだけが目的の場合は現地に行かないでも一定の情報を集めることができる
    • Googleや世界中の開発者達の熱量・推してる技術は現地のが直感しやすい
    • 発表内容を現地でGoogle社員にすぐに質問・確認できる
    • 特に新機能は、Google社員もフィードバックを求めてる

感想

どのセッションも勉強になることばかりでした。発表後の懇親会ではゲーム開発の技術的なことについても話を伺えてとても楽しかったです。次回のMeetupにも是非とも参加したいです!