「アジャイル開発ってよく聞くけど、実際にはどうすればいいのかよくわからない・・・」
昨今、アジャイル開発を取り入れる現場が皆さんの周りでもかなり増えているのではないでしょうか。今やアジャイル開発はエンジニアとしても無視できない状況となってきています。
しかし、「私はただ開発さえできればいいんだ!XcodeだけがTOMODACHI。」と考えるエンジニアも少なくないと思います。そんな皆さんに向けて、アジャイルな現場での立ち回り術を紹介します。
本トークでは、アジャイルの中でも最もよく使われるスクラムフレームワークをベースに、アジャイルなプロジェクトでどのように立ち回るとプロジェクトから重宝されるか、ひいてはプロジェクトが成功するかについてお話しします。プロジェクトの成功に貢献したいiOSエンジニアの皆さんに、スクラムマスターの観点からコツを解説します。
「アジャイル開発ってよく聞くけど、実際にはどうすればいいのかよくわからない・・・」
昨今、アジャイル開発を取り入れる現場が皆さんの周りでもかなり増えているのではないでしょうか。今やアジャイル開発はエンジニアとしても無視できない状況となってきています。
しかし、「私はただ開発さえできればいいんだ!XcodeだけがTOMODACHI。」と考えるエンジニアも少なくないと思います。そんな皆さんに向けて、アジャイルな現場での立ち回り術を紹介します。
本トークでは、アジャイルの中でも最もよく使われるスクラムフレームワークをベースに、アジャイルなプロジェクトでどのように立ち回るとプロジェクトから重宝されるか、ひいてはプロジェクトが成功するかについてお話しします。プロジェクトの成功に貢献したいiOSエンジニアの皆さんに、スクラムマスターの観点からコツを解説します。
みなさんはiOS 17で登場したTipKitフレームワークを利用したことがありますか?ポップオーバービューを使用して、ヒントをアプリのUI上に表示させたり、ボタンなどの要素を直接指すような表示がとても簡単に実装できるようになりました。しかし、TipKitでは表示要素のカスタマイズにはタイトル、メッセージ、画像のみという制限があります。このため、デザイン要件によっては実際のプロダクトへの採用が難しい場面も多いのではないでしょうか。
TipKitを使わなくても、SwiftUIには対象要素にスポットライトを当てた上でポップオーバービューを表示するようなオンボーディングUIを構築する道具が揃っています。Shapeプロトコルを使った吹き出しコンポーネントの作成、Preferencesによる子要素のアンカーの収集、マスキングのためのModifierなどがそれにあたります。
このトークでは、実際のプロダクト開発を通して得た経験をもとに、実際の要件を想定しアプリケーションに導入する際の設計アプローチ例も交えながら、独自のオンボーディング機能をSwiftUIで実装するアプローチをご紹介します。
WWDC23 ではさまざまなツールやアップデートが発表されました。
あれから1年・・・
皆さんはこれらの技術を日常の開発に取り入れましたか?
個人アプリに導入しましたか?
まだ導入できていなくても、安心してください!
このトークを聞けば、まだ最新技術に間に合います!
本トークでは iOS Osushi のモバイルアプリ開発で得た知見を紹介します。
具体的には、以下のツールについて基本的な使い方と導入する上でのポイントについて解説します。
本トークを聞けばよりパワフルなアプリケーションを作ることができるでしょう!
iPhoneのカメラは年々進化しており、iPhone一台で高品質な写真やビデオを撮影することが一般的になっています。
例えばハードウェア性能が向上したことで、48MPの高解像度撮影や、Apple ProRAWやApple Log等の特殊な撮影ができるようになっています。
こうした進化したカメラ機能を自分のアプリに組み込むことで、独自のUIを使ってカメラを操作するだけでなく、標準のカメラアプリでは実現できない色温度や焦点位置の細かな調整、他のフレームワークと連動したユニークなアプリの開発が可能になります。
しかし、カメラ性能が向上しているにも関わらず、開発者がどのような新しい機能を利用できるのかについてはあまり知られていません。こうした新機能はAVCaptureのAPIを利用してアプリに組み込むことができますが、実際にドキュメントを読んで実装しようとすると、不十分な記述に惑わされ、試行錯誤してなんとか実装することになります。
このセッションでは、AVFoundationを使った最新のカメラ機能の概要と実装方法について解説します。カメラの基本的な撮影や応答性の説明から始め、近年のAVCaptureのAPIのアップデートについて体系的に紹介します。48MP撮影やApple ProRAW / Apple Log等の特殊撮影の基本知識とその実装についても、デモを交えて説明します。
ウィジェットの生誕から10周年を迎え、その進化は目覚ましいものです。WWDC14での初登場以来、ウィジェットはシンプルな情報表示から始まりましたが、WWDC20でホーム画面に設置できるようになり、昨年のWWDC23ではさらにインタラクティブなやりとりが可能となり、機能の幅が大きく広がりました。
しかし、多くの開発者が直面している課題は、ウィジェットでどのような機能が実現できるのか、そしてどうやってユーザー体験を向上させるかという点です。
このトークでは、App Storeに眠る世界中の開発者が生み出すウィジェットを調査し、革新的で多種多様なアイデアを共有します。
具体的には、
などの事例を紹介します。
参加者はこれらの実際の事例を通じて、アプリ開発に活かす新たなアイデアやインスピレーションを得ることができます。
未知のウィジェットの世界はまさに宝探しのようです。刺激的なインスピレーションを求めて、一緒に世界のウィジェットを巡る旅に出かけましょう。
このトークを通じて、あなたが次の伝説のウィジェット開発者になるためのアイデアを得ることでしょう。
アクセシビリティに配慮したUIを作成するのは、難しいと思っている方は多いのではないでしょうか?
そう思っているみなさん、Developer ToolのAccessibility Inspectorを使用したことはありますか?
Accessibility Inspectorとは、アプリのUI で発生した一般的なアクセシビリティ問題についてのフィードバックを提供してくれるツールです。
このLTでは、Accessibility Inspectorを使用した以下のようなフィードバックに対する解決方法についてお話しします。
・ 要素の説明:各要素のアクセシビリティラベル(コンテキスト固有の説明的なラベル)を提供しているかをチェック
・ ヒット領域:要素のサイズが小さすぎて人が操作できないかどうかをチェック
・ コントラスト比:重なり合う要素間の色のコントラストが十分かどうかをチェック
・ Dynamic Type:アプリ内のテキストが Dynamic Type をサポートしているかどうかをチェック
個人開発のアプリでAccessibility Inspectorを使用した経験を踏まえて、Accessibility Inspectorを活用したアプリのアクセシビリティ向上方法について紹介します。
iPhone Xの登場とWWDC18で発表された『Designing Fluid Interfaces』により、Fluid Interfaces(流れるような接点)を意識したUIデザインが一層注目されるようになりました。直感的でストレスの少ない、体の動きと連動した操作を実現するためには、アニメーションやインタラクション、特に画面遷移に関する理解が欠かせません。
しかし、これらの表現を実装する際、技術的なハードルを感じる方も多いでしょう。また、画面の遷移元と遷移先の「つなぎ目」に対する細部までの配慮や、滑らかな見た目と触り心地を実現するための微調整が必要です。
本トークでは、UIKitおよびSwiftUIを利用した画面遷移の基本的な処理から、アニメーションの工夫、さらにはオリジナリティを持たせるためのカスタマイズ手法まで、具体的なコード例と共に解説します。
具体的には以下のポイントをカバーします:
このトークを通じて、参加者はUIKitとSwiftUIを駆使した美しい画面遷移の実現方法を理解し、実装へのハードルを下げることができるでしょう。
企業でiPhoneやiPadを社用端末として利用する際、MDMと呼ばれるデバイス管理の仕組みが使われていることは、ここ数年のiOSDCで語り尽くされてきました。
いっぽうで、我々エンジニアが使っているパソコンはmacOSです。社用端末として使っていますよね。あれ、でもmacOSのMDMってあまり話題に上がっていませんよね。
実際には、macOSにもiOSと同様にMDM機能が存在し、ここ数年のWWDCでもmacOSのMDMの進歩は実はホットな話題です。とても気になるので、自分でオープンソースのMDMを作って中古のMacbookをメルカリで買って、その機能性をいろいろ確かめてみました。
・業務に必要なアプリの自動インストール
・SSH設定の自動化
・WiFi設定の配布・自動更新
などなど、これらのMDMの機能は、デバイスの"管理"だけでなく、PCセットアップの自動化など、エンジニアチームにとって大きな利便性をもたらしてくれそうです。
市販のMDMを使うだけでは面白くないので、自分でMDMをつくっての業務改善にチャレンジしてみませんか。
このセッションではMDMのプロトコルやその実装方法などについてもわかりやすく説明したいと思います。
SwiftUIの「View Identity」という概念を知っていますか?
SwiftUIはこのView IdentityによってViewを管理・再描画を行っています。
そのためView Identityの扱いによっては余分な再描画を生んでしまいアプリのパフォーマンスを下げてしまいます。
このLTでは、View Identityについて簡単に説明した後
パフォーマンスが良くないSwiftUIのコードとその改善方法を紹介します。
このLTを通してView Identityを意識したパフォーマンスの良いViewを書くアプローチを一緒に学びましょう!
WWDC21で発表されたPhotogrammetryのObject Captureは、複数枚の写真から3Dモデルを生成する技術です。Photogrammetryに加えて、NeRFや3D Gaussian Splattingといった手法も注目を集めています。
本トークでは、Photogrammetry、NeRF、そして3D Gaussian Splattingの各手法の特徴や、それぞれの得意・不得意について5分で簡潔に紹介します。
なお、例えば3D Gaussian Splattingの分散行列といった技術的な詳細には触れないので、専門知識がなくても楽しめる内容となっています。
皆さん、Apple Vision Proにあわせて登場した「空間ビデオ」で撮影していますか?
私はこれまで、従来の動画に加え、VR180カメラや360度カメラで家族との思い出を記録してきましたが、立体的で没入的に再生される「空間ビデオ」は“記録”を超えて“記憶”に近い体験をもたらします。
この「空間ビデオ」はApple Vision Proだけでなく、iPhone 15 Pro/Pro Maxでも撮影できます。
まだお持ちでない方も、この体験のためだけに機種変更を検討する価値があります。
再生するためのApple Vision Proをまだ持っていない方も心配ありません。
今のうちに撮りためておけば、いずれその魅力を体験できる日が来るでしょう。
Meta Quest 3をお持ちの方なら、ソフトウェアアップデートにより再生可能です。
厳密には同じ見え方ではありませんが、十分に楽しめます。
本セッションでは、「空間ビデオ」で思い出を残すことの良さとともに
「空間ビデオ」であなたの思い出を残しましょう!
弊社では、1週間に1度のサイクルで継続的にアプリをリリースする運用を続けていましたが、リリースに関わる作業が機能開発の時間を奪っているという課題がありました。そこで、状況を改善すべくGitHub Actionsを利用した自動化に取り組み、一定の効果を得ることができました。
当初は改善の効果を感じていましたが、運用を続ける中で新たな課題も見えてきました。このセッションでは、新たに発生した課題を解消するために、どのような取り組みをしたのか?についてお話しします!
話したいこと
・現状のリリースフロー
・新たな課題と改善したこと
・改善後のリリースフロー
・まだまだ改善したいこと
ただ、現状では打ち手だけが見えている状態で、修正し、運用に乗せるところまでできていません・・・このセッションをきっかけに「登壇駆動開発」で動き出したいと考えています。
AIの著しい発展に伴い、近い将来Siriがより賢くなることが予想されます。
反面これまでを振り返るとSiriにまつわる技術はショートカットアプリやWidgetの登場とともに大きく変遷してきました。
このセッションではSiriの歴史を振り返りながら、Siri対応の開発ノウハウを紹介します。具体的には以下の内容に触れていきます。
・SiriKit
・Custom Intents と Siri
・App Intents と Siri
・「Siriからの提案」
Siriをフル活用するための開発に乗り遅れないよう、キャッチアップに役立ててください!
AIの著しい発展に伴い、近い将来Siriがより賢くなることが予想されます。
反面これまでを振り返るとSiriにまつわる技術はショートカットアプリやWidgetの登場とともに大きく変遷してきました。
このセッションではSiriの歴史を振り返りながら、Siri対応の開発ノウハウを紹介します。具体的には以下の内容に触れていきます。
・SiriKit
・Custom Intents と Siri
・App Intents と Siri
・「Siriからの提案」
・サンプルアプリを用いたSiri対応の詳細説明
・App Intents 実装の最小構成
・AppEnum の使い方
・AppEntity と EntityQuery の使い方
Siriをフル活用するための開発に乗り遅れないよう、キャッチアップに役立ててください!
近年、SwiftのコードをWebブラウザで動作させることが簡単になってきました。ブラウザが提供するAPIも、Swiftから利用することができます。
しかし残念ながら、ダイナミックなGUIを含む実践的なWebフロントエンド開発にSwiftを採用することはまだ難しいでしょう。それは、HTMLを宣言的に記述するためのライブラリが不足しているからです。JavaScriptにおいても、生のDOM APIでGUIを実装するのは難しいとされており、様々なライブラリが利用されています。
そこで私は、Swift Reactという宣言的HTMLレンダラーを開発しました。これは、広く使われているJavaScriptのライブラリであるReactのコンセプトに基づきつつ、それをSwiftらしいAPIとして再設計し、一から実装したものです。
このトークではまず、Swift Reactを使うことで簡潔で読みやすいコードでWebフロントエンドが書ける事を紹介します。そして、宣言的なインターフェースを支える、仮想DOMによる状態管理と差分検知の実装について解説します。また、簡単な手順で新規にアプリケーションを構築できる事を伝えます。
この発表を聞けば、SwiftによるWebフロントエンド開発をすぐにでも始めたくなるでしょう。
バグの早期発見には、コードの手戻りを早い段階で減らすことが重要です。コードレビューは、コードが仕様通りに動作し、品質が高いかどうかを評価する代表的な手法です。しかし、コードレビューの段階で根本的なアーキテクチャの問題が指摘されると、既に書かれたコードが無駄になる可能性があります。したがって、設計段階でのアーキテクチャレビューも重要です。
ただし、アーキテクチャガイドラインに基づく設計レビューでは十分な成果が得られないことがあります。これは、アーキテクチャには早期対応が必要な部分とそうでない部分があるためです。例えば、MVVMアーキテクチャでは、Viewの修正はコードレビュー時でも対応可能ですが、ViewModelの修正は早い段階で対応しないと、その影響がModelやViewに広がり修正が困難です。これは、ViewModelがビジネスロジックなど多様な責務の間でデータの受け渡しを行うためです。この例からも分かるように、重要な責務におけるデータのやり取りに関するコードは早期対応が必要です。
そこで、重要な責務のまとまりをプレゼンテーションレイヤー、ドメインレイヤー、データレイヤーの3層に分類し、各レイヤー間のデータフローをレビューすることで、早期対応が必要な手戻りを減らすことを狙います。このトークでは、設計レビューにおける各レイヤーの重要性と具体的なレビュー方法について紹介します。
iOS 15より導入されたFormatStyleは、値を加工するためのプロトコルです。
.format(value)
の形で値を与えるだけで、日付や数値、文字列などの標準的なフォーマットはもちろん、人名や電圧など多岐にわたる形に対応したFormatStyleが用意されています。
SwiftUIにおいても各種ビューにおいて非常に便利に使うことができます。
でも、みなさん、まだまだ足りなくないですか?
そんなフォーマットに飢えている皆さんのために、カスタムフォーマットをどのようにして作るかを提示したいと思います。
世の中をフォーマットしていきましょう。
初心者iOSエンジニアにとって、サーバー周りの知識や環境構築はハードルが高いと感じていませんか?この課題を乗り越えるために、 昨年リリースされたVSCodeのポートフォワーディング機能を使って簡単にサーバーレスでユニバーサルリンクを実装する方法を設定手順からデモ、応用事例まで紹介します。
来年からDynamic Linksが廃止されるため、スマートバナーへの移行が急務となっています。
この変化に迅速に対応するためには、新しい技術とツールを活用することが重要だと思います。
個人開発はもちろん、チーム開発でもバックエンドの準備を待たずにスマートバナーの実装を進められるため、開発スピードを加速させる可能性を秘めています。
サーバーの複雑さに悩まされることなく、iOS開発をもっとスムーズに進めましょう。
iOS 開発において非同期処理を Swift Concurrency で書くことが当たり前になってきました。しかし、日々 Swift Concurrency を利用しているにも関わらず、その知識が初リリースの Swift 5.5 時点で止まっている...、なんていうことはありませんか? Swift Concurrency は登場以降も進化を続けており、仕様変更や新機能の追加が行われています。今後も、 Region based isolation の導入や AsyncSequence への Primary associated types の追加をはじめとして、 iOS 開発がより便利かつ安全になるような変更が予定されています。
このセッションでは、基本的な Swift Concurrency の知識は前提として、主に Swift Evolution を参照しながら Swift 5.5 以降に入った、あるいはこれから入る予定の Swift Concurrency 周りの変更を噛み砕いて、できるだけ網羅して紹介することを目指します。 最新の仕様と今後の方向性にキャッチアップしておくことで、いざという時のトラブル解決や、安全で開発しやすいアプリ設計に役立つかもしれません。