SwiftのInt型は、数値計算からコレクションのインデックスとしての利用まで、幅広い用途で使用されています。しかし、Int型がどのプロトコルに準拠しているのか、具体的にはどのような機能を提供しているのかを深く理解している開発者は意外に少ないかもしれません。そこで、私がApple Developer Documentationを調査し、Int型が準拠しているすべてのプロトコルをリストアップしました。
しかし、これらすべてを時間内に紹介するのは難しいため、特に興味深いプロトコルを厳選してご紹介いたします。例えば、数値操作に関連するプロトコルや、CustomStringConvertibleプロトコルといった意外な用途に対応しているプロトコルについて解説します。
Apple Vision ProおよびvisionOSが登場して早一年が経ちました。
毎日SwiftUIを触っているであろうiOSエンジニアの皆さんにとって、visionOS向けのUI開発で陥りがちなポイントを紹介します。
visionOSは皆さんが慣れ親しんだSwiftUIフレームワークを使用してUI開発が可能であり、基本的にはiOSやiPad OSアプリケーションの開発と大きな違いはありません。
しかし、visionOS向けに新しく追加されたUIコンポーネントであるOrnamentや、普段使わないWindowsやVolumesの概念などはまだ知らない方も多いでしょう。
そこで本セッションでは、visionOS向けのアプリケーションを開発する際に気を付けるべきポイントを以下のトピックに分けて詳しく紹介します。
・ Window向けUI構築で意識する点
Windowの特性と、それに応じたUIの配置やデザインのポイントを解説します。
・ Ornamentについて
Ornamentコンポーネントの使い方や、利用シーンについて具体例を交えて紹介します。
・ visionOSでは必須のHoverEffectについて
HoverEffectの重要性と、適切な使用方法について実例を交えながら説明します。
Xcode Cloud活用していますか?
リリースから2年弱が経ち、Xcode Cloudを利用しているプロダクトも増えてきたと思います。Xcode CloudはAppleが提供するCI/CDツールで、特にiOSアプリの開発において強力なサポートを提供します。
今年1月にリリースされた「恋するAI」アプリでは開発から運用までXcode Cloudのみの環境で開発を行なってきました。
他のツールと比べて若干の癖のあるXcode Cloudですが、SPMやTestFlight Internal Testingを活用することで従来よりも低価格・低コストで新規アプリの開発を進めることができました。
このセッションではXcode Cloudのみの環境で開発するにあたって利用したワークフローや既存ツールとの差異などを中心に以下の内容をお話しします。
Swift Concurrency が初めて発表されてから約3年が経過しました。特に非同期処理の実装においては Swift Concurrency を選択することが一般的になってきました。
Swift Concurrency 登場以前から開発されているアプリの場合、非同期処理や UI 更新のためのデータバインディング目的で RxSwift を使うケースが多く、歴史の長いコードベースほど RxSwift への依存が大きくなっています。このため、機能開発と並行して徐々に Swift Concurrency へ置き換えていく、といったケースも多いのではないでしょうか。
本トークでは、既存の RxSwift で実装された箇所との共存を図りながら Swift Concurrency へ置き換えていく過程で気をつけるべき点や苦労した点について私の経験を交えてご紹介します。来るべき Swift 6 に備えて今からできる対応についてもご紹介します。
本トークでご紹介する主な内容は次のとおりです。
AppleのVision Frameworkは、機械学習とコンピュータビジョンの強力なツールです。このプロポーザルでは、今ではなくてはならない存在となり、日々お世話になっているVison Freameworkの進化の軌跡をたどり、現在の機能と利用事例を探り、将来の可能性について考察します。
2017年にWWDCで初めて発表されたVision Frameworkは、iOSデバイス上での画像認識と分析を簡単にすることを目的としています。このフレームワークは、顔検出、テキスト検出、オブジェクト追跡など、多岐にわたる機能を提供し、アプリ開発者がユーザー体験を向上させるための新しい道を開きました。
Vision Frameworkは、リアルタイムでの画像処理を可能とし、Core MLとの統合により、カスタム機械学習モデルを活用して、より高度な画像分析を実現しています。
このプロポーザルでは、その歴史を振り返り、現在の実用性を評価し、さらにWWDC2024で発表されるであろう新技術についても触れ、フレームワークを最大限に活用するための具体的な方法を紹介します。
2023年9月、swift-https-typesというパッケージの1.0.0がAppleからリリースされました。
このパッケージはHTTPを型安全に扱えるライブラリであり、HTTPクライアントとサーバーの両方を対象に設計されています。
めちゃくちゃ便利なのですが、まだ使っている人が少ないように感じます。
何のライブラリも使わず、標準の URLSession
のみでHTTPクライアントを実装している方にぜひ使ってほしいです。
本LTでは、軽快な音楽と共にswift-https-typesがいかに型安全かテンポよく紹介します。
Don't worry, This is type... (safe!)
皆さんはバリデーション付き入力フォームを50個実装しないといけなくなった場合どのようにコードを設計しますか?
これに限らず広範囲のコードの設計を行う際
しかし最初から理想の形を目指すのは至難の業です。
理想を追い求めすぎて過剰設計になったり、流行りのアーキテクチャを試したもののうまくマッチしなかったり…
このトークでは実際にあった大量のバリデーション付きフォーム画面を題材にスケールする設計の考え方を紹介します。
まずは「良いコードを書こう」と考えず愚直に動くコードを実装します。
そこから気になる部分を見つけて改善するステップを繰り返していきます。
改善の際にはコードの良し悪しだけでなくチームの状況やプロジェクトの要件も加味していきます。
各ステップごとにコードの Before / After を提示するので「何をしたことでどんな効果があったか」がわかります。
コードが洗礼されていく過程を一緒に体験できるので設計を行う考え方を学べます。
コードの量は多めですがライブラリは使いませんので初学者の方でも楽しめる内容です。
Swift の新機能の PropertyWrapper や ResultBuilder をフルに使うので Swift のおさらいにもなります。
みなさんは日常的にショートカットアプリを活用していますか?
私は楽をするためにショートカットを駆使して、さまざまな自動化を行っています。
ショートカットアプリにあなたのアプリを連携させるためには、App Intentsを利用する必要があります。
App Intentsを活用することで、ショートカットアプリだけでなく、SpotlightやSiriからの提案などの場所にも、あなたのアプリが表示されるようになり、アプリの起動導線が増加します。
さらに、Interactive Widgetsやアクションボタン等からアプリの機能が呼び出せることで、未対応の他のアプリと差別化でき、ユーザーにとって欠かせないアプリになるかもしれません。
このトークでは、App Intentsを最大限に活用してアプリのエンゲージメントを向上させるための具体的な知識や方法を紹介します。
・App Intentsの概要解説
・SpotlightやSiriなどのOSの機能との連携について
・Interactive WidgetsなどのApp Intentsの活用方法
また、このような機能の実装をスムーズに行うために、日頃の実装で気をつけるべきことなどについてもお話しします。
みなさんのアプリの可能性を広げ、ユーザーに愛されるアプリ作りの一助になればと思います。
Swift でできることは最近どんどん増えています。その中に Swift でマイコンを開発するツールもあります。
特に有名なのは Mad Machine が作った開発ボード、SwiftIO です。しかし、SwiftIO だと、専用の開発ボードが必要で、始めるには、ハードルがかなり高いです。
実は専用のハードウェアがいらない、今すぐ始めるものがあります!それは Swift for Arduino です!Arduino があれば、Swift でマイコン開発できます!
みなさんも Swift でマイコン開発始めよう!
コンピューター上で3次元のオブジェクトを回転させるとき、3次元回転操作のコンパクトな表現としてクォータニオンがよく使われます。
クォータニオン(四元数)は19世紀に生まれた概念です。数学者ハミルトンが、3次元回転を表現するために複素数を拡張してクォータニオンを考案しました。数学では3次元回転の表現としてベクトルや行列がよく使われるため、クォータニオンはさほど注目されてきませんでした。しかし、コンピューターの3次元グラフィックスの発展により再評価されるようになりました。クォータニオンを使うと、行列よりもメモリ効率が良く計算も高速になるためです。
iOSのAccelerateフレームワークには、クォータニオンを扱えるsimdモジュールがあります。simdを活用すると、iOSアプリで3次元オブジェクトの計算がしやすくなります。また、クォータニオンは回転の軌跡を補間する際にも有用です。これによって、滑らかな回転アニメーションが実現できます。
このトークでは、まずクォータニオンを基本から解説して、simdモジュールを使ったクォータニオンの使い方を述べます。そして、3次元オブジェクトを回転させ、SceneKitで実際に描画するコードを紹介します。3次元グラフィックスの基礎を知りたいiOSアプリ開発者におすすめのトークです。
Apple Vision Proの登場は、空間コンピューティングという新たなパラダイムを私たちにもたらしました。3Dインターフェース、視線・ジェスチャー操作、そして圧倒的な没入感。これらの要素は、アプリ開発にどのような変革をもたらすのでしょうか?本トークでは、Apple Vision Pro開発の基礎から、visionOSの主要機能、そして空間コンピューティング時代のUI/UXデザインまでを網羅的に解説します。
対象者
Apple Vision Pro開発に興味があるエンジニア、デザイナー
空間コンピューティング、3Dインターフェースに興味がある方
SwiftUIを用いたアプリ開発経験のある方
新しいテクノロジーに挑戦したい方
iOSアプリ開発はMacが無いとできないと言われており、ハードルが高いと感じる方も多いですよね?
Macはもちろん、iPhoneなどのApple製品を一切持っていない方。 また、WindowsやLinuxのパソコンすら持っていない方でも、この方法でアプリをリリースすることができるかも?!
世界一のローコストで行う、限界iOSアプリ開発の実践方法をお伝えします! SwiftUIで作ります! (まっとうなiOSエンジニアにはガチでお勧めしません!)
※ キーワード: CI (Xcode Cloud, GitHub Action), fastlane (fastlane Snapshot)
iOSアプリ開発のチュートリアルや入門書は多く存在しており、学校の授業で扱われることもあります。しかし一方で、実際のアプリ開発の業務では、より多くの知識が求められます。このギャップに初学者がとまどうことも少なくありません。
このトークでは、初学者が業務レベルに到達するには何が求められるのか、いくつかのポイントについて具体的にお話しします。初学者への学習の方向性を示すとともに、中級〜上級者にも初学者が感じるギャップを捉える機会になればと考えています。より俯瞰的な内容は、パンフレット記事をご覧ください。
・UIフレームワーク(UIKit、SwiftUI):どのくらい使われているのか、どちらを学ぶべきか
・LinterやFormatter:なぜこれらを導入する必要があるのか
・プロジェクト構成、パッケージ管理(SwiftPMなど):プロジェクト構成で何を考えておくのか
・デザインや設計のガイドライン(HIGなど):何を知っておくべきか、ガイドラインの読みかた
UIKit から SwiftUI への移行、進んでいますか?
私が開発に携わっているアプリでは、画面内の一部のコンポーネントにのみ SwiftUI を利用しており、現在画面全体の SwiftUI 移行を検討しています。
すぐにも移行を進めたいところですが、そのためにはユーザの行動ログを収集するためのインプレッショントラッキング基盤が必要不可欠です。
基盤実装には、分析要件を満たすための I/F 設計・ユーザ体験を損なわないためのパフォーマンス・OSバージョンごとの品質担保・デバッグ容易性など考慮すべき観点がいくつもあります。
本トークでは、インプレッショントラッキング基盤を実現する上での UIKit と SwiftUI の違いや、これらの観点に対するアプローチについてお伝えします。
みなさん、Meta社(旧Facebook社)が開発したモバイルアプリ開発のためのデバッグツール「Flipper」をご存知でしょうか。
Flipperはデスクトップアプリを通じて様々な情報を取得したり操作を行ったりと、幅広くデバッグを支援してくれる便利なツールです。
類似のデバッグツールとしては、HTTPプロキシを立てて端末の通信をキャプチャし、リクエストやレスポンスの内容を参照・改変するCharlesが有名かと思いますが、FlipperにはCharlesにはないカスタムプラグイン機能が存在します。自分たちのアプリの要件に合わせたカスタムプラグインを作成することで、バグ調査や開発効率の改善に役立てることができます。
このトークでは、Flipperの基本的な解説からユースケース、カスタムプラグインの作成方法、活用事例までを以下の流れに沿って、ソースコードと共に解説していきます。
このトークを通じて、みなさんのモバイルデバッグの選択肢が広がれば幸いです。
弊社では、モジュール分割による影響範囲の限定化とともに、UIViewControllerから呼び出すサブビューの位置付けでSwiftUIを利用しています。
最大限SwiftUIの力を活用できているとは言えず、UIViewControllerから呼び出すことでオーバーヘッドがあるのも事実ですが、UIKitやStoryboard中心の開発を行っていた頃と比較して開発体験の向上が見られるようになりました。
本トークでは、UIKitベースのプロジェクトにおいてSwiftUIを適用したいと迷っている方向けに、具体的な事例を交えながら以下のポイントについて順を追って解説します。
突然ですが、みなさんが開発しているアプリで一番古くからある画面はどこですか?
マッチングアプリ『タップル』は今年でリリースから10周年を迎え、Swiftのアップデートに伴ってその姿形を変えてきた歴史があります。
iOS業界の中でも古いプロダクトになりつつあり、時代の流れとは裏腹に、何年もの間メンテナンスされてこなかった実装が健在しています。
しかし、これらの実装はSwift 6.0の登場により変遷の時を迎えるかもしれません。
そこで本セッションでは実録と称して、IBベースの画面で作られていたタブ直下の画面をフルSwiftUI化し、さらにSwift 6.0対応までのリプレイスの記録を以下の流れに沿って解説します。
共に古き悪しきコードを討伐していきましょう!
SwiftUIの登場により、iOSアプリ開発におけるアーキテクチャ設計は新たな局面を迎えています。宣言的UIというパラダイムシフトの中で、状態管理やデータフローはどのようにあるべきでしょうか?本トークでは、SwiftUIと相性の良いアーキテクチャとして注目を集めるThe Composable Architecture(TCA)について、基礎から実践的な活用方法までを解説します。
対象者
・SwiftUIを用いたiOSアプリ開発に興味があるエンジニア
・従来のアーキテクチャに課題を感じているエンジニア
・The Composable Architectureについて学びたいエンジニア
・SwiftUIでより保守性、再利用性の高いコードを書きたいエンジニア
チーム開発をしていてコードレビューに課題を感じることはありませんか?
私たちのチームでは12人のエンジニアがフルタイムでiOSアプリ開発を行なっており、レビューの属人化やリードタイムがチーム内での大きな課題となっていました。
このセッションではどのようにしてチームのコードレビューを改善したのか以下の点を中心にお話しします。
このセッションを通して皆さんのチームのコードレビューがより良いものになれば幸いです。
「(舞台上でしゃがみながら)ログビューアのUI/UXについて、マジで今日全員で考えたくて」
os.Logger
という、iOS 14.0から使えるロギングのAPIがあります。
print
よりもログに特化しており、使っている方も多いと思います。
私はOSログを確認できるSwiftUIのビューをOSSで公開しています。
わずか1行でiOSアプリ上にログビューアを表示できます。
Xcode 15から、OSログビューアが一新されました。
UI/UXについて、できる限りそれに近づけようとしています。
しかし難しい…!
macOSアプリであるXcodeのUI/UXを、iOSアプリ上でどう表現するか。
「検索バーでフィルタリングを実現するのは難しいから、文字列検索と分けて用意しよう」
「スマホはパソコンと比べて画面が小さいので、折り返しを多用するのもよくないよな」
など工夫しました。
本トークでは、私がログビューアのUI/UXをどう考えて設計したかと、改善の余地について紹介します。
もくじ
「どうでもいい正解を愛するよりも、面白そうなUI/UXを愛せよ」
全員で一緒に、よりよいログビューアのUI/UXを追求しましょう!