Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
Mobage / AndAppのSDK
開発事例と SDKを作る
際に知っておくべきこ
と
February 10, 2017
Manabu Sato
DeNA Co., Ltd.
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
スピーカー紹介
 佐藤 学
 略歴
 2006年 某ポータルサイトの会社に入社
 アドレス帳、動画共有、検索 などのバックエンドエンジニア
 2010年 DeNA入社
 ゲームプラットフォーム開発をクライアント側を中心に担当
 MiniNation, Mobage (ngCore/NativeSDK), AndApp, etc
 現在
⁃ オープンプラットフォーム事業本部
システム開発部クライアントグループ GL
2
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
アジェンダ
 Mobage / AndApp SDK開発事例紹介
 SDK作る際に知っておくべきこと
 問題がおきやすいポイント紹介
3
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
Mobage SDK
 Mobage Open Platform
 2009年に開始したサードパーティ向けゲームプラットフォーム
 スマートフォンのネイティブアプリ向けにも機能提供
 プロダクトの種類
 Mobage SDK
 Native
 Unity
 ShellAppFramework (WebView-based App)
 NBPF Shell App SDK
 対応OS : iOS/Android
4
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
Mobage SDKのアーキテクチャ
5
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
ShellApp SDK のアーキテクチャ
6
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
AndApp
 スマートフォンのゲームをPCで遊ぶためのプラットフォーム
 現在はWindowsのみ対応。Macも対応予定あり
 提供中のSDK
 AndApp SDK for Unity
 AndApp SDK for C++
7
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
AndAppのアーキテクチャ
8
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
SDKを作る際に知っておくべきこと
9
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
SDKの特性
 SDKの設計がよくないと利用者に迷惑がかかる
 かんたんに使える ことが重要視される
 OS側の変化に対して一般アプリケーションよりも早く対応が必要
 バグを含んだものをリリースするとビジネス上の影響が大きい
• 多数のアプリに影響
• パートナー各社への差し替え依頼
10
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
そこで求められること
 利用者の邪魔をしない配慮
 わかりやすさ、拡張性、堅牢性への配慮
 環境変化への積極的な対応
 適切なテストアプリ要件と検証範囲のコントロール
11
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
利用者の邪魔をしない配慮 (1)
 APIはなかなか変えられないのでリリース前の設計を慎重に
 (特に社外に配布する場合) 一度導入が進んでしまうと多数のアプリ
に変更を入れてもらう選択肢はなかなか取れない
 APIを大幅に刷新したものを作る場合
 既存ユーザーから歓迎されるケースは少ない
 新規に導入する人が減ってしまうと、どうせ使われないので工数かけて進め
る判断にならない
 どうしても変えたい時、基本は別のAPIとして追加、既存APIを非推奨化
 古いAPIもすぐには無くせないので両方メンテする必要がでる
12
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
利用者の邪魔をしない配慮 (2)
 3rd partyのライブラリ依存を最小限に
⁃ 利用するアプリにライセンスが波及してしまう
⁃ 使っていないコードによるメモリやアプリサイズの肥大につながる
13
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
利用者の邪魔をしない配慮 (3)
 シンボル重複回避
⁃ クラスの名前空間、Prefixに重複しにくいものをつける
⁃ OSSライブラリを利用する場合、名前空間を変える
 共有リソースアクセス時の名前空間
⁃ Cookie、ローカルのファイル書き込み、Keychain,etc
⁃ 一貫したprefixをつける
14
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
わかりやすさ、拡張性、堅牢性への配慮
 わかりやすい がとにかく優先されるケースも
 用途や利用者によるが、メモリ管理やオブジェクト指向的にきれい
な設計とかよりも、staticなメソッド一発呼ぶだけというほうが好
まれることも
 拡張性
 API引数を変更せずに、プロパティ追加で対応できるようにまとめ
て渡す など
 ここでの堅牢性とは
 使い方によって問題が発生してしまいにくい作り
15
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
環境変化への積極的な対応
 SDK利用者の対応猶予期間を考慮した上で、スケジュールの検討が必要
 OS新バージョンの機能が発表されたら、まず既存アプリの挙動に影響す
る変更点を精査
16
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
適切なテストアプリ要件と検証範囲のコントロール
 データ操作的なAPIならさほど自動化は難しくない
 UIを表示するものや外部連携など、自動化が難しい部分も
 テスト用のアプリの作りによって実施可能な検証の範囲が制限される
 例: ビルド種別
 Unity4, Unity5, VS2013, 2015
 毎回すべてのパターンを実施すると工数が膨大になってしまう
 適切な範囲の絞り込みが必要
17
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
問題がおきやすいポイント紹介
18
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
公開を阻む問題
 SDKをリリースしたが、それを組み込んでiTunes Connect / Google
Playに公開しようとするとアップロードできない or リジェクト
19
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
設定しないと動かない機能
 アプリ側を適切に設定しないと動かない機能
⁃ Keychain Access
⁃ Notification
⁃ IAP / IAB
⁃ etc
 適切なエラーを返す必要性
 テストが面倒な状態のままだと問題がうまれやすい
20
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
まとめ
 利用者の邪魔をしない配慮
 わかりやすさ、拡張性、安全性への配慮
 環境変化への積極的な対応
 検証の難しさ
21
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
このような課題に
一緒に取り組んでくれる人、募集中です
22
Copyright (C) 2017 DeNA Co.,Ltd. All Rights Reserved.
ご静聴ありがとうございました
23

Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon

  • 1.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. Mobage / AndAppのSDK 開発事例と SDKを作る 際に知っておくべきこ と February 10, 2017 Manabu Sato DeNA Co., Ltd.
  • 2.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. スピーカー紹介  佐藤 学  略歴  2006年 某ポータルサイトの会社に入社  アドレス帳、動画共有、検索 などのバックエンドエンジニア  2010年 DeNA入社  ゲームプラットフォーム開発をクライアント側を中心に担当  MiniNation, Mobage (ngCore/NativeSDK), AndApp, etc  現在 ⁃ オープンプラットフォーム事業本部 システム開発部クライアントグループ GL 2
  • 3.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. アジェンダ  Mobage / AndApp SDK開発事例紹介  SDK作る際に知っておくべきこと  問題がおきやすいポイント紹介 3
  • 4.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. Mobage SDK  Mobage Open Platform  2009年に開始したサードパーティ向けゲームプラットフォーム  スマートフォンのネイティブアプリ向けにも機能提供  プロダクトの種類  Mobage SDK  Native  Unity  ShellAppFramework (WebView-based App)  NBPF Shell App SDK  対応OS : iOS/Android 4
  • 5.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. Mobage SDKのアーキテクチャ 5
  • 6.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. ShellApp SDK のアーキテクチャ 6
  • 7.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. AndApp  スマートフォンのゲームをPCで遊ぶためのプラットフォーム  現在はWindowsのみ対応。Macも対応予定あり  提供中のSDK  AndApp SDK for Unity  AndApp SDK for C++ 7
  • 8.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. AndAppのアーキテクチャ 8
  • 9.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. SDKを作る際に知っておくべきこと 9
  • 10.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. SDKの特性  SDKの設計がよくないと利用者に迷惑がかかる  かんたんに使える ことが重要視される  OS側の変化に対して一般アプリケーションよりも早く対応が必要  バグを含んだものをリリースするとビジネス上の影響が大きい • 多数のアプリに影響 • パートナー各社への差し替え依頼 10
  • 11.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. そこで求められること  利用者の邪魔をしない配慮  わかりやすさ、拡張性、堅牢性への配慮  環境変化への積極的な対応  適切なテストアプリ要件と検証範囲のコントロール 11
  • 12.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. 利用者の邪魔をしない配慮 (1)  APIはなかなか変えられないのでリリース前の設計を慎重に  (特に社外に配布する場合) 一度導入が進んでしまうと多数のアプリ に変更を入れてもらう選択肢はなかなか取れない  APIを大幅に刷新したものを作る場合  既存ユーザーから歓迎されるケースは少ない  新規に導入する人が減ってしまうと、どうせ使われないので工数かけて進め る判断にならない  どうしても変えたい時、基本は別のAPIとして追加、既存APIを非推奨化  古いAPIもすぐには無くせないので両方メンテする必要がでる 12
  • 13.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. 利用者の邪魔をしない配慮 (2)  3rd partyのライブラリ依存を最小限に ⁃ 利用するアプリにライセンスが波及してしまう ⁃ 使っていないコードによるメモリやアプリサイズの肥大につながる 13
  • 14.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. 利用者の邪魔をしない配慮 (3)  シンボル重複回避 ⁃ クラスの名前空間、Prefixに重複しにくいものをつける ⁃ OSSライブラリを利用する場合、名前空間を変える  共有リソースアクセス時の名前空間 ⁃ Cookie、ローカルのファイル書き込み、Keychain,etc ⁃ 一貫したprefixをつける 14
  • 15.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. わかりやすさ、拡張性、堅牢性への配慮  わかりやすい がとにかく優先されるケースも  用途や利用者によるが、メモリ管理やオブジェクト指向的にきれい な設計とかよりも、staticなメソッド一発呼ぶだけというほうが好 まれることも  拡張性  API引数を変更せずに、プロパティ追加で対応できるようにまとめ て渡す など  ここでの堅牢性とは  使い方によって問題が発生してしまいにくい作り 15
  • 16.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. 環境変化への積極的な対応  SDK利用者の対応猶予期間を考慮した上で、スケジュールの検討が必要  OS新バージョンの機能が発表されたら、まず既存アプリの挙動に影響す る変更点を精査 16
  • 17.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. 適切なテストアプリ要件と検証範囲のコントロール  データ操作的なAPIならさほど自動化は難しくない  UIを表示するものや外部連携など、自動化が難しい部分も  テスト用のアプリの作りによって実施可能な検証の範囲が制限される  例: ビルド種別  Unity4, Unity5, VS2013, 2015  毎回すべてのパターンを実施すると工数が膨大になってしまう  適切な範囲の絞り込みが必要 17
  • 18.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. 問題がおきやすいポイント紹介 18
  • 19.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. 公開を阻む問題  SDKをリリースしたが、それを組み込んでiTunes Connect / Google Playに公開しようとするとアップロードできない or リジェクト 19
  • 20.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. 設定しないと動かない機能  アプリ側を適切に設定しないと動かない機能 ⁃ Keychain Access ⁃ Notification ⁃ IAP / IAB ⁃ etc  適切なエラーを返す必要性  テストが面倒な状態のままだと問題がうまれやすい 20
  • 21.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. まとめ  利用者の邪魔をしない配慮  わかりやすさ、拡張性、安全性への配慮  環境変化への積極的な対応  検証の難しさ 21
  • 22.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. このような課題に 一緒に取り組んでくれる人、募集中です 22
  • 23.
    Copyright (C) 2017DeNA Co.,Ltd. All Rights Reserved. ご静聴ありがとうございました 23