近年、デジタル空間における個人認証の需要が増す中、iOSではiOS 15.4からWalletアプリへ運転免許証や州IDの搭載ができるようになりました。
更には、iOS 16からWallet APIを通じた個人情報の共有、そしてiOS 17からはVerifier APIを用いた対面での個人情報の共有が可能となりました。
これらの機能はまだ米国でしか使えませんが、マイナンバーカード機能がiPhoneに搭載されることが発表されるなど、日本でもIDカードのデジタル化に対する期待が高まっています。
そこで、このセッションでは上記のデジタルIDに関連する機能が日本でも利用可能になった場合に備えて以下の内容を話します。
このセッションを通じて、日本におけるデジタルID時代を一緒に妄想し、将来に備えましょう!
Apple から WebKit 以外のブラウザエンジンを搭載したアプリを作成するためのフレームワーク「BrowserEngineKit」が登場しました。
この機能は EU 地域で、かつ Apple の定めた要件を満たしたサービス提供者のみに限られているものの、開発者は独自のブラウザエンジンを作成することが可能になります。
しかし BrowserEngineKit はセキュリティ向上のために複数の Extensionを組み合わせてアプリが構成されるため、どのように作成すればよいのかが難解です。
本トークでは Apple が公開したサンプルをベースに独自のブラウザエンジンの作り方が学べます。具体的には以下の内容をカバーします。
オーディオビジュアライザーとは、音楽のリズムや振幅、周波数成分などを視覚的に表現したものです。音楽系のアプリを使ったことがある方なら一度は見たことがあるウニョウニョ動くカッコいいあれです。
本トークでは、音楽ファイルを読み込み再生しながら、リアルタイムで高速フーリエ変換を実行し、オーディオビジュアライザーを表示するまでの方法について紹介します。高校数学レベルの数学的知識とSwiftでのアプリ開発経験があることを前提として、Swiftで一歩踏み込んだ表現をしてみたい方を対象とします。
話すこと
あなたのアプリは本当に安全に作られていますか?
Webアプリに比べて、おろそかになりがちなネイティブアプリのセキュリティ。
脆弱性診断を行うセキュリティエンジニアは、セキュリティに関するオンラインコミュニティ「OWASP」が発行する検証基準「MASVS」などをもとに、脆弱性診断を行っています。
また、彼らは、開発者が特に気をつけるべきセキュリティリスクを「OWASP Mobile Top10」として公開しており、これらを理解することは、セキュアなアプリケーション開発を行ううえで非常に重要です。
このセッションでは、実際にiOSアプリの脆弱性診断を行っている筆者が、OWASP Mobile Top10の中から特によく見かける脆弱性を紹介します。
そのうえで、それらに対する対策方法を解説し、各種脆弱性への理解を深めることを目的とします。
iOSアプリには、カメラを使ってQRコードの検出・読み取りを行う機能がよく組み込まれます。
しかし、この機能をアプリ内で実装するには、AVCaptureSessionを用いた入力デバイスや出力データの管理、AVCaptureVideoPreviewLayerを用いたカメラプレビューの表示、AVCaptureMetadataOutputからQRコードの情報の取得...など、多くの関連するクラスを扱う必要があり、複雑な実装を行わなければなりませんでした。
そこで登場するのが、VisionKitフレームワークです。
iOS 16以降に利用可能なDataScannerViewControllerを使うことで、カメラを使った検出・読み取りの機能をシンプルかつ簡単に実装できます。
このトークでは、以下の内容についてお話しします。
QRコードの読み取り機能に苦労していた日々は今日でおしまいです。
みんなで楽しくVisionKitフレームワークを学びましょう!
皆さんは声優さんになりたいと思ったことはありませんか?例えば、自分が声を当てたキャラクターがゲームで活躍する妄想をすると、ワクワクしてこないでしょうか。しかし、アフレコの実力や膨大な文章の収録などの技術面・コスト面の障壁があり、素人がキャラクターに声を当てるのは簡単ではありません。
本トークでは、誰でも自分の声のキャラクターをアプリに登場させる手段として、iOS 17にて追加されたアクセシビリティ機能「パーソナルボイス」を使用し、ユーザの声で自由に語句を発話させる方法について説明します。また、「誰でもゲームアプリ声優になれるアプリ」のデモを通じて、パーソナルボイスの実際の活用例をご紹介します。
具体的には次のトピックについて話します:
このトークを通じて、iOSの「パーソナルボイス」の導入および利活用方法と、ゲームキャラクターに命を吹き込む新しい方法を理解していただけます。「パーソナルボイス」があなたのアプリに「自分の声での発話」という新しい価値をもたらし、多くのユーザの夢を叶える一助となれば幸いです。
みんなー リョムキャットのパーフェクトSwiftネーミング教室はじまるよー
Swiftの関数名、どのように命名していますか?
本LTではSwiftの関数名の命名時に考えるべきことについて紹介します。
弊社には全くコメントを使わずに名前だけで全てを表しているプロジェクトがあり、弊チームでも追随してコメントをなくしていこう!という風潮になりました。
コメントを完全に消すのはまだ議論の余地があるところですが、たしかにコメントがないと処理がわからない関数名は是正していくべきでしょう。
そこから命名について思い悩む日々が始まりました。
体を名で表すのは至難の技で、もはや芸術の域です。
そんな中、 Apple は Swift API Design Guidelines という指針を提示しています。このガイドラインを読み解きながら、Swiftらしい良い命名について一緒に考えていきましょう。
このLTを通じて、パーフェクトでSwiftライクなグッドネーミングセンスを身につけられます!
LTで話すこと:
みなさんはCore Audioを利用してiOSで音声を扱ったことはありますか?
iOSではCoreAudioをはじめ、AVAudioPlayer/AVAudioRecorderやAVAudioEngineなどさまざまな音声を扱うAPIが存在しますが、どのAPIを使ってどのような音声処理ができるのか?を語られることは少ないと思います。
このセッションでは、オーディオデータの取得と処理技術、リアルタイム録音技術、再生技術を学び、iOSアプリケーションのオーディオ機能を強化するための実践的な例とベストプラクティスを紹介します。
本セッションを聴き終わった際にはあなたもiOSで音声処理を試してみたくなることでしょう
Swiftで組み込みシステムが開発できるようになると、どのような環境でもSwiftの強力な言語機能を活用できます。これにより、開発の効率性やコードの再利用性が向上し、多くの開発者にとって魅力的な選択肢となります。
これまで、Swiftは組み込みシステムなどのベアメタル環境で利用することが難しいとされてきました。しかし、最近では組み込みシステム向けのSwiftが登場し、新たな可能性が広がっています。
従来、組み込みシステムの開発は主にC言語が使われていましたが、現在ではSwiftでの実現も近い将来の話ではありません。
このトークでは、以下の内容をお伝えし、皆さんがSwiftで組み込みシステムを開発するための第一歩を踏み出せるようにサポートします。
プロジェクトを進めていると、時折奇妙なバグに遭遇することがあります。。
今回のプレゼンテーションでは、最近出会った興味深いバグをいくつか紹介し、その解決策についてお話しします。
これらのバグはすべて、私たちのミステリーと挑戦の精神を刺激し、コードの再考を促すものでした。
他にも興味深いバグがいくつかあり、その詳細についても触れます。
このような興味深いバグを通じて、私たちはコードの特異性を発見し、より良いソリューションを見つけることができました。
このプレゼンテーションでは、これらの挑戦的なバグに対する解決策と学びを共有し、共に成長する機会を提供します。
CarPlayとは車載ディスプレイでナビゲーションや音楽の再生が行えるものです。運転中に使用されることが多いため、CarPlayアプリは運転を妨げず、安全で使いやすい設計が求められます。
このトークでは、AppleのHuman Interface Guidelines(HIG)やプログラミングガイドを読み解き、ナビゲーションを行うデモアプリを通じて、使いやすく運転者にとって安全なCarPlayアプリの魅せ方を紹介します。
LTで話すこと:
・HIGから考えるCarPlayの最適な見せ方
・CarPlayアプリのパフォーマンス最適化
・実例で比較する安全な表示
iOS開発者なら誰しも一度は目にする、デフォルトの青いTint Color。この色が選ばれた理由について、考えたことはありますか?本トークでは、その裏に隠された秘密を探ります。
まず、Appleのデザイン哲学や他OSとの比較、歴史的な経緯に基づき選択の理由を明らかにしていきます。次に、青色が持つ視覚的な特性について、色彩理論や人間の視覚に関する研究を交えながら、なぜ青色が適しているのかを探ります。
このトークを通じて、Appleのデザイン哲学やその背後にある考え方を深く理解することができるようになります。そしてデフォルトの青色を軽視せず、その価値を再評価することで、より洗練されたデザイン選択ができるようになるでしょう。
「Simulatorアプリでマウススクロールを使えたらいいな」
普段アプリ開発をしている中で、このようなことを思ったことはありますでしょうか?
Simulatorアプリで画面をスクロールするには、マウスのドラッグ&ドロップで操作する必要があります。
慣れてしまえばなんてことないですが、マウスをいちいち動かすのは地味に不便です。
本LTでは、この問題をmacOSのCore Graphicsの機能で解決していきます。
Core Graphicsを使えばユーザイベントを変換することができ、擬似的にSimulatorアプリ上でマウススクロールを使うことができます。
「Core Graphicsなんてグラフィック系のライブラリでしょ?」と思ったら大間違い。実はユーザイベントにも深い関わりがあるんです。
あなたの知らないmacOSのハック術、お教えします。
macOS上で動作するIMEを、Appleが公式で提供するInputMethodKitを利用して開発しました。
InputMethodKitでは主に、IMKInputController、IMKCandidates、IMKServerの3つのクラスを使って開発します。実際に開発をする中で、特にロジックが集中するIMKInputControllerのコードが肥大化していき、コードの見通しが悪くなるという問題に直面しました。
そこで、この問題を解決するためにThe Composable Architecture(TCA)を導入しました。
本セッションでは、これらの開発体験をもとに、InputMethodKitでよく使う項目に対しての解説と、UIKit/SwiftUIを使用していないコードに対してどのようにTCAを適用するかを中心に発表します。
スクロール。
それはUI操作の核とも言えるジェスチャーの一つであり、それを実現するためのフレームワークもまたiOSアプリ開発において欠かせない存在です。
しかし、SwiftUIのScrollViewはiOS13で登場した当初、非常に使いづらいものでした。
基本的なスクロールの機能は提供されていたものの、カスタマイズ性に乏しく、UIScrollViewで実現できた多くの動作を再現することは困難でした。
しかし時は2024年。iOS17の登場でScrollViewも進化を遂げました!
このセッションでは、iOS17で追加されたmodifierを中心に、SwiftUIのScrollViewがどのように進化したのかを具体的な例を交えてご紹介します。
このセッションでは、数値を文字列に整形する際に陥りやすい落とし穴について、具体例を交えて紹介します。
例えば、以下のような関数でパーセンテージの文字列を得ようとする場合を考えます。
func percentStr(_ rate: Double) -> String {
let value = floor(rate 1000) / 1000
let percentValue = value 100
return "(percentValue)%"
}
これを print(percentStr(0.523)) として実行すると、どのような出力が得られるでしょうか?
実際の出力は 52.300000000000004% となります。予想できましたか?
このセッションでは、数値を文字列に整形する際に私が陥った落とし穴について解説します。
具体的な内容は以下の通りです。
1.浮動小数点数の精度問題:
なぜ浮動小数点数がこのような誤差を生じるのか、その理由と背景について説明します。
2.NumberFormatterの活用:
NumberFormatterを用いた解決策を紹介し、どのように実装するかを具体的に示します。
このトークを通じて、皆様が同じような問題に直面した際の参考になれば幸いです。
iOS16(iPadOS)以降に提供させれているSwiftAPIであるRoomPlanはすごい速度でお部屋をスキャンしてミニチュアハウスを作れます。
普段地図や位置情報で楽しく遊んでいる私が、どのように自身の活動にiOSのアプリ作成を取り入れ、RoomPlanにより作成したデータを利用しているかを5分で話し切ります。
モバイルアプリケーションを専業とされている方のみならず、測量や建築、環境デザインに携わっている方など周辺領域に広く届くように、アプリケーション構築が気軽に行えることをお伝えすることもテーマの一つです。
旅行先でもスキャンがしたくてたまらないようなモバイルスキャン星人を増殖させます。
Swiftでテストを書く際、Xcodeに組み込まれたテストフレームワークである XCTest を利用することが多いかと思います。しかし、XCTest は当初、Swift ではなく Objective-C でテストを書くことを目的として作成されました。そのため、Swift5.5 から導入された Swift Concurrency への対応が不十分であるという問題点があります。
そこで登場したのが新しいテストフレームワークである SwiftTesting です。
SwiftTesting は、非同期プログラミングをより効果的にテストできるように設計されており、Swift6 からはこのフレームワークの利用がデフォルトになると考えられています。
このLTでは、以下の内容について紹介します。
・SwiftTesting と XCTest の違い
・SwiftTesting への移行作業
・SwiftTesting を使用する際のベストプラクティスとトラブルシューティング