LT(5分)

iOS/iPadOSの「ViewController」の歴史を振り返る

haseken_dev haseken

アプリ開発をする上で、「ViewController」というクラスを意識しないことは、ほぼないのではないでしょうか?
iOS 2.0の「UIViewController」を皮切りに、様々なViewControllerが提供され、私たちはそれらを実装、カスタマイズして利用してきたかと思います。

では、これまでにどれだけのViewControllerが登場してきたのでしょうか?
このセッションでは、これまでに登場したViewControllerの歴史を振り返ります。

想定する方々:

iOS/iPadOS、それ以外のプラットフォーム向けアプリ開発者

ゴール:
知らなかったViewControllerを知り、今後の参考にできる

アジェンダ:

  1. 最も多くのViewControllerが登場した年と、最も少なかった年
  2. 最も多くのViewControllerを保有するFramework(UIKitを除く)
  3. 代表的なViewController紹介(4~5つ程度)

    ・Frameworkごとに機能と実装例の紹介
    ・Frameworkごとに1つまで紹介

※対象は「UIViewController」または「UINavigationController」を継承するクラスとします。

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

Flexible Online Computer Science Education While Working: the UoPeople

kent_strong_dev Kent Strong

Are you an iOS engineer without a formal CS(Computer Science) background and a degree? Learn how the University of the People(UoPeople)'s online program, designed for working professionals, can bridge the gap. I'll share my own experience of managing coursework alongside my job, applying new knowledge immediately, and advancing my career. In order to get jobs as an engineer worldwide, it is the basic to hold regular Computer Science Degrees and to be able to communicate with others in English. Discover how you can balance work and study with UoPeople’s flexible schedule.

ルーキーズLT(5分)

USキーボードでの英かな入力切り替えアプリの 「再発明」を通して学んだこと

Kotarong1 Kotaro Suto

USキーボードを使っていると左右の⌘キーを使って英数入力とかな入力を切り替えたくなることが多いと思います。この機能を実現するためのアプリは既に存在しますが、このLTでは、私が行った再発明を通じて学んだ、iOS開発においてあまり触れる機会のないSwiftUIやAppKitの機能、そして開発中に直面した課題について紹介します。

発表に含まれる内容:

  • MenuBarExtra、GroupedFormStyle などの紹介
  • NSEvent.addGlobalMonitorForEvents()の使用方法と注意点について
  • CGEvent、CGKeyCode について
  • 仮想キーコードはどんなものがあるのか
  • SwiftUIとNSEvent.addGlobalMonitorForEventsの相性問題
2
ルーキーズLT(5分)

5分で学ぶRealityKit: AR空間上のオブジェクトを自由に動かすコツ

shoryu927 tatsubee

RealityKitはiOSやvisionOS向けのARアプリケーションを開発するための強力なフレームワークです。
これを用いることで、任意のオブジェクトを現実世界に呼び出すことが簡単に実現可能です。
では移動や回転(Transform)はどうでしょうか?

並行移動や単純な回転をさせることは簡単です。しかし、少し複雑な挙動をさせようとすると途端に難しくなります。
私の場合、「オブジェクトの向きをカメラに追従させる」機能を実装する際に沼にハマり、これを解決するためにオイラー角や行列を使った計算が必要でした。

このようにRealityKitを扱う際にはオイラー角や行列、ワールド座標にローカル座標など、普段の開発ではあまり見慣れない概念を適切に扱う必要がありますが、これらの概念を理解し、コツを知ることで、実は簡単に扱えるようになります。

本LTでは、この「オブジェクトの向きをカメラに追従させる」という具体的なユースケースを例に、一見難しく見えるオイラー角や行列を使ったオブジェクトのTransformを、簡単に考え・実装する方法を5分間でお伝えします!

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

友達に似てる有名人を探し出せ!顔の類似度判定器の開発とその技術

akihiro_kokubo Akihiro Kokubo

ある日、友達からユニークな相談が舞い降りた。
「自分に一番似ている有名人を見つけてほしい」
どうやら、ファッションやヘアスタイルの参考にするようだ。
100人の有名人の中から、友達に最も似ている人を探し出すミッションはこうして始まった!


友達に似ている有名人を特定し期待に応えるために、顔の類似度を判定するツールをSwiftで作ったので、技術的な裏側を解説します。
iOSのオンデバイスAPIを用いてランドマークを取得し、2つの顔のランドマーク同士の類似度を行列計算により算出しています。

普段なら便利なライブラリを探し続けネットをさまよう自分が、自らアルゴリズムを実装する道を選び、試行錯誤した経験を共有します。
特に難しかったポイント、それをどう解決したのか、そしてこのプロジェクトを通した学びをお伝えします。

今回の作戦

  • Visionフレームワークで、顔写真から顔のランドマークを取得する
  • 点群同士の類似度を算出するための作戦を定める
    • 2つの点群の重心を原点に移動する
    • 2つの点群のスケールを正規化する
    • 二乗誤差が最小になるように回転する
  • Accelerateフレームワークで、行列の演算や特異値分解を行う
1
採択
2024/08/22 18:45〜
Track D
レギュラートーク(20分)

GIS入門 - 地理情報をiOSで活用する

shu223 堤 修一

iOS黎明期、スマホアプリにおいて位置情報・地図は花形の機能でした。多くのiOSエンジニアがMapKitやCore Locationを扱った経験があるでしょう。しかし一方で、我々はそんな古くから知っているはずの位置情報や地図について、実はあまり知らないのではないでしょうか。たとえばポケモンGOのように、人が歩ける・立ち入ることのできる場所に絞ってモンスターを配置するにはどう実装するのでしょうか。

位置情報を持つデータを扱うアプリケーションを総称して、GIS(地理情報システム)と呼びます。本セッションでは、GISの基礎として、地図のようなアプリケーションを構成するデータや技術について紐解き、それらをiOSで扱う方法について解説します。地理情報のデータ形式とその扱い方を学ぶことで、前述の地図へのモンスター配置のような実装方法も分かりますし、国土地理院が配信している地形図や航空写真、JAXAやNASAの衛星データなどの外部データもiOSで活用できるようになります。またPLATEAUで配布されている3D都市モデルの活用についても解説します。

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

オンデバイスAIを極める - Core MLモデル変換の全技術

shu223 堤 修一

昨今、世の中を席巻している大規模言語モデル(LLM)をはじめ、音声認識、画像生成、物体検出やセグメンテーションなど、多くのタスクで機械学習(ML)モデルが大活躍しています。これらのモデルをiOS/macOS/visionOS/watchOSのハードウェア性能を最大限に引き出しつつ動かすには、Core MLモデルに変換する必要があります。

逆にいえば、モデル変換の技術をマスターすることで、最先端のモデルをいち早く利用したり、自前データで学習したモデルをアプリに組み込むことが可能になります。

Core MLモデルへの変換には「coremltools」というツールを利用します。ドキュメントもあり、その変換手順は一見シンプルに見えますが、実際のところまず一発ではうまくいかないでしょう。多くの場合、モデルの一部を切ったり置き換えたりする「手術」が必要となります。

本セッションでは、Core MLモデル変換に必要な技術や知識、落とし穴、問題の回避方法について、実際のモデルを題材に解説します。その中で、Appleデバイスの性能を最大限引き出すコツや、モデルサイズを圧縮する方法なども紹介します。

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

Apple Vision Proは言語の壁を超えられるか

noppefoxwolf noppe

Apple Vision Proは、両手が自由で、相手の目を見ながらアプリを使う事ができます。
この特性により、アプリを使いながら、自然にボディーランゲージを使用することができるのです。
つまり、Apple Vision Proは英語と相性が良いのでは無いでしょうか?

この技術の進化により、英語が苦手な私がApple Vision Proを使って英語を話せるようになる日は来るのでしょうか?
自作のアプリを通して、同僚のネイティブスピーカーのエンジニアと、英会話を試みます。

このトークでは、英会話のサポートをするアプリの開発手法について紹介します。
そして、それらを通して、Apple Vision Proならではのアプリとは何かについても考察します。

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

ローカルLLMをiOSで「実用的に」動かしたい

shu223 堤 修一

ローカルLLMは、その名の通りローカルで動作する大規模言語モデル(LLM)です。OpenAI社のGPT-4などのモデルはクラウドベースで動作しますが、ローカルLLMは手元のデバイスで動かすことができます。データを外部サーバーに送信しないためデータのプライバシーが確保でき、APIの従量課金が発生せず、通信環境に左右されることもありません。

なにより我々iOSエンジニアにとって、クラウドベースのLLMは「APIの向こう側」の話でしかなく技術的にはHTTPリクエストを投げるだけですが、ローカルLLMにはオンデバイスで動かすロマンがあります。

では、これらローカルLLMをiOSデバイスで動かすには、どのような手段があるのでしょうか。そして精度や速度の面で「実用的に」動かすことはできるのでしょうか。

どのようなモデルをチョイスし、どう動かし、どう最適化していくのか。本セッションではローカルLLMをiOSデバイス「実用的に」動かすための全知識について解説します。

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

TextKit2を活用したカスタムTextViewの作成

noppefoxwolf noppe

iOSには、テキストを表示するためのコンポーネントが複数存在します。例えば、UILabel、UITextView、SwiftUI.Textなどです。
これらのコンポーネントを利用することで、私たちは簡単にテキストを表示することができます。
しかし、セルフサイジングやビューアタッチメント、リンクの表示など、複数の要求が重なると、適したコンポーネントが存在しないことが分かります。

このトークでは、TextKit2を使って理想のTextViewを作成する方法について解説します。

具体的には以下の内容をカバーします:

  • TextKit2での文字列描画: TextKit2を使ってテキストを直接描画する方法を紹介します。
  • ビューアタッチメントの実装: テキスト内にビューを埋め込むための手法を説明します。
  • セルフサイジングの実現方法: テキストの内容に応じて自動でサイズを調整する方法について解説します。
  • リンク表示とインタラクションの実現方法: リンクの表示やインタラクションを実現する方法を説明します。

これらのトピックを通じて、TextKit2の強力な機能を理解し、カスタマイズ可能なTextViewを作成できるようになります。

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

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

レギュラートーク(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