マイクロインタラクションとは、ひとつの作業だけをこなす最小単位のインタラクションであり、
アプリ開発においてはユーザーの体験を向上させる要素の一つです。
このトークでは、まずマイクロインタラクションの概念とその重要性について説明します。
次に、SwiftUIを用いてどのようにマイクロインタラクションを設計し実装するか、その具体的な手法について解説します。
基本的なアニメーションから、ユーザー入力やシステムステータスの反映、さらにはハプティックフィードバックまで、ユーザーとアプリケーションとの対話を豊かにするための手法を紹介します。
マイクロインタラクションを活用してプロダクトをより良いものにしていきましょう。
iOSのSKStoreReviewControllerを使ったレビュー促進ポップアップには、表示タイミングや回数に制限があります。また、App Store Reviewガイドラインでは「レビューを求めるカスタムのメッセージ画面を表示することはできません」と記載されています。
しかし、それでもカスタムメッセージ画面を表示したいという要望がある方もいらっしゃるでしょう。
本トークでは、Firebase In-App Messagingを活用し、カスタムメッセージ画面やポップアップ表示タイミングをリリースなしに変更することができる解決策についてと、実際に運用して得られた結果からその有用性についてお話します。
Core Dataは依然としてデータ管理の有力な選択肢の1つです。しかし、Core DataはSwiftUIやSwift Concurrencyなどモダンな開発環境において、一部の制約や課題に直面します。
本セッションでは、そういったCore Dataの「辛い」点に焦点を当て解説します。
その上で、新たに登場したSwiftDataへの期待を語ります。なぜ多くの開発者がSwiftDataに期待を寄せているのか、それを理解するためには、まずCore Dataの課題を理解することが重要だと考えるからです。
このセッションは、Core Dataのベストプラクティスを知るためや入門するためのものではなく、Core Dataの難しさを認識し、その視点からSwiftDataを考えるためのものです。Core Dataの経験が少ない開発者でもSwiftDataについての新たな視点が得られることを目指します。
Xcodeのlinkingはstaticとdynamic二種類あり、ターゲットのテンプレートもそれぞれ、Static LibraryとDynamic Frameworkとして用意されています。
Dynamic linkingを使用することで、ビルド時間の改善、バイナリサイズの削減ができます。
Dynamic linkingをデフォルト採用する上で、知っておきたい以下の項目について解説します。
想定する対象者
SwiftにおけるString Interpolation(文字列補間)の魅力について、典型的な使用方法から始め、SwiftUI.Textを例に他Frameworkとの組み合わせを解説します。
このトークでは、String Interpolationの基本から応用までを網羅することで、魅力を理解した上で、他Frameworkと組み合わせた文字列操作の応用を目指します。
みなさんは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にしたままになっているはずです。
バックグランドURLSessionとは、アプリがバックグランドに行っても、終了されても、別プロセスでデータ通信が可能なURLSessionです。
バックグランドで長時間ダウンロードする必要がある時のみ使われるイメージはありますが、アプリやWidgetに必要な情報の先読み、バックグランドに行ったことによるタイムアウトの回避にも使えます。
Date taskがサポートされず、upload taskかdownload taskを使う必要があるので、使い方は少し特殊ですが、一度対応しておけば普通のURLSessionと同じ使い勝手になるので、バックグランドURLSessionを一般的な通信で使ってみませんか。
本トークでは、以下のトピックについて紹介します。
ほとんどのプログラミング言語は関数の引数定義に、引数名だけしか存在しません。そしてその関数を呼び出す時、引数名抜きで値だけ入れるか、一部の言語では引数名も一緒に書けます。
ところがSwiftの場合、「引数ラベル」という独特な仕様があります。この仕様により、関数を呼び出す時、引数の値の前にそのラベルを書く必要があります。
一見とても面倒な仕様ですが、これのおかげでコードリーディングが非常に楽になることが多く、筆者がとても好きな仕様です。
このセッションでは、以下のような内容をカバーします:
そしてこのセッションは、Swift初心者の他に、最近他言語からSwiftに転向した方や、単純にもっと引数ラベルを活用したい方におすすめしたいです。
みなさんはショートカットアプリを活用していますか?
私は日々のルーティーン用のショートカットをよく利用しています。
ショートカットアプリにあなたのアプリを連携させるためには、App Intentsを利用する必要があります。
App Intentsによって、ショートカットアプリだけでなく、SpotlightやSiriからの提案などの場所にも、あなたのアプリが表示されるようになり、アプリ起動導線を増やせます。
また、iOS 17のInteractive WidgetsにもApp Intentsが必要です。
このトークでは、あなたのアプリの活躍の場を増やすために必要なApp Intentsの活用テクニックや、このような機能に対応しやすくするために普段の開発から意識すべきことなどをお話します。
RESTと同様にGraphQLでもエラーは扱います。
それでは、そのエラーをどのように定義し、ハンドリングするのが良いのでしょうか。
GraphQLではerrorsキーにエラーの詳細を載せることもできます。
しかしながら、この方法ではGraphQLで活用できる型情報が失われてしまいます。
他に方法はないのでしょうか。
本トークではGraphQLでのエラー定義の方法とその活用方法を探っていきます。
以下の内容を予定しています。
みなさんは森の中で大きな変質者に追われたらどうしますか?
私はSwift Package Manager(以降,SPM)を回直します(??)
SPMはAppleが提供するOSSであり,SPMを利用することにより依存の管理を簡単に行うことができます.
XcodeがSPMをサポートした事によって,私達iOSエンジニアからもよく利用されるようになりました.
しかし,普段よく利用するからこそイマイチな点も見つかるかもしれません.
そんな時はコントリビュートのチャンスです.
このセッションでは,駆け出しエンジニアがビビりながらSPMにPRを送った経験を基に,コントリビュートにどのようなプロセスが必要だったのかを説明します.
例えばissueの見つけ方,デバッグ方法,PRの出し方,ユニットテスト等です.
最終的に,この発表を聞くとコントリビュートに対する心理的ハードルを下げることができます.
ITエンジニアならば仮想カメラを自作したいですよね?
2022年に、旧来のDAL(Device Abstraction Layer)プラグインに代わるものとしてCore Media IO Extensionを使った実装方法が用意されました。
旧方式はセキュリティ上の懸念から非推奨になっています。
このセッションではシンプルな実装から始まり、コントロールアプリと連動させる方法、カメラ映像を使う方法、それにオーバーレイ画像を合成する方法まで解説します。
機能拡張として音声認識入力機能も追加してみます。
このセッションを通してmacOSの仮想カメラの概要と実装について一通り理解できるようになります。
Zoomや各種アプリで自作仮想カメラを使ってみませんか!
WWDC23で発表された、SwiftUIに対するMetal Shaderの適用法に焦点を当てます。
本トークではまず、シェーダーを作成するための基礎知識として三角関数の役割を解説します。
その上で、これらの要素をSwiftUIと結び付け、リッチなビジュアルエフェクトを効率よく実現する方法を具体的に解説します。
Metal ShaderをSwiftUIと組み合わせることで、高度な視覚効果を手軽に実現できますが、応用させるには三角関数を理解する必要があります。
このトークを通じて、Metal Shaderの基本的な使用法と、それを活用したSwiftUIのビジュアル表現の豊かさの理解を深めることができます。
このトークは、SwiftUIにおいて更に視覚的な表現を豊かにする方法を探している方を対象としています。
皆さんのアプリのユーザ体験がより向上する手助けとなれば幸いです!
WWDC21で発表されたScreen Time APIの解放は、多くのデベロッパーが期待したのでは無いでしょうか。しかし、利用にFamily Controlsの承認が必要で子供のアプリ使用を親が管理するためのものでした。時間管理したいデベロッパーは残念に思ったでしょう。実は1年後のWWDC22からFamily Controlsを通した承認に「自分自身」が承認できるようになり、「親」のような他者からの承認を必要とせずにScreen Time APIを利用することができ、これで大人でも時間管理ができるようになりました✌️
このトークではScreen Time APIを利用したアプリの開発からリリースまで通じて遭遇した出来事についてお話しします。具体的にはアプリの申請時から注意すべきこと、新しいAPIに対するレビュアーの反応、さらに具体的なコードを用いてどのように動くかを紹介していきます。
アプリのUIがちょっと物足りない...そんな時、Metal Shaderはあなたのアプリの表現力を広げるための一つの選択肢になります。
シェーダーと聞くと難しい印象があるかもしれませんが、
基本を押さえれば、再生中のオーディオデータの可視化やコンテンツに没入感を与える演出などを表現できるようになります。
このトークではMetal Shaderの理解に必要な知識を共有しつつ、具体的な用例や実装を紹介します。また、コードのメンテナンス性やパフォーマンス面についても注意点をお話します。
見ているだけで楽しい、そんなUIをMetal Shaderで作ってみましょう。
プロプライエタリサードパーティSDKの挙動をカスタムしたい!でもそのためのインターフェースがない!しかし変更したい!
フィーチャーリクエストを送るが返信は返ってこない、しかし変更したい!
そんなあなたが手を出すであろうMethod Swizzlingについて
このトークでは基本から調査方法、高難度となるSwiftや最近のObjective-C機能についてお話します。
WeatherKitを使用することで、開発者は簡単に最新の天気データを取得し活用することができます!
天気アプリにはもちろんのこと、それ以外カテゴリのアプリでも天候情報は有効活用することができます。
実際にどのようにWeatherKitを使いアプリに組み込んでいくのか実際のデモを交えて説明します。
参加者がWeatherKitを活用して魅力的で実用的なアプリを開発するための知識とアイデアを提供します!
ぜひご参加いただき、ユーザーにとって役立つアプリを作り上げましょう!
トーク内容
こちらのトークではXcodeのLLDBデバッガーの便利な使い方を紹介します。
LLDBとは、Xcodeに標準搭載されているデバッガーです。
LLDBを使いこなすことによって、デバックを効率よく行うことができ、開発スピードの向上が見込めます。
p, po, vコマンドなどの基本的なコマンドの解説のほか、再ビルドせずに変数をLLDBで書き換える方法などを紹介します。
こちらのトークが皆様のLLDBデバッガーについての理解の助けになれば幸いです。
SwiftUIは宣言的にUIを組むことができるフレームワークです。その柔軟な設計思想によって、一つのレイアウトを取ってみても実装方法は数パターン存在します。
例えば、Viewにおける余白の表現においては、VStack/HStackのspacingを用いる方法や、paddingのModifierを用いる方法などが存在します。
しかし、一見期待するレイアウトになっていても、変更に弱いレイアウトとなってしまったり、パフォーマンス上問題となる場合などがあります。そのため、状況に応じて適切な実装パターンを見極める必要があります。
そこで本トークでは、さまざまなレイアウトにおいてSwiftUIによるベストなUIの組み方について体系的にお話しします。本トークを通して、聴講者の皆さまがSwiftUIでViewを実装する際に迷いなく適切な実装方法を選択できるようになることを目指します。
こちらのトークでは簡単な例を使い、低水準言語であるアセンブリ、アセンブラに入門してみます。
ソフトウェアエンジニアとして働いていると、アセンブラを学習する機会はほとんどないかもしれません。
しかし、アセンブラを学習することにより、CPUの機能やOSの役割が手を動かしながら理解できます。
Swiftで簡単なプログラムを記述し、Xcodeでアセンブリを表示させ、それを読めるようになるために、基礎的な箇所を解説します。
こちらのトークが皆様のアセンブラについての理解の助けになれば幸いです。
アセンブリ...言語の名称。
アセンブラ...アセンブリ言語で書かれたソースを機械語に変換するためのソフトウェア。