採択
2024/08/24 10:30〜
Track D
レギュラートーク(40分)

iPhone × NFC で実現するスマートキーの開発方法

oka_yuuji oka yuji

いきなりですが「自宅の鍵が公共交通機関の改札のようにiPhoneで開閉できたらなー」と思ったことはありませんか?

NFC(近距離無線通信)はセキュアでレスポンスが早く、環境に影響されにくいので、デジタル認証を行う上で非常に適した通信技術です。
iOSにもNFCをサポートするCore NFCというフレームワークがありますが、現状ではNFCタグやNFCカードの読み書き機能しかサポートしていません。
そのため、物理カードのように振る舞うカードエミュレーションや、双方向通信を行うP2Pモードは実装できません。
また、カードエミュレーションとして機能するNFC付きのPassの生成も現状では限りなく不可能に近い状態です。

これらの制限により、現状では個人でiOSとNFCを組み合わせてスマートキーを開発することは難しい状況です。
しかし、どうしてもNFCを利用して公共交通機関の改札レベルの体験を自宅でも味わいたい…と思い、NFC付きのPassを利用して開閉するスマートキーを作成しました。

このトークでは、NFCの基本的な話から、Core NFCでできることを簡潔に解説した上で、NFC付きPassを利用して開閉するスマートキーの作り方をデモを交えて紹介します。
基本的な概念から応用まで40分で学べる内容となっていますので、ぜひこの機会に今後のiPhoneとNFCの可能性に備えませんか?

ルーキーズ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のスマートホームに関する最近のトレンドや課題が分かるようになります。

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

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

ras0q Ras

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

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

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

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

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

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

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

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

ルーキーズ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
レギュラートーク(20分)

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

yaso_san 八十嶋祐樹

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

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

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

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

226asyura 縣美早

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

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

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

1
ルーキーズLT(5分)

これで安心!安全なCI/CD環境の構築術 〜TestFlightの新機能を添えて〜

cychow_app Shirakazu Eiji

WWDC23で密かに公開されたTestFlightの新機能、「TestFlight Internal Only」をご存じでしょうか?
この機能を利用することで、誤ったIPAファイルが本番環境にリリースされるのをシステム的に防止できます。
しかし、TestFlight Internal Onlyを有効に活用するためには、さまざまな設定が必要です。

本トークでは、私が実際に経験した大規模サービスでのCI/CD環境構築の実例を交え、
TestFlightとCI/CDツールとの連携部分にも焦点を当てながら、安全で安心なCI/CD環境の構築方法をご紹介いたします。

具体的には、以下のポイントについて詳しく解説します。

  1. TestFlight Internal Onlyとは何か
  2. TestFlight Internal Onlyの有効的な活用方法
  3. 大規模サービスにおけるCI/CD環境への応用

本トークを通じて、皆さんが安全で安心なCI/CD環境を構築する上でのヒントを提供できればと期待しています。
また、皆さんが考える安全で安心なCI/CD環境についても一緒に考察していきたいと思います。

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

Accessibility for Swift Charts

Mika

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

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

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

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

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

ルーキーズLT(5分)

iPhone14Pro以降のカメラピンボケ問題の処方箋

_t12o_ t12o

あなたのアプリ、カメラを使った認証機能(QRコード読み取り、本人確認書類)搭載されてませんか?
もし搭載されている場合、実は裏でこんな問題が発生しているかも知れません。

それは、
『iPhone14Pro移行のデバイスで近距離撮影のピントが合わなくなってしまう問題』です!

iPhoneが搭載するレンズはUI以外にも変化を遂げており、実は世代やモデルによってカメラのフォーカス位置、広角から超広角にスイッチする距離などが異なります。
iPhone11の登場によりPro以上の上位モデルにはトリプルカメラが搭載されるようになってから5年の月日が経ちますが、実は年々撮影最短距離も変わってきています。
そんな中、実際発生した14Pro移行のピントが合わなくなってしまう問題をケーススタディとして、原因と対応策について解説していきます。

このセッションではカメラレンズの歴史に触れつつ、具体的には以下の内容に触れていきます。

  • カメラレンズの沿革
  • 最短撮影距離とは
  • 実際に発生した問題とその対策

本セッションを通じて、普段触れないレンズの挙動について詳しくなりませんか?

3
ルーキーズLT(5分)

iOSイベントで 【Nuxt】 の話をしてもいいですか? Nuxt + Vue.js + Nuxt Ionicで始めるiOSアプリ開発

gangan_nikki GANGAN

iOSにおけるSwiftUIやAndroidにおけるJetpack Composeの利用拡大でモバイルアプリ市場における宣言的UIフレームワークの利用拡大は増加の一途を辿っている道半ばでしょう。
宣言的UIフレームワークの利用が拡大することで現代フロントエンドの進化やエッセンスがモバイルアプリ界隈にも徐々に取り入れられ、さらなるハイブリットが生まれることも推測できます。
2021年中頃から末にかけてJetpack Compose / SwiftUIに「Atomic Design」と呼ばれるデザイン手法を実験的に採用された事例が増えていたことも記憶に新しいです。

フロントエンドのエッセンスがモバイルアプリ界隈に取り入れられることで
「WebアプリもモバイルアプリもTypeScriptで実装したい」というニーズが出てくるのは自然なことだと思います。現在であれば React Navive + TypeScript が最有力候補です。

しかし、私は「Nuxt Ionicを用いて Nuxt + Vue.jsで開発することも出来る」という一石を投じたいと考えています。
本登壇にて「モバイルアプリ開発でもNuxtという選択肢をあなたへ」提示したいと思います。

登壇者情報: フロントエンド開発をメインとし、Nuxtのコントリビューターなどをしています。LTの味変枠としてお聞き頂きたいです。

2
LT(5分)

CNLabelContactRelationElderCousinMothersSiblingsSonOrFathersSistersSon

coffeegyunyu 日向強

このトークでは、CNLabelContactRelationElderCousinMothersSiblingsSonOrFathersSistersSonについて語りたいと思います。
果たしてCNLabelContactRelationElderCousinMothersSiblingsSonOrFathersSistersSonとは何者なのか、
どうやってCNLabelContactRelationElderCousinMothersSiblingsSonOrFathersSistersSonを利用すればいいのか、
あまり語られてこなかったCNLabelContactRelationElderCousinMothersSiblingsSonOrFathersSistersSonについて説明します。
またCNLabelContactRelationElderCousinMothersSiblingsSonOrFathersSistersSon周辺の機能についても語る、
CNLabelContactRelationElderCousinMothersSiblingsSonOrFathersSistersSon尽くしの5分間となる予定です。

4