Twitter Flock Tokyo 2015のセッション内容メモ

2015/5/19に六本木で開催された[Twitter Flock Tokyo 2015](https://twitterflocktokyo.splashthat.com/)のセッション内容のメモ書きです。
集中切れた所は抜け漏れや誤りがあるかもなので、「俺が聞いた内容と違うなぁ」「書いてないけどこんな話もあったはず」など感じる箇所があればご指摘いただけると幸いですm(_ _)m

## イントロダクション
* モバイルユーザは3億人、モバイル開発者は300万人
* 今日はFabricの紹介が中心

## Fabricの紹介
by Rich Paretさん（エンジニアリングディレクター - プラットフォーム）

### 安定性 - crashlytics
* Xcodeのクラッシュレポートは見難い
* Crashlyticsのクラッシュレポートはファイル名、行数、メソッド名、アプリバージョン、グルーピング、優先順位が提供される
* アプリの品質をグラフで見れる
* テスターにベータ版を配布、誰がインストールしたかまで分かる。テスターはグルーピング可能

### コンテンツの拡散 - answers
* トラッキングツール
* メールで報告がくる

### 収益化 - mopub
* 広告は3軸
  - 広告主
  - 広告ネットワーク
  - mopub market place
* 広告の種類
  - バナー
  - フルスクリーン
  - ビデオ
  - ネイティブ広告

### ログイン認証 - DIGITS
* 電話番号認証
* 電話番号を入力→SMSで認証番号が届く→入力すると認証完了
* iOS/Android/Webで使える
* 216カ国・32言語に対応
* 無料

### 総括
* Crashlytics, TwitterKit, mopubすべて無料
* インストールも簡単ですよ

## 実演デモ
by Romain Huetさん（シニアディベロッパー）
* Crashlyticsを使ってデバッグ
* TwitterKitを使えば数行書くだけでツイート機能を実装できる
* digitsでログイン
  - 認証画面は色をカスタマイズ可能
* mopubは広告の見た目を自由にカスタマイズ可能
* デモで使ったCannonBallアプリはAppStore, GooglePlayでインストール可能
  - https://github.com/twitterdev/cannonball-ios
  - https://github.com/twitterdev/cannonball-android

## 実例紹介
### CyberAgent （ふじわらさとるさん - リードエンジニア）
* Betaで高頻度にリリース - 社内のエンジニア/デザイナーに共有
* Answerのクラッシュフリーユーザとバージョン分布をよく見てる
* プロモーション前にクラッシュフリーユーザをよく見て安定しているか判断
* 新機能をリリースしたバージョンがどのくらい広がっているかをバージョン分布で見る
* TwitterKitでTwitterログイン

### リクルート(cameran) （かさじまやすおさん - リードエンジニア）
* 同種のツールがあるなか、Crashlyticsが一番入れやすそうだったから採用した
* ログを入れる機能が便利
* ユーザにアトリビュートをつけられるのも良い
* クラッシュしてる数が知れるようになったのが嬉しい
* BetaはTestFlightが使えなくなったタイミングで使い始めた
* 「テスト時に出たバグは絶対に直してからリリースする」運用をCrashlyticsを軸に運用している
* 今つかってる電話番号認証はお金がかかるので、無料のDIGITSをぜひ使いたい

### OneNews （なかはらしゅんさん - テクニカルリードエンジニア）
* TwitterKitはツイートを表示する機能に使ってる
  - アイコン、名前などを自分で実装しなくてよくなったのが嬉しい
  - ユーザからも好評

## hatch
by Stephanie Kahanさん（シニアマーケティングマネージャー）
* コンペティション
* だれでも参加出来る
* 是非参加してね

## テクニカルセッション

### ログイン認証について - Digitsの紹介
by Romain Huetさん（シニアディベロッパー）
* メール/パスワード、ソーシャルアカウントよりも皆が持っているもの -> 電話番号
* Digitsは電話番号認証
* 電話番号認証を採用することで認証がシンプルになる
* 日本で今年売られるモバイルデバイス数は630Mになる見通し（アメリカは150M）

#### 電話番号認証は難しい
* 電話番号が正しいかチェック
* SMS APIからSMSアグリゲータに通信してSMSが送られる -> お金がかかる
* 国ごとにSMS APIが違う場合もある -> アプリ側でSMS APIの種類を管理しないといけない
* SMSアグリゲータから各国のオペレータへの通信に障害があればSMSが送られなくなる -> すべてのオペレータ(全世界で860)を冗長化する必要性
* 国によってコストもバラバラ

#### そこでDIGITS
* http://get.digits.com/
* 認証するとユーザID、トークンが発行される
* プロフィールは拡張可能（例）名前、プロフィール画像
* ボタンの色や背景色を変更できる
* オリジナルのサインインボタンを作成可能
* 自動でローカライズされる
* Androidでは1タップでログインできる。必要なパーミッションは下記
  - android.permission.READ_PHONE_STATE
  - android.permission.RECEIVE_SMS
* ブラウザでも使える（国を選んで番号を入力後、SMSで送られる確認コードを入力するUI）
* WebにDIGITSを追加するためにscrit要素を追加
  - JavaScriptでDigits.initにconsumerKeyを渡して初期化
  - Digits.login()でログイン
  - それぞれコンプリーションハンドラが付けられる
  - ログインのレスポンスにトークンがついてるので、それをつかってユーザ情報を取得
* 216カ国、32言語に対応
* 2段階認証（数週間前に追加された）
* アドレス帳双方の電話番号を知っている人同士をつなげる仕組みがある
  - アプリごとに数えている（他のアプリと情報は共有しない）
* DIGITSはFabricのTwitterKitの一部として提供中

### 品質管理の話 - Crashlytics
by Ali Parrさん（シニアデベロッパーアドボカシーマネージャー）
* クラッシュなどの悪い口コミは広がる -> 備える必要がある

#### アプリ収益化までの道のり
* 安定性
* テスト
* 分析
* and omre... 
* 今日は上記の3つの話をする

#### 安定性 - Crash reporting
* 導入はとても簡単
  - `Fabric.with(this, new Crashlytics());`
  - これだけ
* Androidの主要開発環境、Xcodeと統合している
* アプリストアのレビュー欄には★１なのに有益な情報が書いて無い場合がある
* Xcodeのデバッガはメモリアドレスを出力するが、何を意味しているかわからない
* Crashlyticsのダならュボードでは何人がクラッシュしたのか、どこでクラッシュしたのかなどが細かく分かる
* どんな操作をしてクラッシュしたかも辿れる
* （実演）

#### テスト - Beta
* "治療よりも予防が肝心"
* ローンチタイミングとテストのバランスが重要
* Betaで配布してテストしましょう
* Betaを受け取る人はProvisioning Profileのことなど考えずにインストールできる
* （実演）

#### 分析 - Answers
* ダッシュボードの左側にある一番上のタブ
* 分析エンジン
* リアルタイム
* セットアッププロセスはゼロ
* 毎日サマリのメールが送られる
* Hootsuiteは２倍の早さでクラッシュの原因を突き止められるようになったらしい
* ビルドごとに安定度合い、セッションの長さを比較可能

### TwitterKitの説明
by Bear Douglasさん（デベロッパーアドボカシー）
* 10月より以前はTwitterの標準SDKが無かったのでTwitter連携の実装が大変だった
* OAuthは実装が大変「実装したことある人いるでしょうか。いたらごめんなさい」
* TwitterKitは煩雑な開発を簡単にするために産まれた

#### TwitterKitの機能
* サインオン
* 共有
* ネイティブ組み込みツイート
* REST API

#### 使い方
* iOSならAppDelegateで `[Fabric with:@[TwitterKit]];` を実行

#### 具体例紹介
* シングルサインオンをAndroidでも簡単にした
  - レイアウトXML `<com.twitter.sdk.android.core.identity.TwitterLoginButton .../>`
* Twitterに登録されているメールアドレスを取得することも出来る
* TweetComposerにテキストや画像を設定してツイート
* ツイート表示はTWTRTweetViewクラスをベースに色や表示要素をカスタマイズ可能
* ツイートビューデリゲートで送信、キャンセル操作なども補足可能
* ゲスト認証の仕組みもある
  - ログインをゲストとして行う
  - ログインはしたくないがツイートをロードしたいときに使う
  - ゲスト認証の制限
    - /list/status などのエンドポイントに180リクエスト/15分

#### まとめ
* サインインを簡単に
* 組み込みツイートも簡単にできる
* 個別のツイートやタイムラインも使いやすい
* hatch参加してね

## アプリユーザー拡大戦略
by Junichi Okamotoさん（プロダクトマーケティングマネージャー）
* Twitterはユーザーと世界をつなぐ
* ユーザーは常に面白いものを求めてTwitterにやってくる
* 世界で起きていることはTwitter上でも起こっている（例）アメリカでスーパーボウル中にCrash of CransのCM放送後6.6Mツイート

### オーガニック（<->ペイド）
* 「アプリからの共有」が成功の鍵
* ユーザーがツイートをしやすく、共有出来やすい仕組み作り
* ツイートを見たユーザがアプリをダウンロード
* MIX CHANNEL直近１ヶ月でのオーガニックでの獲得数

### Twitterカード
* HTMLマークアップを介してツイートにコンテキストやメディアを追加
* （例）アプリストアの情報をツイート内に埋め込む
* meta要素で情報を埋める

### ディープリンク
#### ディープリンクスキーム
* `<meta name="twitter:app:url:iphone" content="flickr://">`
* XcodeのURL Typesを入力すれば設定完了
* Mobile safariのアドレスバーにディープリンクスキームを入力すればテストできる
* Twitterから直接アプリを開くことも可能

##### インストール通知
* 「Twitterからディープリンクスキームを踏む→インストール開始→Twitterに戻る」という操作をすると、インストールが完了した時にTwitterアプリ上にインストール完了通知が表示される
* タップすればそのアプリを起動する

#### フルディープリンク
* `<meta name="twitter:app:url:iphone" content="flickr://action/5149e2492222f923600...">`
* コンテンツ指定

### 共有
* アプリ内のShareボタン
* TWTRComposerをつかってテキスト・URL・画像をツイート

### ペイド（<->オーガニック）
* プロモ商品
* 以下の基準でターゲティング可能
  - インタレスト
  - キーワード
  - デバイス
  - OSバージョン
  - WiFi
  - 性別
  - 位置情報
  - カスタムオーディエンス
* 管理画面からプロモ商品のパフォーマンス分析も可能

### 最後に
* ディープリンクスキームは絶対に設定してほしい
  - Twitterでできることの幅がグッと拡がるから

## マネタイズ - mopub 
by アレクサンダークレインバーグさん（アジア・パシフィック/日本 エクスチェンジ マネージングディレクター）
* アメリカのユーザから見て、LINEスタンプを買うような行為は本当に驚き

### なぜ広告が重要なのか
* mopub publisher network がもうすぐ日本でも展開される
* アプリ内課金の代替ではなく、追加の収入になるもの

### 理想的な広告とは
* どのような広告を表示するかをコントロールできること
* 収益とユーザー体験のバランスをコントロールできること
* mopubはどちらも可能

### フルスタックソリューション
* 広告ネットワーク
* 広告主
* mopub marketplace

### 事例紹介「Trivia Crack」
* AppStoreで連続1位の最長記録保持アプリ
* アプリからAdRequestを出す
* SDKがそれに対応する
* mopubはいろんな広告ネットワークと連携している
* DSP160あまりが参加しているmopub marketplaceとも連携している
* 平均収益データを基に、最も高い入札をした広告をアプリに表示する制御をmopub SDKが行う

### 事例紹介「iMusee+」
* 広告主にPorcheがついてる
* 広告に優先順位をつけられるので、収益額に関係なくPorcheを選んで表示するようになっている

### 広告を出すタイミング
* インテンショントロフを見つける
* ゲームオーバー直後はインテンションが低いので、このタイミングでは広告を表示すべきでない
* リプレイする直前にインテンションが上がるので、このタイミングで広告を表示すべき

### アプリにあった広告表示
* 広告のレイアウトをカスタマイズ可能