LT(5分)

SwiftUI×Metalでカッコ良いノイズエフェクトUIを作成してみよう

ios17でSwiftUIのViewにMetalのエフェクトを簡単にかける機能が追加されました。
この機能の登場によって、従来はグラフィックスの専門知識が必要であったUIがより簡単に作成可能となりました。
ゲーム等で利用されるパーリンノイズアルゴリズムを利用したエフェクトの作成方法を例にあげて、この素晴らしい新機能を5分で紹介したいと思います!

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

Instrumentsを駆使して並列処理の最適化を実現する方法

pickles_ib shin00

Instrumentsはアプリケーションのパフォーマンス解析や改善に役立つXcodeの開発ツールの一部です。
本ツールは毎年アップデートがされておりWWDC22ではSwift Concurrencyの対応が追加され並列処理の可視化・最適化を行うことができるようになりました。
「async/awaitで書き換えてみたけど、実際のパフォーマンスが気になる」
「意図しない挙動になったが原因がわからない」
といった課題にアプローチすることができます。
今回ではInstrumentsの基本的な使い方から始め、WWDC22でアップデートされた並列処理の可視化・最適化の手法について既存処理の書き換え時の失敗事例を踏まえながら紹介できればと思います。

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

SwiftUIを活用したマイクロインタラクション

shindyu shindyu

マイクロインタラクションとは、ひとつの作業だけをこなす最小単位のインタラクションであり、
アプリ開発においてはユーザーの体験を向上させる要素の一つです。

このトークでは、まずマイクロインタラクションの概念とその重要性について説明します。
次に、SwiftUIを用いてどのようにマイクロインタラクションを設計し実装するか、その具体的な手法について解説します。
基本的なアニメーションから、ユーザー入力やシステムステータスの反映、さらにはハプティックフィードバックまで、ユーザーとアプリケーションとの対話を豊かにするための手法を紹介します。

マイクロインタラクションを活用してプロダクトをより良いものにしていきましょう。

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

Swiftへの貢献を楽しもう!Swiftへコントリビュートするための実践的な手法とテスト技法

ojun_9 ojun

本トークでは、私のSwiftへのコントリビュート経験を元に、Swiftを単なるユーザーではなく、その成長を後押しするコントリビューターとして関わる方法を探求します。

まず、SwiftのOSSプロジェクトへの貢献の価値を理解するための考察から始め、そこから誰でも挑戦できるような実践的なコントリビュート手順について具体的な手法を紹介します。
これにより、初めてのコントリビュートでも効率的に進めることができるようになります。

さらに、高品質なコードを維持するためのテスト技法に踏み込みます。
LLVMのテストツール「lit」の活用方法を学び、それがSwiftのコード品質を高める役割について説明します。

このトークを通じて、Swiftを使用するだけでなく、Swiftの進化に直接貢献する体験を提供します。
Swiftを用いる全ての開発者が、Swiftへの貢献の道を開く一歩となれば幸いです!

4
LT(5分)

新卒iOSが挑む、SwiftUI画面遷移! ~twitterライクなアプリ制作ハッカソンを通して~

iOSRakko kai

弊社の新卒研修の一貫としてtwitterライクなアプリを短期間で作ることはお馴染みの恒例行事となりつつあります。
私のチームではUIKitを一切使わず、フルSwiftUIで開発するという技術挑戦を行いました。フルSwiftUIでアプリを制作するにあたり難しい問題の一つに画面遷移周りが上げられます。今回のハッカソンを通しSwiftUIの画面遷移問題を攻略したくSwiftUI縛りで開発を行いました。以下が苦労した点とお話ししたい工夫内容です。
ルーティングの管理: SwiftUIでは、画面遷移のためのルーティングの管理が不十分です。複雑な画面遷移の制御が難しくなります。
ナビゲーションのデザイン: SwiftUIのナビゲーションはTabViewのitemを横断するような、画面遷移に気をつけなければなりません。Appleが想定するナビゲーションの動きを正しく理解し開発する必要があります。

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

独自ポップアップでレビュー促進がしたいときのIn-App Messaging活用術

杉本寛征

iOSのSKStoreReviewControllerを使ったレビュー促進ポップアップには、表示タイミングや回数に制限があります。また、App Store Reviewガイドラインでは「レビューを求めるカスタムのメッセージ画面を表示することはできません」と記載されています。
しかし、それでもカスタムメッセージ画面を表示したいという要望がある方もいらっしゃるでしょう。

本トークでは、Firebase In-App Messagingを活用し、カスタムメッセージ画面やポップアップ表示タイミングをリリースなしに変更することができる解決策についてと、実際に運用して得られた結果からその有用性についてお話します。

LT(5分)

エンジニアが知るべきデザインシステムまとめ

_asa08_ asa

最近耳にする機会が増えた「デザインシステム」という言葉ですが、皆さんはどのように捉えてますか?
デザインシステムはエンジニアに関係あるのか?エンジニアが学ぶべきことなのか?と疑問に思っている人もいると思います。

デザインシステムとは〜から、エンジニアのデザインシステムに対する姿勢、なにを理解すべきかをお話しします。
デザイナーさんと共に素敵なサービスを築いていく手助けになると嬉しいです。

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

Core Dataでの辛さを把握しSwiftDataに備える

higan96 大庭 規彦

Core Dataは依然としてデータ管理の有力な選択肢の1つです。しかし、Core DataはSwiftUIやSwift Concurrencyなどモダンな開発環境において、一部の制約や課題に直面します。
本セッションでは、そういったCore Dataの「辛い」点に焦点を当て解説します。
その上で、新たに登場したSwiftDataへの期待を語ります。なぜ多くの開発者がSwiftDataに期待を寄せているのか、それを理解するためには、まずCore Dataの課題を理解することが重要だと考えるからです。
このセッションは、Core Dataのベストプラクティスを知るためや入門するためのものではなく、Core Dataの難しさを認識し、その視点からSwiftDataを考えるためのものです。Core Dataの経験が少ない開発者でもSwiftDataについての新たな視点が得られることを目指します。

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

Dynamic linkingを極める

Li Jierong

Xcodeのlinkingはstaticとdynamic二種類あり、ターゲットのテンプレートもそれぞれ、Static LibraryとDynamic Frameworkとして用意されています。
Dynamic linkingを使用することで、ビルド時間の改善、バイナリサイズの削減ができます。

Dynamic linkingをデフォルト採用する上で、知っておきたい以下の項目について解説します。

  • Dynamic linkingとは
  • メリット・デメリット
  • 使用上の注意事項
  • 起動時のロード時間が長くなる対策

想定する対象者

  • Dynamic linkingかstatic linkingか迷う人
  • Dynamic linkingを使ったことがない、または使い方がよくわからない人
レギュラートーク(20分)

"\("String Interpolation") deep dive"

Yutaro Muta

SwiftにおけるString Interpolation(文字列補間)の魅力について、典型的な使用方法から始め、SwiftUI.Textを例に他Frameworkとの組み合わせを解説します。

  1. String Interpolationの基礎:
    • String Interpolationとは何か
    • 文字列内に変数や式を埋め込む
  2. 典型的な使用:
    • テキストやログの作成、プレースホルダーとしての使用
  3. SwiftUI.Textと組み合わせた応用:
    • String Interpolationを用いたText構築、ローカライズ
    • 他Frameworkとの組み合わせ

このトークでは、String Interpolationの基本から応用までを網羅することで、魅力を理解した上で、他Frameworkと組み合わせた文字列操作の応用を目指します。

4
採択
ポスターセッション

iOSアプリにおけるブランチ戦略のベストプラクティスを考える

417_72ki 417.72KI

Gitによるバージョン管理が当たり前となった現在、そのブランチの運用方法は多岐に渡ります。
しかし、代表的なブランチ戦略と言われるGit-flow、GitHub-flow、GitLab-flowはいずれもiOS開発でそのまま運用することは難しいです。
なぜなら、iOSアプリにはAppleによる審査というステップが含まれるためです。
どんなに凝ったフローでもリジェクトによって余計な手間がかかるリスクがあります。

筆者の所属しているプロダクトではそんな審査リジェクトのリスクを踏まえGit-flowを一部改変して運用しています。

本セッションではそんな自社の例を紹介しつつ、参加者の皆様とより良いブランチ戦略についてディスカッションができればと考えています。

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

XcodeのVimモードで学ぶ!Vimのキーバインド講座

the_uhooi uhooi

みなさんはXcode 13で革命が起きたのをご存知ですか?

そう、Vimのキーバインドを使えるVimモードが追加されたのです。
Editor > Vim Mode を押下するだけでVimモードに切り替わります。

私はXcodeにVimモードが追加されてからずっと使い続けており、iOSアプリ開発の効率化に繋がっていると実感しています。

本トークでは、XcodeのVimモードを通して、Vimのキーバインドを実演付きで解説します。

【ターゲット】
・XcodeのVimモードを使ったことがない
・普段Vimを使っていない

【話すこと】
・Vimのキーバインドの特徴
・Xcodeで使えるキーバインドの紹介

ぜひみなさんもVim ModeをONにして、実際に操作しながら本トークを聞いてください。
本トークが終わっても、全員がVim ModeをONにしたままになっているはずです。

2
採択
2023/09/02 16:50〜
Track D
レギュラートーク(20分)

一般的な通信でも使えるバックグランドURLSessionの活用方法

Li Jierong

バックグランドURLSessionとは、アプリがバックグランドに行っても、終了されても、別プロセスでデータ通信が可能なURLSessionです。
バックグランドで長時間ダウンロードする必要がある時のみ使われるイメージはありますが、アプリやWidgetに必要な情報の先読み、バックグランドに行ったことによるタイムアウトの回避にも使えます。
Date taskがサポートされず、upload taskかdownload taskを使う必要があるので、使い方は少し特殊ですが、一度対応しておけば普通のURLSessionと同じ使い勝手になるので、バックグランドURLSessionを一般的な通信で使ってみませんか。

本トークでは、以下のトピックについて紹介します。

  • バックグランドURLSessionとは
  • メリットと活用方法
  • 実装の具体例
  • 使用上の注意事項
レギュラートーク(20分)

Swiftの引数ラベルを侮っていませんか?

lovee 星野恵瑠

ほとんどのプログラミング言語は関数の引数定義に、引数名だけしか存在しません。そしてその関数を呼び出す時、引数名抜きで値だけ入れるか、一部の言語では引数名も一緒に書けます。

ところがSwiftの場合、「引数ラベル」という独特な仕様があります。この仕様により、関数を呼び出す時、引数の値の前にそのラベルを書く必要があります。

一見とても面倒な仕様ですが、これのおかげでコードリーディングが非常に楽になることが多く、筆者がとても好きな仕様です。

このセッションでは、以下のような内容をカバーします:

  • そもそもなぜSwiftに引数ラベルがあるか
  • 実例で引数ラベルがコードの可読性への影響を体験
  • 最適な引数ラベルを選ぶときのガイドライン

そしてこのセッションは、Swift初心者の他に、最近他言語からSwiftに転向した方や、単純にもっと引数ラベルを活用したい方におすすめしたいです。

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

優雅にユーザーを待たせる

Li Jierong

ネットワーク通信、データベース操作などによりユーザーを待たせる場面は様々です。
そのような状況で、いかにユーザーにストレスを与えず、優雅に待たせられるかは、無数にあるアプリの中で際立った存在になるためには重要なキーになります。

本トークでは、以下のトピックについて紹介します。

  • 待機時間を可能な限り無くす重要性
  • 待たせてないように見せる:操作や処理結果の予想
  • ユーザーの時間を独占しない:待つスコープの縮小
  • プログレスインジケータの表示を優雅に:適切な場所、タイミングと形を見極める

想定する対象者

  • なんとなくプログレスインジケータを表示する人
  • 競合のアプリと差をつけたい人
3
ルーキーズLT(5分)

共通コンポーネント実装におけるSwiftUIとUIKitのハイブリッド実装時の考慮すべき点

ystg1302 神原良継

WWDC19以降、iOSアプリ開発におけるSwitftUIでの実装が広く一般的になりつつあります。
しかし、既存のUIKitベースのアプリを完全にSwiftUIにリファクタするのは容易ではありません。
そのため一時的な解決策として、ボタンやアラートなどの共通UIコンポーネントのみSwiftUIで実装するケースがあります。

またViewがUIKitで実装されているために、SwiftUIで実装されたコンポーネントを利用して新しくUIKitで別のコンポーネントを実装しなければならない時、将来的にSwiftUIへの移行を考慮する必要があります。

本LTでは、このような状況下でのベストプラクティスと、考慮事項について解説します。
SwiftUIと UIKitを組み合わせたハイブリッドなアプリ開発において、スムーズな移行と効果的な実装を実現するためのポイントをお伝えします。

3
LT(5分)

ケーススタディ : Basic Behaviors

66nylon_y Roku

SwiftStandardLibraryの中にはBasic Behaviorsというプロトコル群があります (一部struct)
この中にはHashable, Identifiable, CaseIterableなど、よく見かける奴らがいます
https://developer.apple.com/documentation/swift/basic-behaviors

Hashable?なんかハッシュ値できるやつ、、
CaseIterable?なんかenumの要素を配列で取れるやつ、、

私はそれぐらいの認識なのですが、
いざ公式フレームワークやOSSの宣言元を見に行くと、結構使われていることがわかります

本トークではBasic Behaviorsでできることを整理した上で、
それらが利用されているコードを参照しながら、
具体的にどのようなシーンで活用され、大活躍しているかを探ります

4
LT(5分)

visionOS 開発30Daysチャレンジ

shmdevelop 服部 智

WWDC23でvisionOSが発表されました。
新ハードウェアのApple Vision Proと共に動作する新しいOSです。

Apple製のSpatial Computingデバイスは数年来待ち望んだ物でした。
サンノゼ現地にて発表に立ち会ってきました。

この素晴らしい発表を受け、iOSDC2023に向けて visionOS 30Days開発チャレンジを実施します。

シンプルな実装から始まり、各種コンポーネントを使い、簡易的なゲームや映像表示などを実装していき、そのソースコードと知見をすべて共有します。

私は過去にMetal Shader 100DaysやAR100Daysを実施してきました。
その経験を活かし、今回チャレンジし結果を共有します。

一緒に、visionOSの可能性を探求しましょう!

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

アプリをもっと使ってもらうためのApp Intents活用法

tanakasan2525 たなたつ

みなさんはショートカットアプリを活用していますか?
私は日々のルーティーン用のショートカットをよく利用しています。

ショートカットアプリにあなたのアプリを連携させるためには、App Intentsを利用する必要があります。
App Intentsによって、ショートカットアプリだけでなく、SpotlightやSiriからの提案などの場所にも、あなたのアプリが表示されるようになり、アプリ起動導線を増やせます。
また、iOS 17のInteractive WidgetsにもApp Intentsが必要です。

このトークでは、あなたのアプリの活躍の場を増やすために必要なApp Intentsの活用テクニックや、このような機能に対応しやすくするために普段の開発から意識すべきことなどをお話します。

4
ポスターセッション

独自ポップアップでレビュー促進がしたいときのIn-App Messaging活用術

杉本寛征

iOSのSKStoreReviewControllerを使ったレビュー促進ポップアップには、表示タイミングや回数に制限があります。また、App Store Reviewガイドラインでは「レビューを求めるカスタムのメッセージ画面を表示することはできません」と記載されています。
しかし、それでもカスタムメッセージ画面を表示したいという要望がある方もいらっしゃるでしょう。

本記事では、Firebase In-App Messagingを活用し、カスタムメッセージ画面やポップアップ表示タイミングをリリースなしに変更することができる解決策を提案します。