iOSDC Japan 2022 トーク一覧

採択 2022/09/12 11:25〜 Track B レギュラートーク(20分)

サーバーと同期してリアルタイムに更新する画面を実装する

rizumi_jp izumi rizumi_jp

アプリで画面を更新するためのトリガーとしてポピュラーなものは

  • Pull-to-refreshなどのユーザーの明示的なアクション
  • サーバー上などのデータが更新されたタイミング

の2種類に大きく分類できます。

ユーザーの明示的なアクションで画面更新する場合は比較的シンプルに実装することが可能ですが、サーバー上のデータが更新されたタイミングに同期して画面更新を行う場合、更新通知を受け取る方法やUI更新方法など、考慮することが増えて実装が複雑になりがちです。

そこでこのトークでは、リアルタイムでの更新が必要となる具体例を紹介した後に、サーバー上のデータをリアルタイムで同期するための設計/実装について、Firebaseを用いる手法、Push通知を用いる手法、WebSocketを用いる手法など、複数の手法の比較を行い、いかにしてリアルタイムで更新する画面を実装するかの解説を行います。

54
採択 2022/09/12 11:25〜 Track C レギュラートーク(20分)

OSSのアプリケーションを開発「し続ける」ための哲学

1024jp 1024jp 1024jp

自分達のアイデアを形にして新しいサービスをラウンチするのは興奮するものですし、さらにそれを軌道にのせてマネタイズするまでのノウハウは開発者の成功の証として世に溢れています。一方、アプリケーションの開発を「続ける」ことは、そのような華々しさとは縁遠く、かつフリーウェアとなれば生計を立てる外でそれを実行する必要があります。
発表者は2014年にOSSのmacOSアプリケーションCotEditorの開発を引き継ぎ、以来おおよそ月に1回のリリースを8年以上続けています。OSS開発を続けるということはどういうことなのか、どうモチベーション維持をするのか、このトークではそんなCotEditorプロジェクトを続けている哲学を紹介します。以下のような話を含みます:
・開発の基本方針
・開発を続けるモチベーション
・ユーザからのフィードバックとの付き合い方

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

シーンに応じた使いやすいQRコード読み取り機能を実装しよう

jollyjoester jollyjoester jollyjoester

iPhoneが登場して以降、QRコードを読むという行為はありふれた行為となりました。

iOSにおいては

  • 古くからカメラからのインプットを扱えるAVFoundationを用いて
  • 新しくは画像解析フレームワークであるVisionを用いて
    QRコードを読むという機能は比較的簡単に実現できます。

しかし、QRコードを読み込むシーンというのはアプリによって様々です。

例えば

  • 1つのQRコードをしっかり読み込みたい
  • リッチな表現でQRコードを読み込みたい
  • 夜や倉庫の中といった暗い場所でもQRコードを読み込みたい
  • 連続で複数のQRコードを読み込みたい
    などなど。

本セッションではシーンに応じてQRコードを気持ちよく読み取るためにした工夫をお話します。
頻繁に使う機能だからこそ体験の良いQRコード読み込みを実現していきましょう!

33
採択 2022/09/12 11:25〜 Track E レギュラートーク(20分)

モバイルアプリのオブザーバビリティを向上させるプラクティス

近年、SRE(Site Reliability Engineering)の手法をアプリケーションにまで拡大しようといった動きが盛んです。

しかし、実際にモバイルアプリの可観測性≒オブザーバビリティを向上させるためには、ネイティブエンジニアの専門性が求められる場面が多く、あまり実際に効果のあった事例が共有されていないように感じます。

このトークでは

  • アプリ内で計測される指標を用いてSLI / SLOを構成する
  • アプリ内でのレスポンスのパースエラー検知
  • 問い合わせ調査のオブザーバビリティ向上
  • 外部SNSの認証サービスの障害検知
  • App Store Connect API 、MeticKitの活用

といった実際にチームで効果のあったプラクティスを紹介したいと思います。

採択 スポンサーセッション 2022/09/12 12:00〜 Track C スポンサーセッション(20分)

LINE iOSのビルド環境の変遷

Giuk Jung

LINE iOSは、200万行を超えるソースコードと200以上のモジュールで構成されている大規模なプロジェクトであるため、そのビルド時間も長くなりがちです。

私達はビルド時間の改善の一環として、Bazelを取り入れました。その結果、ビルド速度が2倍になるというメリットを享受しましたが、メンテナンスコストが増大するというデメリットにも直面しました。

このセッションでは2年間Bazelを使い続けて分かったBazelの長所やリスク、運用時の注意点、そしてLINE iOSのビルド環境の現状と今後についてご紹介します。

45
採択 スポンサーセッション 2022/09/12 12:00〜 Track D スポンサーセッション(20分)

デザインシステム

kashihararara かしはら kashihararara

Wantedly では、「デザインの生産性を向上させ、デザイナ - エンジニア 間コミュニケーションを改善することで、ユーザに価値を届ける速度を向上させる」ことを目的として UI デザインシステムを作っています。

今回は現場で運用されているデザインシステムと iOS 実装の成功と失敗について以下の内容を話します。

  • Wantedly の UI デザインシステムとはなにか
  • コンポーネントリストではなく「共通の考え方とツール&アセット」
  • Figma 実装から考える iOS 実装のインターフェース設計
  • チームへの普及の成功と失敗
採択 スポンサーセッション 2022/09/12 12:00〜 Track E スポンサーセッション(20分)

「家族アルバム みてね」を支えるiOSビルド環境の改善

hicka04 佐藤 光 hicka04

iOSのビルド環境はXcodeやSwift Package Managerのアップデート、新しいMacの登場などによって毎年変化を遂げています。
サービス提供を開始した2015年から現在に至るまで、これらの変化に合わせて継続的にビルド環境の改善が行われてきました。
本セッションでは2021年以降に実施したビルド環境の改善についてご紹介し、今後の目指す姿についてお話いたします。

  • Swift Package Managerの活用とライブラリ整理
  • Apple Silicon対応
  • マルチモジュール化
  • ビルド時間改善
採択 2022/09/12 13:00〜 Track A レギュラートーク(40分)

Swift Concurrency時代のiOSアプリの作り方

koher Yuta Koshizawa koher

昨年、Swift Concurrencyが導入されました。当初はiOS 15のみでサポートされていましたが、Concurrencyのback deploymentが実現されたため、iOS 13以降であれば今すぐにでもConcurrencyを取り入れることができます。

しかし、実際にConcurencyを取り入れようとすると、参考となる情報はまだまだ少ないのではないでしょうか。Conccurency自体の情報は豊富でも、iOSアプリ開発での活用、特にactorや単体テストなどについてはほとんど語られていないように思います。

本トークでは、iOSアプリ開発におけるConcurrency活用の一つのベースラインとなることを目指して、async/awaitやTask、actor、MainActorなどを、アプリやテストのコードにどのように取り入れるか、具体例を用いて紹介します。

111
採択 2022/09/12 13:00〜 Track B レギュラートーク(40分)

Effective PencilKit / 新聞スクラップ体験の実現

shimastriper shimastripe shimastriper

WWDC 2019 で発表された PencilKit を利用することで、数行のコードで 標準メモアプリと同様の手描き体験をアプリに導入できます。

発表に先立ち、日本経済新聞社の紙面ビューアーアプリでは、Apple Pencil を用いた紙面画像にメモやハイライトを書き込める機能をリリースしました。

アプリの機能要件を満たすための独自拡張の実現には、様々な制約が立ちはだかりました。
たとえば、キャンバスに画像を載せる、ズームやスクロールなどビューアーとしての操作は残しつつ書き込みを一時的に無効にするなど、一見すると単純そうですが一筋縄ではいきません。

本セッションでは PencilKit の開発ノウハウを、ドキュメントと内部の動きから洞察した知見の両面から解説します。開発経験を踏まえ、紙の新聞に書き込みを行うユーザー体験をどのようにアプリへ落とし込んでいったか説明できればと思います。

採択 2022/09/12 13:00〜 Track C レギュラートーク(40分)

The state of Swift for WebAssembly in 2022

kateinoigakukun kateinoigakukun kateinoigakukun

SwiftのWebAssembly対応を進めている、SwiftWasmというプロジェクトがあります。

現在、WebAssemblyはWebブラウザ上の用途だけでなく、「複数言語からコンパイルできて様々な環境で動く高速なプログラム」として、エッジコンピューティングやIoT、ブロックチェインにおけるスマートコントラクトなど、様々な分野で用途が模索されています。

もし将来的にWebAssemblyが覇権を取った場合、そこでSwiftが活躍できるポジションはあるのでしょうか?

このトークでは、Wasm対応によって達成できる未来、プロジェクトの最新状況と課題、実際の活用事例を紹介したいと思います。
Appleプラットフォーム以外でのSwiftの活用に興味のある方には、特に楽しんで頂ける内容になる予定です。

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

react-reconcilerでオレオレReact Nativeを作ろう!

_kwzr_ ああうえ _kwzr_

Reactの思想であるLearn Once, Write Anywhereを推し進めるため、React内部にはReactをどこでも動かせるようにするreact-reconcilerというパッケージが存在します。

react-reconcilerはReact DOMやReact Nativeで利用されているUIの差分検出処理のパッケージで、JSXで書かれたコンポーネントのマウントや更新通知を受け取れます。これを使って独自のレンダラーを作ってみましょう。

このトークでは、react-reconcilerのレンダラーをSwift(UIKit)で実装して自分だけのReact Nativeを作る方法について話します。

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

モバイルアプリの行動ログの「仕込み」を快適にする

yujif_ Yuji Fujisaka yujif_

ここでの「行動ログ」とは、特定の画面の表示、ボタンのタップなど、ユーザー操作を起点に送信するものを指します。集めた行動ログは、サービス開発上の分析や実態把握に役立ちます。

アプリ開発者は、そのログを仕込む役割を担いますが、しばしば課題にぶつかります。

  • いざ分析するとき「ログが足りない!」
    • 「QA時にログ送信、網羅した?」
    • そもそもログ要件が十分に練られていない……
  • ……

本セッションでは、行動ログにまつわる悩みの種のうち、ログ実装の「仕込み」にフォーカスして、ミスを防ぐ仕組みや工夫の事例をご紹介します。

トピック

  • ドキュメントをベースにした型安全なログ実装コード自動生成
  • iOS 14以降で使いやすくなった Logger APIの活用
  • QA作業を踏まえたログ実装網羅チェッカー

など

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

目からビームでヴィランをやっつける 〜ARKitの知られざる並走機能〜

na9ain nagain na9ain

ARKitが持つ多くの機能の中でも、みなさんはフロントカメラとバックカメラを同時に使用することによるフェイストラッキングとワールドトラッキングの並走機能をご存知でしょうか?実はこの機能、Human Computer Interaction(HCI)の研究者たちの注目を集めたアツい機能なんです。この機能により、視線を向けるだけで目の前のコーヒーメーカーがコーヒーを淹れてくれるような、これまでにスマートフォン1台ではできなかった体験を実現することが可能となりました。
本トークでは、この並走機能に新たな可能性を感じた私が実際に作ったいくつかのサンプルアプリの紹介やそこで得られた知見の共有をします。

・視線を向けるだけで電気を点けたり、コーヒーを淹れられるアプリ
・目からビームを発してヴィランをやっつけるアプリ
・ユーザが暗い表情をしていると、辺りに花が咲きほこるアプリ

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

iOS15からのCommunication NotificationとSiri

mtj_j まつじ mtj_j

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

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

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

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

キャッシュによる状態管理のアーキテクチャ

_rockname 岩名 勇輝 _rockname

例えばTwitterアプリでは、ツイートに押したいいねは他のどの画面に表示される同一のツイートにも反映されています。
このような体験を実現する上で、グローバルステートとして状態を管理する手法がしばしば用いられ、iOSアプリ開発でもReduxから派生するTCAが例として挙げられます。

しかし、そもそもこのグローバルステートで管理する大抵の状態はサーバーからのレスポンスであることから、WebフロントエンドではReact QueryやSWRを筆頭にサーバーデータのキャッシュによる状態管理が流行しつつあります。

そこで本トークでは、SwiftUIを用いたiOSアプリ開発におけるサーバーデータのキャッシュによる状態管理のアーキテクチャについてお話しします。

63
採択 2022/09/12 14:30〜 Track C レギュラートーク(20分)

watchOSにおけるバックグラウンドタスクの限界

_yamannnu yamannnu _yamannnu

Appleが提供している中で最もバックグラウンドタスクが重要なプラットフォーム、それがwatchOSです。
操作は両腕を上げる必要があるので短時間で済ませたいですし、ワークアウトのような長時間のタスクはそもそも待っていられません。

そんなwatchOSのバックグラウンドタスクは2016年に開発者へ解禁されて早6年、日々進歩してきました。
watchOS 9でも新しい機能が追加されるようで、更なる進化が期待できます。

本セッションでは以下のテーマについてお話しすることで、今のwatchOSアプリでどこまで出来るのかを理解する手助けになればと思います。

  • バックグラウンドでできること、できないこと
  • 端末の世代やバッテリー残量などの環境によって受ける影響
  • どのようにバックグラウンドタスクを設計すべきか
  • watchOS 9から追加される新機能
採択 2022/09/12 14:30〜 Track D レギュラートーク(20分)

AirPlayの裏舞台

Ridwy なめき ちはる Ridwy

みなさん、AirPlay使いこなしていますか?
AirPlayはAppleのデバイスから映像や音楽をApple TVや対応スマートテレビ・スピーカーで再生できる機能です。発表当初から複雑な設定なしで直感的に使えるようにAppleらしい設計が行われ、ユーザーにその裏側で何が起きているのかを意識させることがほとんどないようにデザインされています。2018年にAirPlay 2が発表されて以降は対応デバイスも増え、またSiri連携や接続先デバイスの学習によりますます使いやすくなって来ました。
本トークではAirPlayで可能になる体験やアプリへの組み込み方法、他のキャスト技術との比較といった内容の他、その仕組みの裏でどんな通信が行われているのか?まで踏み込んでお話しできればと思います。

25
採択 2022/09/12 15:10〜 Track A LT(5分)

CarPlay向けのアプリって開発できるの?

haseken_dev haseken haseken_dev

CarPlayを利用したことはありますでしょうか。

CarPlayはiPhoneがあるだけで登録した地点までのナビをする、好きな音楽を再生するなど、車をすぐに自分の空間にすることができます。

便利なCarPlayですが、ハードルが高く実際に触ってみたりアプリを作る機会は少ないのではないでしょうか。
ですが最近はiPhoneを繋いで動作するシミュレータや、安価なカーオーディオがあったりします。
またUIもTemplatesが用意されていたり試すのは意外と簡単だったりします。

本LTでは、CarPlayの開発に必要な知識を振り返りつつ、簡単なアプリを動かせたらと思います。

[ゴール]
・CarPlayに興味が湧いて触ってみようかな、という気になる

[アジェンダ](検討中)
・CarPlayとは
・開発するために・・
・シミュレータを触ってみよう
・簡単なアプリを作ってみよう

採択 2022/09/12 15:15〜 Track A LT(5分)

JailBreakと向き合おう

darquro darquro darquro

昔はiOSのJailBreakはよく行われていましたが、最近はiOSのアップデートによりJailBreakは少なくなったような印象です。
とはいえ何もしないのではなく、やれることはやっておいたほうがいいと思います。

本LTでは、JailBreakはどのような手段があるのか、アプリはどのような対策ができるのか、自分なりに調べた結果を共有したいと思います。

22
採択 2022/09/12 15:20〜 Track A LT(5分)

鉄道アプリを支えるテクノロジー

dotrikun Hiroshi Shikata dotrikun

東急株式会社・東急電鉄株式会社では東急東横線や田園都市線などの鉄道をより便利にお使いいただくために「東急線アプリ」を提供しています。

このLTでは

  • アプリと連携する駅、線路、車両などのハードウェアについて
  • アプリと連携する線路信号システム、運行情報システムの技術
  • アプリ上でリアルタイムデータ更新するためのアーキテクチャ

など
普段知る機会の少ない鉄道のテクノロジーとiOSアプリでの活用についてご紹介します。