Swift言語におけるエラー処理のメカニズムは、他のプログラミング言語と共通する命名や概念を持ちながら、その実装と性能の特性において独自のアプローチを取っています。本トークでは、Swiftのエラー処理の仕組みを具体的なコード例とそのコンパイル結果を通じて解説し、他の言語との比較を行います。
発表では、まずシンプルな例を通じて、エラー処理付きの関数がどのようにコンパイルされるかを示します。特に、throwキーワードの周辺で行われる処理、つまり通常の戻り値処理に加えたエラーオブジェクトの伝達、およびtry周辺でのエラー検知と分岐処理に焦点を当てます。
そしてコンパイル結果の観察から、Swiftが如何にして他言語と類似の構文を提供しながら、実行時の負荷を軽減しているかを明らかにします。比較対象としてJavaを挙げて、類似の構文を提供しながらもその実装方法と実行時の性能に違いがある点を簡潔に解説します。
このトークはさまざまなエラー処理方法を一通り学んだSwift中級者へ特にお勧めできるものです。
このトークを通じてtryを利用したエラー処理の性質をより深く理解し、さまざまあるエラー処理方法の中から状況に応じた適切な方法を選択できるようになると考えています。
iOS15とともに登場したScreen Time APIですが、皆さんは使ったことがありますか?
iPhoneにデフォルトで搭載されているScreen Timeではアプリの起動時間を制限したり、アプリの利用時間を取得することができます。
そんなScreen TimeはAPIが公開されており、アプリからも使用することができます。
APIを利用すると、アプリのロック画面をカスタマイズすることができたり、Screen Timeを利用する時間やタイミングをより細かく調整することができます。
Screen Time APIは便利なAPIですが、現状使っているアプリが少なく、あまりメジャーではないため知見があまり出回っておりません。また、ドキュメントに記載されていないが、知っておくべきポイントというのもたくさんあります。
このLTでは、Screen Time APIとはなんなのか、一体何ができるのか?、どのようにすれば使えるのかなどScreen Time APIを使うにあたって知っておくと便利なことを実際に生活習慣改善アプリを開発した話を交えながらお話しします。
その昔iPhoneのRAM容量は512MBや1GBしかなく、メモリ管理は非常に重要でした。しかし、近年では3~8GBの容量が一般的になり、メモリ不足に悩むことは少なくなりました。
それでも開発者にとって適切なメモリ管理は重要です。メモリリークや不要なメモリ使用を避けることで、アプリのパフォーマンスを向上させることができます。
iOS開発ではARC(Automatic Reference Counting)によってメモリ管理が自動化されていますが、オブジェクトが解放されずに残ってしまうケースがあります。
このトークでは、特に注意が必要な5つのポイントについて解説します。
これらのポイントを押さえて、アプリのパフォーマンスを向上させましょう!
プログラミングとかけまして音楽と解きます、その心は?
どちらもコード(code | chord)が重要です
プログラマと音楽は相性が良いのです。
私自身も、平日はプログラマ、週末はアイドルなどへの楽曲提供をする作曲家です。
音楽はセンスがないとできないというわけではありません。
コードネームから構成音を求めるプログラムを作ることができます。
コード進行やリズムにはパターンがあり、デザインパターンやライブラリのように利用することができます。
音楽にも理論があります。
本トークでは
についてお話しします
プログラマならではの視点で、音楽を楽しんでみませんか?
ある日、ショッピングアプリのQA中に1つのバグ報告がありました。
ショッピングアプリの主要な機能である「価格の絞り込み」や「カート投入時の数量」などで利用するTextFieldで一律「2」が入力できなくなっていました。
この致命的なバグに、全く想像もつかず、チーム全員が固まってしまいました。
最初に疑ったのはソースコードの実装。ですが、ソースコードには特に問題は見当たりませんでした。それでは、特定のOSの問題か?どうもこれも違うようでした。
いったいなぜ「2」が入力できないのか?
そして辿り着いた原因は、我々が全く想像しなかったものでした。
笑撃の結末を見逃すな!乞うご期待ください!
Swiftがオープンソースになって以来、長年議論され続けてきたTyped throwsの提案がついに承認されました。これは、throws節にエラー型を指定できる新しい言語機能であり、Swift 6から導入されます。
Swiftにおけるエラーハンドリングの考え方は、Swift 2でthrows/tryが導入される際にまとめられた"Error Handling Rationale and Proposal"というドキュメントに基づいています。その後、Swift 5でResultが導入され、Swift 5.5でSwift Concurrencyが追加されました。これにより、それらの機能とエラーハンドリングを併せて考える必要が生じました。そして、Swift 6でTyped throwsが導入されます。
しかし、それらの変化は、Swiftにおけるエラーハンドリングの基本的な考え方を変えるものではありません。"Error Handling Rationale and Proposal"の理念は今も生き続けています。
本セッションでは、まずTyped throwsについて説明し、次に"Error Handling Rationale and Proposal"の内容を復習します。最後に、それらを踏まえた上でSwift 6でどのようにエラーハンドリングを行うべきか、その全体像を示します。
Apple Vision Proには、2D動画を再生するとその場面に応じて現実空間に対して演出効果が表示されるという、
とても面白い機能を持つアプリがあります。
例えば、突然飛行機が上空を通り過ぎたり、周辺がヨーロッパの街並みに変わったり、たくさんの風船が表示されたり。
グラス型端末の没入感と相まって、これまでとは一線を画した斬新な体験です。
この面白い機能はどうやって実装するのでしょう。
何がきっかけで演出が始まるのでしょうか?
演出はどう作るのでしょうか?
動画のスキップ、一時停止には対応しているのでしょうか?
これらの疑問に答えるため、このセッションでは、Swiftネイティブの環境でその機能をいくつか実装していきます。
作業手順を説明しソースコードを解説し、ライブデモを行います。
具体的には以下の内容をカバーします:
このセッションを通じて、参加者は実際にvisionOSでの空間演出を実装するための具体的な手法を学び、自分で独自の体験を作り上げるスキルを身につけることができます。
visionOSの可能性を知り、今後も体験が進化していくワクワクを届けたいと思います。
皆さん、Apple Silicon使っていますか?
ビルド時間の短縮によってその強力な性能を開発現場で実感している方も多いと思います。
このApple Siliconですが、実はCPUとGPU以外にも様々な機能があることを知っていますか?
例えば代表的な例として機械学習を高速化するNeural Engineが挙げられます。
実はその他にもVideo EncoderやML Acceleratorなど一部の処理を高速化するハードウェアが搭載されています。
またiPhoneに搭載されたAシリーズから始まり、近年Macに搭載されたことで全AppleプラットフォームでApple Siliconが搭載されています。
これによりMacを含めてWatchやTV、Vision ProでもiPhoneと同じアプローチで高速化することが可能になりました。
このトークではApple Siliconに搭載されている特殊エンジンの概要と、それらを効果的に利用するためのテクニックについて解説します。
いきなりですが「自宅の鍵が公共交通機関の改札のようにiPhoneで開閉できたらなー」と思ったことはありませんか?
NFC(近距離無線通信)はセキュアでレスポンスが早く、環境に影響されにくいので、デジタル認証を行う上で非常に適した通信技術です。
iOSにもNFCをサポートするCore NFCというフレームワークがありますが、現状ではNFCタグやNFCカードの読み書き機能しかサポートしていません。
そのため、物理カードのように振る舞うカードエミュレーションや、双方向通信を行うP2Pモードは実装できません。
また、カードエミュレーションとして機能するNFC付きのPassの生成も現状では限りなく不可能に近い状態です。
これらの制限により、現状では個人でiOSとNFCを組み合わせてスマートキーを開発することは難しい状況です。
しかし、どうしてもNFCを利用して公共交通機関の改札レベルの体験を自宅でも味わいたい…と思い、NFC付きのPassを利用して開閉するスマートキーを作成しました。
このトークでは、NFCの基本的な話から、Core NFCでできることを簡潔に解説した上で、NFC付きPassを利用して開閉するスマートキーの作り方をデモを交えて紹介します。
基本的な概念から応用まで40分で学べる内容となっていますので、ぜひこの機会に今後のiPhoneとNFCの可能性に備えませんか?
現在、Flutter、React Native、MAUI、Compose Multiplatformなど様々なクロスプラットフォームフレームワークが登場しており、業務での利用も増えているかと思います。
弊社でもFlutterを使用した案件が出てきております。
そのような中で、「Flutter等を使用してiOS・Androidを一緒に開発できるのに、Swiftで開発する必要はあるのか」という疑問を誰しも一度は抱いたことがあるかと思います。
実際、私自身も個人的なアプリ開発では、Flutterなどを使用することが増えました。
そのため、「とりあえず効率が良さそうだから」という理由だけでクロスプラットフォームを選ぶのではなく、しっかりとした理由に基づいて技術選定を行うことで、開発効率を向上させ、質の高いアプリを作れるようになると考えました。
そこで本トークでは、今一度Swiftとクロスプラットフォームでの開発を比較し、それぞれを利用する場面について考えていきたいと思います。
ウォンテッドリーは、「究極の適材適所によりシゴトでココロオドル人をふやす」をミッションとして、働く人全てに関わるプロダクトを開発しています。モバイルアプリは主にWantedly Visitアプリを展開し、求職者と企業の最適なマッチングを提供するサービスを提供しています。
Wantedly Visitの開発では、技術的にはKMPを使ったモバイルプラットフォーム共通のロジックと、SwiftUIやJetpack Composeといったモダンな技術スタックで開発を行っています。
このセッションでは、普段のKMPを使った開発の進め方や、チームの話、今後の方向性などについて話す予定です。
71の国と地域でレシピサービスを提供している「クックパッド」は今年の3月に26周年を迎えました。
ご存じの方もいるかもしれませんが、クックパッドでは昨年さまざまな出来事がありました。そういった状況の中で今年新卒として入社したiOSエンジニアのHarutaが、クックパッドアプリ開発のリアルな現状をご紹介します。
【キーワード】 アプリ品質を保つ取り組み、デザインシステム、リリースフロー、日本と海外向けアプリの違い...
詳しい内容は当日のお楽しみに!
どの開発チームにとっても、開発生産性の向上は重要な課題です。Sansan株式会社では、SaaSの営業DXサービス「Sansan」を提供しています。これまで、SansanのiOSアプリとAndroidアプリは別々に開発されてきました。 今年、iOSとAndroidのビジネスロジックを共通化し、ソースコードの統一やOS間の仕様差を解消することで開発生産性を向上させるために、Kotlin Multiplatform (KMP) を導入しました。
しかし、大規模なプロダクトにKMPを導入することは、大きなインパクトを伴う変更です。本セッションでは、KMP導入に向けた技術的意思決定のプロセスやKMP導入の効果を最大化するためのノウハウを紹介します。
具体的には以下のトピックについてお話しします:
・KMP導入の目的を明確にする
・KMP導入の効果を試算する方法
・iOS/Android/KMPの全体アーキテクチャ設計と技術的意思決定のプロセス
・KMP導入にあわせた組織設計
・KMP導入で発生する課題とその解決策
KMPの導入を検討されている方、意思決定プロセスや組織設計に興味がある方、Sansanのアプリ開発事情を知りたい方は是非ご参加ください!
これまで、データが非同期かつ継続的に流れてくる処理や、いつ発生するか分からないイベントを受け取る処理には、クロージャや Delegate、オブザーバーなどが用いられてきました。また、Apple プラットフォームでは Combine、サードパーティの OSS では RxSwift などといった外部のフレームワークも使用されてきました。
これらのほとんどは、Swift 5.5 で追加された AsyncSequence を使用する方法へと移行できます。実際、Apple が提供するフレームワークでも、従来 Delegate が用いられてきたような非同期にイベントを伝える API について、最近新規に追加されたものは AsyncSequence を採用しています。他のデザインパターンから AsyncSequence に移行することで、Swift Concurrency が持つアクター分離などのさまざまなメリットを享受できます。一方で、非同期なシーケンスならではのメモリリークにも注意が必要です。
このトークでは AsyncSequence の基礎、他のデザインパターンからの移行方法、移行するメリット、注意点まで、UIKit・SwiftUI を用いたアプリの例を使いながら詳しく紹介します。
Delegate、今までありがとう。これからは AsyncSequence でやっていくよ。
StoreKit2はiOS 15から導入された新しいアプリ内課金フレームワークで、より安全で効率的な課金実装が可能になります。2024年2月より、ABEMAではこれまでの「ABEMAプレミアム」に加えて、新たな課金商品の提供を開始し、同時にStoreKit2を用いた課金システムの全面的なリニューアルを実施しました。このセッションでは、新たな商品の検討からリニューアルの設計、実装、テストに至る全フローを詳細に解説します。
アプリ内課金はユーザー体験とビジネスに非常に重要ですが、その実装は複雑でエラー対策も多岐にわたります。このセッションでは、StoreKit2を用いて効率的にこれらの課題を解決する具体的な方法を示します。皆様のアプリ開発に役立つ情報提供を目指します。
今日話題になっている生成AI勃興の背景にはGPU、Vector演算器による計算機資源の計算力の爆発があります。
このトークではそのGPUによる計算能力の増大がどのようにもたらされたのか、汎用演算器から専用回路、ベクトル処理による並列化、グラフィクス処理用途のGPUの誕生とGPGPU、そしてNPU等歴史を追って解説します。
概要:
・GPUの歴史
・汎用処理から専用回路へ
・グラフィックカードの進化と主要な技術革新
・NPUの登場とその意義
・学習とインファレンス、オンデバイスML、エッジML
・まとめと今後の展望
「ここはWebViewでいきましょう」
iOSエンジニアであれば、ネイティブで実装したい気持ちとビジネス要件との間で葛藤し、最終的にWebViewでの実装を選択した経験がある方も多いと思います。
このトークでは、iOSアプリ開発における強力なWeb表示コンポーネントであるWKWebViewのAPIについて徹底解説します。
WKWebViewには多くのAPIが存在し、その中にはあまり知られていないものもあります。
主要なAPIだけでなく、できるだけ普段あまり使われないAPIも含めて説明することで、参加者がWKWebViewで実現可能な機能を幅広く理解できるようになります。
具体的には、私が日々のWKWebViewを用いた開発の中で得られたノウハウを交えながら、各APIの役割や使用例、効果的な活用方法について解説します。
初心者から中級者まで、幅広いレベルの開発者にとって役立つ内容を提供しますので、ぜひご参加ください。
めざせ!WKWebViewマスター!
内容:
ヘルスケアアプリから「すべてのヘルスケアデータを書き出す」機能を使用すると、これまでのヘルスケアデータを取り出せることをご存じでしょうか。このデータはzip形式で保存され、シェアすることが可能です。zipデータを解凍すると、いくつかのCSVデータや2GBを超える巨大なXMLデータなどが含まれています。これらのデータは一体どうやって活用すれば良いのでしょうか。
このセッションでは、iOSの巨大なXMLデータの解析方法やCSVデータの処理方法について詳しく解説します。エクスポートされたヘルスケアデータの内容を理解し、他のプラットフォームでインポートする際にも役立つ知識を提供します。具体的には、以下のポイントに焦点を当てます:
このセッションに参加することで、ヘルスケアデータを効果的に活用するためのスキルを身につけることができます。