App Intentsは、アプリの特定の機能をシステム(iOS)に伝えることができる重要な機能です。これにより、Siri、ショートカット、ウィジェットなど、様々な方法でアプリの機能を利用することが可能になります。しかし、この機能はまだ多くのユーザーにとって使いやすいとは言えず、これまではあまり注目されてきませんでした。
しかし、iOS18の登場により、状況は劇的に変わる可能性があります。Apple Intelligence (AI)の導入により、システム(iOS)とアプリはよりシームレスに連携することができるようになります。これにより、「ユーザーのタップによるアプリの起動」だけでなく、「ユーザーのコンテキストを読んだAIのサジェストによるアプリの起動」が可能になります。したがって、App Intentsを適切に設計し、組み込むことがますます重要になってきます。
「Anything your app does should be an App Intent.」(WWDC24セッションより)という言葉が示す通り、アプリのほとんどの機能をApp Intentsとして定義することが求められる時代が来るかもしれません。
本ポスターセッションでは、App Intentsを研究し、iOS18の登場による変化がアプリの設計や開発にどのような影響を与えるかについて皆さんと議論したいと思います。
テストコードの結果が不安定となってしまう原因を細かく分類しても、到底200種類になんてならないでしょう。このポスターセッションでは、テストが不安定になる実例を数種類紹介します。
紹介する不安定なテストコードというのは100%失敗するようなそんな甘いものではありません。CIサーバでビルド失敗時にガチャのようにリビルドすれば、たまに成功するようなテストコードです。ポスターセッションでは、なぜそのテストコードが不安定で、どのように解決したかについてクイズ形式にしたいと思っています。
WWDC(Worldwide Developers Conference)はいつから始まったか知っていますか?
2010年…?2000年…?いえ、実はWWDCの始まりは1990年代まで遡ります。実はその前身となるイベントはさらに昔から開催されていました。
昔のWWDCの情報は簡単に得られるものではありませんが、今回、可能な限り昔のWWDCを中心に調べてみました。
A0サイズのポスターにWWDC創設期から現在までの各年のWWDCで、「どのような出来事があったか」「どのような技術が発表されたか」を年表でまとめます。
「そんなこともあったな」とか「あ〜!懐かしい…!」など、皆さんと一緒に振り返りながら楽しむことができればと思います。
Haptic Feedbackを使ったことがありますか?触覚を通じてユーザーに情報を伝える技術、それがHaptic Feedbackです。
現在、Haptic Feedbackはさまざまなアプリで使用されており、特に最近リリースされたアプリではその使用が急増しています。この技術はユーザーに高い没入感を提供しており、Apple Pencil ProにもHaptic Feedbackが導入されました。
本ポスターセッションでは、Haptic Feedbackを導入するメリットやAppleが推奨する使用方法、実際のコード例を交えて詳しく説明します。さらには、実際のアプリにおけるユースケースについても紹介します。
Haptic Feedbackは、ユーザーのアクションやUIアニメーションにほんの数行のコードを加えるだけで、簡単に没入感を提供することができます。ただし、乱用は禁物です。適切なタイミングと場面で使用することで、ユーザー体験を飛躍的に向上させることができます。
さらに、Core Hapticsフレームワークを使用すると、カスタマイズしたフィードバックを作成することが可能です。振動のパターンや強度を細かく調整することで、ユーザーに伝えたいメッセージを明確に伝えられます。
Haptic Feedbackを駆使して、ユーザーの心を惹きつけるインタラクションを実現しましょう。
このポスターセッションではWWDC24に現地参加した経験をもとに、現地ならではの細かな情報を共有します!
WWDC24への参加記事は多く見られますが「ご飯ってどこで何を食べたの」、「いつどのタイミングでどこに行ったの?」、「寒暖差どんな感じ?」、「時差ボケ大丈夫なの?」など、細かな情報はあまり存在しない印象があります
そこで、このセッションでは、A0サイズの大きな紙にWWDC24滞在中の情報を写真と言葉でまとめ、タイムライン形式で紹介します!
タイムラインを眺めながらワイワイできたら嬉しいです!
コンピューター上で3次元のオブジェクトを回転させるとき、3次元回転操作の表現としてクォータニオン(四元数)がよく使われます。数学ではベクトルや行列がよく使われますが、クォータニオンは行列よりもメモリ効率が良く、計算が高速です。
このポスターセッションでは、クォータニオンの有用性をiOSのAccelerateフレームワークに含まれるsimdモジュールを使って解説し、SceneKitで実際に描画する実例を示します。
• クォータニオンの基礎:19世紀に数学者ハミルトンが考案したクォータニオンの基礎を解説。
• simdモジュール:コード上でのクォータニオンの扱い方。
• 回転の補間:クォータニオンを活用した軌跡の補間、滑らかな回転アニメーションの実現。
• 3次元オブジェクトの回転:SceneKitで回転を描画する実例。
3次元グラフィックスの基礎を知りたいiOSアプリ開発者向けの内容です。
Global Accessibility Awareness DayにあわせてAppleは“今後登場する”アクセシビリティの新機能を発表しました。
改正障害者差別解消法によってウェブアクセシビリティ対応が義務付けられる話もあってか、アクセシビリティに対する話題がよりいっそう注目されています。
Appleの最新デバイスである「Apple Vision Pro」はAppleの他デバイスよりもアクセシビリティへの配慮を強く感じます。
本記事ではApple公式のApple Vision Pro User Guideの「Get started with accessibility features on Apple Vision Pro」をもとに、日本語でそのアクセシビリティ機能を詳しく説明します。お手元にApple Vision Proを用意して読むと理解が深まります。
日がな Swift に親しんでいると、何かちょっとしたプログラムを書くにも「Swift で書けたらいいのになー」って思うことありますよね。Web 経由で使うプログラムも Swift で書けたら楽しいのに⋯。
じゃあ ServerSide Swift をしようか!ってなっても、別にサーバーの待受まで Swift でやるみたいな大掛かりなことをしたいわけじゃない⋯、Web サーバーにモジュールを入れたりみたいな難しいことをしたいわけじゃない⋯、単純に今使っているレンタルサーバーで Swift をサクッと使えればそれで全てが満たされるんだ⋯。
そう思ったときに、良いアイデアが思いつきました。Xserver に Swift を入れて、古来からの技術 "CGI" で呼び出してあげたらいいじゃない。そんな好奇心から、ルート権限のない Xserver 環境に Swift を入れて CGI で動かすことをやってみました。知ってしまえば簡単なので、Xserver でみんなも Swift 楽しみましょう!
2024年2月にUS限定でApple Vision Proが発売されました。
5月現在、このApple Vision Proはまだ日本で発売されていませんが、一定台数のApple Vision Proが国内に存在しています。
しかしこのApple Vision Pro、なにも知らずに国内で電源を入れると「電波法」に抵触します。
皆さん、ちゃんと「技適未取得機器を用いた実験等の特例制度」を申請していますか?
本記事では、電波法と技適とその特例制度について、その存在意義と申請までの手順を解説します!
同制度を利用することによって技適未取得のデバイスを気軽に、合法的に、利用できるようになります。
Apple Vision Pro が日本に上陸する未来に備えて、実機活用術をご紹介します!
著者はコーディングやミーティングにフル活用しており、オフィスで Apple Vision Pro を装着して歩き回っても、慣れて誰も反応しなくなる程度には高頻度で活用しています。
また、体験会などを通じて100人以上の方に実機を提供してきた実績を持ちます。
Apple 製品の中でも高価格帯に位置づけられるため、「数ヶ月で使わなくなったらどうしよう…」なんて不安がよぎるものです。でも、本稿を読めばそんな心配も払拭できてしまうことでしょう。
空間コンピュータは新しいジャンルなので、想像だけでクリエイティブなアイデアを生み出すのにも限界があります。ぜひ、実機を活用するなかで素晴らしいアプリケーションを創り出してください!
現代のアプリ開発において、アクセシビリティは欠かせない要素となっています。特に視覚障害者にとって、VoiceOver対応は非常に重要です。本記事では、SwiftUIを用いたVoiceOver対応のアプリ開発に焦点を当て、その具体的な手法を紹介します。
アクセシビリティラベルの設定
ボタンや画像などの要素には、意味のあるアクセシビリティラベルを追加します。これにより、VoiceOverが適切な情報を読み上げることができます。例えば、"再生"ボタンには"音楽を再生するボタン"というラベルを設定します。
要素の順序設定
画面上の要素が論理的な順序で読み上げられるように設定します。特にフォームや複数のボタンがある場合、ユーザーの操作がスムーズになります。例えば、入力フォームでは、名前、メールアドレス、送信ボタンの順に読み上げられるようにします。
アクセシビリティインスペクタを使用したテスト
アプリのVoiceOver対応を確認するために、アクセシビリティインスペクタを使用してテストを行います。これにより、VoiceOverが期待どおりに機能しているかどうかを確認できます。
以上の手法を組み合わせることで、視覚障害者を含む多くのユーザーにアクセス可能なアプリを提供し、ユーザー体験を向上させることができます。
Pull Request (PR) が不毛なコメントばかりでなかなかマージされない。
PR を開いたものの、差分が大きすぎてそっと閉じた。
という経験が誰しもあると思います。
本記事では、作成した PR が素早くマージされるため、レビュアー/レビュイー双方の手間を削減するノウハウを共有します。
特別なツールを導入したり、ChatGPT に業務のセンシティブな情報を投げてしまう前にやれることがきっとあるはずです。
皆さん、*許可リクエストをしっかりハンドリングできてますか?👀
アプリ上で位置情報やATTなどのプライバシーデータを扱う場合、アクセスするために*許可リクエストを適切に行うことはアプリ開発者において重要な責務の一つです。
ただ、データを扱うフレームワークごとに許可リクエストのAPIは異なっており、後続処理の制御にコールバックが提供される場合もあれば、位置情報やBluetoothのようにDelegateパターンで提供される場合もあります。
そのため、複数のリクエストを同時に呼び出したり、”データをこのように使用します”という事前説明画面の後に呼び出すなど、前後処理に紐づけて柔軟に呼び出すケースでは複雑な実装となりがちです。
本記事では、以下の二つをコードを交えてハンズオン形式で紹介していきます。
・既存のコールバックやDelegateパターンの実装をSwift Concurrencyのasync/awaitで扱えるようにする
・異なるフレームワークの許可リクエストを共通のAPIから呼び出せるようにする
withCheckedContinuationでコールバックやDelegateを置き換えたり、Actorでデータ競合対策など、実際のコードを置き換えながら学んでいきましょう!
* 本記事では、プライバシーデータにアクセスするための処理を「許可リクエスト」と表現しています。
みなさん、技術書を書いたことはありますか?
紙の本として印刷する場合、様々な決まりに従ってレイアウトを施す必要があります。例えば、用紙サイズ・左綴じと右綴じ・余白・断ち切り・背幅・トンボ・ノンブルなどがあります。
これらの設定を手助けしてくれるツールは数多く存在しますが、本稿では Adobe InDesign を例に技術書作りのノウハウをご紹介します。
特に、言語設定が原因で締め切りギリギリで再入稿することになった経験など、実体験を踏まえた注意点や便利な機能の活用法を紹介します。
パンフレットを読んで「私もパンフレット記事を書いてみたい!」と思った方はもちろん、他のツールを使って執筆を行っている方にとっても有益な情報となること間違いありません!
iOSDC Japan 2023 のパンフレット記事として掲載された「Apple Silicon のためのアセンブリ入門」の続編です。
前回はニーモニックと文字出力について解説しましたが、本稿では演算処理をアセンブリで記述する方法に焦点を当てます。
Intel CPU を搭載した Apple デバイスがストアから姿を消すなど、 Apple Silicon は大きく進化しました。
私たちがこの Apple Silicon と非常に近い距離で対話する手段、それがアセンブリです。
アセンブリは機械語に非常に近い低水準言語であり、特定の CPU アーキテクチャに依存して記述方法が異なります。これに対して、Swift などの高水準言語では記述方法がほとんど変わらないため、アセンブリの特性について疑問を抱く方もいるかもしれません。
本稿では、 Apple Silicon 上でアセンブリを用いて演算処理を行う方法を紹介します。最初は仕事に直接役立たないように思えるかもしれませんが、日常的に Swift で書いている演算処理がコンパイラによってどのように機械語に変換されているのかを理解する絶好の機会です。きっと Apple Silicon がさらに魅力的に感じられるでしょう!
「SwiftLint」という、Swift用の静的解析ツールがあります。
SwiftLintには標準で多数のルールが用意されていますが、正規表現を使って自分でカスタムルールを作ることもできます。
私は主に以下の観点でカスタムルールを作っています。
Date()
より .now
を好む)foregroundColor()
より foregroundStyle()
を使う)本記事では私が実際に使っているカスタムルールを紹介します。
取り入れなくても読むだけで勉強になりますし、正規表現なのでそのまま一括で置換もできます。
ぜひこの機会に処理の統一化や非推奨APIの置き換えを図りましょう!
時は20XX年
「おう、きたな!まあ茶でも飲んで座ってけや。そうだな、あれは俺が何十年前、iOSDCというカンファレンスに参加したときや...」。
ついに明かされるフレモンの過去、最終回で明かされるすべての伏線。今までの被害s...ゲストや読者の皆さんに感謝を込めて、まごころを君に。「おめでとう」、「おめでとう」、「おめでとう」...「ありがとう」
iOSDC パンフレット連載漫画。3年の時を経て、輝け!俺のViewController、堂々の完結!
Swiftでもシェルスクリプトのようなことができるのは既に知られていることかと思います。
しかし、標準の開発環境であるXcodeではSwiftスクリプトのサポートがほとんどされておらず、標準APIのコード補完すらできないのが現状です。
一方で、VSCode (Visual Studio Code)にSwiftプラグインを導入することでコード補完はもちろん、変数の型の確認が容易になるなどの恩恵を受けられます。
更に、GitHub Copilotも標準サポートされているのである程度の単純作業であればすぐにスクリプト化することができます。
本記事では、VSCodeにSwiftプラグインを導入する手順を解説し、実際にzshで書いたスクリプトをSwiftで書き直した事例を紹介します。
「良いコードを書きたい!」というエンジニアの願いに応えるべく、このパンフレットではiOSアプリケーションの品質向上と保守性の観点から、Swiftデザインパターンを解説します。アンチパターンから堅牢な実装に改善する具体的な手法を紹介し、プロダクトの品質や開発効率に直結するデザインパターンに焦点を当てます。
【本編で紹介する予定のデザインパターン】
本編では、読者が実際のコーディング例を通じてSwiftデザインパターンの理解を深め、アプリケーションの品質向上に役立つベストプラクティスを得られるようにすることを目指します。このパンフレットが、開発者のスキル向上とプロジェクトの成功に貢献する貴重な情報源となることを願っています。
SwiftUIでは、@Stateや@Environment*などのプロパティラッパーを使って状態を管理します。@Stateは多くの開発者に親しまれていますが、@Environmentはその適切な使い方が十分に理解されていないことが多いです。本記事では、@Environmentの基本的な仕組みから高度な応用方法までを詳しく解説します。
本記事では以下の内容をカバーします:
本記事を通じて、@Environmentの基礎から応用までを学び、SwiftUIアプリの開発において効果的な状態管理手法を習得できます。初心者から中級者まで幅広い層に役立つ内容を提供します。
*: 本記事では@Environment(.keyPath)のみを取り扱います。@Environment(ObjectType.self)は敢えて取り上げません。