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

このSwiftUIの迷宮(ダンジョン)にState-Drivenのマインドセットを!

lovee 星野恵瑠

SwiftUIの登場により、iOS開発はUIKitのEvent-DrivenからState-Drivenのパラダイムへと進化しました。しかし、まだ多くの開発者はState-Drivenに慣れるのに苦労しています。本トークでは、State-Drivenなマインドセットを手に入れるための方法を解説します。

本トークは以下の内容をカバーします:

  • 背景:
    • SwiftUI導入の背景とState-Drivenマインドセットの重要性
    • SwiftUIとUIKitの違いを具体例で説明
  • State-DrivenとEvent-Drivenの違い:
    • 記述方法の本質的な違い
    • 抽象度や保守性の差
    • Single Source of Truthの重要性
  • State-Drivenのマインドセット:
    • 機能要件をState-Drivenに落とし込むアプローチ
    • State-Drivenに囚われすぎた失敗談と教訓
  • 実践例:
    • よくある機能の実装方法とベストプラクティス
    • 逆によく見かけるアンチパターン
    • State-Drivenのプログラムの動作保証

このトークでは、State-Drivenのマインドセットををダンジョン攻略に例えて学び、Event-Drivenからの脱却を目指します。初心者から中級者まで役立つ内容を提供します。

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

巨大なアプリの構造を整理し、開発チームの効率を最大化する方法

noppefoxwolf noppe

サービスの成長は喜ばしいことですが、それに伴いチームも拡大し、アプリケーションの複雑性が増してしまいます。
複雑性が増すと、企画者やエンジニア、デザイナーが他人の領域を触りづらくなり、新しい機能を追加する際にはまるで針の穴に糸を通すように施策をねじ込むことになります。
画面遷移も分かりづらくなり、画面自体も複雑化し、エンジニアとデザイナーが同じUIを異なる名前や概念で語ることが増えます。
さらに、古い施策の担当者が退社すると知識の断絶が生じます。

このトークでは、混沌としたアプリケーションの構造を解明し、チーム間のコミュニケーションを改善するための具体的な方法を紹介します。
具体的な事例を交えながら、開発プロセスをどのように円滑に進めるかを解説します。

このトークは、エンジニアやUIデザイナーだけでなく、プロジェクトマネージャーやプロダクトオーナーも対象としています。

2
LT(5分)

iOSエンジニアらしい方法でiOSアプリを定期配布する

nato_ring ring

アプリ開発を行っていると、週1回、月1回など決まったタイミングで定期的にアプリを配布したい場面がしばしばあります。

近年登場したXcode Cloudにはスケジュール配布機能が備わっており、手軽に定期配布することが可能です。
しかし、頻度のカスタマイズ性に乏しく、例えば月に1回の定期配布を行うことはできません。

BitriseやCircleCIをはじめとする素晴らしいCI/CDサービスを使用する方法もありますが、実は私たちiOSエンジニアは既にこの問題を解決する手段を持っています!

本トークでは毎月1回アプリを定期配布するのに試行錯誤した末に辿り着いたベストプラクティスとSwiftの可能性についてお話いたします。
Swiftでこんなことができるという驚きと感動をお届けできれば幸いです。

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

Persona を活用した創造的な visionOS アプリ開発術

AkkeyLab akkey

Apple Vision Pro を装着すると顔が一部見えなくなってしまうため、そのままでは未装着の人とのコミュニケーションやオンラインミーティングに支障が出てしまいます。
この問題を解決する機能の1つとして Persona が visionOS には搭載されています。
Persona は自身の顔をスキャンすることによって作成された 3D データを利用したアバターで、 Apple Vision Pro に搭載された複数のセンサーによって得られた顔の動きがリアルタイムで反映されます。

この Persona は現時点でβ版として提供されており、開発者向けの API がほとんど公開されていません。
唯一、 AVFoundation の AVCaptureDevice を経由することで2Dの映像として Persona にアクセスすることが可能です。
しかし、基本的にカメラにアクセスできないという制約の関係で、映像を View に表示するだけでも少し工夫が必要で、具体的にはパラパラ漫画の原理を活用することになります。

このトークでは、 Persona にアクセスする方法を解説するとともに、映像の表示・録画・活用法をご紹介します。
visionOS 向けのアプリを開発している方はもちろん、これから挑戦してみたい!と思っている方にとっても創造的なアイデアを生み出すきっかけになることでしょう。

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

Multipeer Connectivity Framework を使った visionOS と macOS の連携方法

AkkeyLab akkey

Apple は空間コンピュータという新しいジャンルの製品、 Apple Vision Pro を発売しました。これには、類似の他社製品に比べて、ゲーム以外での活用幅が広いという特徴があります。
それを象徴する機能の一つが Mac Virtual Display で、これは Apple Vision Pro に macOS の画面を投影することを可能にします。

このように、 macOS との連携は Apple が重要視しているポイントの1つです。ただし、注意すべき点として、連携手段がネットワークもしくは Bluetooth のみであることが挙げられます。
なぜなら、 Apple Vision Pro には開発ツールを除いて通信用ケーブルを装着する手段が準備されていないからです。

このトークでは、 Multipeer Connectivity Framework を利用して複数の端末をローカルネットワークを通して連携させるためのノウハウをご紹介します。
ここでは、 visionOS から macOS に映像をシームレスに転送するアプリの実装事例を取り上げます。
visionOS 向けのアプリ開発に興味がある方はもちろん、 Multipeer Connectivity Framework を活用したデータの送受信について学びたい方にとっても貴重なトークとなることでしょう。

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

機械学習を身近に!マウスでも出来るCoreML活用術

log5 log5

機械学習関連技術は日々進化を遂げており、特にLLM等は毎日のように話題になっている今日ですが、一方でソフトウェア開発者でもその概念や技術が難しく感じられることが少なくありません。
iOS開発者においても決して例外とは言えず、例えばApple公式のCreateMLなどをXcodeでいきなり使い始めるのは、少しハードルが高いと感じる方も多いようです。

しかし、このCreateMLにはGUIで操作できる「アプリ版」のようなものがあるのをご存知でしょうか?
知らなかったという方は、ぜひお手持ちのMacで /Applications/Xcode.app/Contents/Applications/ を開いてみてください。
そこには Create MLというアプリが鎮座しているはずです!

このトークでは、Xcode内に隠された(?)CreateMLアプリを活用し、iOSでも使えるモデルを作成する方法を紹介します。
CreateMLを使えば、GUIにより写真や音声、テキストの自動判定モデルを手軽に作成できますので、初心者の方でもお手軽に機械学習の世界に足を踏み入れることができるでしょう。

機械学習に興味はあるけれど、なんだか難しそうで手が出せなかった皆さま、この機にCreateMLアプリを使ってその第一歩を踏み出してみませんか?
興味が湧きましたらぜひ本トークにお越しください!

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

Xcodeの機能言えるかな? 2024

__ryomm Ryomm

Xcodeの機能言えたなら 言われた機能もうれしい!


iOS開発にほぼほぼ必要不可欠なものってな〜んだ?
──── それは、Xcode!

みなさんはXcodeをどのくらい使いこなせていますか?
昨年リリースされたXcode 15ではBookmarks機能が新登場し、年々進化しています。

あるとき「私全然Xcode使いこなせてないじゃん!」と自覚し、改めてXcodeにどんな機能があるのか調べてみると知らなかった機能がたくさんありました。その中からXcodeにおけるアプリ開発で便利な機能をまとめてご紹介します!

トピック

  • ブレークポイント
  • けんさく
  • デバッグナビゲータ
  • テストナビゲータ
  • ソースコントロール
  • ブックマーク
  • レポートナビゲータ
  • エディターオプション

Xcodeの機能言えたかな? だいたい言えればいいかんじ!

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

Xcodeの機能言えるかな? 2024

__ryomm Ryomm

Xcodeの機能言えたなら 言われた機能もうれしい!


iOS開発にほぼほぼ必要不可欠なものってな〜んだ?
──── それは、Xcode!

みなさんはXcodeをどのくらい使いこなせていますか?
昨年リリースされたXcode 15ではBookmarks機能が新登場し、年々進化しています。

あるとき「私全然Xcode使いこなせてないじゃん!」と自覚し、改めてXcodeにどんな機能があるのか調べてみると知らなかった機能がたくさんありました。その中からXcodeにおけるアプリ開発で便利な機能をまとめてご紹介します!

トピック

  • ブレークポイント
  • けんさく
  • デバッグナビゲータ
  • テストナビゲータ
  • ソースコントロール
  • ブックマーク
  • レポートナビゲータ
  • エディターオプション
  • オーガナイザー
  • シミュレータ

Xcodeの機能言えたかな? だいたい言えればいいかんじ!

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

SwiftDataの強みを知ってプロダクトで活用しよう!

saikei718 Keisuke Saito

SwiftData は、Appleが WWDC 2023 で発表した新しいデータ永続化フレームワークです。
SwiftData を使うことで、明確で効率的なデータ操作を行うことができます!
このトークでは実際に SwiftData × iCloud を採用したアプリを作った際の経験を元に、どのようにプロダクトに導入し役立てることができるのかを実際のコードをベースに紹介します!

<トピック>

  • SwiftData の概要
  • Core Data や Realm Swift などの他手法との比較
  • SwiftUI との連携
  • Attribute を用いたプロパティ属性のカスタマイズ
  • iCloud 連携を用いた複数端末でのデータ同期と、その際の制限事項

このトークを通じて、皆さんがSwiftDataの魅力を理解しプロダクト開発に役立てたいと思っていただければ幸いです。

1
ルーキーズLT(5分)

文系からエンジニアへ: 独学でiOS開発を習得した道のり

Matsuo Takuma

皆さんはプログラミングやiOSアプリ開発をどのように習得しましたか?
私は、頼れる人が周りにいない状況で、独学でプログラミングとiOSアプリ開発を学んできました。

このセッションでは、iOSアプリ開発を始めた理由から、当時のメモやソースコード、開発したアプリを紹介しながら、技術習得のための取り組みや歩み等をお話しします。また、独学での学習を続けるためのメンタル管理の方法等についても共有します。

具体的なトピックは以下の通りです。

  • プログラミングを始め、iOSアプリ開発を選んだ理由
  • 当時のメモ、ソースコード、開発したアプリを踏まえた技術習得の取り組みと歩み
  • 継続できた理由
  • メンタルを維持するためのTips
  • 今後の目標
レギュラートーク(40分)

ハードとソフトの両面からアプローチするiOS × Object Captureの課題

oka_yuuji oka yuji

iOS 17.0より、RealityKitを使用してObject Capture APIが利用可能になりました。
このAPIにより、デバイス上で対象物のスキャンから3Dオブジェクト生成までできるようになりました。
しかし、現行のサンプルコードでは、撮影者が対象物の周りを自ら移動してスキャンを行う必要や、精度を高めるためには多くの写真が必要です。
このため、スキャンの環境と撮影時間(枚数)が課題と感じます。
そこで

  • 自動回転するターンテーブルの開発
  • 少数の写真でも精度の良い3Dオブジェクトを生成する

ことで解決できるのではと考えました。
本トークでは、Object Captureの基本概念から、上記の課題に対してハードウェア(自動回転するターンテーブル)とソフトウェア(少数の写真でも精度の良い3Dオブジェクトを生成する)の両面からアプローチした事についてデモを交えたながら解説したいと思います。
このトークを聴き終えた後にはきっとObject Captureの基本を理解し、自身でも3Dオブジェクトを生成したくなるでしょう!

1
ルーキーズLT(5分)

時間経過に伴う処理をより Swift らしく実現しよう!

長谷川 稔樹

Swift 6.0 への対応を進める中で、Combine の実装を async/await に置き換えたいと感じる場面が増えてきたのではないでしょうか。2022年にAppleが公開したOSSである Swift Async Algorithms を使用することで、時間経過に伴う処理を async/await で記述できるようになりました。
Swift Async Algorithms は、 Combine のように様々なオペレーターを利用しつつ、非同期処理を for-in ループで実装することができる強力なライブラリです。これにより、より直感的で Swift らしいコードを書くことが可能になります。

本LTでは以下の内容について紹介します。
・Swift Async Algorithms と Combine の比較
・Swift Async Algorithms を用いた時間経過処理の結合方法
・Swift Async Algorithms の便利な API の活用法

2
ルーキーズLT(5分)

HomeKit非対応でも大丈夫!iOSの『ホーム』アプリでスマートホームを実現するためのキーワードと実践方法

ni_san2000 にーさん

スマートホームとは、家の中の家具や家電をインターネットに繋いで可視化・操作できるようにする技術です。AppleはiOS 8でこれを実現するための「ホーム」アプリと「HomeKit」を発表しました。
照明をはじめとしたHomeKit対応アクセサリは、「ホーム」アプリに簡単に追加でき、操作が容易であるという魅力があります。

しかし、発表から数年が経過しても、国内のHomeKit対応のアクセサリの数は依然として少ないままです。最近では、複数のメーカーがそれぞれのアプリで操作するスマートホーム製品を発売しています。
HomeKit対応製品の少なさや各メーカーの専用アプリに依存してしまうことから、「ホーム」アプリによるスマートホームの導入を諦めてしまった方も多いのではないでしょうか。

このLTでは、「ホーム」アプリによるスマートホーム環境の構築を諦めきれない一人のApple信者が、HomeKit非対応アクセサリでも「ホーム」アプリに追加して操作するためのOSS"Homebridge"と新しいスマートホーム規格"Matter"を紹介します。
またそれぞれの技術の実際の使用例を交えながら、現状できることや得意・苦手なことを説明して、今からスマートホームを始める際のおすすめの方法を解説します。
これを聴けば、Appleのスマートホームに関する最近のトレンドや課題が分かるようになります。

ルーキーズLT(5分)

新卒研修で3週間でSNSアプリケーションを作り上げた成功ストーリー

_t12o_ t12o

突然ですが、皆さんはSNSアプリケーションを3週間の短い期間で作り上げる挑戦をしたことはありますか?
私が所属する某企業では、新卒研修の一環として、この「SNSアプリケーションの開発」が出題されました。

しかし、Firebaseなどのサーバーレス開発ではなく、クライアント、サーバー、インフラ、ML/DSの職種を活用した開発です。
私が所属する某企業では、新卒研修の鬼門として「SNSアプリケーションの開発」が出題されました。
開発期間が短いため、戦略として「機械的反復的なコードは自動生成に任せ切ろう!」という方針のもと最新技術を積極的に採択していきました。

本セッションではより短い期間で品質を担保しつつアプリケーションを開発するための技術的tipsを紹介します。
具体的には、以下の導入からメリット、デメリットと苦戦したことについて解説し、短期間でのアプリ開発でとるべき技術戦略を紹介します。

  • Swift OpenAPI Generator
  • Swift Testing
  • Mockolo

本セッションを通じて、個人開発や小規模開発におけるを最適解を見つけましょう。

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

Cloud Functions for Firebaseを使ったLive Activityのリアルタイム更新

fromkk かっくん

iOS16.1で追加された Live Activity ですが、実装されているアプリはまだまだ少ないような気がします。
Live Activity の実態はWidgetなので、SwiftUIを書くことができれば Live Activity をすぐに実装することができます。
ただ、 Live Activity に掲載する情報をリアルタイムに更新しようとすると、少し話がややこしくなります。
Live Activity を遠隔で更新するにはPush通知を活用します。
しかし、Firebase Cloud Messaging(FCM)を使用することができないので、独自で通知の送信ロジックを作成する必要があります。
このセッションでは、 Live Activity の振り返りと、Cloud Functions for Firebaseから Live Activity を更新する具体的な方法についてお話しします。

ルーキーズLT(5分)

SPMで導入できる初めての自作ライブラリ開発

hayatehhh0704 かっきー

近年、CocoaPodsからSwift Package Manager(SPM)に移行したプロジェクトが増え、Firebase iOS SDKでもSPMでのみ利用可能なバージョンがリリースされました。新規開発においても、CocoaPodsを使わずにSPMのみでパッケージ管理を行うケースが増えています。

SPMの利用頻度が高まる中で、初めて自作ライブラリをSPMで導入する方法について解説します。具体的な手順やコード例を交えながら、SPMの利便性と自作ライブラリの開発プロセスを理解することで、開発効率をどのように向上させるかについて詳しく説明します。

本トークでは、以下の内容を話します。

・ 自作ライブラリを開発するメリット
・ 初めての自作ライブラリをSPMで導入する方法(具体的な手順とコード例)
・ 開発中に直面した課題とその解決方法

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

Go Global! マルチプラットフォームでの多言語対応の実践と運用

TAAT626 TAAT

iOSでの多言語対応といえば、Localizable.stringsやString Catalogを利用してApp内のテキストや文言をkey-valueのペアで記述し、keyをもとにローカライズする必要があります。しかし、プロダクトがiOSだけでなくマルチプラットフォームに対応している場合、どのように作成や管理を行えば良いでしょうか?

このトークでは、マルチプラットフォーム(iOS, Android, Web, macOS, Windows, Quest)に対応しているメタバースプラットフォームclusterの多言語対応における具体的な取り組みや、そこで直面した課題、そしてそれらを乗り越えるための運用方法について詳しく紹介します。

具体的には以下の項目について解説します

  • 多言語キーと翻訳文言の管理方法
  • プレースホルダーを用いた柔軟な多言語リソース定義
  • マルチプラットフォーム向けに多言語リソースファイルを生成する方法
  • CIでの定期実行による多言語リソースファイルの生成作業負担の軽減
1
LT(5分)

レガシーなUIKitアプリにSwiftUIとマルチモジュールを導入する際の課題と解決策

fromkk かっくん

私が個人事業主として開発を手伝っているアプリは、UIKitとStoryboardをベースにした既存の実装があり、かなりレガシーなものとなっています。
このアプリの一部機能を作り替える際に、SwiftUIとTCA(The Composable Architecture)を用いたモダンな設計を導入しようと試みました。

しかし、パッケージ側からアプリ側の既存画面を呼び出す必要があり、多くの課題に直面しました。
このトークでは、開発中に発生した具体的な問題と、それにどのように対応したのかを以下のポイントに分けてお話しします。

依存関係の管理: モジュール間の依存関係をどのように整理したか。
画面遷移の実装: SwiftUIからUIKitの画面を呼び出す際の具体的な方法とその課題。

1
LT(5分)

SwiftUIでiPadアプリのレイアウトを考える

fromkk かっくん

iPadやMacのような大画面のアプリを開発する際に重要なポイントの一つに、空白をどのように作るかがあります。
UIKitでiPadアプリのレイアウトをするときは、 readableContentGuide という便利な機能がありました。
これを利用することで、Appleが定義した読みやすい幅を基準にレイアウトを組むだけで、イイ感じに作ることができました。
SwiftUIが登場して5年になり、成熟してきた感も出てきましたが、まだまだ大画面レイアウトに関するベストプラクティスはまだ確立されていません。
このセッションでは、個人事業主として手伝っているSwiftUIベースのアプリをiPadに対応させるためにどのようにしたかをお話しします。

LT(5分)

Swift Macroを活用したトランクベース開発におけるFeature Flag管理

TAAT626 TAAT

トランクベース開発では、細かいコミットを頻繁にマージし、コードの安定性を高め、コンフリクトを早期に解決することで、迅速なリリースが可能になります。この手法において、未完成機能やバグのある機能をオンオフするためにFeature Flagを利用することが重要です。

Feature Flagを導入することで、開発中のコードを安全にマージし、複数の機能開発を並行して進めることが可能となり、チーム開発を加速させるメリットがあります。しかし、機能のリリース後にFeature Flagの定義や分岐箇所を削除する際、不要なファイルや定義の削除漏れが発生することがあります。

この問題を解決するために、Swift Macroを活用して削除漏れを防ぐための@粉砕アノテーションを作成しました。このアノテーションにより、Feature Flagの定義が削除された際にビルドエラーを発生させることで、削除漏れを防止します。

このトークでは、メタバースプラットフォームclusterでの具体的な事例をもとに、Feature Flagを利用したトランクベース開発の運用方法と、Swift Macroを活用した@粉砕アノテーションによる削除漏れ防止の方法について紹介します。

1