SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Jan 29, 2016
Satoshi Takano
EC事業本部サービス開発事業部

プロダクトデザイングループ

DeNA Co., Ltd.
チラシルiOSでの

広告枠開発
1
自己紹介
• EC事業本部サービス開発事業部

プロダクトデザイングループ
• フロントエンドエンジニア

(iOS / Web)
• 2013 DeNA入社
• 2013/10 ~ 旅行系 Web メディアの
サーバーサイド
• 2014/10 ~ チラシルのiOS
2
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Satoshi Takano
今日お話しすること
3
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
1. チラシルとは
チラシルを題材とした iOS ネイティブアプリでの動画広告枠開発
今日お話しすること
4
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
1. チラシルとは
2. JSON-RPC 2.0 の活用
チラシルを題材とした iOS ネイティブアプリでの動画広告枠開発
今日お話しすること
5
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
1. チラシルとは
2. JSON-RPC 2.0 の活用
3. 動画広告の開発
チラシルを題材とした iOS ネイティブアプリでの動画広告枠開発
今日お話しすること
6
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
1. チラシルとは
2. JSON-RPC 2.0 の活用
3. 動画広告の開発
4. ユーザーの声と改善への取り組み
チラシルを題材とした iOS ネイティブアプリでの動画広告枠開発
Agenda
7
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
1. チラシルとは 👈
2. JSON-RPC 2.0 の活用
3. 動画広告の開発
4. ユーザーの声と改善への取り組み
チラシルとは
8
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
• スマフォでチラシが見られるアプリ
• Android / iOS 対応
• 2013/12 リリース
• チラシ情報は人力で打ち込み
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
システムの大まかなアーキテクチャ
9
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
システムの大まかなアーキテクチャ
10
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
システムの大まかなアーキテクチャ
11
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
システムの大まかなアーキテクチャ
12
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
チラシル iOS アプリ技術概要
• iOS 7.0 ~ サポート
• 言語 : Objective-C・Swift
• 新しく書くコードは Swift に寄せつつ、

変更頻度の高いレガシーコードを適宜 Swift に置き換え
• DB : CoreData
• View : 機能単位で分割した Storyboard
• API Client : AFNetworkingベースのJSON-RPC 2.0クライアント
13
Agenda
14
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
1. チラシルとは
2. JSON-RPC 2.0 の活用 👈
3. 動画広告の開発
4. ユーザーの声と改善への取り組み
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
JSON-RPC 2.0 の活用
• Web API のクライアントとして、内製の JSON-RPC 2.0 クライアント
を利用(AFNetworking ベース)
• JSON-RPC 2.0
• Request・Response の Data Format に JSON を用いる RPC プロトコル
Example
15
-->	{"jsonrpc":	"2.0",	"method":	"sum",	"params":	[1,2,4],	"id":	"1"}	
<--	{"jsonrpc":	"2.0",	"result":	7,	"id":	"1"}
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
JSON-RPC 2.0 の活用
• Batch request できるところがポイント
• 複数のリクエストを配列で渡すと、それぞれのレスポンスが配列で帰ってく
る
Example
16
-->	[	
								{"jsonrpc":	"2.0",	"method":	"sum",	"params":	[1,2,4],	"id":	"1"},	
								{"jsonrpc":	"2.0",	"method":	"subtract",	"params":	[42,23],	"id":	"2"}	
				]	
<--	[	
								{"jsonrpc":	"2.0",	"result":	7,	"id":	"1"},	
								{"jsonrpc":	"2.0",	"result":	19,	"id":	"2"}	
				]
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
JSON-RPC 2.0 の活用
もし Batch request ができなかったら…
• 例えばある画面でカテゴリ一覧・商品一覧・ユーザー情報等複数のデー
タが必要なケース
 → API Call をまとめるために画面専用の API を作る?
17
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
JSON-RPC 2.0 の活用
もし Batch request ができなかったら…
• 例えばある画面でカテゴリ一覧・商品一覧・ユーザー情報等複数のデー
タが必要なケース
 → API Call をまとめるために画面専用の API を作る?
18
サーバーサイドエンジニアが画面毎に最適化された API を作ることになる😨
→ 工数もかかるし再利用性もない
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
JSON-RPC 2.0 の活用
Batch request なら
• クライアントが自由に Request を組み合わせられる
• 柔軟性を保ったまま API Call の回数を削減でき、

通信コストを下げることができる 😌
• 既存のプロトコルを採用すれば再利用性も⭕️
19
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Web API におけるその他の工夫
チラシルの Web API は大きく2種類
• エンティティ毎のAPI ( get_advertising 等)
• 特定エンティティのデータを全て取得する
• 複数エンティティの横断的な更新データ取得 API ( get_updates	)
• API 呼び出しに最終更新時刻を付与し、更新差分データのみを取得
• Payload のサイズを抑えられて効率的
20
Agenda
21
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
1. チラシルとは
2. JSON-RPC 2.0 の活用
3. 動画広告の開発 👈
4. ユーザーから見る動画広告
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
チラシルの動画広告
22
• チラシ画面は UICollectionView
• 動画広告枠は UICollectionViewCell の
サブクラス
1. 前述の Web API 経由でデータ取得
2. 表示
3. 広告の KPI ログを送信


という流れで動作する
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
チラシルの動画広告
23
• チラシ画面は UICollectionView
• 動画広告枠は UICollectionViewCell の
サブクラス
1. 前述の Web API 経由でデータ取得
2. 表示
3. 広告の KPI ログを送信


という流れで動作する
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
広告の KPI ?
• 広告の KPI = 主に IMP・CTR・CV
• 動画だと視聴秒数も有ったりする
24
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
おさらい
• IMP = 広告の露出回数
• CTR = クリック率
• CV = 目標の達成回数
• 広告の場合バナーのタップ等による送客である場合が多い
25
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
おさらい
これらを計測するためにはログ収集が必要
26
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ログ送信における工夫
チラシルでのロギング
• ログも JSON-RPC で送信する (method: send_hadoop_logs)
• CoreData で一定数バッファしてから送信することで

通信のオーバーヘッドを軽減
• 送信のリトライにも応用しやすい
• ちょっと前に Cookpad さんが OSS 化した Puree と近い内製機能がある
27
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ログ送信における工夫
ちなみに
• ログは に蓄積され、主に で分析を行う
• Web インターフェースから分析用のクエリを書けるため、エンジニア以外の
メンバーも自由に分析することができる
• DAU、RR等のKPIに関わるログやユーザーの操作ログの取得も同様の
仕組みで行う
• ユーザーの操作ログは、チラシルがどう使われているか、という分析や、デ
バッグにも活用
28
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
動画広告における IMP 計測の難しさ
• IMP = 広告の露出回数
• CTR = クリック率
• CV = 目標の達成回数

29
このいずれか or 組み合わせで課金することが基本なので、プラット
フォーム・OS・デバイス間で

カウントアップされる基準に差があるのは NG ❌
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
動画広告における IMP 計測の難しさ
動画広告は IMP の扱いが難しい…
• 広告がユーザーの目に触れる = IMP++
• と一言で言っても、実際の要件はもっと細かく考える必用がある
• 再生途中の動画が画面遷移により複数回表示されても IMP 加算したくない
• ただし日を跨いだ後に再度表示されたら IMP 加算したい
• さらにアプリの状態がバックグラウンド → フォアグラウンドを経て再度広
告が表示されたら IMP 加算したい
• ついでに視聴秒数のログも取得したい
• etc…
30
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
動画広告における IMP 計測の難しさ
• 要件が煩雑化しすぎて OS 間で挙動を えるのが困難に… 😫
• 実際チラシルでも IMP 取得タイミングがズレていて

分析側でカバーしたことも・・・
• 特に View はプラットフォーム・OS間での差が大きいため

View の仕様に引きずられる実装は NG
→ 両OSの開発者が共有できるシンプルな設計が必要
31
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
どう解決したか
チラシルでは…
動画の1再生に対してセッションを定義
32
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
動画広告のセッション?
• セッション = 1 IMP の有効時間
• セッションの開始と終了をそれぞれ定義
• 開始
• ある動画が再生を開始するとき
• 終了
• アプリの状態が Background に遷移した時
• 日付をまたいだ時
• etc…
33
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
イメージ
34
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
どう解決したか
• セッションという概念をメンバー間で共有することで
• 煩雑だった要件を比較的シンプルな形で想像できるようになった
• 本質的な複雑さは残るものの…
• 要件の認識齟齬が軽減
• 開発の際の指針になり、OS 間での IMP 計測ズレが解消した 😌
35
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
動画広告特有の難しさ ~ 視聴秒数 ~
• 動画広告の場合、視聴秒数も重要な指標
→ スクロールによって、動画が画面外に移動
した状態で再生し続けると正しい視聴秒数が
取れない ❌
36
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
動画広告特有の難しさ ~ 視聴秒数 ~
• スクロールによる可視 / 不可視の変化に応じ再生 / 停止したい
• パッと思いつくのは UICollectionViewDelegate の
-	collectionView:willDisplayCell:forItemAtIndexPath:

-	collectionView:didEndDisplayCell:forItemAtIndexPath:	
 しかしこれは数 pt ずれて呼ばれるため精度的に NG ❌
37
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
動画広告特有の難しさ ~ 視聴秒数 ~
• UICollectionViewLayout の
-	layoutAttributesForElementsInRect:	
 内で動画の位置チェックすれば 1pt 単位以上の精度が得られる 😌
38
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
動画広告特有の難しさ ~ エンコーディング~
• 幅広いデバイスで動画広告を表示するには H.264 の Profile と Level を
適切に設定する必用がある
• Profile = 動画のデコードに必用な機能集合の定義
• Level = デコーダに求めるパフォーマンスの定義

(最大解像度、フレームレート、ビットレート)
39
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
動画広告特有の難しさ ~ エンコーディング~
• OS 毎のサポートデバイスから決定するのが望ましいが、多数ある
Android 端末全てで対応 Profile を確認するのは困難
• 指定した Profile と Level に対応していない環境では再生出来なかった
り、警告ダイアログが表示されたり 😨
40
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
動画広告特有の難しさ ~ エンコーディング~
41
• チラシルでは、なるべく多くのデバイスをサポートするために
iPhone3G でも再生可能な Baseline Profile Level 3.0 を選択
• Google は Baseline Profile を公式にサポートしているが、多数のメーカーが
デバイスを製造する都合からか、動作が保証される Level は明示していない
様子

http://developer.android.com/guide/appendix/media-
formats.html#recommendations
• 入稿する側でこのレギュレーションに沿ってもらうのは難しい場合も
あるため、アプリの運営側でも都度確認(場合によっては変換)した
• Profile・Level の確認・変換
• 確認には ffprobe
• 変換には ffmpeg
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ここまでのまとめ
42
• 動画広告の IMP 計測は難しい
• 画面遷移の度に動画を再読込して IMP++ してしまえば楽ですが…
• IMP 定義は広告枠を売った後では変えにくいので慎重に
• トライアル期間で安く(or 無償)提供して検証できると安心
• 他にもバナー広告にはない難しさがある
• 動画のエンコードはうっかりすると障害に繋がる
• 障害に備えサーバー側で動画配信停止できるようにしておくと安心
Agenda
43
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
1. チラシルとは
2. JSON-RPC 2.0 の活用
3. 動画広告の開発
4. ユーザーの声と改善への取り組み 👈
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ユーザーの声と改善への取り組み
チラシルではいろいろな方法でユーザーの声を聞いています
• アプリ内のお問い合わせ 📨
• Twitter でエゴサーチ 👀
• Store のレビュー 🌟
• チラシ入力の主婦の方にヒアリング 👂
44
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
アプリ内のお問い合わせ
• どのアプリにもあるお問い合わせ機能
• お問い合わせはチームの ML に流れる
• 機能追加・改善に活かしたり
• チラシ入力ミスや機能不具合発生に迅速
に対応したり
• 広く活用できる
45
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Twitter でエゴサーチ・Storeレビュー
• Twitter でチラシル関連ワードがツ
イートされたら bot が Slack にポスト
• Store のレビューを定期的に Slack に
ポストしてくれる
46
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
改善への取り組み
これらの声をどう改善につなげているか
• プロダクトバックログに記入

※ プロダクトバックログ = サービスの要件リスト
• 毎週リファインメントで仕様の明確化・優先度を決める

※ リファインメント = 要件リスト項目のレビュー・見直し
ことで、ユーザーの声がスルーされることを防げている
47
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
おわり
ご静聴ありがとうございました
48
チラシル公式キャラクターのチラ子

Weitere ähnliche Inhalte

Was ist angesagt?

DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA
 
DeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNA
 
これからの Microservices
これからの Microservicesこれからの Microservices
これからの MicroservicesToru Yamaguchi
 
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconMobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconDeNA
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術Toru Yamaguchi
 
DeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術dena_study
 
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconアバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconDeNA
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みDeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みToshiharu Sugiyama
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechconDeNA
 
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechconAnyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechconDeNA
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestMasaki Nakagawa
 
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)dena_study
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術dena_study
 
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNA
 
Effective web performance tuning for smartphone
Effective web performance tuning for smartphoneEffective web performance tuning for smartphone
Effective web performance tuning for smartphonedena_study
 
FFRK cocos2d xレイヤーの最適化
FFRK cocos2d xレイヤーの最適化FFRK cocos2d xレイヤーの最適化
FFRK cocos2d xレイヤーの最適化dena_study
 
セキュリティ業務の内製とチームメンバー育成
セキュリティ業務の内製とチームメンバー育成セキュリティ業務の内製とチームメンバー育成
セキュリティ業務の内製とチームメンバー育成Toshiharu Sugiyama
 
サービスの成長を支えるフロントエンド開発 #denatechcon
サービスの成長を支えるフロントエンド開発 #denatechconサービスの成長を支えるフロントエンド開発 #denatechcon
サービスの成長を支えるフロントエンド開発 #denatechconDeNA
 
ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016
ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016
ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016Takahiko Wada
 

Was ist angesagt? (20)

DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
 
DeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechcon
 
これからの Microservices
これからの Microservicesこれからの Microservices
これからの Microservices
 
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconMobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
 
DeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechcon
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
 
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconアバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みDeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechconAnyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in Test
 
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
 
Effective web performance tuning for smartphone
Effective web performance tuning for smartphoneEffective web performance tuning for smartphone
Effective web performance tuning for smartphone
 
FFRK cocos2d xレイヤーの最適化
FFRK cocos2d xレイヤーの最適化FFRK cocos2d xレイヤーの最適化
FFRK cocos2d xレイヤーの最適化
 
セキュリティ業務の内製とチームメンバー育成
セキュリティ業務の内製とチームメンバー育成セキュリティ業務の内製とチームメンバー育成
セキュリティ業務の内製とチームメンバー育成
 
サービスの成長を支えるフロントエンド開発 #denatechcon
サービスの成長を支えるフロントエンド開発 #denatechconサービスの成長を支えるフロントエンド開発 #denatechcon
サービスの成長を支えるフロントエンド開発 #denatechcon
 
ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016
ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016
ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016
 

Andere mochten auch

開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理慎一 古賀
 
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibataSl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibataNaoki Shibata
 
GCPとBigQueryを用いたIoT基盤の構築
GCPとBigQueryを用いたIoT基盤の構築GCPとBigQueryを用いたIoT基盤の構築
GCPとBigQueryを用いたIoT基盤の構築Kuma Arakawa
 
越境まちづくり・ラボ~経営資源の日本から新興国へリサイクル活用!
越境まちづくり・ラボ~経営資源の日本から新興国へリサイクル活用!越境まちづくり・ラボ~経営資源の日本から新興国へリサイクル活用!
越境まちづくり・ラボ~経営資源の日本から新興国へリサイクル活用!jpid
 
kintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツールkintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツールYuki Okada
 
Infra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, NetworkInfra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, NetworkKuma Arakawa
 
Pythonを中心としたチーム開発
Pythonを中心としたチーム開発Pythonを中心としたチーム開発
Pythonを中心としたチーム開発Ryo Takahashi
 
WWDCを120%楽しむ
WWDCを120%楽しむWWDCを120%楽しむ
WWDCを120%楽しむKuma Arakawa
 
海外のユーザー向け プロダクト開発 ~現場のリアルな工夫&ガチな悩みを語る~
海外のユーザー向けプロダクト開発 ~現場のリアルな工夫&ガチな悩みを語る~海外のユーザー向けプロダクト開発 ~現場のリアルな工夫&ガチな悩みを語る~
海外のユーザー向け プロダクト開発 ~現場のリアルな工夫&ガチな悩みを語る~Azumi Wada
 
Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版
Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版
Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版Yoshito Tabuchi
 
リクルートにおけるVDI導入 ~働き方変革とセキュリティ向上の両立を目指して~
リクルートにおけるVDI導入 ~働き方変革とセキュリティ向上の両立を目指して~リクルートにおけるVDI導入 ~働き方変革とセキュリティ向上の両立を目指して~
リクルートにおけるVDI導入 ~働き方変革とセキュリティ向上の両立を目指して~Recruit Technologies
 
事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のりRecruit Lifestyle Co., Ltd.
 
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4shakezo
 
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京Koichi Hamada
 

Andere mochten auch (14)

開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
 
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibataSl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibata
 
GCPとBigQueryを用いたIoT基盤の構築
GCPとBigQueryを用いたIoT基盤の構築GCPとBigQueryを用いたIoT基盤の構築
GCPとBigQueryを用いたIoT基盤の構築
 
越境まちづくり・ラボ~経営資源の日本から新興国へリサイクル活用!
越境まちづくり・ラボ~経営資源の日本から新興国へリサイクル活用!越境まちづくり・ラボ~経営資源の日本から新興国へリサイクル活用!
越境まちづくり・ラボ~経営資源の日本から新興国へリサイクル活用!
 
kintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツールkintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツール
 
Infra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, NetworkInfra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, Network
 
Pythonを中心としたチーム開発
Pythonを中心としたチーム開発Pythonを中心としたチーム開発
Pythonを中心としたチーム開発
 
WWDCを120%楽しむ
WWDCを120%楽しむWWDCを120%楽しむ
WWDCを120%楽しむ
 
海外のユーザー向け プロダクト開発 ~現場のリアルな工夫&ガチな悩みを語る~
海外のユーザー向けプロダクト開発 ~現場のリアルな工夫&ガチな悩みを語る~海外のユーザー向けプロダクト開発 ~現場のリアルな工夫&ガチな悩みを語る~
海外のユーザー向け プロダクト開発 ~現場のリアルな工夫&ガチな悩みを語る~
 
Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版
Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版
Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版
 
リクルートにおけるVDI導入 ~働き方変革とセキュリティ向上の両立を目指して~
リクルートにおけるVDI導入 ~働き方変革とセキュリティ向上の両立を目指して~リクルートにおけるVDI導入 ~働き方変革とセキュリティ向上の両立を目指して~
リクルートにおけるVDI導入 ~働き方変革とセキュリティ向上の両立を目指して~
 
事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり
 
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
 
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
 

Ähnlich wie チラシルiOSでの広告枠開発

CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~Yuki Ando
 
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話和也 大木
 
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!CData Software Japan
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminarManabu Shimobe
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?Developers Summit
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方dena_study
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
AppPot製品概要
AppPot製品概要AppPot製品概要
AppPot製品概要Ryohei Sogo
 
エヌビディアのディープラーニング戦略
エヌビディアのディープラーニング戦略エヌビディアのディープラーニング戦略
エヌビディアのディープラーニング戦略NVIDIA Japan
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbixsoftlayerjp
 
fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCIToshiyuki Hirata
 
dstn交流会_data_spider 3.0最新情報とデモ
dstn交流会_data_spider 3.0最新情報とデモdstn交流会_data_spider 3.0最新情報とデモ
dstn交流会_data_spider 3.0最新情報とデモdstn
 

Ähnlich wie チラシルiOSでの広告枠開発 (20)

CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
 
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
OSS光と闇
OSS光と闇OSS光と闇
OSS光と闇
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
AppPot製品概要
AppPot製品概要AppPot製品概要
AppPot製品概要
 
Phpconf2010
Phpconf2010Phpconf2010
Phpconf2010
 
Api as a product
Api as a productApi as a product
Api as a product
 
エヌビディアのディープラーニング戦略
エヌビディアのディープラーニング戦略エヌビディアのディープラーニング戦略
エヌビディアのディープラーニング戦略
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
GCPの画像認識APIの紹介
GCPの画像認識APIの紹介 GCPの画像認識APIの紹介
GCPの画像認識APIの紹介
 
fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCI
 
Klocworkのご紹介
Klocworkのご紹介Klocworkのご紹介
Klocworkのご紹介
 
dstn交流会_data_spider 3.0最新情報とデモ
dstn交流会_data_spider 3.0最新情報とデモdstn交流会_data_spider 3.0最新情報とデモ
dstn交流会_data_spider 3.0最新情報とデモ
 

Kürzlich hochgeladen

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Kürzlich hochgeladen (8)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

チラシルiOSでの広告枠開発

  • 1. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Jan 29, 2016 Satoshi Takano EC事業本部サービス開発事業部
 プロダクトデザイングループ
 DeNA Co., Ltd. チラシルiOSでの
 広告枠開発 1
  • 2. 自己紹介 • EC事業本部サービス開発事業部
 プロダクトデザイングループ • フロントエンドエンジニア
 (iOS / Web) • 2013 DeNA入社 • 2013/10 ~ 旅行系 Web メディアの サーバーサイド • 2014/10 ~ チラシルのiOS 2 Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Satoshi Takano
  • 3. 今日お話しすること 3 Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 1. チラシルとは チラシルを題材とした iOS ネイティブアプリでの動画広告枠開発
  • 4. 今日お話しすること 4 Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 1. チラシルとは 2. JSON-RPC 2.0 の活用 チラシルを題材とした iOS ネイティブアプリでの動画広告枠開発
  • 5. 今日お話しすること 5 Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 1. チラシルとは 2. JSON-RPC 2.0 の活用 3. 動画広告の開発 チラシルを題材とした iOS ネイティブアプリでの動画広告枠開発
  • 6. 今日お話しすること 6 Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 1. チラシルとは 2. JSON-RPC 2.0 の活用 3. 動画広告の開発 4. ユーザーの声と改善への取り組み チラシルを題材とした iOS ネイティブアプリでの動画広告枠開発
  • 7. Agenda 7 Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 1. チラシルとは 👈 2. JSON-RPC 2.0 の活用 3. 動画広告の開発 4. ユーザーの声と改善への取り組み
  • 8. チラシルとは 8 Copyright (C) DeNA Co.,Ltd. All Rights Reserved. • スマフォでチラシが見られるアプリ • Android / iOS 対応 • 2013/12 リリース • チラシ情報は人力で打ち込み
  • 9. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. システムの大まかなアーキテクチャ 9
  • 10. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. システムの大まかなアーキテクチャ 10
  • 11. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. システムの大まかなアーキテクチャ 11
  • 12. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. システムの大まかなアーキテクチャ 12
  • 13. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. チラシル iOS アプリ技術概要 • iOS 7.0 ~ サポート • 言語 : Objective-C・Swift • 新しく書くコードは Swift に寄せつつ、
 変更頻度の高いレガシーコードを適宜 Swift に置き換え • DB : CoreData • View : 機能単位で分割した Storyboard • API Client : AFNetworkingベースのJSON-RPC 2.0クライアント 13
  • 14. Agenda 14 Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 1. チラシルとは 2. JSON-RPC 2.0 の活用 👈 3. 動画広告の開発 4. ユーザーの声と改善への取り組み
  • 15. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. JSON-RPC 2.0 の活用 • Web API のクライアントとして、内製の JSON-RPC 2.0 クライアント を利用(AFNetworking ベース) • JSON-RPC 2.0 • Request・Response の Data Format に JSON を用いる RPC プロトコル Example 15 --> {"jsonrpc": "2.0", "method": "sum", "params": [1,2,4], "id": "1"} <-- {"jsonrpc": "2.0", "result": 7, "id": "1"}
  • 16. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. JSON-RPC 2.0 の活用 • Batch request できるところがポイント • 複数のリクエストを配列で渡すと、それぞれのレスポンスが配列で帰ってく る Example 16 --> [ {"jsonrpc": "2.0", "method": "sum", "params": [1,2,4], "id": "1"}, {"jsonrpc": "2.0", "method": "subtract", "params": [42,23], "id": "2"} ] <-- [ {"jsonrpc": "2.0", "result": 7, "id": "1"}, {"jsonrpc": "2.0", "result": 19, "id": "2"} ]
  • 17. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. JSON-RPC 2.0 の活用 もし Batch request ができなかったら… • 例えばある画面でカテゴリ一覧・商品一覧・ユーザー情報等複数のデー タが必要なケース  → API Call をまとめるために画面専用の API を作る? 17
  • 18. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. JSON-RPC 2.0 の活用 もし Batch request ができなかったら… • 例えばある画面でカテゴリ一覧・商品一覧・ユーザー情報等複数のデー タが必要なケース  → API Call をまとめるために画面専用の API を作る? 18 サーバーサイドエンジニアが画面毎に最適化された API を作ることになる😨 → 工数もかかるし再利用性もない
  • 19. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. JSON-RPC 2.0 の活用 Batch request なら • クライアントが自由に Request を組み合わせられる • 柔軟性を保ったまま API Call の回数を削減でき、
 通信コストを下げることができる 😌 • 既存のプロトコルを採用すれば再利用性も⭕️ 19
  • 20. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Web API におけるその他の工夫 チラシルの Web API は大きく2種類 • エンティティ毎のAPI ( get_advertising 等) • 特定エンティティのデータを全て取得する • 複数エンティティの横断的な更新データ取得 API ( get_updates ) • API 呼び出しに最終更新時刻を付与し、更新差分データのみを取得 • Payload のサイズを抑えられて効率的 20
  • 21. Agenda 21 Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 1. チラシルとは 2. JSON-RPC 2.0 の活用 3. 動画広告の開発 👈 4. ユーザーから見る動画広告
  • 22. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. チラシルの動画広告 22 • チラシ画面は UICollectionView • 動画広告枠は UICollectionViewCell の サブクラス 1. 前述の Web API 経由でデータ取得 2. 表示 3. 広告の KPI ログを送信 
 という流れで動作する
  • 23. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. チラシルの動画広告 23 • チラシ画面は UICollectionView • 動画広告枠は UICollectionViewCell の サブクラス 1. 前述の Web API 経由でデータ取得 2. 表示 3. 広告の KPI ログを送信 
 という流れで動作する
  • 24. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 広告の KPI ? • 広告の KPI = 主に IMP・CTR・CV • 動画だと視聴秒数も有ったりする 24
  • 25. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. おさらい • IMP = 広告の露出回数 • CTR = クリック率 • CV = 目標の達成回数 • 広告の場合バナーのタップ等による送客である場合が多い 25
  • 26. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. おさらい これらを計測するためにはログ収集が必要 26
  • 27. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ログ送信における工夫 チラシルでのロギング • ログも JSON-RPC で送信する (method: send_hadoop_logs) • CoreData で一定数バッファしてから送信することで
 通信のオーバーヘッドを軽減 • 送信のリトライにも応用しやすい • ちょっと前に Cookpad さんが OSS 化した Puree と近い内製機能がある 27
  • 28. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ログ送信における工夫 ちなみに • ログは に蓄積され、主に で分析を行う • Web インターフェースから分析用のクエリを書けるため、エンジニア以外の メンバーも自由に分析することができる • DAU、RR等のKPIに関わるログやユーザーの操作ログの取得も同様の 仕組みで行う • ユーザーの操作ログは、チラシルがどう使われているか、という分析や、デ バッグにも活用 28
  • 29. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 動画広告における IMP 計測の難しさ • IMP = 広告の露出回数 • CTR = クリック率 • CV = 目標の達成回数
 29 このいずれか or 組み合わせで課金することが基本なので、プラット フォーム・OS・デバイス間で
 カウントアップされる基準に差があるのは NG ❌
  • 30. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 動画広告における IMP 計測の難しさ 動画広告は IMP の扱いが難しい… • 広告がユーザーの目に触れる = IMP++ • と一言で言っても、実際の要件はもっと細かく考える必用がある • 再生途中の動画が画面遷移により複数回表示されても IMP 加算したくない • ただし日を跨いだ後に再度表示されたら IMP 加算したい • さらにアプリの状態がバックグラウンド → フォアグラウンドを経て再度広 告が表示されたら IMP 加算したい • ついでに視聴秒数のログも取得したい • etc… 30
  • 31. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 動画広告における IMP 計測の難しさ • 要件が煩雑化しすぎて OS 間で挙動を えるのが困難に… 😫 • 実際チラシルでも IMP 取得タイミングがズレていて
 分析側でカバーしたことも・・・ • 特に View はプラットフォーム・OS間での差が大きいため
 View の仕様に引きずられる実装は NG → 両OSの開発者が共有できるシンプルな設計が必要 31
  • 32. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. どう解決したか チラシルでは… 動画の1再生に対してセッションを定義 32
  • 33. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 動画広告のセッション? • セッション = 1 IMP の有効時間 • セッションの開始と終了をそれぞれ定義 • 開始 • ある動画が再生を開始するとき • 終了 • アプリの状態が Background に遷移した時 • 日付をまたいだ時 • etc… 33
  • 34. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. イメージ 34
  • 35. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. どう解決したか • セッションという概念をメンバー間で共有することで • 煩雑だった要件を比較的シンプルな形で想像できるようになった • 本質的な複雑さは残るものの… • 要件の認識齟齬が軽減 • 開発の際の指針になり、OS 間での IMP 計測ズレが解消した 😌 35
  • 36. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 動画広告特有の難しさ ~ 視聴秒数 ~ • 動画広告の場合、視聴秒数も重要な指標 → スクロールによって、動画が画面外に移動 した状態で再生し続けると正しい視聴秒数が 取れない ❌ 36
  • 37. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 動画広告特有の難しさ ~ 視聴秒数 ~ • スクロールによる可視 / 不可視の変化に応じ再生 / 停止したい • パッと思いつくのは UICollectionViewDelegate の - collectionView:willDisplayCell:forItemAtIndexPath:
 - collectionView:didEndDisplayCell:forItemAtIndexPath:  しかしこれは数 pt ずれて呼ばれるため精度的に NG ❌ 37
  • 38. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 動画広告特有の難しさ ~ 視聴秒数 ~ • UICollectionViewLayout の - layoutAttributesForElementsInRect:  内で動画の位置チェックすれば 1pt 単位以上の精度が得られる 😌 38
  • 39. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 動画広告特有の難しさ ~ エンコーディング~ • 幅広いデバイスで動画広告を表示するには H.264 の Profile と Level を 適切に設定する必用がある • Profile = 動画のデコードに必用な機能集合の定義 • Level = デコーダに求めるパフォーマンスの定義
 (最大解像度、フレームレート、ビットレート) 39
  • 40. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 動画広告特有の難しさ ~ エンコーディング~ • OS 毎のサポートデバイスから決定するのが望ましいが、多数ある Android 端末全てで対応 Profile を確認するのは困難 • 指定した Profile と Level に対応していない環境では再生出来なかった り、警告ダイアログが表示されたり 😨 40
  • 41. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 動画広告特有の難しさ ~ エンコーディング~ 41 • チラシルでは、なるべく多くのデバイスをサポートするために iPhone3G でも再生可能な Baseline Profile Level 3.0 を選択 • Google は Baseline Profile を公式にサポートしているが、多数のメーカーが デバイスを製造する都合からか、動作が保証される Level は明示していない 様子
 http://developer.android.com/guide/appendix/media- formats.html#recommendations • 入稿する側でこのレギュレーションに沿ってもらうのは難しい場合も あるため、アプリの運営側でも都度確認(場合によっては変換)した • Profile・Level の確認・変換 • 確認には ffprobe • 変換には ffmpeg
  • 42. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ここまでのまとめ 42 • 動画広告の IMP 計測は難しい • 画面遷移の度に動画を再読込して IMP++ してしまえば楽ですが… • IMP 定義は広告枠を売った後では変えにくいので慎重に • トライアル期間で安く(or 無償)提供して検証できると安心 • 他にもバナー広告にはない難しさがある • 動画のエンコードはうっかりすると障害に繋がる • 障害に備えサーバー側で動画配信停止できるようにしておくと安心
  • 43. Agenda 43 Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 1. チラシルとは 2. JSON-RPC 2.0 の活用 3. 動画広告の開発 4. ユーザーの声と改善への取り組み 👈
  • 44. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ユーザーの声と改善への取り組み チラシルではいろいろな方法でユーザーの声を聞いています • アプリ内のお問い合わせ 📨 • Twitter でエゴサーチ 👀 • Store のレビュー 🌟 • チラシ入力の主婦の方にヒアリング 👂 44
  • 45. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. アプリ内のお問い合わせ • どのアプリにもあるお問い合わせ機能 • お問い合わせはチームの ML に流れる • 機能追加・改善に活かしたり • チラシ入力ミスや機能不具合発生に迅速 に対応したり • 広く活用できる 45
  • 46. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Twitter でエゴサーチ・Storeレビュー • Twitter でチラシル関連ワードがツ イートされたら bot が Slack にポスト • Store のレビューを定期的に Slack に ポストしてくれる 46
  • 47. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 改善への取り組み これらの声をどう改善につなげているか • プロダクトバックログに記入
 ※ プロダクトバックログ = サービスの要件リスト • 毎週リファインメントで仕様の明確化・優先度を決める
 ※ リファインメント = 要件リスト項目のレビュー・見直し ことで、ユーザーの声がスルーされることを防げている 47
  • 48. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. おわり ご静聴ありがとうございました 48 チラシル公式キャラクターのチラ子