ios17でSwiftUIのViewにMetalのエフェクトを簡単にかける機能が追加されました。
この機能の登場によって、従来はグラフィックスの専門知識が必要であったUIがより簡単に作成可能となりました。
ゲーム等で利用されるパーリンノイズアルゴリズムを利用したエフェクトの作成方法を例にあげて、この素晴らしい新機能を5分で紹介したいと思います!
Instrumentsはアプリケーションのパフォーマンス解析や改善に役立つXcodeの開発ツールの一部です。
本ツールは毎年アップデートがされておりWWDC22ではSwift Concurrencyの対応が追加され並列処理の可視化・最適化を行うことができるようになりました。
「async/awaitで書き換えてみたけど、実際のパフォーマンスが気になる」
「意図しない挙動になったが原因がわからない」
といった課題にアプローチすることができます。
今回ではInstrumentsの基本的な使い方から始め、WWDC22でアップデートされた並列処理の可視化・最適化の手法について既存処理の書き換え時の失敗事例を踏まえながら紹介できればと思います。
マイクロインタラクションとは、ひとつの作業だけをこなす最小単位のインタラクションであり、
アプリ開発においてはユーザーの体験を向上させる要素の一つです。
このトークでは、まずマイクロインタラクションの概念とその重要性について説明します。
次に、SwiftUIを用いてどのようにマイクロインタラクションを設計し実装するか、その具体的な手法について解説します。
基本的なアニメーションから、ユーザー入力やシステムステータスの反映、さらにはハプティックフィードバックまで、ユーザーとアプリケーションとの対話を豊かにするための手法を紹介します。
マイクロインタラクションを活用してプロダクトをより良いものにしていきましょう。
本トークでは、私のSwiftへのコントリビュート経験を元に、Swiftを単なるユーザーではなく、その成長を後押しするコントリビューターとして関わる方法を探求します。
まず、SwiftのOSSプロジェクトへの貢献の価値を理解するための考察から始め、そこから誰でも挑戦できるような実践的なコントリビュート手順について具体的な手法を紹介します。
これにより、初めてのコントリビュートでも効率的に進めることができるようになります。
さらに、高品質なコードを維持するためのテスト技法に踏み込みます。
LLVMのテストツール「lit」の活用方法を学び、それがSwiftのコード品質を高める役割について説明します。
このトークを通じて、Swiftを使用するだけでなく、Swiftの進化に直接貢献する体験を提供します。
Swiftを用いる全ての開発者が、Swiftへの貢献の道を開く一歩となれば幸いです!
弊社の新卒研修の一貫としてtwitterライクなアプリを短期間で作ることはお馴染みの恒例行事となりつつあります。
私のチームではUIKitを一切使わず、フルSwiftUIで開発するという技術挑戦を行いました。フルSwiftUIでアプリを制作するにあたり難しい問題の一つに画面遷移周りが上げられます。今回のハッカソンを通しSwiftUIの画面遷移問題を攻略したくSwiftUI縛りで開発を行いました。以下が苦労した点とお話ししたい工夫内容です。
ルーティングの管理: SwiftUIでは、画面遷移のためのルーティングの管理が不十分です。複雑な画面遷移の制御が難しくなります。
ナビゲーションのデザイン: SwiftUIのナビゲーションはTabViewのitemを横断するような、画面遷移に気をつけなければなりません。Appleが想定するナビゲーションの動きを正しく理解し開発する必要があります。
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と組み合わせた文字列操作の応用を目指します。
Gitによるバージョン管理が当たり前となった現在、そのブランチの運用方法は多岐に渡ります。
しかし、代表的なブランチ戦略と言われるGit-flow、GitHub-flow、GitLab-flowはいずれもiOS開発でそのまま運用することは難しいです。
なぜなら、iOSアプリにはAppleによる審査というステップが含まれるためです。
どんなに凝ったフローでもリジェクトによって余計な手間がかかるリスクがあります。
筆者の所属しているプロダクトではそんな審査リジェクトのリスクを踏まえGit-flowを一部改変して運用しています。
本セッションではそんな自社の例を紹介しつつ、参加者の皆様とより良いブランチ戦略についてディスカッションができればと考えています。
みなさんは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に転向した方や、単純にもっと引数ラベルを活用したい方におすすめしたいです。
ネットワーク通信、データベース操作などによりユーザーを待たせる場面は様々です。
そのような状況で、いかにユーザーにストレスを与えず、優雅に待たせられるかは、無数にあるアプリの中で際立った存在になるためには重要なキーになります。
本トークでは、以下のトピックについて紹介します。
想定する対象者
WWDC19以降、iOSアプリ開発におけるSwitftUIでの実装が広く一般的になりつつあります。
しかし、既存のUIKitベースのアプリを完全にSwiftUIにリファクタするのは容易ではありません。
そのため一時的な解決策として、ボタンやアラートなどの共通UIコンポーネントのみSwiftUIで実装するケースがあります。
またViewがUIKitで実装されているために、SwiftUIで実装されたコンポーネントを利用して新しくUIKitで別のコンポーネントを実装しなければならない時、将来的にSwiftUIへの移行を考慮する必要があります。
本LTでは、このような状況下でのベストプラクティスと、考慮事項について解説します。
SwiftUIと UIKitを組み合わせたハイブリッドなアプリ開発において、スムーズな移行と効果的な実装を実現するためのポイントをお伝えします。
SwiftStandardLibraryの中にはBasic Behaviorsというプロトコル群があります (一部struct)
この中にはHashable, Identifiable, CaseIterableなど、よく見かける奴らがいます
https://developer.apple.com/documentation/swift/basic-behaviors
Hashable?なんかハッシュ値できるやつ、、
CaseIterable?なんかenumの要素を配列で取れるやつ、、
私はそれぐらいの認識なのですが、
いざ公式フレームワークやOSSの宣言元を見に行くと、結構使われていることがわかります
本トークではBasic Behaviorsでできることを整理した上で、
それらが利用されているコードを参照しながら、
具体的にどのようなシーンで活用され、大活躍しているかを探ります
WWDC23でvisionOSが発表されました。
新ハードウェアのApple Vision Proと共に動作する新しいOSです。
Apple製のSpatial Computingデバイスは数年来待ち望んだ物でした。
サンノゼ現地にて発表に立ち会ってきました。
この素晴らしい発表を受け、iOSDC2023に向けて visionOS 30Days開発チャレンジを実施します。
シンプルな実装から始まり、各種コンポーネントを使い、簡易的なゲームや映像表示などを実装していき、そのソースコードと知見をすべて共有します。
私は過去にMetal Shader 100DaysやAR100Daysを実施してきました。
その経験を活かし、今回チャレンジし結果を共有します。
一緒に、visionOSの可能性を探求しましょう!
みなさんはショートカットアプリを活用していますか?
私は日々のルーティーン用のショートカットをよく利用しています。
ショートカットアプリにあなたのアプリを連携させるためには、App Intentsを利用する必要があります。
App Intentsによって、ショートカットアプリだけでなく、SpotlightやSiriからの提案などの場所にも、あなたのアプリが表示されるようになり、アプリ起動導線を増やせます。
また、iOS 17のInteractive WidgetsにもApp Intentsが必要です。
このトークでは、あなたのアプリの活躍の場を増やすために必要なApp Intentsの活用テクニックや、このような機能に対応しやすくするために普段の開発から意識すべきことなどをお話します。
iOSのSKStoreReviewControllerを使ったレビュー促進ポップアップには、表示タイミングや回数に制限があります。また、App Store Reviewガイドラインでは「レビューを求めるカスタムのメッセージ画面を表示することはできません」と記載されています。
しかし、それでもカスタムメッセージ画面を表示したいという要望がある方もいらっしゃるでしょう。
本記事では、Firebase In-App Messagingを活用し、カスタムメッセージ画面やポップアップ表示タイミングをリリースなしに変更することができる解決策を提案します。