Swiftコードバトルの準々決勝 マッチ4
kntkymt さん vs. shin-usu さん
みなさんはアプリのパフォーマンス計測、やっていますか?
スクロールがカクついたり、タップしたときの応答性が悪い、意図せずCPU・メモリ・ネットワークリソースを大量に消費してバッテリー消耗を早めてしまっているなど、これらの直接目に見えにくいアプリの不具合は利用者に不満をもたらし、アンインストールにつながる恐れがあります。
アプリがアンインストールされないためにも、日々快適に動作しているかどうかを知っておくことは非常に重要です。
MetricKitはユーザー環境でアプリの電力やパフォーマンス・診断データを収集し、パフォーマンス改善に役立てるためにAppleが提供するフレームワークです。
MetricKitを活用することで継続的にメトリクスが得られ、アプリの健康状態に問題がないかどうかを開発者が知ることができます。
本セッションでは、MetricKitの基本的な使い方から実際の活用事例、活用して得られた知見をお話しします。
具体的には以下の内容を扱います。
PlaydateはmacOS向けエディターなどでも知られるPanic社が、イケてる電子楽器メーカーteenage engineeringと組んで開発した小さな黄色い携帯ゲーム機です。パッと見ゲームボーイのようにも見えますが、その最大の特徴は手回しクランクがついていること!
Playdateゲームの開発はLuaやCで行えますが、2024年からSwiftもサポートされました。Playdateの開発環境がおもしろいのは、音響関係のAPIが充実していることです。サイン波を鳴らしてディレイをかけ、フィルターをLFOで揺らして…といったシンセいじりの遊びを簡単にコードで書けるようになっています。件のクランクも、シンセサイザーのパラメーターや音程を調整する「つまみ」として使ったら楽しそうです。
このトークでは、SwiftによるPlaydateゲーム開発の基本と音響APIを使ったシンセサイザーおもちゃの開発事例を紹介します。さらに、そのシンセおもちゃの実演デモも行います。トークタイトルは略語がSwift Package Managerと同じSPMとなるように決めました。うまく音楽を奏でることができれば、題に偽りなしですね。乞うご期待。
位置情報のCore Locationは、衛星電波の届く戸外ではかなり精確な現在地を得ることができ、多くのアプリで利用されています。フレームワーク内部では、いわゆるGPSと呼ばれる衛星測位をベースに、WiFiやセルラーのアクセスポイントも援用した、スマートフォンならではの測位手法が使われています。
GPS(GNSS)測位の基本的な原理は、いくつかの衛星と受信機を結ぶ三角測量といえ、非常にシンプルなものです。とはいえ、2万キロの距離を微弱な電波で結ぶための様々な工学的工夫があり、また、ネットワークの位置情報を効果的に参照することで、すばやく精確な測位を実現しています。
このトークでは、衛星からの電波にどのような情報が入っているのかを覗いてみて、私たちが普段便利に使っている位置情報がどのように求められているかを確認してみます。
Swiftコードバトルの準決勝 マッチ1
準々決勝マッチ1の勝者 vs. 準々決勝マッチ2の勝者
与えられたお題をSwiftで書いてコードが短い方が勝ち、というルールのSwiftコードバトル、準決勝 2試合です。
Swiftコードバトルの準決勝 マッチ2
準々決勝マッチ3の勝者 vs. 準々決勝マッチ4の勝者
2023年秋に公開されたwatchOS 10では、Apple Watchのインターフェースが大きく変わり、TabViewやNavigationStackなどのUI/UXが大幅に変化しました。
このセッションでは、SwiftUI、WidgetKit、Live ActivityなどのiOSにおける一般的な技術要素をApple Watchでどのように適用していくべきかを体系的に学びます。特に、より使いやすくなったwatchOS 10のアプリ開発における重要なトピックを深掘りします。
また、ComplicationやスマートスタックがApple Watch上でどのように動作するかについても詳しく解説します。
このセッションをご覧いただくことで、iOSエンジニアがApple Watchアプリの開発を始めるための基礎知識を得ることができます。これまでの知識を他のAppleプラットフォームに応用し、スキルの幅を広げる最初の一歩を踏み出しましょう。
iOSDC Japan 2023でご好評いただいた「SharePlayの歴史と進化」の続編です。
このセッションでは、iOS18でのSharePlayの進化や、今年ついに発売されたApple Vision ProでのSharePlayの利用方法について詳しく解説します。
20分のセッションでは、SharePlayの歴史を振り返りながら、iOS18での新機能やアップデート内容、そしてApple Vision Proでの実際の利用シーンを紹介します。SharePlayの最新情報にどっぷりと浸かることができる内容です。
具体的な内容は以下の通りです。
このセッションを通じて、SharePlayの新しい可能性や利用方法について深く理解していただけることを目指しています。ご期待ください。
iOS黎明期、スマホアプリにおいて位置情報・地図は花形の機能でした。多くのiOSエンジニアがMapKitやCore Locationを扱った経験があるでしょう。しかし一方で、我々はそんな古くから知っているはずの位置情報や地図について、実はあまり知らないのではないでしょうか。たとえばポケモンGOのように、人が歩ける・立ち入ることのできる場所に絞ってモンスターを配置するにはどう実装するのでしょうか。
位置情報を持つデータを扱うアプリケーションを総称して、GIS(地理情報システム)と呼びます。本セッションでは、GISの基礎として、地図のようなアプリケーションを構成するデータや技術について紐解き、それらをiOSで扱う方法について解説します。地理情報のデータ形式とその扱い方を学ぶことで、前述の地図へのモンスター配置のような実装方法も分かりますし、国土地理院が配信している地形図や航空写真、JAXAやNASAの衛星データなどの外部データもiOSで活用できるようになります。またPLATEAUで配布されている3D都市モデルの活用についても解説します。
与えられたお題をSwiftで書いてコードが短い方が勝ち、というルールのSwiftコードバトル、決勝戦です。
毎年新しい機能が発表されますが、実際のプロジェクトでは古いOSをサポートしなければならない都合でこれらの機能をすぐに採用することが難しいことが多いです。そこで、導入したい新しい機能を古いOSにバックポートしてすぐに使えるようにする方法について説明します。
iPhoneのカメラは年々進化しており、さまざまな用途で使用されるようになってきています。例えば、近年ではiPhoneのカメラを使用して、映画やYouTube動画を撮影するクリエイターも登場しています。
このようにiPhoneのカメラがさまざまな用途で使われる中、DockKitフレームワークが発表されました。DockKitフレームワークのAPIを組み込んだビデオカメラアプリを、DockKit対応スタンドにセットすることで、人物を自動で追尾するようにDockKit対応スタンドを動かすことができます。
しかし、DockKitフレームワークはWWDC2023で発表されていたものの、DockKit対応スタンドが発売されたのはつい先日で、DockKit対応スタンドを使用して、開発者がどのような機能を利用できるのかについてはあまり知られていません。
このセッションでは、DockKitフレームワークの基本的な概要やAPIの説明から始め、DockKitフレームワークで開発者ができることを体系的に紹介します。セッション中はベルキンのAuto-Tracking Stand Pro with DockKitを使用したデモを交えて説明します。
SwiftUIの登場によって、画面のStateを使ってUIを構築するState-Drivenなアプローチが可能になりました。
クライアントでは、バックエンドからいくつかのAPIをコールし、それらを組み合わせて画面のStateを構成し、SwiftUIのViewに渡すことでUIを表示することができます。
では、画面に一つのAPIで画面のStateをそのまま受け取れる場合、クライアント側にはどのようなロジックが残るでしょうか?
if文やSwitch文のような分岐を持たないアプリは実現できるのでしょうか?
本トークでは、BFF(Backend for Frontend)と呼ばれるクライアント用の中間サーバーを活用し、
可能な限りロジックをバックエンドに寄せたServer-DrivenなUI構築を実務で取り組んだ経験を通して
といった、クライアントが可能な限りプレゼンテーションロジック以外を持たない構成とその活用について紹介します。
さらに、本トークでは実際にBFFの導入が難しい方に対しても、極端な事例を通じて
といった疑問への一つの指針を提供します。
昨年の『複雑さに立ち向かうためのコードリーディング入門』ではコードの読み解き方に焦点を当てましたが、今回はソフトウェア開発全体における複雑さについて詳しく解説します。
私たちエンジニアは、日々さまざまなタスクに取り組んでいます。仕様の理解、ドキュメントの作成、タスクの見積もり、チャットやミーティングでの議論、新しい技術の学習など、多岐にわたる作業があります。このような状況で、「やることが多すぎて頭がフリーズしてしまった」という経験をしたことはありませんでしょうか?
人間の脳には限界があり、その限界を超えると物事を複雑に感じてしまいます。では、この複雑さに立ち向かうために、私たちができることは何でしょうか?
実は、私たちが日常的に行っている活動の中には、必要以上に脳へ負荷をかけているものが多く存在します。この負担を認識し、軽減することができれば、複雑さから解放され、より重要なことに注力できるようになります。
本トークでは、以下のテーマについてお話しします。
本トークが、皆さまの日々をより充実させる一助となりましたら幸いです。
iOSは、SwiftUIやUIKitなど複数のフレームワークで構成される強力なプラットフォームです。私たちのアプリは、これらのフレームワークが公開しているAPIを利用して構築しますが、実際にはまだ見ぬ多くの機能がフレームワークに隠されています。
このトークでは、iOSの隠されたAPIを解き明かし、その活用方法について詳しく説明します。具体的には、以下のポイントに焦点を当てます。
Swift 5.5のリリースから早3年、Swift Concurrencyは日々の開発に普及しつつあります。非同期処理を手軽に扱えるようになりましたが、あなたの実装には大きな落とし穴があるかもしれません!
アプリケーション開発において、メインスレッドの健全性はユーザー体験を左右する重要な要素です。メインスレッドがブロックされると、UIの遅延やフリーズが発生し、ユーザーにとってストレスフルな体験となります。
このトークでは、Swift Concurrencyを使った非同期処理におけるメインスレッドのブロックリスクを見極めるため、クイズ形式で知識を深めます。
以下のトピックを扱ったクイズを出題します。
皆さん、バイナリ形式で配布されるSDKがx86_64のシミュレータしか同梱されていない状況に困ったことはありませんか?
本トークでは、実機向けバイナリをARM64シミュレータ向けに変換する作業を通じて、アプリのバイナリを解析する手法を紹介します。
具体例としてLive2D Cubism SDKを取り上げ、必要なツール(lipoとotool)、バイナリ解析の基礎、バイナリ変換手法、動作確認までを丁寧に解説します。
基本的なiOS開発の経験があれば十分です。ARM64アーキテクチャに関する知識やバイナリ解析の経験がなくても問題ありません。
このトークを通じて、バイナリ解析の楽しさを少しでも伝えられればと思います。お楽しみに!