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

Pkl入門 - Apple の新しい構成言語の解説

nnsnodnb Yuya Oka

2024年2月に Apple は Pkl (ピックル)をオープンソースで公開しました。
Pkl は豊富な検証機能とツールを備えた、コードとしての構成言語です。
Pkl をどのように使うのか、使うことで何ができるのかを解説します。

  1. Pkl の導入方法
  2. Pkl の使用方法
  3. Pkl のユースケース
    a. 静的構成の生成
    b. アプリケーションのランタイム生成
  4. Swift からの Pkl 構成言語呼び出し
  5. その他の活用方法

JSON、YAML、 Plist などの既存の構成言語とは異なるアプローチを探している方にとって、 Pkl が新たな選択肢にとなる可能性があります。ご興味のある方はぜひ聞いていただけると幸いです。

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

SwiftUI in 40 minutes: A Comprehensive Overview for Busy Engineers

kent_strong_dev Kent Strong

In this 40-minute session, we will delve into the expansive world of SwiftUI, checking its almost all the key components like categories, classes, structures, and functions in Apple Developer Documentation. Engineers are busy and often research only the articles they need to solve the problems they encounter at the time. But this session is designed for the busy engineer like you. Just watching this 40 minutes session, you can grasp overview of SwiftUI.

ルーキーズLT(5分)

SwiftSyntaxでSwiftコードを生成する仕組みを作って自動化してみた話

atsuki_seo 瀬尾 敦生

仕様書とソースコードの乖離が起きるのが嫌だが、定期的に仕様書とソースコードを見比べるという作業も嫌な僕が、仕様書からSwiftのソースコードを自動生成する仕組みがないかなと思って調べた記録を発表します。

Swiftコードを自動生成する成果物は作れたので、その内容を元に以下について発表します。

  • SwiftSyntaxを使ってSwiftのソースコードを自動生成する仕組みを作り、それをiOSのプロジェクトに組み込む方法
    • 自動生成するソースコードの例は @objc、protocol、変数を含んだクラスの自動生成です
    • SwiftSyntaxつらみポイントの解説(浅め)
  • 自動生成の仕組みに関してメリット・デメリットや業務に組み込めるかどうかについても考察する
    • SwiftSyntax は 最強魔法のツールになりえるのかどうか。
  • ソースコード自動生成の仕組みをチームで運用するのは一旦諦めた話

SwiftSyntaxはSwift言語のアップデートと共に割と大きめのアップデートもガシガシやってる仕組みです。
僕の苦しみから他の人の開発効率化案、もっと良いコードが生まれることを願って、発表します。

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

出前館アプリの決済機能の改善から見る、E-commerce決済の過去と現在

kuroFront46 Shinji Kurosawa

決済は、物理的な商品の購入を行うE-commerceアプリでは、必須かつ重要な機能です。
出前館アプリでも、決済機能はユーザにとって重要な機能として位置付けられています。

アプリ開発者として決済機能を運用する際は、アプリだけでなく、トランザクション処理全体の把握など、サービス全体を通じた知識が求められます。

また、近年の決済機能は、3D SecureやSMS認証などの多要素認証によって、よりセキュアに価値を提供することが求められています。
複雑な決済フローをユーザに認識齟齬なく継続的に提供するためには、バックエンドの処理に加えて、アプリで各種例外処理の考慮をするなど、様々な工夫を行う必要があります。

本発表では、決済機能の運用について、出前館アプリの決済機能の運用を例に、以下の話をします。

  • 決済の基礎(決済とは何か/AuthorizationやCaptureの話)
  • 決済の近年の傾向
  • 出前館の決済機能での改善例
  • 複雑なドメインをチームに共有する際のノウハウ

発表者は、出前館アプリの決済機能のアプリ開発・リードを経験する中で、決済機能の運用例には、複雑なシステムを運用するためのノウハウとして共通の学びがあると考え、本プロポーザルを提出しました。
決済に関わっている方に限らず、複雑なシステムをどう運用するか興味のある方など、本発表を聞いていただけますと幸いです。

6
LT(5分)

SwiftでPlaydateのゲームをビルドしてネコを走らせる

Kyomesuke Kyome

Panic社のキャッチーな黄色い筐体のモノクロ携帯ゲーム機『Playdate』はご存知でしょうか?
組み込み言語のサポートにより、実はSwiftでこのPlaydateのゲーム開発ができます!

本LTでは以下の内容をさっくり伝えます。
・SwiftでPlaydateのゲーム開発をするための環境づくり
・PlaydateKitを用いたゲーム開発の仕方
・Playdateのディスプレイ向けの画像を用意する方法
・Playdateでネコを走らせるデモ

Playdateに興味があるけれどまだ手を出していない方、小型ガジェットなどのソフトウェア開発に興味がある方、普通のiOSアプリ開発には飽きてきて新しい刺激が欲しい方など、Swiftでのゲーム開発の世界を少し覗いてみませんか?

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

Swiftで高速フーリエ変換してオーディオビジュアライザーを作る

Kyomesuke Kyome

オーディオビジュアライザーとは、音楽のリズムや振幅、周波数成分などを視覚的に表現したものです。音楽系のアプリを使ったことがある方なら一度は見たことがあるウニョウニョ動くカッコいいあれです。

本トークでは、音楽ファイルを読み込み再生しながら、リアルタイムで高速フーリエ変換を実行し、オーディオビジュアライザーを表示するまでの方法について紹介します。高校数学レベルの数学的知識とSwiftでのアプリ開発経験があることを前提として、Swiftで一歩踏み込んだ表現をしてみたい方を対象とします。

話すこと

  • Accelerate FrameworkのAPIを使って高速フーリエ変換し、振幅スペクトルを取得する方法
  • リアルタイムで動くアニメーションをSwiftUIのGraphicsContextを用いて実装する方法
40
LT(5分)

SwiftでOpenCVに挑む

kntkymt kntk

有名な画像処理ライブラリの一つにOpenCVがあり、高速な画像処理を多数提供しています。
しかし、OpenCVはC++で書かれています。

そうです...。Swiftではないのです...。

このことに大変なやるせなさを覚えた私は、pureなSwiftで画像処理を記述しOpenCVにベンチマーク (実行速度)で挑みました。
CoreGraphicなどのライブラリも一切使いません。なぜならCoreGraphicの実装はObjective-Cだからです。
本当にSwiftのみを用います。

このLTではその一部始終を乗り越えた困難などを含めお伝えします。

3
ルーキーズLT(5分)

手軽に実装!CryptoKitを使ったCore Dataのデータ保護術

Takahiro_Kato15 Takahiro Kato

永続化されたデータの保護は、現代のiOSアプリ開発において必要不可欠な要素です。
しかし、Appleが提供する永続化フレームワークであるCore Dataは標準でデータの暗号化を提供しません。
そこでこのトークでは、最もお手軽に導入できるCryptoKitによるCore Dataの暗号化手法について詳しく紹介します。

参加者は以下の内容を学ぶことができます。

  1. データ保護の重要性
  2. CryptoKitを利用するメリット/デメリット
  3. CryptoKitによる暗号化と復号化のコード例
  4. CryptoKitによる暗号化と復号化のパフォーマンス検証

このトークを通して、「Core Data」の暗号化に「CryptoKit」を利用する利点やパフォーマンスについて理解を深めて頂ければ幸いです。

LT(5分)

ユーザー毎にApp Storeのサブスクリプション無料試用の利用状況を判別する方法

SatoHikaruDev Hikaru Sato

サブスクリプションの無料試用の利用状況を判別するための具体的な方法を、アプリ側とサーバー側のコードを交えて説明していきます。

発表予定の内容:

  1. サブスクリプションの無料試用の判別方法

    • iOSアプリ側の実装方法
    • サーバー側の実装方法
    • シーケンス図を用いた処理の流れ
  2. 実際に起こったエラー内容と発生率

    • 主なエラーの種類
    • エラーの発生率とその対応方法
  3. verifyReceipt APIの不安定さに対する対策

  4. 開発中のsandboxアカウントでの確認方法

    • sandbox環境用のデバッグ機能実装
    • テストの際に注意するポイント
1
ルーキーズLT(5分)

Mastering Query Parameters in Swift: Arrays and Dictionaries with Moya

kent_strong_dev Kent Strong

Unlock the power of Moya by learning how to correctly pass arrays and dictionaries as query parameters in Swift. This talk will guide you through best practices, common pitfalls, and real-world examples to ensure your iOS apps handle complex queries with ease. Perfect for iOS developers aiming to streamline their network layer and to quickly implement API clients for your app. This session is definitely useful when the server side requires complex query parameters.

ルーキーズLT(5分)

Swift Macrosで最高の定数宣言をしよう

dsxsxsxs デスクス

デザイン定数をマジックナンバーのままベタ書きしていたり、enumなどで定数化していますか?
読み取るのも大変、書くのも大変、使うのも大変だと感じることもあるでしょう。

そんなあなたに、コードの可読性を向上させつつ、書きやすく、読みやすい方法をご紹介します。

このLTでは、Swift 5.9より実装されたAttached Macrosを活用して、最高に読みやすく、使いやすい定数宣言の方法を紹介します。
定数宣言することがいかに幸せなことか、この5分で実感していただきます!

以下の内容について紹介します。

  • デバイスによって異なる画面サイズに対応した定数の管理方法
  • Member MacroやAccessor Macroを活かした組み合わせ構文
  • Macroをより使いやすくするための例外処理とFixitボタンの実例
4
採択
ポスターセッション

Swift 6に備えよう!Upcoming Feature Flagsを全て解説します!

ynoseda 野瀬田 裕樹

Swift 6のリリースが近づく中、Swiftの新しい言語機能や改善点を事前に把握しておきたいと考えている方も多いでしょう
将来的にSwiftで導入される新機能は「Upcoming Feature Flags」を使うことで事前に有効化することが可能です。
このポスターセッションでは、この「Upcoming Feature Flags」で有効化できる機能のうち、Swift6より前のバージョンで実装済み(Implemented)になっているものについて全て解説します。

一つでも多くの「Upcoming Feature Flags」を有効化することで、Swift 6のリリースに備えながら、新機能や改善点を効率的にキャッチアップできます。

【内容】
・ Upcoming Feature Flagsで機能を有効化する方法の解説
https://www.swift.org/swift-evolution/#?upcoming=true でSwift6より前のバージョンでImplementedになっている全ての機能について、その概要と具体的な例の紹介

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

FlutterプロジェクトでSwiftの最新技術を活用する方法 - Swift 6とSwiftPM対応の現状と展望

ynoseda 野瀬田 裕樹

FlutterはDartで実装するクロスプラットフォームのフレームワークです。
通常、Flutterプロジェクトは主にDartで開発されますが、既存のSwiftで書かれたiOSプロジェクトに対してadd-to-appアプローチを用いることで、Flutterを一部の画面に統合することも可能です。
また、ネイティブ機能を利用するためにSwiftの実装が求められることもあります。

iOSエンジニアとして、Flutterプロジェクトに参画した際にSwiftの最新技術を使いたくなることは多いでしょう。
そうした場合、最新のSwift機能を利用できるのかを知りたくなるのではないでしょうか?
本セッションでは、特にSwift Package Manager (SwiftPM)とSwift 6の新機能に焦点を当て、Flutterプロジェクトにおける現状と今後の展望について詳しく解説します。

【話す内容】

  1. Flutterにおけるパッケージ管理の現状とSwiftPM対応の展望
  2. 全ての-enable-upcoming-featureを有効にした状態でFlutterプロジェクトがビルド可能かどうか
  3. FlutterプロジェクトでSwiftコードと連携を取る際にSendableやActorをどう適用すればいいのか
レギュラートーク(40分)

Clean Architecture x SwiftPM のマルチモジュール構成でビルド時間を短縮しよう!

ikuraikuraaaaaa Suguru Takahashi

【概要】
iOS アプリケーション開発におけるビルド時間の短縮は、開発効率を大幅に向上させる重要な要素です。本セッションでは、Clean Architecture と Swift Package Manager (SwiftPM) を組み合わせたマルチモジュール構成による実践的なアプローチを紹介し、具体的な実装例を通してビルド時間を短縮する方法を解説します。

【対象者】
・ ビルド時間に課題を感じている方
・ アーキテクチャの選定に悩んでいる方
・ Clean Architecture や SwiftPM によるマルチモジュール構成に興味がある方

【トーク内容】
・ Clean Architecture x SwiftPM のマルチモジュール構成がもたらすメリット
・ MVVM からのリアーキテクチャを通した具体的な実装方法
・ 実装する上での課題とその解決策の紹介

ルーキーズLT(5分)

Swift Package Pluginだけで完結する機密情報難読化ツールの開発

aikawa_Japan Masami Yamate

アプリ内でAPIキーやその他の秘密情報を扱う際、難読化やリポジトリ内での直接保持を避けることは情報漏えいリスクを低減するために重要です。従来、これらの対策には「cocoapods-keys」や「arkana」などのツールが使用されてきました。これらのツールはCocoaPodsのプラグイン機能やRubyによって機能が実現されているため、別途CocoaPodsやRubyの環境構築が必要です。

Swift Package Managerの機能だけで実現できれば、環境構築も簡単になり、パッケージ管理ツールをSwift Package Managerに統一することも容易です。Swift Package Managerの機能のみを使用することで、追加の環境構築が不要となり、プロジェクトのシンプルさと一貫性が向上します。

本LTでは、Swift Package Manager Onlyな環境を目指すべく開発した、Swift Package Pluginを活用した機密情報の難読化ツールの開発手法について説明します。

・ハードコードしてはいけない理由、難読化の必要性
・Swift Package Pluginを用いた難読化ツールについて

2
採択
2024/08/23 17:30〜
Track B
ルーキーズLT(5分)

安全で使いやすいCarPlayアプリの魅せ方:HIGと実例から学ぶ

marunomi_ maru

CarPlayとは車載ディスプレイでナビゲーションや音楽の再生が行えるものです。運転中に使用されることが多いため、CarPlayアプリは運転を妨げず、安全で使いやすい設計が求められます。
このトークでは、AppleのHuman Interface Guidelines(HIG)やプログラミングガイドを読み解き、ナビゲーションを行うデモアプリを通じて、使いやすく運転者にとって安全なCarPlayアプリの魅せ方を紹介します。

LTで話すこと:
・HIGから考えるCarPlayの最適な見せ方
・CarPlayアプリのパフォーマンス最適化
・実例で比較する安全な表示

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

Revolutionizing AR: Building a Dice App in visionOS

kent_strong_dev Kent Strong

Dive into the world of visionOS and discover how it can revolutionize AR development with a step-by-step guide to creating a dice app, which can roll dices with the users' gesture. In this session, you'll learn how to use SwiftUI, RealityKit, ImmersiveView and more to build an interactive and visually stunning application. I will cover everything from initial setup and design principles to advanced features like gesture recognition and real-time entity updates. By the end of the talk, you'll be equipped to push the boundaries of AR and create immersive experiences that captivate users.

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

iOS/iPadOSの多様な「ViewController」の徹底解説と実装例

haseken_dev haseken

iOS/iPadOS向けにアプリ開発を行う際に、「ViewController」を意識しないことはほぼないのではないでしょうか?

iOS 2.0の「UIViewController」を皮切りに、様々なViewControllerが提供されてきました。
私たちはこれらを実装し、カスタマイズして利用してきたかと思います。

では、これまでどれだけのViewControllerが登場し、どのような機能が実装可能になったのでしょうか?
このセッションでは、これまでに登場したViewControllerを機能紹介とサンプルコードとともに振り返ります。

想定する方々:
・iOS/iPadOS、それら以外のプラットフォーム向けアプリ開発・企画者

ゴール:
・知らなかったViewControllerを知り、今後の参考にできる
・提供できる画面・機能の概要を把握できる

アジェンダ:

  1. UIViewControllerの進化過程
  2. 紹介対象のFrameworkの概要
     ・MapKit、SiriKitなど
  3. これまでの総数
     ・年代、Framework、OSバージョン別
  4. 多様なViewController紹介
     ・提供機能とサンプルコードの紹介

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

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

エンジニアのための効率的学習戦略: 複雑さに立ち向かうためのガイド

stzn3 shiz

エンジニアとして、私たちは日々多岐にわたる知識やスキルを学び、さまざまな問題を解決しています。たとえば、開発する機能の仕様やドメインの知識、プログラミング言語やライブラリの使い方など、多方面にわたる学習が必要です。これらの学習を積み重ねることで、より複雑な問題にも対処できるようになり、スキルアップも図れます。

しかし、学習には時間と労力がかかります。集中力や注意力も不可欠で、「覚えることが多くて大変だ…」「なかなか身に付かない…」と悩んだり挫折したりすることもあるでしょう。もしかしたら、それは学習方法が原因かもしれません。

効率よく学習を進めるためには、脳の仕組みを理解し、それに合わせた方法を取ることが重要です。本セッションでは、以下の点に焦点を当てます。

  • 学習の正体
  • 脳に負荷をかけ過ぎない学習戦略
  • 努力を効率化する学習方法

これらのトピックを中心に、技術的なスキルの習得に焦点を当て、今後の学習に活かせる考え方や方法を皆さまと共に探ります。

「業務で必要だから」「キャリアアップのため」「おもしろそう」など、学習理由は人それぞれ異なりますが、一つスキルが身に付くとさらに新しいスキルが身に付きやすくなり、世界がどんどん広がります。

このセッションを通じて、皆さまが日々の学習において具体的な改善策を見つけ、より効率的にスキルを身につける手助けができれば幸いです。

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

これからの時代の新標準!Apple製テストフレームワーク「SwiftTesting」への移行とトラブルシューティング

psnzbss uetyo

Swiftでテストを書く際、Xcodeに組み込まれたテストフレームワークである XCTest を利用することが多いかと思います。しかし、XCTest は当初、Swift ではなく Objective-C でテストを書くことを目的として作成されました。そのため、Swift5.5 から導入された Swift Concurrency への対応が不十分であるという問題点があります。

そこで登場したのが新しいテストフレームワークである SwiftTesting です。
SwiftTesting は、非同期プログラミングをより効果的にテストできるように設計されており、Swift6 からはこのフレームワークの利用がデフォルトになると考えられています。

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

・SwiftTesting と XCTest の違い
・SwiftTesting への移行作業
・SwiftTesting を使用する際のベストプラクティスとトラブルシューティング