iOSDC Japan 2021 トーク一覧

採択 他イベントOK スポンサーセッション スポンサーセッション

だれもが当たり前に使うアプリへ noteのこれまでとこれから

konpyu 今雄一 konpyu

2014年からサービス開始したnote。

iOSアプリはこれまでWebと機能面での差がありましたが、2020年は開発の土台作りのためのMagic PodやXcodeGenなどの活用、公式ライブラリであるDiffable Data SourceやCombineなどの導入、iOS 14で追加されたウィジェット機能の取り入れ、エディタ機能のリプレイスなど、さまざまな取り組みをしてきました。

2021年も、iPadアプリ対応やアクセシビリティ向上などに取り組み、アプリの評価も急上昇しています。

でも、インターネット上でひとびとが暮らすときの本拠地を目指すnoteにとっては、必要な開発がまだまだ山積みです。

本セッションでは、CTOの今からnote iOSアプリ開発のこれまでとこれからをご説明したうえで、日々一緒に働くPdM、デザイナー、ディレクターのコメントをご紹介します。

採択 スポンサーセッション スポンサーセッション

Initiatives in Rakuma iOS App

hcrane14 Hiromu Tsuruta hcrane14

■概要
楽天グループが運営するラクマでは、旧フリルから含めて今年の7月末で9周年を迎え、10年目に突入します。

長年開発されてきたアプリのため、レガシーな部分が残っており、リファクタリングを継続して行っています。
その一方で、早期から iOS13 以上のサポートへ切り替えているため、新しい API の導入を積極的に行ってきました。
例えば Combine、SwiftUI、Compositional Layouts といったものです。

今回は、実際にプロダクションレベルで運用している実装について、特に Compositional Layouts について触れていきます。
また、その他にラクマの iOS 開発における挑戦を紹介したいと思います。

■登壇者
鶴田: @hcrane14 (Twitter)
黒田: @darquro (Twitter)

2
採択 他イベントOK スポンサーセッション スポンサーセッション

iOSエンジニアがKMPで大規模アプリのロジック共通化をしてうまくできている話

nirazo Kenzo Nirasawa nirazo

このトークは、韮澤 と 浅井2名での登壇になります。
韮澤 : GitHub, Twitter -> @nirazo
浅井 : GitHub, Twitter -> @trsxxii

ホットペッパーグルメアプリは約20万行のソースコードから成る大規模なアプリで、10年以上の歴史の中で仕様とソースコードが複雑化し続けています。
この複雑さの解消と今後のメンテナビリティ向上のため、我々はコードリニューアル・リアーキテクチャを行う決断をしました。コードリニューアル・リアーキテクチャにあたり、iOSとAndroid間の不要な仕様差分解消や開発工数削減を狙いKotlin Multiplatform Project(以下KMP)を導入することとなりました。
現在はまだ開発中ではありますが、今のところKMP導入による致命的な問題は発生せず、順調に開発が進んでいます。
本セッションでは、大規模なアプリケーションにKMPを導入した際に発生した課題やその解決方法など、iOSアプリにKMPを採用する際の知見を共有します。
初期のKMP実装はiOSエンジニア2名で行っていたため、iOSエンジニアの皆様により近い目線でお話できると思います。
ロジックの共通化に興味があるけどKotlinに手を出すことに抵抗があるiOSエンジニアの方、大規模サービスにおけるロジック共通化の事例を知りたい方、ホットペッパーグルメのアプリ開発事情を知りたい方は是非ご参加ください!

採択 スポンサーセッション スポンサーセッション

アプリ間連携で薬局・クリニックのユーザー体験価値を最適化した話 〜 Medpeer iOS開発〜

ichi61111 Manami Ichikawa ichi61111

患者さんに「かかりつけ薬局」として「選ばれる」薬局には、何が必要か。
「kakari」は、薬局の「差別化」に着眼した新しいコンセプトの薬局アプリです。

去年には姉妹アプリであるかかりつけクリニック支援サービス「kakari for Clinic」をリリースし、その後両アプリ間の連携を開始しました。
「kakari for Clinic」アプリでオンライン診療を受けた患者さんは、「アプリ連携」機能を活用することで、「kakari」を初めて利用する際に必要となる情報の登録が簡略化され、「kakari」アプリを簡単に利用できるようになります。

本セッションでは、「kakari」で実現したい未来と、
FirebaseのDynamicLinkを使ったアプリ関連携の実装について紹介します。

採択 他イベントOK スポンサーセッション スポンサーセッション

UITestを活用しまだまだ不安定なSwiftUIアプリを安定的に実務運用する方法

7_6_ ななしき 7_6_

スタディサプリEnglishでは社内向けのiOSアプリをフルSwiftUIで1から開発し、去年の秋から約1年間運用しております。

ただSwiftUIはWWDC2019で登場してからまだ2年でOSのバージョンやXcode(iOS SDK)のバージョンによって挙動が大きく変わったり、Viewの書き方によって自分が触ってない子Viewにまで影響してしまうなど不安定な部分が多いです。

本トークでは不安定なSwiftUIアプリを運用していく際に直面した課題やそれらの課題をUITestを使って解決し安定的に運用することができるにした方法を話します。

採択 スポンサーセッション スポンサーセッション

タウンワークアプリの案件開発を支えるオフショアチームの成り立ちとこれから

大坂 陽

TBD

採択 スポンサーセッション スポンサーセッション

アプリ開発プラットフォーマー特有の開発課題とアプローチ

Kikumaru Koga

ヤプリはアプリの開発・運用・分析をノーコードで提供するアプリプラットフォームです。
豊富な40以上の機能と外部サービス連携で、優れたユーザー体験を提供しており、
アプリ制作を非エンジニアが行うことが可能です。
本セッションでは、エンジニアが手を動かさなくてもストア申請までできるようにした自動化の仕組みや、
複数のアプリを作れる仕組みだからこそ直面する開発時の課題やアプローチについてご紹介します。

採択 他イベントOK スポンサーセッション スポンサーセッション

モバイルアプリでゲームセンターをDX

geshi0123 重村 裕紀 geshi0123

モバイルアプリでゲームセンターをDX

採択 他イベントOK レギュラートーク(40分)

Mediapipeを使ったARアプリ開発事例〜カメラをかざして家の中で売れるものを探そう

Chica Matsueda

近年、高性能なサーバーではなくスマートフォンなどのモバイル機器上で機械学習モデルの推論を走らせる、EdgeAIと呼ばれる技術の開発が進んでおり、 TensorFlowLite/MLKit/CoreML/MediaPipe をはじめ様々なモバイル端末向けの推論ライブラリが開発されています。

メルカリでは、動画などストリーミングメディアの推論に特化した MediaPipe というGoogle製のOSSの活用して、カメラをかざすだけで家の中にあるアイテムがいくらで売れるのか知ることができる、「かざして売れるかチェック」という機能を提供しています。

このトークでは、この機能が開発されるまでに遭遇した困難とその解決方法を、大きく3つのトピックに分けてお話していきます。

  • BazelでBuildされるMediapipeをiOS Frameworkとして提供する方法
  • 推論の計算負荷を減らし、電池消費を抑える工夫
  • モデルサイズを小さくしてダウンロードサイズを抑える工夫
3
採択 レギュラートーク(40分)

オーディオ波形を表示するために知っておくべきこと

yaso_san 八十嶋祐樹 yaso_san

オーディオのデータは時間に対しての量が多いので何も考えずに波形を表示しようとすると、綺麗に表示されなかったりパフォーマンスが十分に出なかったりメモリを簡単に使い切ってしまったりします。

単に一つの短い数秒のオーディオの波形を表示するだけでも気にすべきことはありますが、大量のファイルの波形を表示したかったりリアルタイムにスムーズなスクロールをしたいとなると、より一層の工夫が必要です。

このトークでは、オーディオ再生アプリを実装した時の知見を元に、場合に応じてオーディオ波形表示をどのように実装すべきかのヒントとなるお話しをします。

以下のような内容を予定しています。

・オーディオデータの仕組みついて
・様々なアプリの波形表示方法を比べてみる
・波形表示のためのオーディオデータの間引き方・扱い方
・パフォーマンスを考慮した波形表示

2
採択 他イベントOK レギュラートーク(40分)

運用6年目・500万人が使うアプリのDBをSQLiteからFirestoreに移行した話

aviciida 飯田 諒 aviciida

「Firestoreの導入を検討しているけど、実際どうなんだろう...?」
「導入事例は、新規アプリとか個人アプリばかりで、大きめのアプリで話はあまりないな...」
と思っているみなさまのためのトークを用意しました。

株式会社mikanでは、2020年夏ごろから9カ月以上の時間を費やし、
英単語アプリmikanのiOS版のクライアント側で使用しているDBを、SQLiteからFirestoreに移行しました。
(現在Androidも移行中です)

このトークでは、9カ月を超えるプロジェクトを振り返り、

そもそもなぜDBの移行が必要だったのか、どんなことに失敗して、どんなことはうまくいって、
同じようなこと企む方々が少しでも僕たちよりもうまくできるようにするためには何を意識すればいいか、という話、
そして、そもそも何故SQLiteを使っていたの?なぜFirestoreを選んだの?実際に使ってみてどう?みたいな部分も赤裸々に話していこうと思います!

  • なぜSQLiteからFirestoreへ移行したのか
    • SQLiteが採用された歴史的経緯
    • SQLiteのツラミ
    • Firestoreを採用した理由
  • 移行によって変わること
    • スタンドアローン型DB→ネットワーク型DB
    • RDB→KVS
  • どのように移行を進めたのか
    • ダブルライト
    • マイグレーション
    • クライアントロジックの移行
  • うまく行ったこと
  • 難しかったこと
  • 実際Firestore使ってみてどう!?
  • プロジェクトをやってみての学び・同じことを考えている人へのアドバイス
10
採択 他イベントOK レギュラートーク(40分)

オフライン編集もできる複雑なデータ構造を端末間で同期するために

496_ rokuroku 496_

皆さんも開発をしていて端末間のデータ同期システムが必要になったことはありませんか。
この発表ではオフライン編集可能なテキストエディタのバックエンドとして作った、テキストファイル同期システムの設計やその構成、開発環境についてお話しします。
同期システムはiOS / Android / WebだけではなくWindowsなどのデスクトップOSへの展開も見据え、iCloudに依らない実装が必要でした。また作成するアプリの特性上、同期の仕組みをユーザーに十分説明できるように同期の仕組みを全て実装することにしました。

  • サーバー構成と開発環境(今回はAzure Functionsを中心に設計したのでその話)
  • 採用したシステムとFirestoreを使った場合の比較
  • 複雑な系において、アプリのCIにもDockerなどでサーバーを立てるメリット
  • オフライン編集を前提とした同期のためのデータベース設計のコツ(ローカル・サーバー両方)
  • iOSのファイルアプリに同期対象のファイルを露出させる方法などプラットフォーム固有の話
1
採択 他イベントOK レギュラートーク(20分)

iOSではじめるWebAR 2021

ikkou HEAVEN chan / ikkou ikkou

iOSDC Japan 2020で発表した『iOSではじめるWebAR』のアップデート版です!
ChromeもMicrosoft EdgeもFirefoxも“標準”でWebXR Device APIに対応する中、長らく未対応の続く我らがWebkit、そんなWebXR領域では何かと足が遅く見えるWebKitでも 1 年も経てばいくつか変更が入っています。

まずはWebKit Feature Statusで“WebXR Device API”がIn Developmentステータスになっていること!いつSupportedステータスに変わるかわかりませんが、少なくともSafariでWebXR Device APIが使える未来が予定されていることだけはわかります!

そしてiOS 14.5で突然SafariのExperimental Featuresに追加されたWebARのためのものと信じているmodel要素!これはiOS 14.5時点では要素そのものは認識されるものの肝心の3Dモデルは表示されませんが、今後デファクトスタンダードになるかもしれない要素が登場したと言えます。

そうした事例を挙げながら、多くの人が毎日触るであろうSafariにおけるWebARが今どのような状況にあり、何ができるようになっているのか、次のようなトピックスを解説します。

  • iOSとWebARのこれまでとこれから
  • WebXR Device APIの概要とその動向
  • WebXR Device APIに頼らないWebAR
  • iOSでも動くWebARを用いた最新事例10選
  • WebARコンテンツの開発手法
4
採択 他イベントOK レギュラートーク(20分)

LiDARを活用したARアプリを作ろう

jugemjugemjugem TokyoYoshida jugemjugemjugem

LiDARという技術をご存知でしょうか?

LiDARとは、レーザー光を当てることで、対象物までの距離や方向を測定するセンサー技術のことです。自動運転の分野でも活用されている注目の技術で、高い精度でスキャンできることが特徴です。

つまり、この技術を使うと現実世界を緻密にスキャンすることができるようになるのです。そのLiDARが、昨年iPad ProやiPhone 12 Proに搭載されました!

そしてARの分野では、早くもLiDARを活用したさまざまなアプリが登場しはじめています。

私はこのLiDARを使ったアプリがさまざまな現実世界をスキャンする様子をTwitterなどで目撃し『自分もやってみたい!』と思いました。それからLiDARに取り組んで数ヶ月、LiDARを使った様々な機能を引き出すことに成功しました。

このトークでは、このLiDARを使うと何ができるのか?そして、どうやってiOSからLiDARの機能を利用するのかについて解説します。

8
採択 レギュラートーク(20分)

対話を頑張らなくても作れるSiri Shortcuts向けIntents App Extension

m_yamada0617 明渡麻衣花 m_yamada0617

WWDCの動画で紹介されているSiri Shortcutsのサンプル、Soup ChefのようにSiriと対話してアプリを操作する機能を作りたい―――
ところが担当しているアプリで「入れるならここしかない!」という機能、想定される入力パターンがとても多く対話設計が困難だった。

Studyplusの勉強記録入力機能にて、Siriとの音声対話により全てのパラメータ入力を受け付ける想定を捨て、利用頻度が多い見込みパターンに絞り込んだSiri ShortcutsのカスタムIntentを実装してリリースしました。
AppleがWWDCで推奨していた望ましい対話設計を途中で諦めて実装を進めたものの、リリースした機能は少なくない一定数のユーザーへ定着しています。

このトークでは、Studyplusの勉強記録入力機能での設計や実装を例としてあげつつ、ここさえ抑えておけばSiri ShortcutsのIntentsを用いたサポートを形にできると考える要点をお話します。

  • Siri Shortcutsで操作を受け付けるアクションの選定
  • アクション毎に入力を受け付けるパラメータ設計
  • 入力されたパラメータのエラー処理
  • アクション完了後、アプリに遷移してやりたいことがある場合の実装

1人でも多くのiOSユーザーが日頃利用するアプリをより快適に操作できるよう、Siri Shortcutsのサポートを行うアプリが少しでも増えるきっかけになれば嬉しいです。

採択 他イベントOK レギュラートーク(20分)

SwiftUIで使ったアプリを1年運用してみてわかったこと

akifumifukaya Akifumi Fukaya akifumifukaya

SwiftUIが発表され早2年が経ちました。そんなSwiftUIですが、本番アプリで採用されているケースはまだまだ少ないかと思います。
お友だちやご家族と一緒にシェア買いができるアプリ「KAUCHE(カウシェ)」は、大部分がSwiftUI,Combineを活用して作られており、2020年9月にリリースしました。
そして、リリースから1年運用しています。
・SwiftUI,Combineを活用し、どのようなアーキテクチャで開発・運用しているのか
・SwiftUIで開発中に問題となった点
・運用している中でわかった良かった点・悪かった点
などをお話したいと思います。

11
採択 他イベントOK レギュラートーク(20分)

Source Editor ExtensionとSwiftSyntaxでコード自動生成ツールを作る

kazuhiro494949 林和弘 kazuhiro494949

Swiftではコードの自動生成ツールでボイラープレートを避けるということがよく行われます。
そして方法には様々ありますがXcode上で実行する場合は多くがファイル作成もしくはビルド時にコード生成をします。

しかし、ユースケースによっては実装中のコードからそれに対応するコード生成を行いたいこともあるでしょう。
例えばリファクタリングのためにProtocolで依存を切り出したり、Mockクラスを作る場合などがそれにあたります。

ここではSource Editor ExtensionとSwiftSyntaxを組み合わせたコード生成ツールの開発方法について解説します。
それらを組み合わせると、実装しながら同時にXcode上でコード生成を行うツールが比較的リーズナブルに開発可能です。

また、その方法によって実際に開発したリファクタリングツールを例として紹介します。
皆さんが開発環境改善をしたいと思ったときに検討する手法の一つになるよう話ができればと思います。

4
採択 他イベントOK レギュラートーク(20分)

ランタイムデバッグのススメ

noppefoxwolf noppe noppefoxwolf

開発者のあなたや、チームメンバーがadhocビルドを使うことは良く見る光景です。
全員がサービスに向かい合い、より良い体験を作ろうとします。
しかし、パフォーマンスに関してはどうでしょうか?
ネットワーク状態や、CPUの使いすぎに対しては開発者であるあなたが気にかけるしかありません。
そんな状態を打開するのが、ランタイムデバッガーです。
画面に常に情報を表示することで、アプリを使う全員がパフォーマンスに対して視覚的に関心を持ち始めます。
それはクラッシュを伴わない問題を解決する糸口にもなるでしょう。
この手法は、AppleやGoogleでも採用されています。
このセッションでは自作のランタイムデバッガーを元に、ランタイムデバッグのコツや運用の仕方を解説します。

17
採択 他イベントOK レギュラートーク(20分)

とあるアプリのサービス終了を見届ける 〜サブスクリプション型アプリのサービス終了ベストプラクティス〜

m877_778m Ryo Ota m877_778m

アプリの立ち上げの話はよくあると思いますが、クロージングの話を聞く機会はあまりないかと思います。

昨今サブスクリプション型のアプリも増えてきているなかで、実体験から語られるサービス終了の側面をともに見てみませんか?
実際にアプリのクローズに立ち会い、そこで考慮したこと、終了のフロー、App Store Connect上での操作したこと、その時の思いをまとめていきます。
自分が開発に携わったアプリが終わっていく姿を見たいエンジニアなどいないとは思いますが、いざその時が来たとき、正しい方法でスムーズに対応できるよう、知見を共有したいと思います。

9
採択 他イベントOK レギュラートーク(20分)

SwiftUI で実プロダクトを音速リリースした話

AkkeyLab AkkeyLab AkkeyLab

寄付体験を身近にすることを目指して開発されたアプリ「dim.」

・SwiftUI 95%以上
・エンジニア1人
・開発期間2ヶ月
・リリース前に大きな仕様変更を2回行う
実はこんな条件下で生まれたアプリです。

皆さんご存知の通り、SwiftUI はまだ実用レベルに達していないと言っても過言ではありません。が、実体験を元に「実用レベルに達していない」と口にしているエンジニアはどれほどいるでしょうか。
SwiftUI が未熟だという周りの声を鵜呑みにして逃げているだけではないですか? SwiftUI を採用しない理由を明確に説明できることは非常に重要です。なぜなら、 SwiftUI が適している要件にも敏感に反応できるようになるからです。
このトークでは主に以下に関して実例と共に SwiftUI の現状をご紹介いたします。

・SwiftUI 採用の理由
→キーワード:チーム開発, デザイナー
・2回もの大型仕様変更への高速対応を可能にした SwiftUI レイアウトテクニック
→キーワード:Modifier, XcodePreviews
・粘ったけど、UIKit に浮気せざるを得なかった TextField
→キーワード:最小限に抑えた UIKit 利用術
・油断禁物! SwiftUI 未対応ライブラリ達
→キーワード:Firebase, 計測ツール

このトークにより、SwiftUI をチームで採用するための説得材料を手にすることができます。また、 SwiftUI による開発方針を「チーム」という広い視野で考える“きっかけ”になるでしょう。

2