変化と戦うロガー開発
(iOS App Extensions編)
ヤフー株式会社
D&S本部ソリューション本部
手塚 賢太郎
自己紹介
手塚 賢太郎
てづか けんたろう
入社3年目
iOSエンジニア
自己紹介
iOSアプリ向け
汎用クラス作成時のTips
本日ご紹介するのは
「変化と戦うロガー開発(iOS_App_Extensions編)」#yjdsw4
(iOSアプリ用)
主な担当業務
ロガー開発
ログを取得するための
ライブラリ作り
主な担当業務
=
ロガー開発
データを取得して
ロガーの機能
データを送信する
ロガーの機能
データを送信する
ロガーの機能
(だけ)
It's so simple !
ロガー開発
but …
ロガー開発
「良いロガー」
には条件がありそう
ロガー開発
価値あるデータを見極められる
導入が「とても」簡単である
変化に対応できる!
見えてきた「良いロガー」
アプリをとりまく環境は
劇的に変化する
アプリ環境は劇的に変化する
アプリが動作する環境
知りたい指標
重要なデータ
アプリ事情は急激に変化する
どんどん変化!
変化への対応が
大切そう!
アプリ事情は急激に変化する
最近大変だったのが
App Extensions
コレとか
コレとか
コレとか
コ レ
コレとか
コレとか
new!
Extensionsは大変!
※いちライブラリ開発者の感想です
本体と同じコードだと
動かない
ここが大変!App Extensions!
種類がたくさん
微妙に仕様が違う
(そしてどんどん増える)
ここが大変!App Extensions!
最初に見た時
最近
ちょっとしたノウハウ
共有します
汎用クラスの作成時にぜひ!
「変化と戦うロガー開発(iOS_App_Extensions編)」#yjdsw4
ビルドエラーを回避
Extensionの種類で条件分岐
Extension対応のコツ
ビルドエラーを回避
Extensionの種類で条件分岐
Extension対応のコツ
ビルドエラーを回避
UIApplication *app =
[UIApplication sharedApplication];
本体アプリでよく書くコード
ビルドエラーを回避
UIApplication *app =
[UIApplication sharedApplication];
NS_EXTENSION_UNAVAILABLE_IOS()
ビルドエラーを回避
UIApplication *app =
[UIApplication sharedApplication];
NS_EXTENSION_UNAVAILABLE_IOS()
Extensionではビルドエラー
ビルドエラーを回避
UIApplicationクラス
と明示的に書かなければよいので…
ビルドエラーを回避
Class class = NSClassFromString(@“UIApplication");
if (class) {
UIApplication *app = [class sharedApplication];
}
NSClassFromString() で書く!
ビルドエラーを回避
Class class = NSClassFromString(@“UIApplication");
if (class) {
UIApplication *app = [class sharedApplication];
}
NSClassFromString() で書く!
ビルドエラーを回避
Extensionの種類で条件分岐
Extension対応のコツ
Extensionの種類で条件分岐
Extensionは種類が沢山
処理を分けたい
Extensionの種類で条件分岐
Info.plistの参照が
Good!
Extensionの種類で条件分岐
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
<string>ここに種類が書いてある</string>
</dict>
Extensionの種類で条件分岐
NSString* extid = [[[[NSBundle mainBundle] infoDictionary]
valueForKey:@"NSExtension"]
valueForKey:@"NSExtensionPointIdentifier"];
if ([extid length] == 0) {
// 本体アプリです
} else if ([extid isEqualToString:@"com.apple.widget-extension"]) {
// Today Extensionです
} else if ([extid isEqualToString:@"com.apple.watchkit"]) {
// WatchKit Extensionです
}
Extensionの種類で条件分岐
NSString* extid = [[[[NSBundle mainBundle] infoDictionary]
valueForKey:@"NSExtension"]
valueForKey:@"NSExtensionPointIdentifier"];
if ([extid length] == 0) {
// 本体アプリです
} else if ([extid isEqualToString:@"com.apple.widget-extension"]) {
// Today Extensionです
} else if ([extid isEqualToString:@"com.apple.watchkit"]) {
// WatchKit Extensionです
}
NSClassFromString()でエラー回避
Info.plist見て条件分岐
まとめ
Extension対応はバッチリ!
眼鏡Extension
が来ても
ロボット
Extension
が来ても
E X
「変化と戦うロガー開発(iOS_App_Extensions編)」#yjdsw4
キイテクレテ アリガトォォォ
汎用クラスをExtension対応して
来たるべき変化に備えよう!

More Related Content

PDF
理想の就労環境とは何か 〜ある開発会社がブラックの真逆を徹底した先に見たモノ〜
PDF
DevLOVE関西(No.62) 知っておいて損はないエンタープライズiOS導入のいろは
PDF
フィードテイラー紹介(2014.5.1版)
PDF
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
PDF
エンタープライズにおけるiOSアプリ開発で押さえておくべき7つのこと
PDF
iOSアプリを審査に提出してみた話
PDF
フィードテイラー紹介(2014.11.15版)
PDF
Potatotips3 hoshi gaki_akira_iwaya
理想の就労環境とは何か 〜ある開発会社がブラックの真逆を徹底した先に見たモノ〜
DevLOVE関西(No.62) 知っておいて損はないエンタープライズiOS導入のいろは
フィードテイラー紹介(2014.5.1版)
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
エンタープライズにおけるiOSアプリ開発で押さえておくべき7つのこと
iOSアプリを審査に提出してみた話
フィードテイラー紹介(2014.11.15版)
Potatotips3 hoshi gaki_akira_iwaya

What's hot (18)

PDF
やはりお前らのiOS7対応は間違っている
PDF
エンタープライズにおける iOSアプリ開発・導入のいろは
PPTX
2017/05/24 potatotips #40
PDF
iOSアプリケーションの継続的デリバリー
PDF
iOS 7 対応事例 FastCheckin
PDF
iOS 6とiPhone 5のApp Storeにおける(大)変更とその対策
PDF
iOSで開発をはじめる前に
PDF
The Composable Architecture [iOS内定者輪読会]
PDF
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
PPTX
【ヒカラボ 2018/02/01】iOS LIFULL HOME'Sアプリリニューアルの裏側
PDF
リワード広告におけるリジェクト問題の現状
PPTX
個人アプリ開発
PDF
Baa sでお気楽アプリ開発
PDF
iOSアプリケーションでロボットを制御してみよう
PPTX
iOS App Storeの話
PDF
やはりお前らのCore Dataの使い方も間違っている
PDF
Androidでへっぽこ思考戦車を作ってみた
PPTX
Appium を使って iOS / Android の UI テストを共通化
やはりお前らのiOS7対応は間違っている
エンタープライズにおける iOSアプリ開発・導入のいろは
2017/05/24 potatotips #40
iOSアプリケーションの継続的デリバリー
iOS 7 対応事例 FastCheckin
iOS 6とiPhone 5のApp Storeにおける(大)変更とその対策
iOSで開発をはじめる前に
The Composable Architecture [iOS内定者輪読会]
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
【ヒカラボ 2018/02/01】iOS LIFULL HOME'Sアプリリニューアルの裏側
リワード広告におけるリジェクト問題の現状
個人アプリ開発
Baa sでお気楽アプリ開発
iOSアプリケーションでロボットを制御してみよう
iOS App Storeの話
やはりお前らのCore Dataの使い方も間違っている
Androidでへっぽこ思考戦車を作ってみた
Appium を使って iOS / Android の UI テストを共通化
Ad

Viewers also liked (20)

PDF
「Abuse対策を10年続けた結果」#yjdsw4
PDF
「ヤフー音声検索アプリにおけるキーワードスポッティングの実装」#yjdsw4
PDF
「Data Infrastructure at Scale 」#yjdsw4
PDF
「これはヤフオク!に機械学習を導入する男たちの戦いの物語である」#yjdsw4
PDF
「なぜビッグデータが選挙の予測を可能にするのか」#yjdsw4
PDF
「YDNの広告のCTRをオンライン学習で予測してみた」#yjdsw4
PDF
大規模HDFS & ErasureCoding#yjdsw3
PDF
ヤフーの次世代パイプラインについて#yjdsw3
PDF
ヤフーのRDBと最新のMySQLの検証結果#yjdsw3
PDF
Yahoo! JAPAN IDの裏側#yjdsw3
PDF
分散システム処理モデルの課題および展望#yjdsw3
PDF
Hadoop Summit 2016 San Jose ストリーム処理関連の報告 #streamctjp
PDF
PDF
Ambari運用ツラたん #ambarimeetup
PDF
Yahoo! JAPAN の Ambari 活用事例 #ambarimeetup
PDF
Yahoo! JAPAN の Ambari 活用事例 #yjdsnight
PDF
セキュアにユーザ行動情報を取得するための取り組み #yjdsnight
PDF
可視化までのとある方法 #yjdsnight
PDF
Kafka 0.10.0 アップデート、プロダクション100ノードでやってみた #yjdsnight
PDF
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
「Abuse対策を10年続けた結果」#yjdsw4
「ヤフー音声検索アプリにおけるキーワードスポッティングの実装」#yjdsw4
「Data Infrastructure at Scale 」#yjdsw4
「これはヤフオク!に機械学習を導入する男たちの戦いの物語である」#yjdsw4
「なぜビッグデータが選挙の予測を可能にするのか」#yjdsw4
「YDNの広告のCTRをオンライン学習で予測してみた」#yjdsw4
大規模HDFS & ErasureCoding#yjdsw3
ヤフーの次世代パイプラインについて#yjdsw3
ヤフーのRDBと最新のMySQLの検証結果#yjdsw3
Yahoo! JAPAN IDの裏側#yjdsw3
分散システム処理モデルの課題および展望#yjdsw3
Hadoop Summit 2016 San Jose ストリーム処理関連の報告 #streamctjp
Ambari運用ツラたん #ambarimeetup
Yahoo! JAPAN の Ambari 活用事例 #ambarimeetup
Yahoo! JAPAN の Ambari 活用事例 #yjdsnight
セキュアにユーザ行動情報を取得するための取り組み #yjdsnight
可視化までのとある方法 #yjdsnight
Kafka 0.10.0 アップデート、プロダクション100ノードでやってみた #yjdsnight
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
Ad

Similar to 「変化と戦うロガー開発(iOS_App_Extensions編)」#yjdsw4 (20)

PDF
iOS 8 App Extension
PDF
App Extensions in iOS ver JP
PPTX
iPhoneアプリ開発の歩き方〜Swift編〜
PDF
iPhone develop for Beginner
KEY
20120826i phonedeveloperworkshop
PDF
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
PDF
DevLOVE iPhoneアプリ勉強会
PDF
Cocoa Pro5
PDF
メディア・アート II 第1回: ガイダンス openFrameworks入門
PDF
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
PDF
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
PDF
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
PDF
4年前のカメラアプリをSwiftで書きなおした
PDF
iPhoneアプリを作ってみよう
PDF
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
PDF
App extension for iOS
PDF
iOSアプリ開発 脱初心者に向けて
KEY
1.29.user,user,user
PDF
Saitama beginner tips50
PDF
iOSアプリ開発講座
iOS 8 App Extension
App Extensions in iOS ver JP
iPhoneアプリ開発の歩き方〜Swift編〜
iPhone develop for Beginner
20120826i phonedeveloperworkshop
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
DevLOVE iPhoneアプリ勉強会
Cocoa Pro5
メディア・アート II 第1回: ガイダンス openFrameworks入門
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
4年前のカメラアプリをSwiftで書きなおした
iPhoneアプリを作ってみよう
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
App extension for iOS
iOSアプリ開発 脱初心者に向けて
1.29.user,user,user
Saitama beginner tips50
iOSアプリ開発講座

More from Yahoo!デベロッパーネットワーク (20)

PDF
ゼロから始める転移学習
PDF
継続的なモデルモニタリングを実現するKubernetes Operator
PDF
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
PDF
オンプレML基盤on Kubernetes パネルディスカッション
PDF
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
PDF
Persistent-memory-native Database High-availability Feature
PDF
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
PDF
eコマースと実店舗の相互利益を目指したデザイン #yjtc
PDF
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
PDF
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
PDF
ビッグデータから人々のムードを捉える #yjtc
PDF
サイエンス領域におけるMLOpsの取り組み #yjtc
PDF
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
PDF
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
PDF
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
PDF
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PDF
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
PDF
「新しいおうち探し」のためのAIアシスト検索 #yjtc
PDF
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ゼロから始める転移学習
継続的なモデルモニタリングを実現するKubernetes Operator
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
Persistent-memory-native Database High-availability Feature
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
eコマースと実店舗の相互利益を目指したデザイン #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
ビッグデータから人々のムードを捉える #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc

「変化と戦うロガー開発(iOS_App_Extensions編)」#yjdsw4