SwiftUIのNavigation APIは「Tab, Alert, Sheet, Navigation Link...」など様々な種類が存在し、OSによるインターフェースの変化も激しいです。
また、これらのAPIを利用して画面遷移を実現する際には多くの選択肢があり、画面遷移が増えれば状態管理も複雑になります。
このトークでは、そんなSwiftUI Navigationについて以下の内容で発表します。
・SwiftUIのシンプルな画面遷移と状態駆動型の画面遷移について俯瞰
・状態駆動型の画面遷移の利用時に起きる状態の不整合、不要な状態の管理を改善するswiftui-navigationの手法
本トークではPoint-Free製のswiftui-navigationを深掘ることによって、よりSwiftUIのNavigationについて理解できるようになることを目指します。
人間にとって、健康は日々の生活においてとても重要です。
エンジニアにとって、新しい技術のキャッチアップは日々の開発を行う上でとても重要です。
いつも物事が長く続かなかった私が、健康と新しい技術のキャッチアップ、この両方のモチベーションを1年間保ち続けて得たことを紹介します。
以下のテーマをお届けします。
複雑なユーザーデータを扱うには、アプリ内データベースを使うことは避けられません。
皆さんはどんなデータベースをお使いでしょうか?
iOSで用意されているCore Dataは、OSのバージョンアップごとに、SwiftUIやDiffable Data Sourceを使う上でとても便利で強力な機能が追加されているなど、iOSアプリを開発する上でとても便利です。
しかし、その一方であまりフィーチャーされてない機能、「これどうやって使うんだ」な説明不足な機能があるのも事実です。
「何となく使いづらそう」「他のもので十分」な人も多いかと思います。
そんなCore Dataに関して「こんなこともできますよ」な魅力に溢れた様々な機能を説明していくトークになります。
「へー、こんなことができるんだ」や「使えそう」などとちょっとでも思っていただければ幸いです。
iOSアプリで使うデータベースとしては、RealmやCoreDataが有名です。
特にRealmを使ったことがある方は多いのではないでしょうか。
本トークではSwiftUIにRealmを導入して実装する上での知見をお伝えし、みなさんがこの構成でアプリを作るまでの第一歩をサポートします。
昨年、RealmはアップデートでSwiftUIとの親和性が高くなりました。
その結果、データ・バインディングを行うViewModelを開発者が実装しなくても、ViewとModelさえあればアプリを作ることができるようになっています。
どのようなアップデートがされたのか、なぜViewModelに相当するものが不要なのかを解説します。
新しくなったRealmを活用するととても便利なのですが、現状注意しなければならない問題もあるためその回避方法も合わせて説明します。
・x86_64 と arm64
・Rosetta から Rosetta2 へ
・CPU アーキテクチャ変更2回目の Apple
皆さんは現在利用している Mac の CPU アーキテクチャをご存知でしょうか?アーキテクチャと言っても MVVM とか Clean Architecture のようなソフトウェアアーキテクチャではなく、命令セットアーキテクチャと呼ばれるものになります。
例えば、Intel であれば x64, Apple Silicon であれば ARM が命令セットアーキテクチャです。
本稿では Apple Silicon を中心に CPU に関する歴史を文系・理系関係なく楽しんでいただけるようにご紹介します。
日頃使っている開発環境がどのようなハードウェア設計のもとで動作しているかを知ることで、Apple の素晴らしいハードウェアが更に好きになること間違いなしです!
・手元で再現できない
・心当たりのないクラッシュ
・何ヶ月も触ってない行でクラッシュ
このように嫌な予感がする現象に皆さん一度は遭遇したことがあるのではないでしょうか。
そして、調査手順次第ではもっと早く原因特定できたのに…と悔しい思いをしたこともあるかもしれません。
そこで、本稿では効率的な原因探索方法を図を用いて解説いたします。
・直近でアプリのリリースがなければサーバ側の調査(GCP を例にご紹介)
・スタックトレースと合わせてクラッシュ直前のログも確認
・外部要因が疑われる場合は Twitter を活用
などなど
このような調査手順に絶対的正解は存在しないため、チームでも属人化しがちな箇所ではないでしょうか。
そこで、本稿を元にチームでアレンジを加え、秘伝のタレとして育ててみてはいかがでしょうか?ドメイン知識の薄い新メンバーも爆速で難問解読のプロになること間違いなしです!
iBeaconと連携するアプリの機能実装は簡単そうに見えて、やってみたら意外と難しい、という経験がある人は何人かいらっしゃるでしょう。
そうiBeaconを使った機能の実装は意外と難しいのです。
開発環境ではきちんと動いたので安心していたのに、実際にビーコンを動作させる環境で動かしてみると期待通り動かない、なんてのはよくある話です。
そうなる原因は電波環境の違いという見えない罠が存在することです。
その罠に気がつくのが遅くなるほど、開発に致命的な影響が出て慌てふためくことでしょう。
本LTでは後から慌てる状況にならないため、iBeaconを扱う機能を実装し始めるよりも前に知っておきたいテストのTipsをお話します。
※iBeaconと言ってますがAndroid側でのBLE実装も視野に入れた一般的な話をする予定です
プログラマーの三大美徳の一つと言われる怠惰さを一番発揮しやすい場所はどこでしょうか?
それはCICDを含む自動化の仕組みの構築にあると思います。
ソフトウェアの開発においてCICDはもはや必須です。
ではCICDで得られるものはなんでしょうか?
それは我々が余分な仕事をしなくて済む時間です。
例えば、アプリをビルドするのに自分のPCを何十分も専有され、その間コードは一行も触れないなんてのは嫌なのです。
そんな時間があるなら我々はもっと他にやりたいことがあるのです。
面倒なことは機械が勝手にやって欲しいのです。
本セッションでは今まで面倒な仕事を勤勉にこなしてきた人が明日から怠惰に過ごせるよう、普段の仕事を自動化していくための考え方と進め方についてお話します。
そして導入した仕組みをコスト的に効率良く運用するためにどうすればいいか、導入した後の改善法についてもお話します。
【概要】
Google I/O 2022にてFirebaseの新機能が発表されましたがその中でもiOSのSDKが正式にSwift対応となりFirebase Apple SDK 9.0.0となって発表されました。
今回は特にその中でもよく使用される認証機能のAuthenticationとデータ管理機能のFirestoreについて、何が良くなったのかサクッと5分でご紹介したいと思います。
【目次】(予定)
・Firebase Apple SDKの概要
・Authenticationは以前と比べて何が良くなったのか
・async/awaitに対応した実装例の紹介
・Firestoreは以前と比べて何が良くなったのか
・async/awaitに対応した実装例の紹介
・Codableに対応した実装例の紹介(ベータ版でなくなった話)
・所感
何らかの形でiOSDC Japanに貢献したいので、パンフレットを盛り上げる奇妙で陽気なイラストを描きます。
昨今、エンジニアの働き方としてリモートでの働き方も多くなりました。皆様はどんな働き方をしていますでしょうか?
今回は、「まだ世の中には存在していないだろうけど、こんなリモートワークスタイルもあったらいいのでは?」をいくつかピックアップしてイラストにします。
共感出来ないこと、間違いなし!!!!!
我々はプロダクトをより成長させるために、我々は常にユーザーの行動ログを元に検証し、仮説をたて次の改善に繋げています。
ですが、ユーザーの行動ログを実際に運用し始めるとログに関する仕様書が作成、更新されていなかったり、各職種とログに対する認識齟齬が発生したりと様々な問題が発生します。
我々はこれらを解決すべく、普段ドキュメントやタスクの管理で使っているNotionを活用しログ仕様書の作成とコードの自動生成を実装し運用しています。今回はその実現方法と得られた恩恵についてお話します。
東急株式会社・東急電鉄株式会社では東急東横線や田園都市線などの鉄道をより便利にお使いいただくために「東急線アプリ」を提供しています。
このLTでは
など
普段知る機会の少ない鉄道のテクノロジーとiOSアプリでの活用についてご紹介します。
iOSDC Japan 2019、2020と続けて発表している『iOSではじめるWebAR』の最新版です!
そんなに毎年目新しい発表はあるの?と思われる方がいるかもしれませんが、例えばひとつ大きなトピックを挙げるなら『iOS 15.4でWebXR Device APIに“限定的に”対応』しました!さてそれでどうなったのか?それからどうなったのか?
この1年間の関連するアップデートを振り返りつつ、SafariにおけるWebARの動向をお伝えします。
具体的には次のようなトピックスを想定しています。
RealityKitはWWDC2019で発表されたARのレンダリングフレームワークです。年々機能も改善されています。
今回は、そのRealityKitでMetalを書いてカスタムシェーダーをレンダリングしてみようと思います。
カスタムシェーダーを書けるようになればRealityKitでできる表現の幅が広くなると思います。
サンプルとして顔認識を行い、顔の表面にカスタムシェーダーをかけるアプリをつくりました。
このアプリのソースコードを使いながらRealityKitとMetalの連携の仕方、カスタムシェーダーの書き方を紹介できればと思います。
内容:
RealityKitとMetalを連携する大まかな流れ
Metal側のコード
Swift側のコード
Appleのカスタムシェーダーのドキュメント紹介
このLTを聞いて少しでもRealityKitに興味を持っていただければ嬉しいです。
Swift5.5で登場したSwift Concurrencyは、非同期処理を簡潔で安全に扱える機能です。主な機能は既に追加済ですが、現在も新しい機能の追加や改善が行われています。
今回は、この1年で見られた進化や実装上のTipsなどを紹介します。また、Swift6以降に既存のコードが動かなくなるリスクを最小限に抑えるための段階的導入方法など、ちょっと先の未来についても見ていきます。
例:
これからConcurrencyをもっと使ってみようと思っているみなさまのお役に立ちましたら幸いです。
アプリがネットワークなど外部サービスを通じてデータをやり取りすることはもはや当たり前になっています。
そのデータの代表的な形式としてJSONがあり、これはSwiftではCodableを通して簡易に変換することができます。
しかしデータ形式というものはJSONに限らず様々なものがあり、例えばXMLもその一種です。
「iOSにはXMLParserというものが用意されているから、ドキュメント見ながら実装すれば余裕っしょ」
もし、そのドキュメント通りに動作しなかったらどう思いますか?
このトークは、XMLを処理するにあたって、XMLParserを中心に、iOSでできること、できないことを洗い出していかに効率的に処理ができるかを突き詰めるトークとなります。
Reactの思想であるLearn Once, Write Anywhereを推し進めるため、React内部にはReactをどこでも動かせるようにするreact-reconcilerというパッケージが存在します。
react-reconcilerはReact DOMやReact Nativeで利用されているUIの差分検出処理のパッケージで、JSXで書かれたコンポーネントのマウントや更新通知を受け取れます。これを使って独自のレンダラーを作ってみましょう。
このトークでは、react-reconcilerのレンダラーをSwift(UIKit)で実装して自分だけのReact Nativeを作る方法について話します。
「Feel free to cut a new tag/release」
(自由にリリースしていいよ)
こちらはある著名ライブラリへPull requestを送ったときに、突然言われた言葉です。
私はこの言葉とともにコラボレーター(共同開発者)へ招待され、自由にリリースできる権限を与えられました。
「なんで、私がコラボレーターに!?」
このライブラリは海外の著名な企業が提供しています。
海外で何の実績もない私がいきなりコラボレーターに招待され、何が起きたか理解できませんでした。
しかし慌てません。
最初のコメントへ冷静に :+1: の絵文字を付け、リリースを試みることに…
そこで経験したこととは!?
本トークでは、私が著名ライブラリのコラボレーターとしてどんな感じで動き、何をしたかざっくり紹介します。
私と同じく、突然コラボレーターになって慌てている人にオススメです。
iOSアプリ開発でよくあること(俗にいう「あるある」)を4コママンガでめちゃくちゃ面白く表現します。
一昨年に続き昨年もXcodeがインストールできなかったので、今年こそ実際の開発のあるあるが言いたいです。
昔はiOSのJailBreakはよく行われていましたが、最近はiOSのアップデートによりJailBreakは少なくなったような印象です。
とはいえ何もしないのではなく、やれることはやっておいたほうがいいと思います。
本LTでは、JailBreakはどのような手段があるのか、アプリはどのような対策ができるのか、自分なりに調べた結果を共有したいと思います。