採択
2019/09/07 10:30〜
Track D
レギュラートーク(30分)

スナップショットテスト実戦投入

imaizume imaizume

SnapshotTestingやiOSSnapshotTestCaseなど、
スクリーンショットによる差分検知フレームワークが近年注目されています。
これらは指定した画面のスクリーンショットを自動撮影し、
予期せぬ表示上のデグレを検知してくれる画期的なツールです。

一方私のプロダクトでは、状態再現の手間から来るQAコストの増加や
新しいUI作成時の仕様認識のズレなどが課題となっていました。

そこで改善のためSnapshotTestingを導入しQAコストの削減に取り組むことにました。

しかし当然ながら、単純にViewを渡すだけではうまくいきません。
なぜなら導入までに、下記のような下準備が必要なためです。

  • API通信をモックする
  • 必要な状態をモックできるレスポンスを考える
  • アプリ内フラグやログインをモックする
  • UIのモックが可能な設計にする
  • 自動テストとの連携

なかなか一筋縄ではいかない導入でしたが、
結果として画面のカタログを作成しデグレ検知に成功しました。
本トークではスナップショットテストの導入にあたり、
注意すべき点や知っておくと良い点についてお話します。
導入のメリットに見合うかどうか、自身のプロダクトが抱えている課題を解決できそうか、
その参考となる情報を提供できればと思います。

採択
2019/09/07 11:20〜
Track A
レギュラートーク(30分)

モバイル決済アプリの作り方

kenmaz kenmaz

近年、モバイル決済アプリが非常に話題になっています。
このトークではそんなモバイル決済アプリの開発現場から、様々な技術的トピックについてiOSアプリ開発者視点からみなさんに共有します。
モバイル決済アプリ開発特有のトピック、例えば

  • Apple Pay In-App Provisionig を用いたiD決済の仕組み
  • QRコードによるコード決済の仕組み
  • 銀行口座接続や顔認証+公的証明書による本人確認手法技術について
  • 既存の巨大なアプリに対して、いかに安全・効率的にモバイル決済機能を追加するか
  • お金を扱うアプリとしてのセキュリティの重要性とその実現方法
  • モバイル決済アプリ開発の今後
    などについてお話します。
採択
2019/09/07 11:20〜
Track D
レギュラートーク(30分)

カスタムInstrumentsでアプリをピカピカに!

Ridwy 行木 千春

Instrumentsといえば、「リーク検出などに便利なのは知っているけれど、とにかく重くてまともに動かない...」なんて印象を持たれている方もいるのではないでしょうか。実はXcodeの進化の陰で、Instrumentsも10から生まれ変わったようにパフォーマンスが向上し、できることが増えました。

特にカスタムInstrumentsはとても強力です。
アプリに機能を実装し、UIが良い感じに動いているのを確認し、リリースしてみたら...ログがうまく送れていなかったり、必要以上にAPIを叩いてしまっているのが発覚、なんて経験はありませんか?カスタムInstrumentsを作ってアプリ内のイベントを可視化すれば、こうした問題も一目瞭然です!
また、見たい処理だけにフォーカスすればパフォーマンスのネックも見つけやすく、高速化にも役立つでしょう。

本トークではカスタムInstrumentsの作り方について詳しく解説します。
ちょっぴり癖はあるけれど、意外と簡単に作れますよ!あなたのアプリ専用のカスタムInstrumentsを作って、アプリをピカピカにしちゃいましょう!

採択
2019/09/07 12:20〜
Track A
レギュラートーク(30分)

ランチセッション

Bitrise

ランチセッションで講演された内容です。

採択
2019/09/07 13:00〜
Track C
レギュラートーク(30分)

[Unconference]出張版カンファレンスカメラマンカンファレンス

アンカンファレンス

アンカンファレンスで講演された内容です。

採択
2019/09/07 13:30〜
Track A
レギュラートーク(30分)

ソーシャルライブサービスにおけるデジタル化粧の仕組みと実装

noppefoxwolf noppe

デジタル化粧は、映像を加工することで実際にメイクをしているように見せる技術です。
昨今では物理的なメイクを再現するだけでなく骨格や目の大きさを調整したりすることも出来るようになり、セルフィーを投稿する敷居を下げている技術の一つでもあります。
そんな「顔のAR」とも呼べるデジタル化粧はソーシャルライブでは無くてはならない存在となりました。

このセッションではソーシャルライブサービスの実例を通して、デジタル化粧機能の需要の傾向や仕組みを学びます。
また、高価なデジタル化粧SDKを利用せずにMLやMetalを使って実装するにはどうすれば良いかを紹介します。

採択
2019/09/07 13:30〜
Track B
レギュラートーク(30分)

iPhoneのカメラで写真撮影から現像までの技術を紐解く

satoshin21 satoshin21

iPhoneやスマートフォンにおける「カメラ」という機能。
写真を撮る、という日常的に行われている行動ではありますが、その実撮影という機能を実現するために様々な技術的処理が使われています。

このセッションでは、「カメラが光を取り込む仕組み」から「iOSで取り込んだデータを画像化する」という所を深掘りし
写真撮影という技術を皆さんと一緒に紐解いていければと思います。

以下、アジェンダ(仮)

  1. そもそもの「写真撮影」における仕組み
  2. 写真の表現を決める3つの値 F値・シャッタースピード・ISO感度
  3. iPhoneにおける「被写界深度撮影」とは
  4. iOSでマニュアル撮影アプリを作る
  5. RAW画像とは
  6. iOSでRAWを加工してみる
採択
2019/09/07 13:30〜
Track D
レギュラートーク(30分)

今こそwatchOS

shu223 堤 修一

Apple Watchが登場し、WatchKitフレームワークが発表された当時は各社こぞって対応アプリ(実態はApp Extension)をリリースしたものでした。しかしApple Watchのデバイスとしての性能はとても貧弱でできることは非常に限られており、また開発環境は著しく不安定だったこともあり、watchOS 2の頃には開発者の間でのwatchOSアプリ開発ブームは去っていきました。

しかしそれから数年経ち、Apple Watchの性能は大きく向上し、watchOS 6ではついにIndependent Appも作れるようになりました。多くの機能(フレームワーク)がApple Watch側で動作することになり、「こんなアプリがウォッチ上で動いたらいいな」というアイデアの実現可能性は昔とは比べるべくもないほどに上がっています。

本トークでは、Apple Watch / watchOSリリース当初はできなかったが今ではできるようになったことを中心に、「watchOSアプリ開発の今」についてお話しします。

採択
2019/09/07 13:30〜
Track E
レギュラートーク(30分)

実践 CallKit/PushKit ときどき🐛退治

monoqlo monoqlo

みなさんは音声通話機能を実装したことがありますか?

iOS 10 から導入された CallKit を使うと、純正電話アプリのような見た目の着信画面や通話中画面を表示することができます。また、割込通話や割込通話による保留と保留解除なども簡単に対応できます。

そんな素晴らしいフレームワークですが、いつまにか Apple 公式サンプルコードは提供されなくなり、ドキュメントや Web 上の記事などを頼りに試行錯誤する必要があるのが現状です。

このトークでは、バックエンドに Twilio を用いて、PushKit と CallKit を使用して通話機能を実装する過程で得た知見を共有します。
具体的には、CallKit および PushKit の概要および使い方、効率的なデバッグ方法に加え、Twilio のワークアラウンドや、気づきにくい致命的な CallKit のバグと、それにどう対処したのかについてもご紹介します。

採択
2019/09/07 14:20〜
Track A
レギュラートーク(30分)

自作して理解するリアクティブプログラミングフレームワーク

yimajo y.imajo

WWDC19で発表されたCombine.frameworkはリアクティブプログラミングという言葉では発表されなかったものの、複雑になりがちなイベント処理をデータの流れとして統一的に扱い、イベントへ反応する処理を組み合わせる宣言的なコーディングを実現します。
このことによりCombine.frameworkは最近のリアクティブプログラミングのパラダイムに沿ったフレームワークと言えるでしょう。これに備え、我々はリアクティブプログラミングのパラダイムを仕組みから理解する時がやってきたのです。

このトークでは、現状のリアクティブプログラミングフレームワークであり広く普及しているRxSwiftを構成するソースコードを解説し、それを参考にテストコードを交えながら最小限の「偽・リアクティブプログラミングフレームワーク」をトークの中で作成していきます。

もちろん最小限の構成で理解を促進するものなので、非同期プログラミングのためのフレームワークとして本来は必須であるスレッドセーフ、メモリ管理、スケジューラの概念は捨てます。トキメかないので。

説明のため必須なものまで捨てられた「偽・リアクティブプログラミングフレームワーク」によって、今まで雰囲気で知っていた次のルールが心で理解できるはずです。

  • Coldなストリームはなぜsubscribeされないと動作しないのか
  • SubjectがObservable/Observerの性質を持つというのはどういう意味か
  • ColdをHotなストリームに変換する具体的な方法
  • Hotなストリームがsubscribeされても1回しかイベントを発生しないとはどういう原理か

本セッションの進行とともに、皆さんには「理解したわー。リアクティブプログラミング完全に理解したわー」という感想を持っていただければ幸いです。

採択
2019/09/07 14:20〜
Track B
レギュラートーク(30分)

多言語対応と戦う 2019年版

matsuokah_ matsuokah

多言語対応はLocalizable.stringsやXcodeのツールをうまく使うだけでは終わりません。
例えば、文字を装飾していたり、レイアウトやプレースホルダーの順番が変わるなどさまざまな課題があります。

このセッションでは実際に多言語対応するための運用フローやコーディングで気をつけるべきことを話します。

◯ 多言語対応の基本技術(Localizable.strings)
◯ 翻訳SaaSの導入
◯ NSAttributedStringでの装飾
◯ 画像に文字が入っている場合の対処法
◯ 多言語対応のデバッグ