Swift 6.0 への対応を進める中で、Combine の実装を async/await に置き換えたいと感じる場面が増えてきたのではないでしょうか。2022年にAppleが公開したOSSである Swift Async Algorithms を使用することで、時間経過に伴う処理を async/await で記述できるようになりました。
Swift Async Algorithms は、 Combine のように様々なオペレーターを利用しつつ、非同期処理を for-in ループで実装することができる強力なライブラリです。これにより、より直感的で Swift らしいコードを書くことが可能になります。
本LTでは以下の内容について紹介します。
・Swift Async Algorithms と Combine の比較
・Swift Async Algorithms を用いた時間経過処理の結合方法
・Swift Async Algorithms の便利な API の活用法
スマートホームとは、家の中の家具や家電をインターネットに繋いで可視化・操作できるようにする技術です。AppleはiOS 8でこれを実現するための「ホーム」アプリと「HomeKit」を発表しました。
照明をはじめとしたHomeKit対応アクセサリは、「ホーム」アプリに簡単に追加でき、操作が容易であるという魅力があります。
しかし、発表から数年が経過しても、国内のHomeKit対応のアクセサリの数は依然として少ないままです。最近では、複数のメーカーがそれぞれのアプリで操作するスマートホーム製品を発売しています。
HomeKit対応製品の少なさや各メーカーの専用アプリに依存してしまうことから、「ホーム」アプリによるスマートホームの導入を諦めてしまった方も多いのではないでしょうか。
このLTでは、「ホーム」アプリによるスマートホーム環境の構築を諦めきれない一人のApple信者が、HomeKit非対応アクセサリでも「ホーム」アプリに追加して操作するためのOSS"Homebridge"と新しいスマートホーム規格"Matter"を紹介します。
またそれぞれの技術の実際の使用例を交えながら、現状できることや得意・苦手なことを説明して、今からスマートホームを始める際のおすすめの方法を解説します。
これを聴けば、Appleのスマートホームに関する最近のトレンドや課題が分かるようになります。
突然ですが、皆さんはSNSアプリケーションを3週間の短い期間で作り上げる挑戦をしたことはありますか?
私が所属する某企業では、新卒研修の一環として、この「SNSアプリケーションの開発」が出題されました。
しかし、Firebaseなどのサーバーレス開発ではなく、クライアント、サーバー、インフラ、ML/DSの職種を活用した開発です。
私が所属する某企業では、新卒研修の鬼門として「SNSアプリケーションの開発」が出題されました。
開発期間が短いため、戦略として「機械的反復的なコードは自動生成に任せ切ろう!」という方針のもと最新技術を積極的に採択していきました。
本セッションではより短い期間で品質を担保しつつアプリケーションを開発するための技術的tipsを紹介します。
具体的には、以下の導入からメリット、デメリットと苦戦したことについて解説し、短期間でのアプリ開発でとるべき技術戦略を紹介します。
本セッションを通じて、個人開発や小規模開発におけるを最適解を見つけましょう。
近年、CocoaPodsからSwift Package Manager(SPM)に移行したプロジェクトが増え、Firebase iOS SDKでもSPMでのみ利用可能なバージョンがリリースされました。新規開発においても、CocoaPodsを使わずにSPMのみでパッケージ管理を行うケースが増えています。
SPMの利用頻度が高まる中で、初めて自作ライブラリをSPMで導入する方法について解説します。具体的な手順やコード例を交えながら、SPMの利便性と自作ライブラリの開発プロセスを理解することで、開発効率をどのように向上させるかについて詳しく説明します。
本トークでは、以下の内容を話します。
・ 自作ライブラリを開発するメリット
・ 初めての自作ライブラリをSPMで導入する方法(具体的な手順とコード例)
・ 開発中に直面した課題とその解決方法
WWDC23で密かに公開されたTestFlightの新機能、「TestFlight Internal Only」をご存じでしょうか?
この機能を利用することで、誤ったIPAファイルが本番環境にリリースされるのをシステム的に防止できます。
しかし、TestFlight Internal Onlyを有効に活用するためには、さまざまな設定が必要です。
本トークでは、私が実際に経験した大規模サービスでのCI/CD環境構築の実例を交え、
TestFlightとCI/CDツールとの連携部分にも焦点を当てながら、安全で安心なCI/CD環境の構築方法をご紹介いたします。
具体的には、以下のポイントについて詳しく解説します。
本トークを通じて、皆さんが安全で安心なCI/CD環境を構築する上でのヒントを提供できればと期待しています。
また、皆さんが考える安全で安心なCI/CD環境についても一緒に考察していきたいと思います。
あなたのアプリ、カメラを使った認証機能(QRコード読み取り、本人確認書類)搭載されてませんか?
もし搭載されている場合、実は裏でこんな問題が発生しているかも知れません。
それは、
『iPhone14Pro移行のデバイスで近距離撮影のピントが合わなくなってしまう問題』です!
iPhoneが搭載するレンズはUI以外にも変化を遂げており、実は世代やモデルによってカメラのフォーカス位置、広角から超広角にスイッチする距離などが異なります。
iPhone11の登場によりPro以上の上位モデルにはトリプルカメラが搭載されるようになってから5年の月日が経ちますが、実は年々撮影最短距離も変わってきています。
そんな中、実際発生した14Pro移行のピントが合わなくなってしまう問題をケーススタディとして、原因と対応策について解説していきます。
このセッションではカメラレンズの歴史に触れつつ、具体的には以下の内容に触れていきます。
本セッションを通じて、普段触れないレンズの挙動について詳しくなりませんか?
iOSにおけるSwiftUIやAndroidにおけるJetpack Composeの利用拡大でモバイルアプリ市場における宣言的UIフレームワークの利用拡大は増加の一途を辿っている道半ばでしょう。
宣言的UIフレームワークの利用が拡大することで現代フロントエンドの進化やエッセンスがモバイルアプリ界隈にも徐々に取り入れられ、さらなるハイブリットが生まれることも推測できます。
2021年中頃から末にかけてJetpack Compose / SwiftUIに「Atomic Design」と呼ばれるデザイン手法を実験的に採用された事例が増えていたことも記憶に新しいです。
フロントエンドのエッセンスがモバイルアプリ界隈に取り入れられることで
「WebアプリもモバイルアプリもTypeScriptで実装したい」というニーズが出てくるのは自然なことだと思います。現在であれば React Navive + TypeScript が最有力候補です。
しかし、私は「Nuxt Ionicを用いて Nuxt + Vue.jsで開発することも出来る」という一石を投じたいと考えています。
本登壇にて「モバイルアプリ開発でもNuxtという選択肢をあなたへ」提示したいと思います。
登壇者情報: フロントエンド開発をメインとし、Nuxtのコントリビューターなどをしています。LTの味変枠としてお聞き頂きたいです。
WWDC23の「Meet StoreKit for SwiftUI」にてアプリの課金実装をSwiftUIで簡単に実現できるAPIが紹介されました。これまで開発ハードルが高かったアプリ内課金の実装が、誰でも簡単にできるようになっています。
本LTでは、ProductViewを使用してミニマムでアプリ内課金を実装する方法を紹介します。特に、個人でアプリをリリースしているが課金機能の実装はまだ経験がない方々に向けて、この新しいAPIを活用し、手軽に課金機能を追加する手順を説明します。
モバイルアプリケーションの開発において、スクリーンショットはユーザーエクスペリエンス(UX)向上のための貴重なリソースです。従来は主にApp StoreやGoogle Play Storeでのプロモーションに利用されてきましたが、実はスクリーンショットにはさまざまな使い道があります。
本トークでは、スクリーンショットの新たな活用法に焦点を当て、開発者やデザイナーがアプリのユーザー体験を向上させるためにどのように活用できるかを紹介します。
具体的には、以下のポイントについて詳しく解説します。
プロモーション以外でのスクリーンショットの活用法
• ユーザーフィードバックの収集
• UI/UXデザインの改善提案
• アプリ内ヘルプやチュートリアルの強化
実際の活用事例とベストプラクティス
• スクリーンショットを活用して成功したアプリの具体例
• スクリーンショットを効果的に使用するためのテクニック
• 参加者が自身のプロジェクトで即座に適用できる実践的なアイデア
本トークを通じて、参加者はスクリーンショットがどのようにユーザー行動の解析やUXの向上に役立つかを理解し、自身のアプリに取り入れることが可能になることでしょう。参加者の皆様にとって、実際のプロジェクトに役立つ具体的なヒントやアプローチを提供することを目指しています。
ARC(Automatic Reference Counting)は、Swiftのメモリ管理の基盤として知られています。
ARCは、オブジェクトの参照カウントを追跡し、メモリリークを防ぐために重要な役割を果たします。
しかし、ARCの一般的な説明だけでは、「どういう仕組みなのか」「どのように動作するのか」を完全に理解するのは難しいことがあります。
本件はARCの詳細な動作原理を深く掘り下げ、実際の使用例を通して理解を定着させることを目的としています。
基本的な仕組みとしては以下になります。
・オブジェクト作成時に参照カウントが1に設定
・参照時: 他の変数がそのオブジェクトを参照するたびにカウントが増加
・参照解除時: 参照が解除されるとカウントが減少し、カウントが0になるとオブジェクトが解放
ただし、ARCも所詮はプログラムです。
ARCには詳しく見てみると、命令は大きく分けて以下の5つの操作があり、それらの命令の組み合わせで実現しています。
この命令群は、どのように実装すればどういうふうに動いてARCを実現しているのか?
メモリの状態はどうなるのか?
最後に、どのようにstrong、weak、unownedを選定すべきか?
これらの、わかった気になっていたARCから完全にわかったARCに変える話をします
近年、ゲーム市場では高品質な3Dゲームが主流ですが、落ち物パズルゲームをはじめシンプルな2Dゲームも支持されています。また、有名ゲームエンジンのインストール料金が発表されたことで、サードパーティ製エンジンに依存しない開発の価値が再認識されつつあります。そこで、今こそApple純正の2Dゲーム開発フレームワークである「SpriteKit」が注目される時代が来たと考えています。
本トークでは、大乱闘な百人組手ゲームの開発を例に、SpriteKitを使用した2Dアクションゲーム開発の実践的なテクニックを3つのポイントに絞って紹介します。具体的なトピックは以下の通りです。
このトークを通じて、SpriteKitを用いたアプリ開発のアーキテクチャ、接触判定、UIの実践テクニックを学ぶことができます。
参加者の皆様にはApple純正のSpriteKitを用いた2Dゲーム開発の魅力と実用性を感じていただき、次世代のヒット作を生み出す手助けができれば幸いです。
「アジャイル開発ってよく聞くけど、実際にはどうすればいいのかよくわからない・・・」
昨今、アジャイル開発を取り入れる現場が皆さんの周りでもかなり増えているのではないでしょうか。今やアジャイル開発はエンジニアとしても無視できない状況となってきています。
しかし、「私はただ開発さえできればいいんだ!XcodeだけがTOMODACHI。」と考えるエンジニアも少なくないと思います。そんな皆さんに向けて、アジャイルな現場での立ち回り術を紹介します。
本トークでは、アジャイルの中でも最もよく使われるスクラムフレームワークをベースに、アジャイルなプロジェクトでどのように立ち回るとプロジェクトから重宝されるか、ひいてはプロジェクトが成功するかについてお話しします。プロジェクトの成功に貢献したいiOSエンジニアの皆さんに、スクラムマスターの観点からコツを解説します。
アクセシビリティに配慮したUIを作成するのは、難しいと思っている方は多いのではないでしょうか?
そう思っているみなさん、Developer ToolのAccessibility Inspectorを使用したことはありますか?
Accessibility Inspectorとは、アプリのUI で発生した一般的なアクセシビリティ問題についてのフィードバックを提供してくれるツールです。
このLTでは、Accessibility Inspectorを使用した以下のようなフィードバックに対する解決方法についてお話しします。
・ 要素の説明:各要素のアクセシビリティラベル(コンテキスト固有の説明的なラベル)を提供しているかをチェック
・ ヒット領域:要素のサイズが小さすぎて人が操作できないかどうかをチェック
・ コントラスト比:重なり合う要素間の色のコントラストが十分かどうかをチェック
・ Dynamic Type:アプリ内のテキストが Dynamic Type をサポートしているかどうかをチェック
個人開発のアプリでAccessibility Inspectorを使用した経験を踏まえて、Accessibility Inspectorを活用したアプリのアクセシビリティ向上方法について紹介します。
弊社では、1週間に1度のサイクルで継続的にアプリをリリースする運用を続けていましたが、リリースに関わる作業が機能開発の時間を奪っているという課題がありました。そこで、状況を改善すべくGitHub Actionsを利用した自動化に取り組み、一定の効果を得ることができました。
当初は改善の効果を感じていましたが、運用を続ける中で新たな課題も見えてきました。このセッションでは、新たに発生した課題を解消するために、どのような取り組みをしたのか?についてお話しします!
話したいこと
・現状のリリースフロー
・新たな課題と改善したこと
・改善後のリリースフロー
・まだまだ改善したいこと
ただ、現状では打ち手だけが見えている状態で、修正し、運用に乗せるところまでできていません・・・このセッションをきっかけに「登壇駆動開発」で動き出したいと考えています。
初心者iOSエンジニアにとって、サーバー周りの知識や環境構築はハードルが高いと感じていませんか?この課題を乗り越えるために、 昨年リリースされたVSCodeのポートフォワーディング機能を使って簡単にサーバーレスでユニバーサルリンクを実装する方法を設定手順からデモ、応用事例まで紹介します。
来年からDynamic Linksが廃止されるため、スマートバナーへの移行が急務となっています。
この変化に迅速に対応するためには、新しい技術とツールを活用することが重要だと思います。
個人開発はもちろん、チーム開発でもバックエンドの準備を待たずにスマートバナーの実装を進められるため、開発スピードを加速させる可能性を秘めています。
サーバーの複雑さに悩まされることなく、iOS開発をもっとスムーズに進めましょう。
アプリサービスを運営する中で次の施策を検討する際には、Google Analytics for Firebase 等のアプリ測定ソリューションを使用してデータ分析することが多いです。アプリからイベントを送信して蓄積し、あとで SQL 等で分析できるソリューションですが、イベント送信の実装は注意深く行う必要があります。特に iOS アプリと Android アプリの両方がリリースされており、コードベースが異なる場合、実装差異に注意する必要があります。
実装差異を防ぐ方法の1つに Firebase のコンソールを利用した iOS / Android エンジニア間の相互確認があります。しかし表示に遅延が生じるため、細かい条件やタイミングが同じかどうかを確認するのは困難です。そこで、私たちのチームではイベントを送信するとすぐにその内容をアプリに表示するデバッグ機能を開発しました。この機能は、ユーザから見えるアプリの表示を崩さないようにオーバーレイ(最前面に半透明)で表示され、必要に応じてドラッグで移動できます。
この LT では、このデバッグ機能開発の経緯と iOS での実装方法を解説します。これにより、ユーザから見えない内部実装で iOS / Android 間の差異が発生することへの対策をしたいモバイルエンジニアに向けて、開発体制構築のヒントを提供することを目指します。
ObservationとSwiftマクロは、WWDC23で発表された新機能です。ObservationはSwift 5.9から導入されたデータ監視の新しいフレームワークです。Observationは対象の型にObservableマクロを付与することで、簡単に値監視可能なコードを生成し、これまで以上にシンプルなモデルを作成することができます。
Observationがどのようにプロパティを監視しているのか?に焦点を当て、Observableマクロの生成するコードを展開し、Swiftマクロで生成されたコードの解説を行います。
このLTでは、以下の内容をお話します。
・ Observationの概要
・ Expand Macroで、Observableマクロの生成するコードを展開し、のぞいてみよう!
・ 展開したObservableマクロの生成するコードの解説(Observableマクロ・ObservationTrackedマクロ・ObservationIgnoredマクロ)
・ 計算プロパティを初期化する新しい方法(SE-0400 Init Accessors)
Observationの裏側で生成されているSwiftマクロの世界がどのように広がっているのかを共有できれば幸いです。
無料5分で、ディレクトリ構造の重要性や実際にプロダクトを整理した時の流れが分かる「ライトニングトーク」。
掛けた時間は40時間を突破!
効果もすぐわかると大人気だ。
CHECK!
あなたのプロジェクト構造はきれいですか?
本トークでは私が担当しているiOSアプリのプロジェクトにおいて、どのような流れでソースコードディレクトリを整理できたのか、どのような知見を得られたのかを共有します。ちょっと関係なさそうで、実は大きく関係ある熱力学の法則「エントロピー増大の法則」から始まり、ここからどのように私がディレクトリ構造に向き合い、そして解決していったかについて紹介します。
本トークを通じて、あなたのディレクトリ構造も整理するきっかけにしませんか?
Unlock the Power of Query Parameters with Moya: Dive into the intricacies of crafting dynamic API requests using Moya, the elegant networking library for iOS development. Learn how to effortlessly handle arrays, dictionaries, and complex nested structures within query parameters. Sometimes the server side demands the app's native side pass these kinds of complex parameters. This knowledge is not written on the internet enough, so you must check out this session. Elevate your app's networking capabilities and streamline your code for maximum efficiency in just 5 minutes!
人類は数多のマルチ・クロスプラットフォームに夢を見てそして枕を濡らしてきました。
今宵、もう少し夢を見ましょう。
KotlinはJVM互換の言語かと思いきや、iOS・WebフロントなどのプラットフォームでもKotlinでかける技術「Kotlin Multiplatform(KMP)」のプロジェクトが始まり、つい最近Stableバージョンまでたどり着きました。
アプリ全体をKotlinにする必要は無く、ビジネスロジックの一部分だけの置き換えでも使えるというのが大きな特徴です。
また、Androidアプリ開発では、Googleが開発しているAndroid Jetpackと呼ばれるライブラリ群があります。
これらにはAndroidアプリでの推奨アーキテクチャを実現するためのライブラリ(ViewModel)やSQLラッパー(Room)などが存在します。
そして、これらのJetpackライブラリ群も最近KMPに対応したバージョンがどんどんリリースされており、iOSプラットフォーム上でも使えるようになっています。
このLTでは、そのようなKMP対応のJetpackライブラリの使い方を紹介します。
そして、KMPとJetpackライブラリを既存のiOSアプリに組み込むことで、Android側とどの段階までコードの共通化ができるのかを紹介します。
夢が現実になるといいですね。