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

SwiftUIで始めるエンジニアのためのデザイン入門

touyou_dev touyou

WWDC23ではDesign with SwiftUIというセッションが公開されAppleがデザイナーのSwiftUI習得を公式に推奨するようになり、またvisionOSの登場によりSwiftUI自体の使い道も広がりました。
もちろん、デザイナーがSwiftUIを書けるようになることは協業という面でも理想的な世界ですが、一方でそれはエンジニアの役割がなくなるということではありません。
デザイナーのデザインをエンジニアが実装するにしろ、デザイナーと同じSwiftUIのコードベースを触るにしろ、今後よりエンジニアのデザイン理解度の重要性は高まってくると思います。

そこで本トークではSwiftUIを通してデザインの基本的な知識や考え方、エンジニアが知っておくべきことなどを紹介することで、エンジニアとデザイナーの協業をスムーズにし、より高品質なアプリを開発できるようになることを目指します。

5
ルーキーズLT(5分)

NeovimからSwiftのLSPを使用しよう

nonbiri_program かめちゃ

XcodeはiOS開発の標準IDEですが、ことコードの編集においてはテキストオブジェクトやドットリピート等のコード編集に特化した強力な機能を備えたVimを使いたい場面が多々あります。

しかし、アプリの開発ではXcodeが備えるコード補完や定義元ジャンプなどのIDEの機能が必要です。このコード編集の際に便利なIDEの機能はLSPと呼ばれる仕様に沿う事で他のエディタでも使えるようになります。iOS開発に使うSwiftも例外ではなく、SourceKit-LSPと呼ばれるLSPの実装があります。

これらをふまえ、今回の発表ではNeovim(Vim)からSourceKit-LSPを使用して、Swiftを快適に書く方法を紹介したいと思います。LSPの概要を把握しつつVimを使用する事で、両方の良さを享受できるようにしましょう。

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

SwiftUI アプリ開発の実装や設計の悩みを The Composable Architecture (TCA) で解決しよう

kalupas226 アイカワ

SwiftUIを利用したアプリが増えている中、開発中に以下のように思ったことがある方は多いのではないでしょうか?

  • 状態管理や画面遷移のベストプラクティスがわからない
  • Observable(Object)が肥大化しないように分割することが難しい
  • Swift Concurrencyをアプリで使うことが難しい
  • テスタブルにするために増え続けているprotocolに身に覚えがある
  • 設計はテスタブルにできたがテストを書くことが億劫

TCAは状態管理のためのツールと捉えられがちですが、TCAを正しく理解して利用すれば、SwiftUIを使った開発にありがちだと思われる上記のような課題を意識することなく、機能開発に集中できます。

本トークでは、課題ごとにTCAを一つの解決策として紹介することで、明日からTCAの導入を検討できる状態になることを目指します。

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

実践!Swift API Design Guidelinesに基づいた簡潔明瞭なAPIの作り方

jrsaruo_tech 西 悠作

自分や同僚の作ったメソッド、何が起きるか分かりづらい…コードが読みにくい…そんな経験ありませんか?

本トークでは、SwiftのAPI Design Guidelines(ADG)が示すAPIの理想像を整理したうえで、実際のコード例をもとに

  1. 改善点の分析
  2. 適用できるADG項目の解説
  3. 2に基づいた書き換え(ADGにはない工夫も!)

を繰り返し、API設計での大事な観点をまとめます。
ADGに沿ってAPIを改善する過程とその効果を体感し、今後のコーディングやコードレビューにご活用ください。

メソッド名から引数ラベル、返り値型に至るまで、APIの構成要素すべてを洗練させ、簡潔明瞭で美しいAPIをデザインしましょう!

こんな方におすすめ:

  • ADGを読んだことがない/活用できていない
  • コードの可読性についてよく指摘を受ける

やらないこと:

  • ADGを全て読む
8
LT(5分)

今日から実践できる!便利なサブミット前自動チェックTips集 〜メタデータ編〜

aomathwift あおい

アプリ名やリリースノート、はたまたスクリーンショットなど、アプリを審査に出す際には、バイナリの他に多くのメタデータと呼ばれる情報をアップロードする必要があります。
Xcode Cloudなどでサブミットの自動化がやりやすくなった今日では、メタデータはリポジトリ内で管理し、サブミットと同時に自動アップロードにしているというプロジェクトも多いのではないでしょうか。

しかし、このメタデータには実は細かい制約がいくつもあり、サブミットしてからメタデータアップロードだけ失敗するということがしばしば…
これを未然に防ぐため、サブミット前に自動でこれらの制約をチェックできる仕組みをプロジェクトに導入しました。
このトークでは、今日から実践できる便利な自動チェックの数々を紹介します。

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

アプリの複数運用を支える技術 〜証明書やライブラリの一元管理〜

aomathwift あおい

iOSアプリ開発では、機能そのものの開発以外に気にかけることが多々あります。
例えば、各種証明書の有効期限、ライブラリの選定・バージョンアップなどです。

さらに、社内にiOSアプリが数多くあるとどうでしょう。
例えば証明書の有効期限が切れていたり、脆弱性を含んだバージョンのライブラリを使い続けていたり、といった問題が各所で起きる可能性があります。
社内にある全てのアプリで、これらの問題に漏れなく対応できる状態を作るのは、複数アプリを管理する上での大きな課題です。

これを解決するために、社内全てのアプリについて、証明書や依存ライブラリなどの情報をまとめて管理するツールを作りました。
本トークでは、これを実現するにあたって利用したApp Store Connect API利用の際のTipsやライブラリの情報収集の方法、これによってアプリの複数運用がどのように便利になったのかを紹介します。

4
ルーキーズLT(5分)

新卒iOSエンジニアから見たアプリ開発: BtoCとBtoBtoCの違いと学び

jus

今年新卒のiOSエンジニアとしてキャリアをスタートした私が、BtoCとBtoBtoCのアプリ開発を通じて得た学びと経験を共有します!

インターン時代にはBtoCアプリの開発に携わり、新卒としてはBtoBtoCアプリの開発を担当しています。この両方のアプリ開発において遭遇した課題、そしてそれらから得られた知見を詳しく紹介します。また、開発フローやチームワークの観点からも、BtoCとBtoBtoC開発の違いを説明します。

どちらのアプリ開発が私のキャリアや技術成長にどのように影響を与えたか、具体的な例と共にお話しします。新入社員や現役のエンジニア、またはiOS開発について学びたいと思っている方々に有益な情報を提供できればと考えています!

ポスターセッション

モバイル向けSASTツールmobsfscanとCIを使ったDevSecOpsの実現

Tatsumi0000

皆さんは、モバイルアプリ向けのSAST(Static Application Security Testing)ツールであるmobsfscanをご存知でしょうか?
このツールを使うことで、AndroidやiOS開発において安全でないコードパターンを見つけ、診断結果をSARIF(Static Analysis Results Interchange Format)ファイルとして出力できます。

本セッションでは具体的な設定方法を示しつつ、mobsfscanとGitHub Actionsを活用したDevSecOpsついて紹介します。

  • mobsfscanの簡単な使い方
  • GitHub Actionsとmobsfscanを使い安全でないコードパターンをSARIFファイルとして出力
  • 出力したSARIFファイルをもとにGitHub上のSecurityタブにアラートとして表示
5
LT(5分)

App Store Connect API入門 〜Github Actionsからたたいてみたぞ〜

watura

App Store Connect 使っていますか? 使っていますよね!
では、App Store Connect API は使っていますか?たぶん、使っていないですよね。

TestFlightを非アプリ開発チームメンバーに展開していく上で、App Store ConnectやTestFlightへの登録といった定型作業を楽にするために、 Github ActionsからApp Store Connect APIを使いました。
Github ActionsからApp Store Connect APIをたたいていく上で遭遇したり、実用する上での苦労話や、何を実現したのかを話していきます。

3
ポスターセッション

Redux の副作用を直感的に管理する Redux Saga を Swift で実装しよう

mitsuharu_e 江本光晴

Redux Saga は単方向データフローの Redux を拡張し、非同期処理や副作用を直感的に管理できるようにしたアーキテクチャです。JavaScript で実装され、Web(React)や React Native でよく利用されています。

今回は、その Redux Saga を Swift で実装します。JavaScript と Swift の言語設計と性質の違いを考慮しつつ、Swift の言語特性を活かす形で、Redux Saga の主要な機能を実装したコードについて紹介します。そのコードを見ながら、Redux Saga の特性や利点を理解してもらい、iOS アプリ開発における Redux Saga の可能性を探求し、有用性と将来的な応用について議論したいです。

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

Swift Foundation の主要 FormatStyle 解説 - これまでの ○○Formatter から移行できるか?

treastrain treastrain / Tanaka Ryoga

日付・時刻・時間・数値・測定値・名前などの情報を、ローカライズ済の String との間で変換してくれる Formatter。有名なのは DateFormatter・NumberFormatter でしょうか。

iOSDC Japan 2021 では、当時のすべての Formatter を紹介しました。あれから2年、今年は iOS 15+ で使用できる FormatStyle を使用した formatted メソッドを、使用機会の多いと思われるものを中心に紹介します。これは Formatter の強力な機能はそのままに、自分でインスタンスを作る必要がなく、より Swift らしく書け、さらに iOS 17 ではパフォーマンスも向上します。

まだまだ Web 検索での情報が乏しい FormatStyle の使い方をこのトークでマスターし、従来の Formatter から移行しましょう。

8
ルーキーズLT(5分)

Apollo iOS SDK を v0.53 から v1.2 までマイグレートした破壊と創造の戦い軌跡を紹介します

kazutoshibaba うまとし

業務ではGraphQLを採用しデータ取得(クエリー)や更新処理(ミューテーション)を書いています。

GraphQLのネットワーク基盤として、Apollo iOS SDKを採用しており当時v0.53のバージョンを使用していました。
Apollo iOS SDKは、GraphQLを使用するiOSアプリケーションの開発を簡素化し、効率的に行うことができる強力なツールです。
豊富な機能と柔軟性を備えており、GraphQLの採用が増えている現在の開発環境において、重要な役割を果たしています。

v1.0が正式リリースとなり、Swiftコード生成のためのCLIツールの刷新と破壊的変更が加わっておりマイグレーションが必要でした。

このトークでは、いかにしてレガシー版となったApollo iOS SDKを最新版にマイグレーションしたのかと破壊と創造の戦い軌跡を紹介します。

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

Swift Foundation の全 FormatStyle 解説 - これまでの ○○Formatter から移行できるか?

treastrain treastrain / Tanaka Ryoga

日付・時刻・時間・数値・測定値・名前などの情報を、ローカライズ済の String との間で変換してくれる Formatter。有名なのは DateFormatter・NumberFormatter でしょうか。

iOSDC Japan 2021 では、当時のすべての Formatter を紹介しました。あれから2年、今年は iOS 15+ で使用できる FormatStyle を使用した formatted メソッドを紹介します。これは Formatter の強力な機能はそのままに、自分でインスタンスを作る必要がなく、より Swift らしく書け、さらに iOS 17 ではパフォーマンスも向上します。

FormatStyle の使い方はまだまだ Web 検索での情報が乏しいです。このトークで FormatStyle の使い方をマスターし、従来の Formatter から移行しましょう。

11
ルーキーズLT(5分)

ComposeMultiplatformでアプリ開発をやってみた

hiroaki_iOS ひろあき

近年では、FlutterやKMMなどのマルチプラットフォームによるモバイルアプリ開発が盛んになってきました。
最近ではComposeMutiplatform for iOSが発表され、マルチプラットフォーム開発の新たな選択肢として話題を集めています。
ComposeMultiplatformとはKotlinとJetpackComposeをベースにした新たなプラットフォームです。
本セクションでは、ComposeMultiplatform for iOSを用いたKotlinによるiOSアプリの開発方法、またみなさんが疑問に思っているであろう、使用可能なネイティブ機能の話やSwiftUIとJetpackComposeの比較などを交えながら、ComposeMultiplatform for iOSの今後の可能性を紹介していきいます。

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

ABEMAではiOSに留まらないモバイルアプリアーキテクチャをどのように考えているか

akkyie Akio Yasui

ABEMAでは、iOSアプリとAndroidアプリのアーキテクチャの統一を図っているだけでなく、コード自体も共通化されている状態を目指して一部実装にKotlin Multiplatformを採用しています。これらの取り組みの中で、両プラットフォームで共通して採用できるアーキテクチャとはどのようなものか、どの実装が共通化できてどの実装はそれぞれ実装すべきかなど、OSの境界を跨いで多くの議論を行ってきました。

このトークでは、こうした議論を経た現在、ABEMAがモバイルアプリのアーキテクチャをどのように議論し、どのように定義して、どのように運用しているのかを実例を交えてご紹介します。

6
レギュラートーク(40分)

ABEMAにおける(あるいは、すべての)モバイルアプリアーキテクチャの考え方

akkyie Akio Yasui

ABEMAでは、iOSアプリとAndroidアプリのアーキテクチャの統一を図っているだけでなく、コード自体も共通化されている状態を目指して一部実装にKotlin Multiplatformを採用しています。これらの取り組みの中で、両プラットフォームで共通して採用できるアーキテクチャとはどのようなものか、どの実装が共通化できてどこができないのかなど、OSの境界を跨いで多くの議論を行ってきました。

このトークでは、こうした議論を経てABEMAがモバイルアプリのアーキテクチャをどのように捉え、検討し、運用していくことになったのかをご説明します。また、議論によって整理された考え方の中心的な部分を、大規模なアプリから開発が始まったばかりのシンプルなアプリまで多くのアプリに応用できるように体系立ててご紹介します。

アーキテクチャにまつわる多くの人の多くの疑問に答えられるトークを目指します。

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

SwiftUIを駆使して複雑なカレンダーUIの設計と実装をしました

satoryo

STORES 予約アプリは店舗などの管理者様向けの予約管理アプリで、2021年にiOS版をSwiftUIでフルリニューアルしました。
その後も追加機能の開発をし続け、今年の4月には待望のカレンダーUI (https://x.gd/GwDja) をリリースしました。

カレンダーUIとは「予約の入り具合や空き状況をカレンダーで閲覧するための画面」で、実装にあたり3つの壁に直面しました。
・既存ライブラリは使用せずにSwiftUIフルスクラッチで実装する
・予約スケジュールの時間の重複を可視化する
・予約情報の取得処理をKMMを利用してiOS/Android版で共通化する

本トークでは、カレンダーUI検討の背景から本実装、リリースに至るまでの過程をソースコードを交えながら解説します。
トークを聞いてくださった皆さんにSwiftUIで複雑なレイアウト画面を実装するためのヒントとなれば幸いです。

1
ルーキーズLT(5分)

Apple Vision Proと他のHDMの違いについて

isekiryu いせりゅー

初めまして!
株式会社ゆめみの2023年卒のFlutterエンジニアで、心理学系の大学院に通っていて、大学院では心理学の観点からVRの研究を行っております!!
Apple Vision Proは、Appleが初の空間コンピュータとして販売する発売予定の複合現実ヘッドセット型PCであり、これは2023年のWWDC23で発表され、米国では2024年初旬に購入可能になる予定です。
他のHDMの例としては、Meta QuestやVIVE Proなどが挙げられますが、これらとはいくつかの重要な違いがあります。
特に、操作方法について注目すべきだと考えています。他のHDMはコントローラを用いて操作しますが、Apple Vision Proではコントローラは不要で、アイトラッキングとハンドジェスチャーで操作することができます。
これらの具体的な違いやメリット・デメリットについて詳しく説明します。

2
ルーキーズLT(5分)

心理学系の大学院生の視点からみたApple Vision Proが及ぼすVR界隈の未来

isekiryu いせりゅー

初めまして!
株式会社ゆめみの2023年卒のFlutterエンジニアで、心理学系の大学院に通っていて、大学院では心理学の観点からVRの研究を行っております!!

Apple Vision Proは、Appleが初の空間コンピュータとして販売する発売予定の複合現実ヘッドセット型PCであり、これは2023年のWWDC23で2023年6月5日に発表され、米国では2024年初旬に購入可能になる予定です。これまでのVR市場では、Meta社のMeta QuestやHTC社のVIVE Proなどがありますが、それらはiPhoneのような普及率は達成していません。理由は、HMDを身につけて日常生活を送ることは少ないからだと私は考えています。しかし、Apple Vision Proの登場により、値段は高いものの、私はこの発表を2007年の初代iPhoneの発売に匹敵する衝撃と捉えています。

3
LT(5分)

SwiftUIでアニメーションを活用したカスタマー体験の向上

y0shikei_ Keisuke Yoshida

▼ 概要
私たちは「あたらしい旅行を、デザインする。」をミッションに旅行アプリ「NEWT」を日々開発しています。
旅行の予約から準備、旅行中の旅程の確認やサポートなど、直感的なUI/UXでストレスフリーな旅行体験をカスタマーに提供することを目指しています。
そのため、プロダクト開発において機能要件はもちろんのこと、非機能要件についても重視しています。
その中でも今回は、カスタマーに楽しく快適にアプリを利用してもらうために必要となるアニメーションに関するお話をできればと思います。

▼ 内容

  • SwiftUIにおけるアニメーションの種類
  • iOS17で追加されるアニメーションのあれこれ
  • アニメーションの活用事例