Swift Concurrencyは、強力な型システムによって、同時並行処理時のデータ競合防止の静的な保証を目標としています。
しかし、クラッシュの発生や期待したスレッドで処理が実行されないなど、実際はさまざまな問題が起きます。これは、デフォルトではSwift6未満で完全なSendabilityチェックが行われない、既存のシステム(DispatchQueueなど)に対してコンパイラが静的に安全性を保証できない、などの原因が考えられます。
そこで、これを補完するための多くのツールが、公式から提供されています。
本トークでは、
「事前に防ぐ」
「問題をすぐに検知する」
「原因を調査する」
という3つのポイントで活用できる、さまざまなツールについて見ていきます。
Swift Concurrencyをより安全に利用し、既存のコードとよりスムーズに連携するためにできることを一緒に整理してみませんか?
iOS 16で登場したGridは、VStackやHStackを使用した従来の2次元のUIレイアウト手法に比べ、より柔軟かつ効率的なUIの実装を可能にします。特に異なるデバイスや画面サイズでの表示において力を発揮するでしょう。しかしながら、VStackやHStackを使用した実装で十分対応できているのにあえてGridを使う必要があるのか?既存の実装をわざわざGridに置き換える価値があるのか?という疑問を抱くかもしれません。
本トークでは、Gridを使用して実現できる様々な可能性、それぞれの実装方式におけるメリットとデメリットについて、同じデザインを従来のVStackやHStackの実装とGridを用いた実装で実現し、比較しながら考察していきます。
最近コロナの影響もあって最近話題の家庭菜園ですが、私もベランダで小規模に始めました
しかしいざ挑戦してみると以下の課題に直面しました
①水やりなどの管理が大変
②生育状況が把握しにくい
そんな困った時はテクノロジーで解決するのがエンジニアです!
今回はAppleの株だけでなく、Apple(りんご)の苗木まで買ってしまったiOSエンジニアがSwiftをベースにラズパイを使ったAppleなどの作物の家庭菜園IoT化への取り組みを共有します
具体的には…
①ラズパイを使って、対象の作物の画像を撮影する
②ラズパイで取得したセンサー情報を取得する
③作物への水やりの省力化
④ラズパイからFirebaseにデータを保存する
⑤作物の生育状況をiOSアプリ上から、Chartsなどを使用して、確認できるようにする
ぜひ皆さんもこれを機にiOS開発だけでなく、家庭菜園にもチャレンジしてみましょう!
新規事業を開始する際、技術選定は重要な意思決定の一つとなります。アプリ開発において、選択した技術は事業の成果を大きく左右する可能性があります。この記事では、昨年リリースした「クラシルリワード」のiOSアプリ開発における技術選定の過程を紹介します。
技術選定は新しい技術の採用可能性、チームメンバーのスキルセットなど様々な要因により変動します。今回のトークを通して我々の経験が、皆様の新規事業開発やアプリ開発における技術選定に役立てば幸いです。
OpenAPIを利用することでAPIの設計・ドキュメント化・テストなどを効率的に管理することが可能です。WWDC2023でのswift-openapi-generatorの登場により、iOS開発におけるOpenAPIの活用に新たな可能性が広がりました。このトークでは、実際のプロダクト開発におけるOpenAPIの利用事例として、API ClientのConcurrency化やRequestとResponseの自動生成などを取り上げます。また、swift-openapi-generatorの登場によって、Swift Package Pluginを使用したクライアント側のコード生成の自動化など、開発プロセスの変化についても解説します。
KotlinMultiplatformForMobileの導入によりアプリ開発者はビジネスロジックの差異という問題を乗り越える事が出来ましたが、一方で独自の問題も待ち構えています。
KMM内でerrorがthrowされそれがKMM内で適切にハンドリングされなかった場合にアプリはクラッシュし、おまけにそのクラッシュはkonan::abort()という一つのクラッシュに纏められてレポートされます。
どの処理でクラッシュしたか詳細なStackTraceは提供さておらず、この状態からクラッシュを解消するための道筋を立てる事は困難でしょう。
本セッションではそのような原因不明な闇のクラッシュに対し、起きる前後それぞれで出来ることを考えていきます。
40分拡大版ではそも何故Kotlin側でerrorがハンドリングされない設計になってしまうのか、検査例外に関する歴史を踏まえた考察もしていきます。
KotlinMultiplatformForMobileの導入によりアプリ開発者はビジネスロジックの差異という問題を乗り越える事が出来ましたが、一方で独自の問題も待ち構えています。
KMM内でerrorがthrowされそれがKMM内で適切にハンドリングされなかった場合にアプリはクラッシュし、おまけにそのクラッシュはkonan::abort()という一つのクラッシュに纏められてレポートされます。
どの処理でクラッシュしたか詳細なStackTraceは提供さておらず、この状態からクラッシュを解消するための道筋を立てる事は困難でしょう。
本セッションではそのような原因不明な闇のクラッシュに対し、起きる前後それぞれで出来ることを考えていきます。
ここ数年でCombineやSwift Concurrencyが登場し、WWDC2023ではObservationの発表もありました。
現在RxSwiftに代わる様々な選択肢があります。
一方で実際のプロダクトへの導入となるとOSバージョンの制約や学習コストなどの課題もあります。
CombineまたはSwift Concurrencyだけで対応する、何かと何かを併用する、そもそもリアクティブプログラミングが必要かなど結局どうすべきか悩んでいる方も多いのではないでしょうか。
このセッションでは、最新のトレンドや今後の展望を踏まえながら選択肢を比較し、スキルマーケット『ココナラ』アプリにおける具体的な導入方針についてお話します。
移行先の選択肢や考え方・テスト設計について具体的な例を学ぶことで、既存プロジェクトにおける移行や新規プロジェクト・個人開発でどの技術を用いるかの判断材料を得られます。
ついにSwift5.9からMacroが使用できるようになります。
SwiftのMacroはCのプリプロセッサマクロのように単純な文字列置換ではなく、ASTを元に任意のコードを展開することができるものです。
Macroの登場により、ボイラーテンプレートは消えさり、あなたのSwiftライフはより快適になること間違いなしでしょう。
そこで本トークでは、Macroを実装するのに必要なSwiftSyntaxの基礎をはじめ、さまざまなMacroの案を考え、実装していきます。
内容:
私たちのチームではSwift Concurrency対応やSwiftUIの導入に向けてFluxベースのアーキテクチャを脱却し、全面的なリアーキテクチャを進めています。
そんなチームである日突然リアーキ担当に任命された新卒2年目の私。
Swift Concurrencyヨクワカラナイ、大規模なプロジェクト初めての若手エンジニアがどのようにしてプロジェクトを推進したのか、その挑戦を5分で紹介します。
本トークでは若手がリーダーシップをとって大きなプロジェクトを推進する際の視点から、以下の内容に焦点を当ててお話しします。
バグのない安全なプログラムであることを確認する方法の一つに、UnitTestがあります。
適切に構築されたUnitTestがあれば、安全なプログラムであることを何度でも高速に確認することができます。
昨今ではXcode CloudなどのCI/CDツールの導入が容易になり、Unit TestをCI上で実行することでプロダクトの品質を高く保ったまま開発を進めることができます。
UnitTestはiOSエンジニアであれば比較的気軽に始められる一方、UnitTestでどこをテストしなければならないのかなど、テストに関する考え方を抑えておかないと適切にUnitTestが構築できない場合があります。
本セッションでは適切なUnitTestの構築のために必要なテスト戦略と、UnitTestの考え方についてお話し、実装について触れます。
皆様がUnitTestに少しでも興味を持っていただければ幸いです。
今日のモバイルアプリはログイン機能を持つものが多いですが、プロダクトの成長に伴って複数のソーシャルログイン機能を導入することは少なくありません。私たちが担当する出前館アプリもその一つです。
我々の今後の開発予定を考えると、ソーシャルログイン機能の改修が必要でした。しかし、その仕様に関するドキュメントやデバッグ方法のナレッジが不足している、という大きな課題がありました。そこで我々は各ソーシャルログイン機能に対してデバッグ作業を地道に進めつつ、ドキュメントの整備を進めました。
本セッションでは我々が取り組んだソーシャルログイン機能リファクタリングに関する苦労話とそれによって実現できた機能改善事例のご紹介をします。プラットフォームの特性上、iOSアプリはソーシャルログイン機能が増えやすい事情があると思います、同じような悩みを持つ方々の参考になれば幸いです。
アーキテクチャを使ってアプリを作る経験やテストを書いた経験がなく、どこか負い目を感じていました。
そんな僕がThe Composable Architecture(TCA)と出会い、学び、業務のアプリに導入したことで見える世界が変わりました。
TCA導入のビフォーアフターでどうコードの可読性が上がったか、どう迷いなくテストが書けるようになったかの感動をお伝えします。
界隈ではすでに多くの方々がTCAの良さを発信されていますが、ぜひ僕のようにアーキテクチャやテストについて何をどうやったらいいのかわからない方々に向けてお話ししたい内容です。
きっとあなたもTCAを触ってみたくなるはず!
初めまして!
株式会社ゆめみの2023年卒のFlutterエンジニアで、心理学系の大学院に通っていて、大学院では心理学の観点からVRの研究を行っております!!
私の趣味は、個人開発とサッカー観戦です!
Apple Vision Proは、Appleが初の空間コンピュータとして販売する発売予定の複合現実ヘッドセット型PCである。これは2023年のWorldwide Developers Conferenceで2023年6月5日に発表され、米国では2024年初旬に購入可能になる予定です。
今回のApple Vision Proの発表は世界に影響を与えるものだと私は思います。値段が高すぎるなどの意見もあると思いますが、機能面で見るととても納得できるものがあります。
心理学系の大学院生の視点からみたApple Vision Proの発売による世界への影響を話していこうと思います!!!
初めまして!
株式会社ゆめみの2023年卒のFlutterエンジニアで、心理学系の大学院に通っていて、大学院では心理学の観点からVRの研究を行っております!!
Apple Vision Proは、Appleが初の空間コンピュータとして販売する発売予定の複合現実ヘッドセット型PCである。これは2023年のWorldwide Developers Conferenceで2023年6月5日に発表され、米国では2024年初旬に購入可能になる予定です。
Apple Vision Proの機能がAppleから公開され、一部には他にはない機能が発表されました。VRのコンテンツの構想のなかで今回のApple Vision Proはとても革新的だと思っています。
このプロポーザルでは、心理学部の大学院生の視点からみたApple Vision Proの将来性とVRの発展について話していこうと思います。
はじめまして!
株式会社ゆめみの2023年卒のFlutterエンジニアで、同時に心理学の大学院生でもあるいせりゅーと申します。私の趣味は、個人開発とサッカー観戦です!
「FlutterはiOSに勝てないのか:クロスプラットフォームとネイティブのパワーバランス」では、FlutterとiOSネイティブの競争力を比較し、それぞれの特性nなどを掘り下げます。パフォーマンス指標(CPU使用率、メモリ使用量、レンダリング速度)を用いて両者を評価し、iOSネイティブの全機能がFlutterでも実現可能か、その逆が成り立つか明らかにします!
また、iOS特有の機能(例:Face ID、ARKit)がFlutterでどのように扱われるか、開発体験の観点からも比較します。このプロポーザルを通じて、読者はFlutterとiOSネイティブのパワーバランスについて深い理解を得られるような話をします!
Xcode15から搭載のSwift5.9において、C++ interoperabilityがついに正式にサポートされました。この機能によって、SwiftとC++を単一プロジェクトに混在させることが可能になります。今こそあなたの既存のC++コードを、読みやすく安全なSwiftコードに書き換える時だと言えるでしょう。
しかし現在のC++ interoperabilityには、継承および参照タイプのメモリ管理方法に対して制約が存在します。これは、現状仮想関数およびmove関数を扱うことができないことによるものです。
そこで本トークでは、現状どのようなケースであればC++ interoperabilityでSwiftへの段階的移行が可能であるかを解説します。現在の制約がC++からSwiftへの書き換えに与える影響を分析するとともに今後この制約がどうなっていくのかを考察していきます。
近年、ユーザデータ保護のためにデバイス上のユーザデータを暗号化した上で保存することが求められるようになりました。しかし、既存の大規模アプリにおいてデバイス上のユーザデータを暗号化するには制約があります。暗号化対応のためにデータにアクセスするアプリ内のコードを全て一気に書き換えることは現実的ではありません。また、暗号化の実装過程で生じるバグによってデバイス上に保存されたユーザのデータが失われることは許されません。
本トークでは、こうした制約下において安全にデバイス上のユーザデータの暗号化を行うために、copy on readやdouble writeポリシーを用いた戦略について、UserDefaultsを暗号化した事例をもとに説明します。
本トークによって、既存の大規模アプリにおいてUserDefaultsのようなデバイス上のユーザデータを安全に暗号化する方法を理解できるようになるでしょう。
はじめまして!!!
株式会社ゆめみの2023年卒のFlutterエンジニアで、同時に心理学の大学院生でもあるいせりゅーと申します。私の趣味は、個人開発とサッカー観戦です!!!
Flutterエンジニアとして、我々は頻繁に「iOS固有の機能」を再現する問題に直面します。本プロポーザルでは、これら独特なiOSの機能とFlutterの能力のギャップを詳しく分析し、明らかにします。具体的には、フレームワークやユーザー体験といった、Flutterが完全には再現できない機能について深く検討します。また、この比較を通じて、Flutterがどのようにこれらの制約を克服または回避するためのさまざまな手段や戦略を探求します。
Flutterエンジニア視点だからこそわかるiOSにしかできないことをしっかりと話していこうと思います!!!
私は個人で「20xx年の恵方コンパス」というアプリを約5年間運用しています。
名前の通りその年の恵方を示してくれるアプリで、2023年2月3日にはApp Storeの無料アプリランキング総合2位を達成しました。
しかしそれから数日経った頃「恵方」と検索した時の順位が一番下まで下がっていることに気づき、AppleからApple Developer Programのライセンス違反を警告するメールまで届きました。
そこには「App Storeのランキングやユーザーレビュー、検索結果などを操作している」との旨が記載されています。
無論そのどれにも心当たりはなく、そしてこのペナルティとして検索順位が下げられたのだと察し、メールへの返信やAppleへの問い合わせを行いました。
結果として現在は検索順位が回復していますが、それまでの間にAppleとどのようなやり取りがあったのかを本トークにて紹介します。