ルーキーズLT(5分)

Apple Vision Proの現地購入レポート

nkjzm Nakaji Kohki

今年の2月にApple Vision Proがリリースされましたが、残念ながら日本での販売はありませんでした。しかし、VR元年の頃からApple製のHead Mounted Displayを心待ちにしていた私は、どうしても「いち早く手に入れたい!触りたい!!」という想いから、はるばる日本から現地へ飛び購入をしてきました。

このセッションでは、国外でガジェットを購入する際に必要となる様々な知見(具体的には決済方法、関税、技適マークなど)について、現地のリアルな体験を交えながらご紹介します。ぜひ皆さんが同じようなチャレンジをする際の参考にしていただければと思います。

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

SwiftUI時代だけどViewControllerをコードで書いてみよう

coffeegyunyu 日向強

2019年にiOS 13とともにSwiftUIがリリースされ、早くも5年が経過しました。
SwiftUIは年月を重ねるごとに改良や進化を続け、今や多くのSwiftUI情報が世の中に溢れかえっています。

そんな時代だからこそ、少数派になりつつも、依然として使われ続けているUIKitに着目します。
UIKitにはStoryboardやxibなどのInterface Builderを使ったUI生成方法がありますが、
このトークではコードによるViewControllerの作成に焦点を当てます。

  • Storyboardのコードへの移植
  • loadView、viewDidLoadなどのsuperメソッドの使い分け
  • コードで柔軟なレイアウトを構築する

などなど、SwiftUIの普及が進む中で、失われつつあるViewControllerのコード生成方法をまとめたいと思います。

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

アプリへ最新のカメラ撮影機能を搭載する

Naoya_Maeda_app Maeda Naoya

iPhoneのカメラは年々進化しており、iPhone一台で高品質な写真を撮影することが一般的になっています。

例えばハードウェアの性能が向上したことで、48MPの高解像度撮影や、Apple ProRAWやApple Logなどの特殊な撮影機能も利用できるようになっています。

こうした進化したカメラ機能を自分のアプリに組み込むことで、独自のUIを使ってカメラを操作するだけでなく、標準のカメラアプリでは実現できないホワイトバランスや焦点位置の細かな調整、VisionやDockKitなど他のフレームワークと連動したユニークなアプリの開発が可能になります。

しかし、カメラの性能が向上しているにも関わらず、開発者がどのような新しい機能を利用できるのかについてはあまり知られていません。こうした新機能はAVFoundationやAVCaptureのAPIを利用してアプリに組み込むことができますが、実際にドキュメントを読んで実装しようとすると、不十分な記述に惑わされ、試行錯誤してなんとか実装することになります。

このセッションでは、近年のAVFoundationやAVCaptureのAPIのアップデートについて体系的に紹介します。48MP撮影やApple ProRAW / Apple Logなどの最新のカメラ機能の概要と実装方法についてデモを交えて説明します。

1
ルーキーズLT(5分)

Unity初心者のiOSエンジニアが、UnityからSwiftのコードを呼び出してみた

Kaito Kishimoto

Unityを使って開発をしている際に、Swiftのあの機能が使えたらな...と思う時がありませんか?
今回はUnityからSwiftのコードを呼ぶにはどうすればいいのかを調べて実装した経験をお話しします。

このトークでは、以下の内容について紹介します。

  • C#で記載したスクリプトからSwiftのコードを呼ぶための準備や必要なコードなどを紹介します。

このトークを通じて、UnityとSwiftの連携方法を学び、UnityプロジェクトでiOSのネイティブ機能を活用することで、アプリ開発に役立てていただければと思います。

LT(5分)

DJコントローラーでアプリを操作したい!!!!!

EXCode013 mori

最近、弊社ではDJ部が立ち上がりました。
ということで自分もDJコントローラーを購入したのですが、ふと思ったのです「これでアプリを操作してみたい」と

このLTではMIDIを単語しか知らないエンジニアがiOSアプリにどうやって信号を渡すか
実際にリストをターンテーブルで操作できるのか?入力だけじゃなくて出力もできるのか?
などCoreMIDIと格闘した末にゲームコントローラー以外でアプリを操作するのを実演したいと思います。

  • CoreMIDIについて
  • MIDIコントローラーの操作を受け取る方法について
  • MIDIコントローラーへの出力方法について
採択
2024/08/24 13:00〜
Track B
レギュラートーク(40分)

StoreKit2によるiOSのアプリ内課金リニューアル

kangnuxlion 康 建斌

StoreKit2はiOS 15から導入された新しいアプリ内課金フレームワークで、より安全で効率的な課金実装が可能になります。2024年2月より、ABEMAではこれまでの「ABEMAプレミアム」に加えて、新たな課金商品の提供を開始し、同時にStoreKit2を用いた課金システムの全面的なリニューアルを実施しました。このセッションでは、新たな商品の検討からリニューアルの設計、実装、テストに至る全フローを詳細に解説します。

  1. ABEMAの既存の課金体系と商品追加によるユーザー体験への影響
  2. 課金システムのリニューアルに至る背景とその過程
  3. StoreKit2を使った具体的な設計・実装の詳細
  4. 新しいオファーの種類とユーザーの課金行動に与える影響の分析
  5. 課金システムへの変更点とアプリパフォーマンスへの影響
  6. リニューアル後のリリースフローと新商品の詳細

アプリ内課金はユーザー体験とビジネスに非常に重要ですが、その実装は複雑でエラー対策も多岐にわたります。このセッションでは、StoreKit2を用いて効率的にこれらの課題を解決する具体的な方法を示します。皆様のアプリ開発に役立つ情報提供を目指します。

6
ルーキーズLT(5分)

App Review Guidelines 「違反」なるべく集めてみた

mrs1669 しろくま

アプリ完成 → App Storeに提出
「これで全世界に公開だ!」と 悦に浸っていると、その後に審査でリジェクトされてリリースできない経験をした方も多いのではないでしょうか?

リジェクトされた際、「ガイドライン 1.2.3 に違反」 (1.2.3は架空の例です) のように、ガイドラインの条文だけが添付されることがあります。 そのため、具体的に何が問題でリジェクトされたのかがわからないこともよくあります。 何度かAppleとやりとりをして修正したり、丁寧に説明して再審査をお願いした結果、審査を通過した経験を持つ方もいるかと思います。

リジェクトの経験は次回に活かすことができ、どのような行為がリジェクトされるかを理解していれば、次のリリース時には注意を払うことができます。 App Review Guidelines自体、定期的に更新されます。 また私の体感ですが、同じレビューガイドラインの文言でも、時代が経つにつれて審査基準も変わってきているように感じます。

このLTでは、最近アプリを作成してリリース審査に提出した際に経験した様々なガイドライン違反についての知見を共有いたします。

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

数値を文字列に整形する際の落とし穴とその解決策

glassfiber2023 glassfiber

このセッションでは、数値を文字列に整形する際に陥りやすい落とし穴について、具体例を交えて紹介します。

例えば、以下のような関数でパーセンテージの文字列を得ようとする場合を考えます。

func percentStr(_ rate: Double) -> String {
let value = floor(rate 1000) / 1000
let percentValue = value
100
return "(percentValue)%"
}

これを print(percentStr(0.523)) として実行すると、どのような出力が得られるでしょうか?

実際の出力は 52.300000000000004% となります。予想できましたか?

このセッションでは、数値を文字列に整形する際に私が陥った落とし穴について解説します。
具体的な内容は以下の通りです。

1.浮動小数点数の精度問題:
なぜ浮動小数点数がこのような誤差を生じるのか、その理由と背景について説明します。
2.NumberFormatterの活用:
NumberFormatterを用いた解決策を紹介し、どのように実装するかを具体的に示します。

このトークを通じて、皆様が同じような問題に直面した際の参考になれば幸いです。

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

SwiftでCI/CD環境を作ろう!

nato_ring ring

みなさんのチームではどのようにアプリを配布・リリースしていますか?
便利なCI/CDサービスの恩恵に預かる、自前で環境を構築する、Xcode Cloudを利用するなど様々かと思います。

いずれの場合でも普段のiOSアプリ開発とは異なる知識・経験・技術が必要となるためこの領域は属人化しやすく、多くの方がメンテナンスに苦労した経験を持っていることでしょう。
これがもし、iOSアプリ開発と同じ感覚でCI/CD環境を構築することができたならどうでしょうか?

弊社ではアプリの配布・リリース自動化のほとんどをSwiftで実装しており、アプリの定期配布、デザイナー向けテスト配布、リリースノートの作成からアプリ申請までのほとんどの作業が自動化されています。

本トークではSwiftを使ってCI/CD環境を構築する方法と導入・運用する際に得た多くの知見についてお話しいたします。特にCD環境の構築に焦点を当て、自動化の面白さとSwiftを最大限活用する方法を余すことなくお伝えします。

話すこと
・App Store Connect APIの基本機能と進化の歴史
・App Store Connect APIの認証プロセス、エラーハンドリングとSwiftでの実装例
・セキュアなCDパイプラインの設計と構築方法 ~GitHub Actionsを添えて
・具体的な導入事例、運用方法、その効果と実績

5
ルーキーズLT(5分)

「百聞は一見にしかず」に一石を投じる

Mika

私たちは普段、視覚を通して多くの情報を得ていますが、実は聴覚には情報処理の面で視覚を超える優れた特徴があります。聴覚は音の時間変化を理解する能力に優れ、音程や音量の変化を鋭敏に感じ取ることができるため、新たなデータの理解につながる可能性があります。

皆さんは Swift Charts の VoiceOver 機能を試したことがありますか?その中には Audio Graph というアクセシビリティ機能の一つで、視覚に障がいのある方々向けに、データの分布や推移を音のピッチを用いて表現する機能があります。実のところ、この機能は全てのユーザーにとって非常に興味深いものです。私が初めて Swift Charts の VoiceOver 対応を行ったとき、その音がまるで音楽のように聞こえたことに驚きました。

本トークでは以下の内容についてお話しします。

  • チャートごとの Audio Graph が奏でる音色
  • さまざまなデータの音を聴いてみる
  • Audio Graph を用いた音楽活動

視覚的なチャートや文章だけでは伝わらない情報を、音を通じて受け取ることで、今まで見えてこなかった新しい側面が見えてくるかもしれません。皆さんもAudio Graph という新たな表現の形を体験してみませんか?

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

公式ドキュメントの裏側を知る〜DocCを支える技術たち〜

charlie_dev_ios チャリオ

iOSエンジニアであれば誰しも一度はApple公式のドキュメントやSwiftUIのチュートリアルを読んだり、プロダクトやライブラリのドキュメントをDocCを用いて書いたりしたことがあるのではないでしょうか。swift-doccはこれらのドキュメント生成をSwiftベースで実現する強力なライブラリです。

本トークではswift-doccの仕組みに着目し、その動作原理について解説します。ドキュメント作成にはシンボル生成やMarkdownのパースなど、普段のアプリ開発ではあまり触れる機会のない技術が関わっています。それらについても一つずつ丁寧に取り上げます。

このトークを通じて、swift-doccのコードを理解し、OSS貢献やSwiftを使用したツール開発への第一歩を一緒に踏み出しましょう!

内容

  • DocCの概要
  • APIリファレンスや記事、チュートリアルを生成するまでの流れ
  • ArgumentParserについて
  • SymbolKit、swift-markdown、swift-docc-render、swift-nioなど重要な構成要素について
    • 記事(Article)の生成方法
    • .tutorialファイルのパース方法
    • Web上でのプレビュー機能の仕組み
  • swift-doccの本当の役割
1
レギュラートーク(20分)

現役高専関係者が考える、高専モデルコアカリキュラムにSwiftとiOS開発を組み込むことで起きる変化とメリットに関する考察

atsuki_seo 瀬尾 敦生

当方は某企業でiOSエンジニアをしている傍ら、某離島にある商船高専の情報工学かでテクニカルアドバイザー的なことをしています。アドバイスをしている中で、実践的な教育カリキュラムをどう実現するかというのがちょこちょこ話題に上がることがあります。

高専には教育の質を担保するモデルコアカリキュラムというものが設定されています。
その中にはプログラミング・アルゴリズムに関する項目も定義されています。

参考文献
https://www.kosen-k.go.jp/nationwide/main_super_kosen

ただし、ここにはカリキュラムとして最低限学ぶべき内容が定義されているのみであり、実現方法などについては言及がありません。
今回はMac, Xcode, Swift Playgroundsを使った高専生のモデルコアカリキュラムの具体的な実現について考察した内容を発表します。

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

Swift Concurrencyで複雑な認証ロジックをシンプルに魅せる

Swift Concurrency が導入されてから「Swiftが難しくなった」という声をよく耳にします。
実装者はこれまで見えていなかったデータ競合や再入可能性などの問題に対処する必要が出てきており、これまで以上に高いレベルの言語知識が求められています。
しかし、実装者がSwift Concurrency を正しく活用することで、複雑なロジックやユーザーの操作が絡んだ非同期なフローを抽象化し、再利用性の高い形でよりシンプルなインターフェースを利用側に提供することが可能です。

本トークでは、タップルの認証フローをフルスクラッチで刷新した事例を通じて、以下のような複雑な課題を Swift Concurrency を活用して解決した方法を共有します。

  • 認証SDKを通じた状態の更新や判定など、クライアントから切り離せないロジックの肥大化
  • Sign in with Apple、SMS認証などの画面呼び出しを伴う認証フローの共通化
  • 外部SNSや認証SDK周りのエラーハンドリング

このトークを通じて、Swift Concurrency のポジティブな側面や柔軟なコード表現力を学び、
自分たちの業務での複雑なユースケースに活用するイメージを持つことができるようになるきっかけを提供します。

5
ルーキーズLT(5分)

iOS 17で進化したCoreLocationAPIの紹介

shake__551 shake

iOS 17で変更された新しいCoreLocationAPIについて、その機能と改良点を紹介します.

話すこと

  • Core Location APIの変更点について
    • バックグラウンドで位置情報を取得する方法
    • ライフサイクルの変化

話さないこと

  • 具体的な導入事例
  • 「ドキュメントに書かれていることやWWDC2023で話されている内容」以外のこと
ルーキーズLT(5分)

「xcrun simctl」を活用してiOSシミュレータをより便利に操作しよう

glassfiber2023 glassfiber

iOSシミュレータを操作するための便利なコマンド「xcrun simctl」をご存知でしょうか?

例えば、ローカルストレージにデータを保存しているとき、開発中にデータ構造を変更することがあります。そのとき、古いデータを削除したくなることが多いでしょう。通常、アプリを削除するとすべてのデータが消えてしまいますが、一部のデータを残しておきたい場合はシミュレータのフォルダをFinderで探し、特定のファイルだけを手動で消す必要があります。
この手間のかかる作業も、「xcrun simctl」を使えば、シェルスクリプト一発で簡単に行うことができます!

さらに、「xcrun simctl」を使えば、アプリの削除と再インストールを自動化することも可能です。これにより、開発効率が大幅に向上することは間違いありません。
本トークでは、これらの便利な使い方を具体的なコマンド例とともに詳しくご紹介します。

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

RealityKit入門

shoryu927 tatsubee

RealityKitはiOS・visionOSにおいて、ARアプリケーションを開発する最適解の一つです。

ARと聞いて少しハードルを感じるかもしれませんが、RealityKitはSwiftネイティブなAPIで提供されているため、3D空間を扱うための座標や行列計算などの独特な要素はありますが、普段のiOS開発とほとんど変わらない方法で記述することができます。
この独特な要素に関しても、概念を理解し、ちょっとしたコツを知るだけで簡単に扱えるため、RealityKitを使ったARアプリケーションの開発は本当にとても簡単なのです。

本セッションでは、「好きなイラストを現実世界に呼び出すARアプリ」を例に、RealityKitを用いた基本的なARアプリケーションの作り方と、開発中に直面しがちなハマりどころを、以下のステップに沿って解説します。

  1. ARKitとRealityKitの役割と関係性
  2. 現実世界の特定の場所にオブジェクトを配置する方法
  3. オブジェクトにテクスチャを貼り付ける方法
  4. オブジェクトに環境効果を適用する方法
  5. オブジェクトの位置や方向を自由に変える方法

日本でのVision Proの発売に備え、今こそRealityKitに入門しましょう。

3
LT(5分)

これだけは伝えたい! Interactive Widget 開発の肝

monoqlo monoqlo

みなさんは日頃ウィジェットを活用していますか?

iOS 17ではウィジェット上にButtonやToggleの設置が可能となり、ついにユーザーとインタラクティブなやりとりができるウィジェットをつくれるようになりました。

一方で、ウィジェットには様々な制約があり、無理なものは無理と割り切った上で設計する必要があります。SwiftUIで通常のiOSアプリを開発するのと同じように書ける部分もあれば、そうではない部分もあるため、その違いを認識することは非常に重要です。

例えば、ユーザーのボタン押下後にネットワーク通信が必要な場合や、何度か画面遷移が必要な場合、あるいはiPad向けに広いスペースを使ったウィジェットをつくる場合… ウィジェット開発ではどんなことに気をつけた方が良いでしょうか。

このLTでは、英語学習アプリにインタラクティブなウィジェットを追加した際の経験をもとに、「これだけは押さえておきたい」というポイントをギュッと5分に詰め込んでお伝えします。

1
ルーキーズLT(5分)

App Clip Codeを解析してみた!

mrs1669 しろくま

みなさん、App Clip Codeってご存知ですか? WWDC2020で発表されたApp Clipは、アプリをインストールせずにちょこっとだけ使える便利な機能です。 そして、このApp ClipをQRコードのように読み取るだけで、すぐに使用できるコードがApp Clip Codeです。 開発者のみなさんであれば実は自分で簡単に作れます!

ところで、「え、QRコードなら読めるけど、App Clip Codeって読めるの?」って思いますよね? え、思わないですか?? App Clip Codeは残念ながら読め..ないですが、一定の規則性があることはわかりました。

このLTでは、私が様々なApp Clip Codeを生成して解析する中で見つけた法則性についてお伝えします。 みなさんと一緒にこの法則性を解き明かしていけると嬉しいです!

LT(5分)

なぜダークモード対応が必要なのか 〜モビリティアプリにおけるダークモード対応戦略〜

tsuboyan5 tsuboyan

ダークモード対応の意義は単に見た目のかっこよさにとどまりません。
特にモビリティアプリにおいて、ダークモードは安全性の向上にも寄与します。例えば夜間にルートナビを見せる状況で、周囲の暗さにあわせた表示方法があれば、目にかかる負担を極力減らし運転への集中を保つことにつなげられます。

Luupでは、このような安全性の観点からアプリのダークモード対応を実施しました。

このLTでは、以下について紹介します

  • なぜダークモード対応が必要なのかをHIGやいくつかのプロダクトの実例を交えて考察
  • 4年以上運用されている規模の大きなアプリでダークモード対応を進める上で出てきた課題やその解決策
3
レギュラートーク(40分)

iOSエンジニアのための三次元点群処理入門 〜 3Dスキャンをゼロから実装する

shu223 堤 修一

近年のハイエンドiOSデバイスにはLiDARセンサーが搭載され、APIを通じて点群データを取得可能になりました。またiOS 17で追加されたObject Capture APIによりLiDAR搭載デバイスで3D物体のスキャンが可能になりましたが、その中身の処理はブラックボックスです。

本セッションでは、回転やサンプリングといった点群データの基礎から始めて、別々の視点から撮影された2つの点群データを「位置合わせ」する方法を解説します。またこれらの処理をiOSで行うための実装方法についても解説します。

このセッションを通じて、Object Captureの3Dスキャンのような処理がブラックボックスではなく、どのように動作しているのかを理解できるでしょう。Object Captureは高レベルのAPIのみ公開されておりあまりカスタマイズ性に乏しいですが、本セッションの内容を学ぶことで、自前の3Dモデル生成機能を実装するための基礎を身に付けることができます。

7