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

敬意を持ったブランディング

Li Jierong

競合との差異化などの理由でブランディングデザインが広く行われています。その結果、アプリの世界は多彩で魅力的なものとなりました。しかし「このアプリはiOSアプリっぽくない」と感じた経験はありませんか。それは独特性を追求するあまり、プラットフォームの文化やユーザーの習慣を尊重できず、「形無し」のデザインになってしまっている可能性があります。

このトークでは、プラットフォームの根本的な精神を見失わずにブランディングを行い、ビジネスとユーザー体験がウィンウィンの関係を築く方法を探ります。

具体的には、以下のトピックについてお話しします。

• 見逃しやすい文化や習慣
◦ 外観のバリエーション
◦ 画面遷移
◦ アクセシビリティ
• 文化や習慣を発見する方法
• 敬意を持ちながらブランディングする手法

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

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

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

akihiro_kokubo Akihiro Kokubo

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


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

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

今回の作戦

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

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

shu223 堤 修一

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

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

8
レギュラートーク(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デバイス「実用的に」動かすための全知識について解説します。

13
レギュラートーク(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からの脱却を目指します。初心者から中級者まで役立つ内容を提供します。

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

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

noppefoxwolf noppe

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

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

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

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

ioco95 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
採択
レギュラートーク(20分)

PencilKitで実装するPDFへの手書き注釈

Ras

メモやファイルなど、いくつかのApple純正アプリに搭載されている「マークアップ」機能を利用したことはありますか?

マークアップ機能を用いることで、色・太さなどを自由に操作しながら書類に書き込みを行うことができます。

PencilKitは、マークアップ機能をアプリに組み込むためのフレームワークです。

マークアップ機能に搭載されている以下のような機能は、すべてPencilKitを使うことで実装することができます。

  • 指やApple Pencilで描いた線を低遅延かつ滑らかに描画する
  • ペンの種類や色・太さを切り替えるツールピッカーを表示する
  • 定規を使って直線を引く
  • 投げなわツールを使って図形をコピーし、他のマークアップ機能搭載アプリにペーストする

本トークでは、実際に開発したPDFファイルへの手書き注釈を題材に、以下のポイントについて学んだことを発表します。

  • PencilKitの基本設定
  • PDFKitとの連携
  • マークアップツールを使うための設定
  • 注釈をPDFファイルに保存する方法
  • 実際に開発した上での現状の工夫点や課題点

これらの内容を通じて、PencilKitを用いた実践的なPDF注釈機能の実装方法を詳しく解説します。

レギュラートーク(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 を更新する具体的な方法についてお話しします。

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

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

TAAT626 TAAT

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

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

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

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

安全で効率的なSwift Concurrencyのコードの書き方

yaso_san 八十嶋祐樹

Swift Concurrencyは、従来のマルチスレッドのコーディングに比べて、データ競合を効果的に回避しながら非同期のコードを簡単に書くことができるようになりました。
しかし、実装者が慎重にコードを書かないと、再現性の低いバグが発生する可能性があることに変わりありません。
また、CPUの効率的な利用を放棄することにもつながりかねません。

このトークでは、Swift Concurrencyの要素であるactorやasync/awaitなどを理解し、安全で効率的な非同期処理のコードを書く方法に焦点を当てます。
Swift Concurrencyのコードを書いたことがあるけれども、自信がない方や雰囲気で書いている方にとって、道しるべとなることを願っています。

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

ABEMAにおけるユーザーフレンドリーな課金体験設計

226asyura 縣美早

課金機能における快適なユーザー体験設計はユーザーの満足度を向上させる重要な要素です。
ユーザーフレンドリーな課金体験は、継続的な利用や再購入を促進するだけではなく、そのサービスに対するポジティブな印象を形成し、サービスの信頼度向上にも繋がります。
また、適切なユーザー体験設計によってユーザーが自身で問題を解決できる可能性を高めることで、カスタマーサポートの負荷やエンジニアのログ調査コストを軽減するメリットもあります。

本セッションではABEMAのサブスクリプションを設計、開発する上で着目したユーザー体験設計について、実際の課金処理を紐解きながら以下の流れでお話しします。

• ABEMAの課金処理(サブスクリプション、PPV)の仕組み
• ユーザー体験向上のための具体的な設計と実装のポイント
• 課金処理中や成功、失敗時のユーザーへの効果的なフィードバック方法とその観点
• 過去の問い合わせ事例に基づく、課題発見とユーザー体験の改善ポイント

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

Accessibility for Swift Charts

Mika

チャートはデータの傾向をビジュアルで理解できるため、とても便利です。しかしながら、視覚的に表現されたチャートは目で見る必要があり、視覚障がい者や弱視の人にとっては利用が困難です。チャートが持つたくさんの情報を適切に受け取れないユーザーがいることはコンテンツ提供者側として避けたい事象です。

Apple の API にはオーディオグラフ(Audio Graph)やチャートを説明 (Describe Chart) させるための機能が提供されています。オーディオグラフは視覚的なチャートの情報を音の高低で表現し、Voice Over で読み上げさせることができます。また、チャートの詳細 (Chart Details) を使用すれば、チャートの重要な特徴や傾向を言葉で説明することができます。これらの機能により、視覚に不自由のあるユーザーもチャートの内容を理解することができるようになります。

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

  • オーディオグラフの使い方をまずは理解する
  • VoiceOver 対応しやすいチャートの設計方法
  • AXChartDescriptor の使い方
  • オーディオグラフを通して”見えて”いなかったものが”見えて”くる

参加者は誰もが利用できるリッチでアクセシビリティの高いチャートを作成するための知見を深め、自分たちのコンテンツに適用していくことができます。

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

The Composable Architectureの良さを改めて整理する 2024夏

yimajo 今城 善矩

The Composable Architecture(TCA)はiOSアプリ開発において関数型スタイルの原則を取り入れることで実装から挙動を予測可能としテストコードを書きやすくすることに特化したOSSのフレームワークです。

このトークでは、2020年5月頃にv0.1がリリースされてから現在まで4年を経過し、さらにアップデートされ続けているTCAの良さを整理します。

そのためまずは従来のiOSアプリ開発における一般的な課題を説明し、TCAの関数型スタイルがどのように課題を解決するかを解説します。そして、新しくTCAへ追加された下記の機能が、どのように過去のTCAの短所を解決してきたかを解説できればと思います。

  • swift-dependencies: 依存関係の管理を改善し、モジュール間のバケツリレー的な結合を緩和。大規模なアプリでも依存管理が容易になった。
  • swift-perception: ObservationをTCAに取り入れ、iOS 17未満にはバックポートを提供する。
  • ViewAction: UIコンポーネントからのアクションをより明確に管理し、ユーザーインタラクションのハンドリングを改善。
  • Sharing state: 状態の共有機能を強化し、アプリ内でのデータフローの管理を容易に。複数のコンポーネント間でのデータの一貫性が保ちやすくなった。
3