LT(5分)

iOSアプリエンジニアに贈る!美しいvisionOSアプリの作り方

tanakasan2525 たなたつ

iOSアプリのUI設計に慣れているエンジニアでも、visionOSアプリのUI設計には新しい知識が求められます。
特に、iOSとは特性の異なるコンポーネントや独自のデザイン要素に注意する必要があります。

このトークでは、iOSアプリエンジニアの自分が実際にvisionOSアプリのUIデザインと開発をする中で直面した課題や得た知見等をまとめます。
そして、特にiOSアプリエンジニアがvisionOSアプリを開発する前に知っておくべきデザイン原則や、
iOSとは異なる部分、visionOSの罠と制約、実装時に役立つテクニックなどを端的に紹介します。

このトークを聴くことで、美しいvisionOSアプリをスムーズに開発するために、iOSアプリエンジニアにとって必要な知識が簡潔に得られるでしょう。

1
ルーキーズLT(5分)

Crashlytics の非重大ログを豊かにする Error -> NSError 変換術

皆さんは Crashlytics の非重大ログを活用したことはありますか?
非重大ログを収集する際には Objective-C の NSError オブジェクトを使用する必要があります。
しかし、日常的には Swift の Error 型を使用して開発することが多いため、NSError を直接利用する機会は少ないのではないでしょうか。

本発表では、Swift の Error 型から情報量豊かな NSError に変換する具体的な方法について解説します。
例えば、LocalizedError や CustomNSError を活用することで、Swift の Error 型の概念を保ちながら NSError に豊富な情報を付加できます。
これにより、NSError の存在をあまり意識することなく、Crashlytics の非重大ログをより価値の高いログへと進化させることができます。

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

visionOSアプリのUI設計と実装テクニック

tanakasan2525 たなたつ

iOSアプリエンジニアなら、一般的なiOSアプリのUIデザインでアプリを作ることはお手の物ですよね?では、visionOSアプリを作ることになったらどうでしょうか?

各コンポーネントのスタイルやレイアウトはどうするべきか、何ができて何ができないのか、AppleのvisionOSアプリのUIはどうやって実現されているのかなど、多くの悩みどころが出てくると思います。

このトークでは、iOSアプリエンジニアである私が実際にvisionOSアプリのUIデザインと開発を行う中で直面した課題や得た知見を、特に以下のポイントに焦点を当てて紹介します。

・基本概念とデザイン原則:visionOSのUIデザインにおける基本的なコンセプトやガイドラインなどを紹介。
・デザイン要素:iOSとは異なるUIコンポーネントの特性やデザイン要素などの紹介。
・開発効率を上げるテクニック:visionOSアプリ開発を効率化するためのXcode Previewsやシミュレータの活用法。
・制限と工夫:visionOSの様々な制限を紹介しつつ、実現したいUIをどのようにして実装するか紹介。

このトークを聴くと、visionOSアプリとして使いやすく美しいUI/UXになっているか、実現できるUIなのかを判断できるようになり、チームでの開発もさらにスムーズに進められるようになるでしょう。

2
ルーキーズLT(5分)

SwiftUIとFlutterで簡単なUIを構築して比較する 〜 Flutterエンジニアの立場から

taiju____ 青木 大樹

ここ最近、Flutterでの開発に注力してきましたが、SwiftUIも試してみたいと考えています。

SwiftUIとFlutterは、どちらも宣言的な記述でUIを構築するためのフレームワークです。
本トークでは、SwiftUIとFlutterを使って実際にUIを構築してみたコードサンプルを通して、
それぞれのフレームワークの特徴や利点、または欠点について比較します。
具体的なコードの記述の違いだけでなく、開発環境含む開発体験の違いについても語ります。

SwiftUIかFlutterかどちらを採用すべきか悩んでいる方や、
他のフレームワークの書き味や考え方もなんとなく掴んでおきたい方の参考になれば幸いです。

ルーキーズLT(5分)

【SwiftUI】マルチモジュール構成のプロジェクトにおけるディープリンク対応を見据えた画面遷移戦略

Kojiro Ito

昨今のモバイルアプリの開発現場では、マルチモジュールというのが一つのトレンドになっています。
また、WWDC2019で発表されたSwiftUIを採用するプロジェクトも増えており、モバイルアプリの開発環境、トレンドは大きく変わりました。
開発環境やトレンドが遷移した一方で、企業が求める変わらない要件というものは多くあると思います。
そのうちの一つにディープリンクが挙げられます。
しかし、業界において、SwiftUIを採用したマルチモジュール構成のプロジェクトでディープリンクを考慮に入れた画面遷移戦略の知見が不足している様に感じました。

本セッションは上記の様な構成のプロジェクトにおける実装戦略の提言と、業界でのSwiftUIとマルチモジュール構成を採用したモダンな開発環境の採用を促進することを目的としています。

本セッションで取り扱う内容
・SwiftUIにおける画面遷移方法の簡単な比較
・マルチモジュール構成のプロジェクトにおけるNavigationStackを活用した画面遷移戦略
・上記の実装の中でのディープリンク対応戦略とTIPS

本セッションで取り扱わない内容
・マルチモジュール構成のメリット/デメリットについて
・ディープリンク対応のためのライブラリ選定について

#SwiftUI #マルチモジュール #SPM #ディープリンク #NavigationStack

2
LT(5分)

TipKitについて

toshihirooya Toshihiro OYA

TipKitはiOS17で導入された新しいフレームワークです。

TipKitを使うことでアプリ内でユーザーに対して柔軟なヒント(Tips)をパーソナライズして提供することや、
アプリ内でのTipsを管理して提供することができるようになります。

今回のLTではTipKitでのできることや、実際のユースケースをまとめて話そうかと思います。

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

いわゆる「AIの時代」で、マルチプラットフォーム開発で何か変わる?

andrekandore アンドレカンドレ

最近、かなり注目を浴びているLLMベースの「AIアシスタント」にかなりの熱を感じています。

そこで、LLMのアシスタント(Copilot、OpenAIなどで)、自然言語間の翻訳だけでなく、プログラミング言語間の翻訳も得意そう。
そこでどこまでできるのかを試してみました。
チャレンジをしてみた感想と今後の展望の考えについて話す!

詳細

発展途上のAIのアシスタントを用いて、マルチプラットフォームの開発をどこまでできるかちょっとやってみる?!

  • Swiftでデータモデルを書いたら、Kotlinで排出して再利用できそう?
  • ビジネスロジックをJavaでサーバサイドで書いたら、ネイティブのSwift/Kotlinのクライエントで使用できる?
  • UIをSwiftUIで書いたら、KotlinのJetpack Composeに直接転換できる??

最後に

  • それぞれのAIによりNative開発の新時代が来るなら、どのような支障があるのか、どのような開発フローを要するかについて考察を話す

※ スライドだけではなく、ライブコーディングをチャレンジしながらやるつもりです!

LT(5分)

マッチングアプリにおける最強の課金UIを見つけるまで

oskmr_ Osaka Miseri

アプリにおいてABテストが広く普及していますが、次のステップとして個別最適化が主流になりつつあります。
単に2つの画面を比較するだけでなく、ユーザーの行動パターンに基づいたセグメント分割を行い、ABテストでは拾えなかったユーザーにもアプローチすることでより高い効果を得ることができます。
私たちのアプリではユーザーごとに異なる18パターンの課金画面を提供することで、収益の最大化を目指しました。

このセッションでは、複数パターンの課金UI検証を通じて得た以下の内容についてお話しします。

  • 複雑な検証をデグレさせることなく、高速に実現するための設計と、その実装手法
  • 個別最適化がユーザーの課金率にどのような影響を与えたか

このセッションを通して、皆さんのアプリでも最強の課金UIを実現しましょう。

6
LT(5分)

2年半ぶりに復活!初心者運営チームが挑んだMobile Act再開への道のり

penguinsan_pg ぺんぎんさん

Mobile Actとは、フェンリルのエンジニアが主催するモバイルアプリ開発の勉強会です。以前は定期的に開催されていましたが、コロナ禍や運営メンバーの退職などの影響により、2021年を最後に開催が途絶えてしまいました。

そのような中、新しい運営チームはMobile Actを復活させるべく、様々な取り組みを行いました。
以前の運営メンバーがほとんどいない中で運営ノウハウが少ししか残っておらず、またポストコロナの時代となりリモート参加の需要など状況は以前とは大きく変わっていました。
このため、多くの試行錯誤を繰り返し、2024年5月に無事にMobile Actを再開することができました。

このトークでは、2年半ぶりに復活を遂げたMobile Actの裏側についてご紹介します。運営初心者たちがどのようにしてこの大きな挑戦を乗り越えたのか、そのストーリーをぜひお楽しみください。

1
LT(5分)

激重.swift

EXCode013 mori

最近、私たちは効率的で軽量なアプリを作ることにフォーカスしがちですが、その逆を行ってみたくありませんか?
今回の発表では、「いかに短いコードで、とんでもなく重いアプリを作り上げることができるか」をチャレンジします。

例えば無限ループを使ったり、無駄に多くのデータを一度に処理したりなどでメモリを大量に食い尽くす方法を模索したり
swift compilerから生成されるSILを複雑にできるかを模索したりして、デバイスの悲鳴が聞こえてきそうなアプリを作成します。

コードのシンプルさと、アプリの重さのコントラストをお楽しみいただけるような内容をご期待ください

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

Metal でメディアアートへ踏み出そう

Megabits_mzq_jp Megabits

「自分が持っている iOS 開発の技術をデザインやアートで活かしたらどうなるか?」大学でデザインを勉強している私がよく考えています。これからもうすぐ卒業する私が、その答えになる作品を作りました。

私の卒業研究で、スマホで使える、あるメディアアートの制作ツールを作りました。

Slit-scan は John Whitney が 1958 年に開発した VFX のための撮影技術です。その後、様々なアーティストに使われています。動くものを強調するのが特徴です。

本来の Slit-scan では、細いスリットを通じて撮影します。しかし、それを完成するにはなかなか難しい。複雑なセッティングが必要です。多くの人は、すでにある動画を後処理して、エフェクトの一部として使っています。Slit-scan そのものを目的として制作する人が少ないです。

実は、Slit-scan を簡単でできるものは、私たちのそばにあります。この iPhone です。私は、iOS で自由に Slit-scan できるツールを作って、そのツールで作品を作りました。

このトークでは、作品と使用している技術を紹介します。主に Metal で 240 fps でカメラからの画像を処理する方法です。そして、私たち iOS 開発者に馴染みのある技術をアートやデザインの領域に使ったらどんな可能性があるのかをお見せしたいです。

6
ルーキーズLT(5分)

SwiftUI時代のアーキテクチャ The Composable Architecture 入門から実践まで

_anrem anrem

SwiftUIの登場により、iOSアプリ開発におけるアーキテクチャ設計は新たな局面を迎えています。宣言的UIというパラダイムシフトの中で、状態管理やデータフローはどのようにあるべきでしょうか?本トークでは、SwiftUIと相性の良いアーキテクチャとして注目を集めるThe Composable Architecture(TCA)について、基礎から実践的な活用方法までを解説します。

対象者
・SwiftUIを用いたiOSアプリ開発に興味があるエンジニア
・従来のアーキテクチャに課題を感じているエンジニア
・The Composable Architectureについて学びたいエンジニア
・SwiftUIでより保守性、再利用性の高いコードを書きたいエンジニア

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

Overview: ownership

ojun_9 ojun

本トークでは、Swift 5.9における重要な変更点であるnoncopyableタイプの導入に焦点を当てます。
noncopyableタイプはオブジェクトや変数が一意の所有権を持つことを意味し、Swiftの従来の型とは異なる新しいパラダイムを提供します。
このトークでは、noncopyableタイプの背景、Swiftの従来の型システムとの違い、新しい~Copyableと~Copyableではない型の宣言方法について詳しく説明します。

さらに、Swiftの所有権モデルに与える影響、メモリ管理とコードの安全性にどのように貢献するかを考察します。
具体的には、noncopyableタイプを使用することで、無駄なコピーを避け、メモリの効率的な使用が可能になる点について触れます。

また、所有権モデルの進化に伴い、開発者がどのようにして安全で効率的なコードを書けるようになるか、実際のコーディング例を交えて解説します。
これにより、最新の言語機能を最大限に活用し、高品質なiOSアプリの開発に役立てることができるでしょう。

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

AWSをSwiftでフル活用する方法

takoikatakotako かびごん小野

SwiftとAWSの連携は、これまであまり注目されていなかったかもしれません。
しかし、現在ではSwiftからAWSを活用することが驚くほど容易になってきています。

このトークでは、AWSもiOSも大好きな私が、Swiftを使ってAWSをどのように活用できるかを具体的に紹介します。
実際のコード例を交えながら、以下のポイントを中心に解説します。

  • AWS SDK for Swiftの基本的な使い方
  • iOSアプリ開発を便利にするAWSのサービスの紹介
  • AWSとSwiftを活用したWebアプリケーションの構築
  • SwiftからAWSを利用するときの注意点

このセッションを通じて、みなさんのアプリやサービスにAWSを取り入れて可能性を広げるお手伝いができたら嬉しいです。

1
LT(5分)

10年目アプリのライブラリSPMに全移行する大作戦

oskmr_ Osaka Miseri

近年のiOSアプリ開発においてはSwift Package Managerを用いてライブラリを管理する手法が一般的になりつつあります。
しかし、導入しているライブラリの中にはSwift Package Managerに対応していないものも存在します。

私たちのアプリは今年で10周年を迎える大規模アプリでおよそ30弱のライブラリが主にCocoaPodsで管理されています。
このセッションでは歴史ある大規模なアプリのライブラリを全てSPMに移行するにあたっての以下の内容をお話しします。

  • SPM移行のメリットとデメリット
  • SPM未対応ライブラリの対応方法
  • 移行後のパフォーマンスとメンテナンスの変化

このセッションを通じて、皆さんのアプリのライブラリ管理の参考になるノウハウを提供します。

4
ルーキーズLT(5分)

Strict Concurrencyの憂鬱 〜deinitがactor隔離に対応していない件〜

KeyNumberLV Kiichi

Swift6からSwift Concurrencyにおけるコンパイル時のデータ競合のチェックが厳しくなり、今まで動いていたコードがコンパイルエラーになる可能性があります。
Xcodeでは、Strict Concurrency Checkという機能が用意されており、Swift5の時点から段階的に移行できるようになっています。

Strict Concurrencyに完全に対応するためには全てのUIViewControllerをMainActorに隔離する必要があり、粛々と対応を進める中…
人類は思い出した。deinitはactor隔離に対応していないということを。

どうしてもdeinit内で行いたい処理があるんだがどうしようか?公式で対応する予定はあるんだろうか?
——などとやっているうちに、半年が過ぎた!
その間、特に何もなかった!

今回の発表では、UIViewControllerのdeinitのせいでStrict Concurrency対応に困った場合、どのような代替案があるのか、将来性はあるのか、についてお話しします。
俺たちの冒険はまだまだ続くのか?Kiichi先生の次回作にご期待ください!

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

テストのためのモック生成マクロ - モック生成の理想とマクロによるアプローチを徹底検証!

KeyNumberLV Kiichi

ユニットテストを書く際、依存先としてモックを使用することがありますよね。
みなさんは、どのようにモックを作成していますか?

手作業で1つ1つ作成することもあれば、mockoloなどの自動コード生成ツールを使うこともあるでしょう。
加えて最近では、swift-spyableなどのマクロを用いたモック生成ライブラリも開発されており、それらを使っている方もいるかもしれません。

しかし、これらのライブラリには以下のような課題が存在します。

  • 同名関数をモックできない
  • 少しの記述ミスでテストがクラッシュして修正に時間がかかる
  • モックした関数の挙動を途中で変えるのが難しい

このような課題を踏まえ、今回の発表では、

  • モック生成とはどうあるべきか?
  • なぜ/どうやってマクロで実現するのか?

を中心に、テストのためのモック生成マクロにおける理想を追求してみます。

また、具体的な実装例・使用例を交えながら

  • マクロで実現できること/できないこと
  • 設計方針の提案と比較

についても考察し、これらの理想の実現を目指します。

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

生成AIでユニットテストを手軽に運用する方法

pickles_ib takashico

「ユニットテストを導入したいけど、どのように書いたら良いのかわからない」
「テストは書いているけど、もっと楽に書けるようにしたい」
と課題に感じたことはありませんか?

かくいう私もその一人で、同じ課題を持っていましたが、
生成AIを活用してテストコードを自動出力させることで、ユニットテストの実装コスト削減を行いました。

本トークでは、この取り組みや結果について紹介します。
・テストコードのルール策定について
 チームで運用するにあたり、ルール決めをする必要があります。
 ここではどのようなことを考えてルールを決めていったのか、実際使っているテストコードルールを用いて紹介します。
・生成AIによる出力精度を高めるための工夫
 実際に使用しているプロンプトの構成を用いて紹介します。
・開発プロセスへの組み込みと実際の運用について
 開発フローに自然と組み込めるように、GitHub Actionsを用いたPR上での出力など、実運用するための取り組みについて紹介します。
・ユニットテスト以外での生成AIの応用事例
 コード生成以外にもレビューなどの活用事例について紹介します。

1
ルーキーズLT(5分)

エンジニアからプロダクトマネージャーへ:プロダクト思考で価値を生み出す方法

2019年年末、私は30歳で、それまでのキャリアを捨て新たな道を選びました。
アプリ開発を独学で開始し、1年後にはリリースした筋トレ管理アプリを武器に、ヘルスケアスタートアップにiOSエンジニアとして入社しました。
その後、気がつけば3年半の年月が経ち、現在はiOSエンジニア兼プロダクトマネージャーとして活躍しています。

本トークでは、エンジニア未経験からプロダクトマネージャーになるために私が実践した具体的なステップと、その過程で学んだプロダクト思考の重要性についてお話しします。
このトークを聞けば、 価値のある機能を生み出すために必要な思考方法の基礎を身につけることができます。

  1. 事業課題の深掘り - 企業が設定するKPIやKGIの背後にある意図を理解し、その目標がなぜ重要なのかを把握する。
  2. ユーザーと顧客の課題を探求 - 社内の過去のデータやロードマップを解析し、ユーザーが直面している本当の問題点を明らかにする。
  3. 課題の連携 - 事業課題とユーザーのニーズを結びつけ、どの課題を解決することで事業インパクトを出せるのかを理解する。
  4. ソリューションの創造 - 仮説に基づいて実現可能で効果的なソリューションを検討する。
  5. 投資対効果の評価 - 現状のリソースと事業の状況を考慮に入れ、最もコスト効率の良い戦略を選定する。
LT(5分)

Universal Linksの陥りやすい罠とその回避方法5選!

kudokai00 くどかい

Universal Linksとは、SafariまたはWebサイトを経由することなく、アプリ内のコンテンツに直接リンクすることができる機能です。

実装過程で「設定は正しいはずなのにアプリに遷移しない」という経験はありませんか?

このトークでは、iOSアプリでのUniversal Linksの実装過程で実際に業務で直面した落とし穴とその解決方法について簡潔に紹介します。

このトークを通じて、Universal Linksの設定時に直面する典型的な問題を回避するための知識を得ることができます。また、Universal Linksの設定や実装をスムーズに進めるためのヒントとコツを提供します。

1