2019年9月5日(木)〜9月7日(土)にかけて開催される「iOSDC Japan 2019」。
4回目の開催となる本カンファレンスですが、サイバーエージェントのエンジニアも運営メンバーとして携わっており、今年もダイアモンドスポンサーを務めます。
サイバーエージェントからは、5名のエンジニアが登壇するので、ご紹介したいと思います。
動画アプリの投げ銭機能における消耗型課金の仕組みと実装
©️iOSDC Japan
AbemaTVの井原(@nonchalant0303)によるセッションです。
「AbemaTV」では、月額課金プランはAuto-Renewable Subscriptions、アプリ内通貨の購入機能はConsumableと呼ばれる別々の課金方式で実装しており、リトライ処理など課金トランザクションの扱いの差異などを意識して実装する必要がありました。
また、Auto-Renewable Subscriptionsはネイティブ実装していたので、それにあわせるために、Consumableもネイティブ実装することに。
しかしよくネイティブ実装される課金方式は、自動更新型のAuto-Renewable Subscriptionsや非消耗型のNon-Consumableです。
Auto-Renewable Subscriptionsは特定のコンテンツにアクセスできる手段として、Non-Consumableはアプリ内の特定の機能にアクセスする手段としてよく使われます。
消耗型のConsumableはゲームアプリ内の通貨などでよく用いられますが、Unityやcocos-2dxなどのフレームワークで開発されることが多く、ネイティブで実装されることは少ないです。事実、課金のネイティブ実装を検索しても、多くヒットするのはAuto-Renewable SubscriptionsやNon-Consumableです。
このセッションでは、公式ドキュメントを参考にしながらConsumableのネイティブ実装をした話を他の課金方式と比較しながら紹介します。
カスタムInstrumentsでアプリをピカピカに!
2019/09/07 11:20〜 Track D
Amebaブログの行木(@Ridwy)によるセッションです。
Instrumentsといえば、「リーク検出などに便利なのは知っているけれど、とにかく重くてまともに動かない…」なんて印象を持たれている方もいるのではないでしょうか。実はXcodeの進化の陰で、Instrumentsも10から生まれ変わったようにパフォーマンスが向上し、できることが増えました。
特にカスタムInstrumentsはとても強力です。
アプリに機能を実装し、UIが良い感じに動いているのを確認し、リリースしてみたら…ログがうまく送れていなかったり、必要以上にAPIを叩いてしまっているのが発覚、なんて経験はありませんか?カスタムInstrumentsを作ってアプリ内のイベントを可視化すれば、こうした問題も一目瞭然です!
また、見たい処理だけにフォーカスすればパフォーマンスのネックも見つけやすく、高速化にも役立つでしょう。
本トークではカスタムInstrumentsの作り方について詳しく解説します。
ちょっぴり癖はあるけれど、意外と簡単に作れますよ!あなたのアプリ専用のカスタムInstrumentsを作って、アプリをピカピカにしちゃいましょう!
多言語対応と戦う 2019年版
2019/09/07 14:20〜 Track B
©️iOSDC Japan
タップル誕生の松岡(@matsuokah_)によるセッションです。
多言語対応はLocalizable.stringsやXcodeのツールをうまく使うだけでは終わりません。
例えば、文字を装飾していたり、レイアウトやプレースホルダーの順番が変わるなどさまざまな課題があります。
このセッションでは実際に多言語対応するための運用フローやコーディングで気をつけるべきことを話します。
– 多言語対応の基本技術(Localizable.strings)
– 翻訳SaaSの導入
– NSAttributedStringでの装飾
– 画像に文字が入っている場合の対処法
– 多言語対応のデバッグ
クロマキー合成を使い透過動画をAR空間に表示する
2019/09/06 15:10〜 Track E
©️iOSDC Japan
AbemaTVの服部(@shmdevelop)によるセッションです。
動画を現実の風景に重ね、その一部を透過させて再生する実装について説明します。
AR(Augmented Reality)空間でシンプルに動画再生するのはそれほど難しくありません。しかし一部透過させようとするとリアルタイム画像加工をする必要があり難易度が高まります。
表示のガタつきを抑え、一部を透過させた動画を再生するには。
60fpsかつ音声付きで再生するにはどうしたら良いのでしょうか。
クロマキーシェーダーと再生処理の工夫により実現した実装とその他Tipsを共有します。
この発表では以下の内容について話す予定です
– クロマキー合成シェーダーの実装
– 60fps音声付きでの透過動画のスムーズな表示
– リアルタイム配信映像の受信について
モノレポで複数アプリをリリースする場合のGit運用戦略
2019/09/07 16:00〜 Track A
タップル誕生の永野(@kazuma_nagano)によるLT登壇です。
GoogleやFacebookといった大規模開発では、モノレポと呼ばれる1リポジトリで複数のアプリケーションを運用するフローが取られており、実装の共通化が計れるなど、多大なメリットを享受することができます。
しかし、モノレポでの運用ではBitriseなどのCICDツールへの影響は大きな課題となります。
リリースフローのロジック、各種パラメータを分離するためには、どのアプリケーションへのリリースアクションなのかを正しくCIツール側がフックできるようにしなくてはいけません。
また、複数リリースフローが走った場合にhotfixは正しくmasterブランチに、場合によっては別のリリースフローに対しても反映させる必要があります。
本トークでは実際にチームで複数のリリースフローを同一レポジトリで共存させた経験から、その解決策を余すことなくお話しします。
– モノレポ戦略時のGitHubFlow、GitFlow、GitlabFlowへの影響
– モノレポ戦略時に起こりうる事故
– 運用フローでどうやってそれを防ぐか
スポンサーブースに遊びにきてください!
サイバーエージェントのスポンサーブースでは期間中「寿司打大会」「AbemaTVのエンジニアによる何でもトーク」を行います。
〜寿司打大会〜
▪️受付時間
9月6日(金)9時半〜17時
9月7日(土)9時半〜14時半
▪️景品
1~3位:アベマくん大吟醸
4~10位:Ameba Coffeeドリップバッグ
▪️結果発表
9月7日(土)15時に、ブースと(@ca_developers)にて上位10名の発表を行います。
▪️その他
-入賞された方は景品をお渡しするので16時までに、サイバーエージェントブースにお越しください。ブースにお越しになられない場合は、後日郵送いたしますので(@ca_developers)をフォローいただき、メッセージを受信できる設定に対応をお願いいたします。
-未成年の方、お酒が苦手な方が1〜3位に入賞された場合は、別のアベマグッズに交換いたします。
〜AbemaTVのエンジニアによる何でもトーク〜
9月6日(金)13時半〜14時半
9月7日(土)11時〜12時
こちらの時間帯では、技術書典でも出展した「AbemaTV iOS TECH BOOK」の著者が皆さんをお待ちしています。iOS技術に関すること色々お話しませんか?
この時間帯に遊びに来てくれた学生には、先着で著書をプレゼントいたしますので、ぜひお越しください。
会場で、1人でも多くの参加者とお話できることを楽しみにしています!
おまけ: トークンは #サイバーエージェントブースに来てね です。