LT(5分)

ウィジェットワールドツアー: 世界のアイデアを探る旅

littleossa リルオッサ

ウィジェットの生誕から10周年を迎え、その進化は目覚ましいものです。WWDC14での初登場以来、ウィジェットはシンプルな情報表示から始まりましたが、WWDC20でホーム画面に設置できるようになり、昨年のWWDC23ではさらにインタラクティブなやりとりが可能となり、機能の幅が大きく広がりました。

しかし、多くの開発者が直面している課題は、ウィジェットでどのような機能が実現できるのか、そしてどうやってユーザー体験を向上させるかという点です。

このトークでは、App Storeに眠る世界中の開発者が生み出すウィジェットを調査し、革新的で多種多様なアイデアを共有します

具体的には、

  • ウィジェット上でペットを育てる
  • 電卓で計算する
  • コイントスをする
  • テキスト入力を実現する
  • 画面遷移のようなアニメーションを演出する

などの事例を紹介します。

参加者はこれらの実際の事例を通じて、アプリ開発に活かす新たなアイデアやインスピレーションを得ることができます。
未知のウィジェットの世界はまさに宝探しのようです。刺激的なインスピレーションを求めて、一緒に世界のウィジェットを巡る旅に出かけましょう。

このトークを通じて、あなたが次の伝説のウィジェット開発者になるためのアイデアを得ることでしょう。

5
採択
2024/08/23 18:00〜
Track A
ルーキーズLT(5分)

プログラマのための音楽入門

cheebow CHEEBOW

プログラミングとかけまして音楽と解きます、その心は?
どちらもコード(code | chord)が重要です

プログラマと音楽は相性が良いのです。
私自身も、平日はプログラマ、週末はアイドルなどへの楽曲提供をする作曲家です。

音楽はセンスがないとできないというわけではありません。
コードネームから構成音を求めるプログラムを作ることができます。
コード進行やリズムにはパターンがあり、デザインパターンやライブラリのように利用することができます。
音楽にも理論があります。

本トークでは

  1. コードネームから構成音を求めるプログラムを作ってみる
  2. コード進行やリズムのパターンを利用する
  3. 音楽理論は楽しい

についてお話しします

プログラマならではの視点で、音楽を楽しんでみませんか?

ルーキーズLT(5分)

Accessibility Inspectorを活用したアプリのアクセシビリティ向上方法

hinakkograshi hinakko

アクセシビリティに配慮したUIを作成するのは、難しいと思っている方は多いのではないでしょうか?
そう思っているみなさん、Developer ToolのAccessibility Inspectorを使用したことはありますか?
Accessibility Inspectorとは、アプリのUI で発生した一般的なアクセシビリティ問題についてのフィードバックを提供してくれるツールです。

このLTでは、Accessibility Inspectorを使用した以下のようなフィードバックに対する解決方法についてお話しします。

・ 要素の説明:各要素のアクセシビリティラベル(コンテキスト固有の説明的なラベル)を提供しているかをチェック
・ ヒット領域:要素のサイズが小さすぎて人が操作できないかどうかをチェック
・ コントラスト比:重なり合う要素間の色のコントラストが十分かどうかをチェック
・ Dynamic Type:アプリ内のテキストが Dynamic Type をサポートしているかどうかをチェック

個人開発のアプリでAccessibility Inspectorを使用した経験を踏まえて、Accessibility Inspectorを活用したアプリのアクセシビリティ向上方法について紹介します。

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

UIKitとSwiftUIで実現する美しい・楽しい・心地よい画面遷移体験についてのポイント整理と実践例

fumiyasac 酒井文也

iPhone Xの登場とWWDC18で発表された『Designing Fluid Interfaces』により、Fluid Interfaces(流れるような接点)を意識したUIデザインが一層注目されるようになりました。直感的でストレスの少ない、体の動きと連動した操作を実現するためには、アニメーションやインタラクション、特に画面遷移に関する理解が欠かせません。

しかし、これらの表現を実装する際、技術的なハードルを感じる方も多いでしょう。また、画面の遷移元と遷移先の「つなぎ目」に対する細部までの配慮や、滑らかな見た目と触り心地を実現するための微調整が必要です。

本トークでは、UIKitおよびSwiftUIを利用した画面遷移の基本的な処理から、アニメーションの工夫、さらにはオリジナリティを持たせるためのカスタマイズ手法まで、具体的なコード例と共に解説します。

具体的には以下のポイントをカバーします:

  • 基本的な画面遷移の実装方法
  • 直感的で滑らかな遷移を実現するアニメーションの工夫
  • 画面遷移の「つなぎ目」を自然に見せるためのテクニック
  • UIKit・SwiftUI利用時のアプローチ

このトークを通じて、参加者はUIKitとSwiftUIを駆使した美しい画面遷移の実現方法を理解し、実装へのハードルを下げることができるでしょう。

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

iOSだけじゃない、macOS MDMの世界

YusukeIwaki

企業でiPhoneやiPadを社用端末として利用する際、MDMと呼ばれるデバイス管理の仕組みが使われていることは、ここ数年のiOSDCで語り尽くされてきました。
いっぽうで、我々エンジニアが使っているパソコンはmacOSです。社用端末として使っていますよね。あれ、でもmacOSのMDMってあまり話題に上がっていませんよね。

実際には、macOSにもiOSと同様にMDM機能が存在し、ここ数年のWWDCでもmacOSのMDMの進歩は実はホットな話題です。とても気になるので、自分でオープンソースのMDMを作って中古のMacbookをメルカリで買って、その機能性をいろいろ確かめてみました。

・業務に必要なアプリの自動インストール
・SSH設定の自動化
・WiFi設定の配布・自動更新

などなど、これらのMDMの機能は、デバイスの"管理"だけでなく、PCセットアップの自動化など、エンジニアチームにとって大きな利便性をもたらしてくれそうです。

市販のMDMを使うだけでは面白くないので、自分でMDMをつくっての業務改善にチャレンジしてみませんか。
このセッションではMDMのプロトコルやその実装方法などについてもわかりやすく説明したいと思います。

LT(5分)

SwiftUIにおけるView Identityに基づくパフォーマンス改善

kntkymt kntk

SwiftUIの「View Identity」という概念を知っていますか?
SwiftUIはこのView IdentityによってViewを管理・再描画を行っています。
そのためView Identityの扱いによっては余分な再描画を生んでしまいアプリのパフォーマンスを下げてしまいます。

このLTでは、View Identityについて簡単に説明した後
パフォーマンスが良くないSwiftUIのコードとその改善方法を紹介します。

  • if・switch分岐の影響範囲を減らそう
    • Listなどの描画が重いViewを用いる場合
  • 分岐を引数へ移動させよう
    • 条件によって分岐するmodifierを作る場合
    • OptionSetやSetAlgebraの引数を使う場合

このLTを通してView Identityを意識したパフォーマンスの良いViewを書くアプローチを一緒に学びましょう!

6
LT(5分)

5分で理解するPhotogrammetry、NeRF、3D Gaussian Splatting

ikkou HEAVEN chan / ikkou

WWDC21で発表されたPhotogrammetryのObject Captureは、複数枚の写真から3Dモデルを生成する技術です。Photogrammetryに加えて、NeRFや3D Gaussian Splattingといった手法も注目を集めています。
本トークでは、Photogrammetry、NeRF、そして3D Gaussian Splattingの各手法の特徴や、それぞれの得意・不得意について5分で簡潔に紹介します。
なお、例えば3D Gaussian Splattingの分散行列といった技術的な詳細には触れないので、専門知識がなくても楽しめる内容となっています。

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

思い出を立体的に残そう!「空間ビデオ」のススメ

ikkou HEAVEN chan / ikkou

皆さん、Apple Vision Proにあわせて登場した「空間ビデオ」で撮影していますか?
私はこれまで、従来の動画に加え、VR180カメラや360度カメラで家族との思い出を記録してきましたが、立体的で没入的に再生される「空間ビデオ」は“記録”を超えて“記憶”に近い体験をもたらします。

この「空間ビデオ」はApple Vision Proだけでなく、iPhone 15 Pro/Pro Maxでも撮影できます。
まだお持ちでない方も、この体験のためだけに機種変更を検討する価値があります。

再生するためのApple Vision Proをまだ持っていない方も心配ありません。
今のうちに撮りためておけば、いずれその魅力を体験できる日が来るでしょう。
Meta Quest 3をお持ちの方なら、ソフトウェアアップデートにより再生可能です。
厳密には同じ見え方ではありませんが、十分に楽しめます。

本セッションでは、「空間ビデオ」で思い出を残すことの良さとともに

  • より奥行き感を感じられる撮影方法
  • 空間ビデオのフォーマットであるMV-HEVCの背景とSBS形式
  • Apple Vision Pro、iPhone 15 Pro/Pro Max以外で空間ビデオを作る方法と変換する方法
    をお伝えします。

「空間ビデオ」であなたの思い出を残しましょう!

3
ルーキーズLT(5分)

手軽で効率的なリリースフローを実現するためにやったこと

uk_oasis 山科 佑貴

弊社では、1週間に1度のサイクルで継続的にアプリをリリースする運用を続けていましたが、リリースに関わる作業が機能開発の時間を奪っているという課題がありました。そこで、状況を改善すべくGitHub Actionsを利用した自動化に取り組み、一定の効果を得ることができました。

当初は改善の効果を感じていましたが、運用を続ける中で新たな課題も見えてきました。このセッションでは、新たに発生した課題を解消するために、どのような取り組みをしたのか?についてお話しします!

話したいこと
・現状のリリースフロー
・新たな課題と改善したこと
・改善後のリリースフロー
・まだまだ改善したいこと

ただ、現状では打ち手だけが見えている状態で、修正し、運用に乗せるところまでできていません・・・このセッションをきっかけに「登壇駆動開発」で動き出したいと考えています。

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

AI時代のSiriに備える

zeero Jiro Nagasaki

AIの著しい発展に伴い、近い将来Siriがより賢くなることが予想されます。
反面これまでを振り返るとSiriにまつわる技術はショートカットアプリやWidgetの登場とともに大きく変遷してきました。
このセッションではSiriの歴史を振り返りながら、Siri対応の開発ノウハウを紹介します。具体的には以下の内容に触れていきます。

・SiriKit
・Custom Intents と Siri
・App Intents と Siri
・「Siriからの提案」

Siriをフル活用するための開発に乗り遅れないよう、キャッチアップに役立ててください!

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

AI時代のSiriに備える

zeero Jiro Nagasaki

AIの著しい発展に伴い、近い将来Siriがより賢くなることが予想されます。
反面これまでを振り返るとSiriにまつわる技術はショートカットアプリやWidgetの登場とともに大きく変遷してきました。
このセッションではSiriの歴史を振り返りながら、Siri対応の開発ノウハウを紹介します。具体的には以下の内容に触れていきます。

・SiriKit
・Custom Intents と Siri
・App Intents と Siri
・「Siriからの提案」
・サンプルアプリを用いたSiri対応の詳細説明
 ・App Intents 実装の最小構成
 ・AppEnum の使い方
 ・AppEntity と EntityQuery の使い方

Siriをフル活用するための開発に乗り遅れないよう、キャッチアップに役立ててください!

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

Swift Reactを使ってWebフロントエンド開発を始めよう

omochimetaru omochimetaru

近年、SwiftのコードをWebブラウザで動作させることが簡単になってきました。ブラウザが提供するAPIも、Swiftから利用することができます。

しかし残念ながら、ダイナミックなGUIを含む実践的なWebフロントエンド開発にSwiftを採用することはまだ難しいでしょう。それは、HTMLを宣言的に記述するためのライブラリが不足しているからです。JavaScriptにおいても、生のDOM APIでGUIを実装するのは難しいとされており、様々なライブラリが利用されています。

そこで私は、Swift Reactという宣言的HTMLレンダラーを開発しました。これは、広く使われているJavaScriptのライブラリであるReactのコンセプトに基づきつつ、それをSwiftらしいAPIとして再設計し、一から実装したものです。

このトークではまず、Swift Reactを使うことで簡潔で読みやすいコードでWebフロントエンドが書ける事を紹介します。そして、宣言的なインターフェースを支える、仮想DOMによる状態管理と差分検知の実装について解説します。また、簡単な手順で新規にアプリケーションを構築できる事を伝えます。

この発表を聞けば、SwiftによるWebフロントエンド開発をすぐにでも始めたくなるでしょう。

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

アプリ設計レビューをレイヤー観点からアプローチする方法

kitasuke Yusuke Kita

バグの早期発見には、コードの手戻りを早い段階で減らすことが重要です。コードレビューは、コードが仕様通りに動作し、品質が高いかどうかを評価する代表的な手法です。しかし、コードレビューの段階で根本的なアーキテクチャの問題が指摘されると、既に書かれたコードが無駄になる可能性があります。したがって、設計段階でのアーキテクチャレビューも重要です。

ただし、アーキテクチャガイドラインに基づく設計レビューでは十分な成果が得られないことがあります。これは、アーキテクチャには早期対応が必要な部分とそうでない部分があるためです。例えば、MVVMアーキテクチャでは、Viewの修正はコードレビュー時でも対応可能ですが、ViewModelの修正は早い段階で対応しないと、その影響がModelやViewに広がり修正が困難です。これは、ViewModelがビジネスロジックなど多様な責務の間でデータの受け渡しを行うためです。この例からも分かるように、重要な責務におけるデータのやり取りに関するコードは早期対応が必要です。

そこで、重要な責務のまとまりをプレゼンテーションレイヤー、ドメインレイヤー、データレイヤーの3層に分類し、各レイヤー間のデータフローをレビューすることで、早期対応が必要な手戻りを減らすことを狙います。このトークでは、設計レビューにおける各レイヤーの重要性と具体的なレビュー方法について紹介します。

4
LT(5分)

カスタムFormatStyleを作ろう

coffeegyunyu 日向強

iOS 15より導入されたFormatStyleは、値を加工するためのプロトコルです。
.format(value) の形で値を与えるだけで、日付や数値、文字列などの標準的なフォーマットはもちろん、人名や電圧など多岐にわたる形に対応したFormatStyleが用意されています。
SwiftUIにおいても各種ビューにおいて非常に便利に使うことができます。
でも、みなさん、まだまだ足りなくないですか?

そんなフォーマットに飢えている皆さんのために、カスタムフォーマットをどのようにして作るかを提示したいと思います。
世の中をフォーマットしていきましょう。

1
採択
2024/08/23 13:00〜
Track B
レギュラートーク(40分)

SMBファイル共有をSwiftで実装する

岸川克己

Appleプラットフォームのファイル共有にはSMBプロトコルが利用されています。しかし、ファイルが非常に多いフォルダを開く際に接続が不安定になるなどの問題があります。OSに含まれるライブラリの不具合なので対処は難しいですが、SMBファイル共有を自分で実装すれば問題を根本的に解決でき、快適なファイルブラウジングが実現できます。

SMBファイル共有を実装すると一口に言っても何から始めたらいいかわからない方も多いでしょう。SMBプロトコルはHTTP通信ではなく、URLSessionは使えません。データ構造もJSONなどのなじみのある形式ではありません。

難しそうですが、実は道具が違うだけで通信はHTTPではなくTCPソケットを、データ構造はJSONのデコード/エンコードのかわりにバイナリのシリアライズ/デシリアライズを用いるだけです。TCPソケット通信を理解すると、Bitcoinやメールなど、他の通信プロトコルの実装にも簡単に応用できます。

この講演ではSwiftでTCPソケット通信を行う場合の複数の選択肢の比較、プロトコルに従ったバイナリのシリアライズ/デシリアライズの方法など、SMBクライアントを実装する手順について解説します。最終的にiOSとmacOSの両方で動作し、音楽や動画ファイルをストリーミング再生できる、速くて使いやすいネットワークファイルブラウザを作成します。

ルーキーズLT(5分)

VSCodeポートフォワーディングでiOSスマートバナー開発を加速!

chingisod chinggis

初心者iOSエンジニアにとって、サーバー周りの知識や環境構築はハードルが高いと感じていませんか?この課題を乗り越えるために、 昨年リリースされたVSCodeのポートフォワーディング機能を使って簡単にサーバーレスでユニバーサルリンクを実装する方法を設定手順からデモ、応用事例まで紹介します。

来年からDynamic Linksが廃止されるため、スマートバナーへの移行が急務となっています。
この変化に迅速に対応するためには、新しい技術とツールを活用することが重要だと思います。

個人開発はもちろん、チーム開発でもバックエンドの準備を待たずにスマートバナーの実装を進められるため、開発スピードを加速させる可能性を秘めています。

サーバーの複雑さに悩まされることなく、iOS開発をもっとスムーズに進めましょう。

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

Swift Concurrency 登場以降の変更点総まとめ

_maiyama18 maiyama

iOS 開発において非同期処理を Swift Concurrency で書くことが当たり前になってきました。しかし、日々 Swift Concurrency を利用しているにも関わらず、その知識が初リリースの Swift 5.5 時点で止まっている...、なんていうことはありませんか? Swift Concurrency は登場以降も進化を続けており、仕様変更や新機能の追加が行われています。今後も、 Region based isolation の導入や AsyncSequence への Primary associated types の追加をはじめとして、 iOS 開発がより便利かつ安全になるような変更が予定されています。

このセッションでは、基本的な Swift Concurrency の知識は前提として、主に Swift Evolution を参照しながら Swift 5.5 以降に入った、あるいはこれから入る予定の Swift Concurrency 周りの変更を噛み砕いて、できるだけ網羅して紹介することを目指します。 最新の仕様と今後の方向性にキャッチアップしておくことで、いざという時のトラブル解決や、安全で開発しやすいアプリ設計に役立つかもしれません。

8
採択
2024/08/24 13:55〜
Track A
レギュラートーク(20分)

すべてのヘルスケアデータを紐解く

coffeegyunyu 日向強

ヘルスケアアプリから「すべてのヘルスケアデータを書き出す」機能を使用すると、これまでのヘルスケアデータを取り出せることをご存じでしょうか。このデータはzip形式で保存され、シェアすることが可能です。zipデータを解凍すると、いくつかのCSVデータや2GBを超える巨大なXMLデータなどが含まれています。これらのデータは一体どうやって活用すれば良いのでしょうか。

このセッションでは、iOSの巨大なXMLデータの解析方法やCSVデータの処理方法について詳しく解説します。エクスポートされたヘルスケアデータの内容を理解し、他のプラットフォームでインポートする際にも役立つ知識を提供します。具体的には、以下のポイントに焦点を当てます:

  • iOSのXMLデータ解析手法
  • CSVデータの効率的な処理方法
  • 他プラットフォームでのデータインポート方法

このセッションに参加することで、ヘルスケアデータを効果的に活用するためのスキルを身につけることができます。

採択
2024/08/23 16:15〜
Track C
レギュラートーク(20分)

Meet BrowserEngineKit: 独自のブラウザエンジンを体験しよう

_swiftty 林達也

Apple から WebKit 以外のブラウザエンジンを搭載したアプリを作成するためのフレームワーク「BrowserEngineKit」が登場しました。
この機能は EU 地域で、かつ Apple の定めた要件を満たしたサービス提供者のみに限られているものの、開発者は独自のブラウザエンジンを作成することが可能になります。

しかし BrowserEngineKit はセキュリティ向上のために複数の Extensionを組み合わせてアプリが構成されるため、どのように作成すればよいのかが難解です。

本トークでは Apple が公開したサンプルをベースに独自のブラウザエンジンの作り方が学べます。具体的には以下の内容をカバーします。

  • BrowserEngineKit の概要
  • NetworkExtension、RenderingExtension、WebContentExtension それぞれの役割
  • 各 Extension とのプロセス間通信について(XPC)
レギュラートーク(20分)

Pathを活用してグラフ表現の限界を超えろ

Swift Chartsは、棒グラフ、折れ線グラフ、散布図など6種類のグラフ描画をサポートし、iOS 17からは新たに円グラフも追加されました。しかし、実際の開発では仕様やデザインの要件に応じて、Chartsをカスタマイズしたり、自作する必要があるため、Swift Chartsのみでは表現しきれません。そこで今回、Swift Chartsでは実現できないグラフをPathを用いて自作する方法をご紹介します。

  • Swift Chartsについて
    • 基本機能の紹介
    • Swift Chartsの拡張例
  • Swift Chartsの限界
    • Swift Chartsで表現が難しいケースの紹介
    • OSS「Charts」などの他手法との比較
  • Pathを用いてSwift Chartsでは実現できないグラフを自作する方法
    • レーダーチャート、メーター、多重ドーナツグラフ、ヒートマップなどの具体的な自作例の紹介
2