レギュラートーク(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
レギュラートーク(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
レギュラートーク(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を活用し、カスタムメッセージ画面やポップアップ表示タイミングをリリースなしに変更することができる解決策を提案します。

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

GraphQLでのエラーハンドリング

iganin_dev 伊賀 裕展

RESTと同様にGraphQLでもエラーは扱います。
それでは、そのエラーをどのように定義し、ハンドリングするのが良いのでしょうか。

GraphQLではerrorsキーにエラーの詳細を載せることもできます。
しかしながら、この方法ではGraphQLで活用できる型情報が失われてしまいます。
他に方法はないのでしょうか。

本トークではGraphQLでのエラー定義の方法とその活用方法を探っていきます。

以下の内容を予定しています。

  • GraphQLのエラー定義の選択肢
  • エラー定義で型を活用する
  • クライアントでエラー情報をハンドリングする
レギュラートーク(20分)

別に,Swift Package Managerを直してしまっても構わんのだろう?

k_koheyi k-kohey

みなさんは森の中で大きな変質者に追われたらどうしますか?
私はSwift Package Manager(以降,SPM)を回直します(??)

SPMはAppleが提供するOSSであり,SPMを利用することにより依存の管理を簡単に行うことができます.
XcodeがSPMをサポートした事によって,私達iOSエンジニアからもよく利用されるようになりました.

しかし,普段よく利用するからこそイマイチな点も見つかるかもしれません.
そんな時はコントリビュートのチャンスです.

このセッションでは,駆け出しエンジニアがビビりながらSPMにPRを送った経験を基に,コントリビュートにどのようなプロセスが必要だったのかを説明します.
例えばissueの見つけ方,デバッグ方法,PRの出し方,ユニットテスト等です.

最終的に,この発表を聞くとコントリビュートに対する心理的ハードルを下げることができます.

5
LT(5分)

WKWebViewに実験的Web APIを独自実装しよう - Web MIDI API編

ooba 大庭 慎一郎

Webブラウザのために仕様策定はされていても、プライバシー上の懸念を理由としてSafariには実装されていないAPIはたくさんあります。Web Bluetooth API、Web NFC API、WebHID API、Web Serial APIなどなど。その中にはWebからMIDI機器を制御するWeb MIDI APIも含まれます。

当然WKWebViewにも実装されていませんので、自作Webブラウザでも使えません。しかし、WebKitフレームワークによって独自にそれらのAPIを実装し、アプリとしてApp Storeに出すことはできます。

本トークでは、Scratch用Webブラウザ「Scrub」にWeb MIDI APIを独自実装した経験から、JavaScriptのAPIを追加する方法、ネイティブ側フレームワークとの繋ぎこみのコツ、参考となる仕様や実装の探し方などをお話しします。

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

SwiftUIとMetal Shaderで、ビジュアルエフェクトのパワーアップを実現する

ojun_9 ojun

WWDC23で発表された、SwiftUIに対するMetal Shaderの適用法に焦点を当てます。

本トークではまず、シェーダーを作成するための基礎知識として三角関数の役割を解説します。
その上で、これらの要素をSwiftUIと結び付け、リッチなビジュアルエフェクトを効率よく実現する方法を具体的に解説します。

Metal ShaderをSwiftUIと組み合わせることで、高度な視覚効果を手軽に実現できますが、応用させるには三角関数を理解する必要があります。
このトークを通じて、Metal Shaderの基本的な使用法と、それを活用したSwiftUIのビジュアル表現の豊かさの理解を深めることができます。

このトークは、SwiftUIにおいて更に視覚的な表現を豊かにする方法を探している方を対象としています。
皆さんのアプリのユーザ体験がより向上する手助けとなれば幸いです!

2
ルーキーズLT(5分)

複数のバックエンドサービスに依存しているアプリが API gateway を採用するまでの道のり

ksCap_0114 Sato Ken

プロジェクトの要求事項や自社サービスの特性から、複数のバックエンドサービスに依存した仕様設計となっているアプリケーションは決して少なくない事例かと思います。
弊社サービスの一つでもあるマネーフォワードクラウド確定申告アプリもその一つに該当します。アプリ内で提供している確定申告機能や会計機能、消費税申告機能に関するリソースは、社内施策のマイクロサービス化によりサービスごと独立した管理となっているため、クライアント側は複数バックエンドサービスを考慮した設計を行う必要がありました。
このLTでは、クライアント側で複数のバックエンドサービスを受け持つことで発生したつらみと、そこから打開策を切り開くまでの苦悩の道程を体験談からご紹介します。

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

大人だって Screen Time API で時間管理したい!

_bannzai_ bannzai

WWDC21で発表されたScreen Time APIの解放は、多くのデベロッパーが期待したのでは無いでしょうか。しかし、利用にFamily Controlsの承認が必要で子供のアプリ使用を親が管理するためのものでした。時間管理したいデベロッパーは残念に思ったでしょう。実は1年後のWWDC22からFamily Controlsを通した承認に「自分自身」が承認できるようになり、「親」のような他者からの承認を必要とせずにScreen Time APIを利用することができ、これで大人でも時間管理ができるようになりました✌️

このトークではScreen Time APIを利用したアプリの開発からリリースまで通じて遭遇した出来事についてお話しします。具体的にはアプリの申請時から注意すべきこと、新しいAPIに対するレビュアーの反応、さらに具体的なコードを用いてどのように動くかを紹介していきます。

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

アプリをもっと魅力的に!Metal ShaderでUIの表現力を広げよう!

tanakasan2525 たなたつ

アプリのUIがちょっと物足りない...そんな時、Metal Shaderはあなたのアプリの表現力を広げるための一つの選択肢になります。

シェーダーと聞くと難しい印象があるかもしれませんが、
基本を押さえれば、再生中のオーディオデータの可視化やコンテンツに没入感を与える演出などを表現できるようになります。

このトークではMetal Shaderの理解に必要な知識を共有しつつ、具体的な用例や実装を紹介します。また、コードのメンテナンス性やパフォーマンス面についても注意点をお話します。

見ているだけで楽しい、そんなUIをMetal Shaderで作ってみましょう。

4