レギュラートーク(20分)

Firebase Crashlyticsのべすとぷらくてぃす

novr 古宮伸久

普段とりあえず入れて何気なく使われているCrashlytics
CrashlyticsはCrash検知だけでなく、Error・Bug検知にも使えます
本当は必要なErrorを取り逃がしていませんか?
Errorの設計や、実装方法と活用を紹介します

5
レギュラートーク(20分)

Flutterでも好きなパッケージ管理ツールを使いたい! 試してみてわかったこと

MHTcode_chibird 千葉 諒

Flutterで利用したアプリケーションでは初期状態だとパッケージ管理ツールはCocoaPodsが設定されます。
今までSwiftで開発をしていた人はCocoaPodsだけではなくCarthageやSwift Package Managerを利用している人もいると思います。
実際に試してみた

  1. パッケージ管理ツールの簡単な説明
  2. Flutterに好きなパッケージ管理ツールを導入する方法
  3. パッケージ管理ツールを入れる際の注意点
  4. Flutterにおいてのパッケージ管理ツールの現状
  • ターゲット
    1. Swiftで今までアプリ開発を行っていてこれからFlutterのネイティブ実装をする可能性がある人
    2. パッケージ管理ツールにこだわりがある人
    3. Flutterでパッケージ管理ツールを変えられるか知りたい人
レギュラートーク(20分)

【ABテストまわしてこ!】Firebase Remote ConfigでひたすらABテストを回して得た知見をお届け

ohayoukenchan ohayoukenchan

mamariではオンボーディング強化のため、昨年末からFirebase Remote Configを用いたABテストを繰り返しています。
このトークでは、ABテストを継続的に続けることで得た知見をできるだけシェアしたいと思います。

  • mamariではどのようにFirebaseでのABテストをどのようにアプリに組み込んでいるか
  • Firebaseに送信できるユーザープロパティ上限25個しかないのですぐ引っかかってしまうのでチームを巻き込んで整理した話
  • Custom Definitionsを用いたAudience作成がわかりづらく意図しないセグメントになってしまった話
  • オンボーディング途中で送信したEventを用いてAudienceを割り振ろうとしても割当が間に合わないのでその対策
  • 施策全体を通してどんな施策が効果があったのか
    ABテストまわしてこ!
9
レギュラートーク(20分)

継続的サービス品質改善のためのiOSアプリのモニタリング

増住 啓吾

モニタリングはサービスの開発・運用において重要な要素です。
しかし、ノウハウがある程度確立しているバックエンドやインフラ領域に比べ、クライアントサイドではまだ事例が少ないこともあり、手探りの運用にならざるを得ないケースが多いのではないでしょうか?
本トークでは、バーチャルライブ配信アプリ「REALITY」の事例から、指標収集のための実装や、FirebaseやBigQueryなどの外部サービスとの連携など、継続的品質改善のためのiOSアプリのモニタリング手法についてお話しします。

  • クラッシュレポートの収集と分類 〜Unity as a Library構成アプリの事例から〜
  • オブザーバビリティ向上のためのエラーログ構造化
  • アプリアイコンタップからコンテンツ表示までの"起動時間"
  • ライブ配信中のサーマルスロットリング状況
  • 品質改善&維持のための運用&監視
レギュラートーク(20分)

CoreBluetooth 2022

coffeegyunyu 日向強

iOSで無線通信 Bluetoothを扱うために存在するCoreBluetoothはiOS 5.0の時代からある歴史のあるものです。

昔触ったことのある人であれば、CoreBluetoothは一部のBluetoothの用途でしか使えない、ごく機能の限られたもの、という印象があるかもしれません。
しかし最近のCoreBluetoothは新規のAPIの追加という形では少ないものの、LE 2M PHY対応やBR/EDR向け対応など、できることは確実に広がっています。

そんなiOSのBluetoothに関して、2022年現在改めてCoreBluetoothではどういったことが実現できるのか、CoreBluetoothについて紹介し、iOSの無線通信の可能性を見出すトークとする予定です。

4
レギュラートーク(20分)

Protocol BuffersでHTTP APIを定義してコードを自動生成する

lt_aoyama あおやま

「REALITY」アプリでは、クライアントとサーバ間のHTTP通信の定義にProtocol Buffersを導入しました。
Protocol BuffersとはGoogleによって開発されたシリアライズフォーマットであり、共通のスキーマからSwiftやKotlin、Goなど各言語向けに必要なコードを自動生成します。
gRPCとセットのイメージのProtocol Buffersですが、バイナリに変換してHTTP通信のbodyに載せることで、プロトコルはHTTP通信のままに、共通のスキーマや、高速、軽量のシリアライゼーションなどProtocol Buffersの恩恵を受ける事が可能です。

このトークでは、Protocol Buffersを使ったHTTP通信の定義に加え、Swiftで独自のprotocのpluginを実装し、クライアントで必要なコードを自動生成する方法を紹介します。

2
レギュラートーク(20分)

2ヶ月以内にApp内課金を実装しないと審査を通さないと言われた時に焦らないために

kzytcbn315 立花和也

ある日突然「2ヶ月猶予あげるからApp内課金を実装して、App内課金を実装しないと審査通らないよ」と言われた時にあなたならどうしますか?

App内課金(In-App Purchase)はすでに多くのアプリで実装されている機能ですが、課金の形態はアプリによって多種多様で場合によっては調べても自分が提供したい形態にマッチしないような場合もあります。

お上の一声で突如リリースが出来ない危機に陥った時に焦らずに対処できるようにするためにApp内課金を実装する上でのポイントやこれを早く知っておきたかったといったポイントをお話しします。

このトークを聞いて2ヶ月でApp課金をリリースしてみませんか?

3
採択
2022/09/10 18:45〜
Track B
レギュラートーク(20分)

量子情報工学への招待 〜iOSアプリ開発を通して学んでみよう〜

量子コンピュータや量子情報、量子暗号といった言葉を聞いたことがある人は多いと思います。これらには量子力学という物理の学問が使われています。
そんな量子力学が作り出す不思議な世界へiOSアプリ開発、Xcodeのシュミレータを用いてご説明します。
物理学の専門性がない方にもご理解いただけるように難しい話はしません。量子力学の面白さ、不思議さを知ってもらうためのトークです。

レギュラートーク(20分)

8年間続いているiOS Webブラウザアプリ開発の知見

fokotate Fukuyama

2014年から趣味で公開し開発を継続しているiOS Webブラウザアプリ開発で溜まった知見を振り返りまとめます。
余裕があればSwiftUIでサンプルアプリを作り公開します。

この辺りの話になると思います。

  • 複数のWKWebViewの扱い
  • ブラウザサイドJavaScript
  • 認証・セキュリティ
  • コンテンツブロック
  • デフォルトブラウザ申請
  • App Extension
  • webview内ジェスチャ
  • favicon・サムネイル処理・メディア再生など
2
レギュラートーク(20分)

OpenAPIのクライアント自動生成を現場に導入していくためのノウハウ

mrimjn imajin

私たちのチームではAPIの実装とクライアントのAPIインターフェースの実装の差分をできるだけなくし、より円滑に開発を進めるためにOpenAPIを導入しました。
またiOSプロジェクトではCreateAPIというライブラリを使用して、OpenAPIのAPIドキュメントからAPIインターフェースを自動生成しています。

本トークではOpenAPIを実際にiOSプロジェクトに導入するにあたって

  • すでに運用されているプロジェクトにおいてどのように自動生成APIインターフェースを導入していくか
  • 他iOSエンジニアとのコミュニケーション
  • テストの設計
  • 日々のAPIドキュメント更新のクライアントへの同期手法

などについて実際の業務で得た知見からお話しします。
これからOpenAPIの導入を検討されている開発者のかたの助けになる情報が届けられれば幸いです。

3
レギュラートーク(20分)

デグレを防ぐ!UIテストの活用法

falcon0328 瀬尾 敦生

iOSアプリの開発楽しい!アプリ開発したからリリースだ!
・・・その前にちゃんとテストはしましたか?

スピード優先のアジャイル開発はテストを疎かにしていい理由にはなりません。
とはいえ、人力のテストには限界があるので可能な範囲から自動テスト化させていきましょう。

今回はUIテスト技術にフォーカスして、実際に開発中やリリース前にでてきたテストの悩みをどうやって解決したのかをご紹介します。

  • APIの通信、動画の再生、ログインを挟む画面へのテスト追加
  • アプリ起動時にしか表示されない画面のテスト
  • Custom URL Schemeからのアプリ起動時のテスト
  • CIのテスト実行時間が長くなってしまった問題の解決

XCTestとかUIテストとかよくわからん、やりたくない・・・って思っている方、ちゃんとテストコードを書いてリリース前に安心を得ませんか?

2
レギュラートーク(20分)

String Interpolationで実現するSwiftUI.Text拡張

yutailang0119 Yutaro Muta

多くのプログラミング言語に備わる機能String Interpolationは、一般的には変数をプレースホルダーに展開する機能で、みなさんもよく使用することでしょう。
Swift実装では、開発者に拡張手段が提供されていて、高度で静的な文字列操作を可能にします。
さらにSwuiftUI、とりわけTextの機能が充実したことで、近年では単純なStringとしての表現を超え、活躍の幅は広がっています。
このトークでは、文字列操作としての典型的な使用方法を説明し、SwiftUI.Textを例に、Frameworkと組み合わせた活用方法を紹介します。

String Interpolation活用して、日々のコーディング体験を向上させましょう。

3
レギュラートーク(20分)

Unity製ゲームを配信アプリ上で動かす

to4iki takezawa toshiki

Unity as a Library(UaaL)はUnityをネイティブアプリのライブラリとして利用する技術です。
ネイティブアプリの強みであるOSに準拠したUI/UXを実現できる点、Unityの強みの3Dを簡単に使える仕組みが整っている点を組み合わせることが可能で、複雑な3D表現やリッチなグラフィックを実現したい場合においてUaaLは選択肢に上がるかと思います。

本トークでは、ネイティブ・Unityエンジニア間のコミュニケーション面にも触れつつ、
Unity製のゲームが動作するまでのフロー、ネイティブとUnityとでどのように領域を区切って開発しているかを事例ベースで解説します。

・UaaLの概要
・UaaLの活用とUnityViewの解説
・ネイティブアプリとUnityのメッセージング用のインターフェースの解説
・UaaLの課題や問題点、今後の取り組み

4
レギュラートーク(20分)

Cloud FunctionとPubSubでサイレントプッシュ通知を一通り実装してみる

trywjs げん

サイレントプッシュ通知を運用するためにはクライアント実装を含め、サーバサイドの実装も必要になります。サーバサイドの実装にも選択肢は一つではありませんがその中でCloud Functionは負荷に対してすスケーリングに悩む必要がなく本来必要な設定や実装の多くの部分をスキップできるのでアプリエンジニアにとって恩恵が大きいです。
このトークではFirebase PubSubメッセージ送信からCloudFunctionが実行されiOSアプリでサイレントプッシュ通知が届くまでの流れに必要な最低限の一通りの実装を実例とともに説明します。

内容構成

  • 全体のフロー
  • PubSub設定
  • Cloud Functionの実装(Typescript)
  • iOSクライアントの実装
  • 気をつけたい部分
レギュラートーク(20分)

iOSエンジニアが1年かけてタクシーアプリ「GO」のプロダクト開発のプロセスを大胆に変えた話

takahia takahia

タクシーアプリ「GO」は、2020年9月にリリースしました。
その頃は、iOSチームとして、アプリ開発を行なっており、日々「GO」の新機能を開発する日々でした。
しかしながら、同じ「GO」のプロダクトを開発するメンバーがPdMやデザイナーも含め40人を超えるため、
どうしても意思疎通がうまくいかなかったり、意思決定が遅かったりと、いくつかの問題を抱えていました。

そこで、2021年5月からは、複数のPdMやデザイナーも巻き込んで、大きな改革に取り組みました。
部署自体が異なるため、現場で案件のフローやコンセンサスの取り方など、多くのすり合わせをおこなってきました。
どのような課題感から、何を思い、どのような変革を行なっていったか、是非リーダーやマネージャーを担っているエンジニアの方々だけでなく、これからリーダーやマネージャを目指す方に聞いてもらいたいです。

1
採択
2022/09/12 13:55〜
Track D
レギュラートーク(20分)

iOS15からのCommunication NotificationとSiri

mtj_j まつじ

iOS15からユーザー間でのやりとりのための新しい通知、Communication Notificationが導入されました。
そうです、通知にユーザーのアイコンが出るあの通知です。

UIが変わったり、通知の要約を突破できたりと普通の通知よりも便利なこともある一方、Siriに関する知識が必要になってきます。
しかしSiriに関してはドキュメントも知見も少なく、その割に設定する項目も多く、敷居が高いイメージもあるのではないでしょうか?
そもそもなぜ通知の実装にSiriが出てくるのでしょうか?

このトークではCommunication Notificationの実装方法、Communication Notificationを実装する上でのSiriの知識、及びよくやってしまいがちなCommunication Notificationのアンチパターンなどを紹介していきます。

レギュラートーク(20分)

既存のSwift製ネイティブアプリに一部Flutter利用はありなのか?現実的な落とし所とは?

takahia takahia

現在、新規でアプリ開発を考えたとき、Flutterでのアプリ開発は1つの選択肢として浸透しつつあります。
しかしながら、既にSwiftで開発している既存のアプリが大多数で、マルチプラットフォーム開発ができれば、開発コストを下げれると考える一方で、ネイティブとFlutterではレンダリングエンジンが異なるため、なかなか導入に踏み切れないといったところが大きいのではないでしょうか?

今回、既存アプリにFlutterを導入できないか真剣に向き合うことにしました。
少しでも、今後の導入の参考にしていただければと思います。

1
レギュラートーク(20分)

Configuration を用いた、iOS 14 時代の UICollectionViewCell カスタマイズ

shimastriper shimastripe

iOS 14 から、 UICollectionViewCell のカスタマイズ方法に Configuration という種類の API が追加されました。
たとえば、コンテンツや背景の外観に関するデータを設定すると、 View の描画反映を自動で行ってくれます。
これまでは、Header / Body / Footer それぞれの Cell を継承してカスタマイズしてきましたが、 これからは同一のConfiguration それぞれに適用可能な再利用しやすい Composable な API となっています。

本セッションは、Custom の Configuration を用意して、実際に既存の Cell を移行する方法を紹介します。
CompositionalLayout や DiffableDataSources と合わせて活用し、Cell の快適な管理を実現しましょう!

2
レギュラートーク(20分)

PencilKit 実践拡張編

shimastriper shimastripe

アプリの Apple Pencil 対応を行ったことはありますか?
WWDC 2019 における、PencilKit を利用し、たった3行のコードを実装するだけで Apple Pencil を用いた一連の機能が実現されるデモは印象的でした。
しかし、実際のアプリ開発における独自拡張の中では、様々な困難が待ち受けています。

本セッションでは、PencilKit が可能な拡張・難しい拡張を紹介しつつ、ユースケースに応じてどのような対処が取れるか解説します。たとえば、PencilKit の自由に描けるキャンバス画面と、独自で実装したハイライトマーカーが引ける画面を切り替えて利用できるようにする仕組みなどに触れる予定です。
ドキュメントと実際の動作を比較して得られた知見をもとに PencilKit を実アプリに組み込む Tips を紹介できればと思います。

2
採択
2022/09/10 16:40〜
Track C
レギュラートーク(20分)

ShazamKitの遊び方

namu767676 Naoyuki Murata

WWDC2021で発表されたShazamKitは、膨大な音楽カタログをベースに何百万曲の音楽検索を行える音声認識フレームワークです。
音楽に全く詳しくない私(ミスチル好き)ですが音声認識機能には興味があり、
レンタルスペースを予約できる「SpaceMarket」のiOS/Androidアプリへ遊びで勝手に組み込んでみたので
・ShazamKitの機能紹介
・両OSへの導入の仕方
・使い道の検討/実際に作ってみた機能/社員の反応
についてお伝えできればと思っています。