ポスターセッション

Reduxと照らし合わせながらイメージを掴むTCAの世界とコード読み解く際の勘所紹介

fumiyasac 酒井文也

SwiftUIが登場して以来、システムアーキテクチャの選択肢として注目される「The Composable Archtecture」(TCA)は、Reduxに近い構成となっている点が特徴の1つになります。

初めてTCAのサンプルコード等に触れた際に、過去にUIKitベースのプロジェクトで状態管理フレームワークにReduxを導入した時やSwiftUI&Reduxを利用した簡易的なサンプル開発時に得た知識や体験が、処理概要を掴んでキャッチアップする際の大きな助けになりました。そして同時に「この様な部分にも配慮が施されているのか!」や「見比べてみるとこの様な特徴があった!」という気付きや学びを得ることもできました。

本セッションでは、ReduxとTCAにおける類似点や相違点に加えて、理解を進めるための前段で知っておきたい勘所等をコードやイメージ図解を交えてご紹介できればと考えております。

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

ライブラリとモジュールの管理を SwiftPM に移行する

kuritatu18 久利 龍義

タクシーアプリ『GO』では、ライブラリを CocoaPods + プレビルドで管理し、プロジェクトはマルチモジュールを XcodeGen で管理してきました。
SwiftPM が Xcode と統合され、機能追加により様々な場面で利用できるようになりました。
いざライブラリの管理方法やプロジェクト構成を変更しようと試みたものの、普段の開発と並行しながらの移行は非常に困難です。

どうやって時間を確保し、どんな事前準備をしたのか。移行作業で何を行い、どんな課題に遭遇したのかをご紹介したいと思います。

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

より「速く」継続的な改善を目指すCI / CD 戦略

iOSアプリ開発のCI / CD 運用における共通の課題として速度があると思います。
しかし、ひとえに速度といってもビルド時間から、環境構築の速度、不具合に早く気づく工夫など
取り組むべきテーマはそれぞれです。

本トークではそんな様々な「速さ」を追い求めてタップル iOSチームが取り組んできたTipsについてお話しし、
皆さんが明日から改善に取り組めるようになることを目指します。

  • マシンスペックを改善する
  • キャッシュ戦略を改善する
  • 自動テストの責務を見直す
  • 必要なUnitTestを選択的に実行する
  • ローカル ⇔ CI間のsecretの管理を見直す
  • Adhocアプリを迅速に共有する
2
LT(5分)

LINEアプリのサポートバージョンの考え方

Masaki Fuke

iOSは毎年メジャーアップデートを行っていますが、後方互換の対応が乏しいため、多くのバージョンをサポートすると、非常に多くの開発コストがかかります。
古いバージョンを使い続ける方のために多くをサポートしたいところですが、iOSのユーザーはアップデートするのが早い傾向にあるため、
少ないユーザーのために多くのユーザーの利益を損なうこともあり、アプリ開発者はサポートバージョンについてはどこまで対応するか考えなくてはなりません。

そこで、今回はLINEアプリでのサポートバージョンに関する考え方をお話しします。
皆様のサポートバージョンに関する参考になれば幸いです。

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

XcodeCloud移行と活用のためのノウハウ

nekodoko315 レイ

WWDC21で発表されたApple公式CIサービスXcodeCloudがついに今年から正式サービスを開始しました。
すでに使っている人もいれば、高い関心を寄せていてもまだ使っていない人もいるのではないでしょうか?

既存のプロジェクトにXcodeCloudを入れることははすごく簡単です。
ただしバージョンの管理・様々なビルドツールの利用・Crashlyticsを運用しているプロジェクトでは、考慮しないといけない事項が多いです。

ベータ版の頃から社内のアプリと個人アプリで1年ほど運用し、その過程で学んだことやおすすめの設定、TIPSを紹介します。

今回のトークでは

  • ci_scriptの活用
  • Github Actionsとの連携
  • 様々な外部ツール対応
  • Dev、Prod環境プロジェクトの構成
  • XcodeCloudの制約

上記のテーマについてお伝えできればと思っています。

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

iOSアプリをvisionOSにシフトするための先駆け対応

chingisod チンギス

本トークでは、没入型体験の次の革命的なステップであるAppleのvisionOSについて話します。
まず、スマートフォンの世界的な普及に伴うVR技術の進化を比較しながら、visionOSがiOSデベロッパーに提供する様々な可能性に触れ、必要なアプリケーションのエコシステム育成に注目し、他の有名なVR製品の開発状況も徹底的に分析、一般ユーザーへの普及と応用可能性について調査した結果を発表します。
さらに、1年後の実機端末の販売より先行して7月にリリースされるvisionOSのSDKを1か月間試し、簡単なiOSアプリケーションの事例を通して、自分が感じたvisionOSに取り組む際のベストプラクティスや、それにおけるSwiftUIでの基本的な作成方法、加えてMR・3D空間コンテンツ制作を含む開発体験を話します。

2
LT(5分)

50万円は高いのか?XRデバイスの価格調査!性能とコストを比較してみた!

ikkou HEAVEN chan / ikkou

ついにAppleの空間コンピュータ「Apple Vision Pro」が発表されました。
お値段は日本円で約50万円と言われ、一般的には高い印象を持つと思います。

しかし、この価格が数多くあるVRヘッドマウントディスプレイやARグラスといったXRデバイスと比較したとき、高いのか、安いのか、知らない方も多くいるのではないでしょうか。

実は3桁万円、4桁万円のXRデバイスも存在します。ピンからキリまで、市販されていた・市販されている、そして今後登場するXRデバイスの価格帯を、それぞれのデバイスの特徴や性能とあわせて比較調査しました。

5分後、50万円という価格に対する考え方が変わっているかもしれません。

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

iOS 16 のリリースに合わせて Coincheck アプリに Lock Screen Widget を追加した話

ChaaaaaaaaaaanU nftakahashi

コインチェックでは昨年9月にリリースされたiOS 16で追加された機能である Lock Screen Widget を実装した新アプリをiOS 16のリリースの2日後にリリースしました。
新OSのリリースに合わせて新機能を作るというのは初体験で、リリースまでのスケジュール感、エンジニア以外触りにくい新しい機能をデザイナーやアナリストなどにどのように理解してもらうかなど悩みも多く、周りの協力を得ながら手探りで進めていました。

このトークでは新しいOSの機能を早めにアプリどんなことをやって、どんなふうに進めたのかということを以下のような観点からお話をさせていただきます

  • なぜそんなに早くリリースしたかったのか
  • リリースに至るまでのスケジュール
  • リリースに至るまでのステップ(設計、デザイン、実装etc…)
  • 他のメンバーとの連携について
  • 実際にリリースしてどんな効果があったか
1
LT(5分)

SwiftUI.AsyncImageではダウンサンプリングができない問題について

fummicc1 Tanaka Fumiya

iOS16時点ではSwiftUI.AsyncImageは非同期で画像を取得した後、SwiftUI.Imageを返却するためCGImageのような画像を加工できる形で返されません。
本LTではそのAsyncImageの欠点である「ダウンサンプリングができない」という問題に焦点を当て、それが引き起こす問題と改善案について紹介します。

ダウンサンプリングは大まかには画像の解像度を下げる手法と考えられます。ネットワーク越しに大きなサイズの画像を取得しても、表示する際には小さなImageに表示する場合に有効です。ダウンサンプリングをしない場合、場合によっては消費メモリが桁違いになってくるため大きな問題として捉えられます。
ダウンサンプリングを実装するにはiOS16時点では自前で実装することになり、LTの後半ではAsyncDownSamplingImageというライブラリの紹介をします。

3
ルーキーズLT(5分)

ロック画面ウィジェットから特定の機能を起動してみよう

shkrd_ Shuhei Kuroda

iOS16からiPhoneのロック画面をカスタマイズする方法に様々な機能が追加されました。
その中の一つにロック画面ウィジェットがあります。
その名の通りロック画面にウィジェットを置けるのですが、これにより天気やバッテリー残量、カレンダーの予定などの情報をロック画面から素早く確認でき、ウィジェットからアプリを起動することもできるようになりました。

本LTではロック画面ウィジェットについて説明し、既存アプリにロック画面ウィジェットを追加する方法について紹介します。
ロック画面から特定の画面を起動するウィジェットを例に
・実装時に悩んだこと / 落とし穴
・UI / UXで考慮すべきこと
・気づき / 分らなかったこと
・実際に導入する上での障壁
などを交え、サク〜っとお話しします。

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

レガシーアプリ開発を前進させたiOSアーキテクチャ改善への取組み

akkiee76 akkie76

弊社のモバイル開発チームは、2020年に組織化された若手中心の新しいチームです。それゆえ、チームでは様々な解決すべき課題があります。中でも「技術力向上」「開発効率化」はチームの中でも優先度が高い課題です。背景には、開発中のアプリでは明確なアーキテクチャが存在せず、機能拡張がしにくいといった課題があったため、開発の生産性がなかなか伸ばしにくい状況でした。これらの課題に対するアプローチとして「アプリアーキテクチャの明文化」を行い、実装方針の整備を進めることで、生産性の向上にアプローチすることができ、生産性を20%向上させることができました。本セッションでは、アーキテクチャガイドラインとして具体的に明文化した内容と、弊社で採用したオブジェクト指向型のアーキテクチャを中心に生産性改善のノウハウを紹介したいと思います。

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

アクセシビリティテスト戦略

Byungjun Park

より多くのユーザーがアプリを利用できるようにアクセシビリティ機能の実装は必須になってきてます。
アクセシビリティ開発を特定のユーザーのための手間がかかる開発ではなく、より便利になるための通常のUI開発の延長として考えて進めていくことにしましょう。
そのためには開発においてより効率的な開発方法を導入してモチベーションをあげる必要があると思います。
まずAccessibility Inspetorを利用してアクセシビリティ適用の現状を動的に把握して改善していく方法から
SnapshotテストをベースにしているAccessibilitySnapshotを利用してアクセシビリティ要素を可視化することでより効果的な実装・テストが方法であることを話します。
最後にWWDC2023に新しく公開されたXCUIApplicationを使ってアクセシビリティ検証機能を利用する方法をお見せします。

2
LT(5分)

今どきのAIアシスタントをアプリに導入した方法

fromkk かっくん

弊社のウェブサービスでは ChatGPT の API が公開されたタイミングでテスト的に AI アシスタント機能の実装を進めていました
これを全ユーザーに適用するタイミングで、アプリでも公開しようということになりました。
AI アシスタント機能の特徴としては AI が考えるように、ストリーミングで文字列が表示されることが大きいです。
ここでは上記を含めてアプリでどのように UX を実現するかを考えながら実装を進めたかをお話しします。

2
LT(5分)

アプリ内で利用している色を段階的に置き換えた方法

fromkk かっくん

ノートアプリは2022年12月にリブランディングを実施しました。
わかりやすいものだとアイコンがガラッと変わったのですが、それに合わせて内部で利用している色を全体的に調整しました。
デザイナー・フロントエンドではデザインシステムを導入し、ウェブページに段階的に適用して行きましたが、アプリでもその追従を始めました。
まだ、途中段階ではありますが、ここでは既存のシステムがどうなっていて、どのように変更に追従したかをお話しします。

1
LT(5分)

ノートアプリのビルド時間を約半分にした方法とその考え方

fromkk かっくん

皆さんが開発しているプロジェクトではアプリのビルド時間にどれぐらい時間がかかっていますか?
最近始めたプロジェクトでは数秒で終わるかもしれませんが、何年も運営しているプロジェクトでは何分もビルドに時間がかかるなんてこともざらにあります。
ビルドに時間がかかるということは、それだけ開発をすることための時間が削られてしまうということです。
弊社のアプリのプロジェクトではクリーンビルド時に110秒ほどかかっていましたが、これを60秒以内に縮めることができました。
ここでは時間がかかっている箇所を特定し、ビルド時間を縮めるための考え方とその手法についてお話します。

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

UITraitCollectionを活用して、アプリに特性の概念をもたらす

noppefoxwolf noppe

iOS8から登場したUITraitCollectionは、iOSアプリケーションのユーザーインターフェースのレイアウトや表示に関する情報を含むオブジェクトです。
例えば、iPhoneの画面サイズが変更された場合、UITraitCollectionは自動的に更新され、アプリケーションは新しい画面サイズに応じたレイアウトを適用することができます。
これからのアプリ開発で重要になるUITraitCollectionですが、まだまだ活用されているアプリが少ない印象があります。

このトークではUITraitCollectionの概念を振り返り、SwiftUIとの関係性や具体的な利用ケースを紹介します。
また、iOS17から追加されたCustom UITraitCollectionを活用して出来ることを解説します。

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

C++の資産をSwiftで活用する

mornin_sculpt mornin

Swift Package Manager(SPM)ではC++ライブラリもパッケージとして管理することができます。また、WWDC23ではC++ interoperabilityが紹介されSwiftからC++を利用することが一層簡単になりました。

一方で、C++ライブラリを利用したいシーンの多くではライブラリは巨大であることが多いです。実運用しているプロジェクトでそうしたライブラリを運用するにあたってSPM管理に置き換えたりするには多くのハードルあります。

本稿では、まず実際のC++ライブラリをSPM管理下に置く方法を解説します。また、外部ファイルを読み込んで設定に反映させることでPackage.swiftの肥大化を防ぐ方法を示します。最後に、これら以外で注意が必要なXCodeの設定等を示すことでC++ライブラリのSwiftプロジェクトでの運用時の問題を解決します。

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

TCAとKMMを駆使した新規iOSアプリ開発Tips

_tomu28 Tomu Obata

現在、iOS1人・Android2人の少数チームで新規動画配信アプリを開発しています。
技術選定やアプリのアーキテクチャ設計に際しての工夫点やハマり所、そしてTCA, KMMを活用した開発Tipsについてお話します。

これから新規アプリ開発を予定している方々にとって、技術選定やアーキテクチャ設計の参考としていただければ幸いです。

キーワード:
・iOS Deployment Target 16.0+での新規iOSアプリ開発
・swift-composable-architecture (TCA)
・Kotlin Multiplatform Mobile (KMM)
・kotlin-inject

3
ルーキーズLT(5分)

R.swiftから併用期間を経てSwiftGenへ…

ras0q Ras

画像ファイルや多言語対応などのリソース管理を簡潔にするツールとしてR.swiftやSwiftGenを使っているプロジェクトは多いと思います。pixivアプリではR.swiftを使用していましたが、設定の柔軟さやSPM対応からSwiftGenへと移行しました。また、リリース時のリスクや検証のリスク、レビュアーのレビューコストを極力減らすことを目標に、R.swiftとSwiftGenの併用期間を設けながら段階的に移行を行いました。本発表では、分割されたxcassetsファイルの扱いやxibの対応などSwiftGenに移行するにあたって躓いた点、リスクを極力減らすために併用期間を設けて部分的にリリースをした運用方法などを紹介します。

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

SVVS:SwiftUIに適した新しいMVVMベースのアーキテクチャとその実践

wakakuuma wakakuuma

SwiftUIの導入と既存の不完全なMVVM改修による課題を解決するため、新しいアーキテクチャとしてSVVSを開発しました。
SVVSはStore、View、ViewStateから構成され、複雑な依存関係と大規模なリファクタリングの問題を解決する設計として採用しました。SVVSはSingle Source of Truthを考慮してMVVMにStoreを追加し、現代的なiOSアプリ開発においてシンプルでオーソドックスな構成を実現します。特にSwiftUIとの相性が良く、すぐに取り入れることができ、学習コストも低く、サードパーティのライブラリやフレームワークに依存しない点が魅力です。本トークでは、SVVSを他のアーキテクチャやフレームワークと比較しながら、実際に業務で取り入れた実例を交えて紹介していきます。

5