開発時間に占めるデバッグ時間の割合は少なくないため、この時間の短縮は開発速度を上げるためにとても重要です。この発表では、実際の中規模なアプリ開発で70%増もの開発速度向上を支えたデバッグノウハウを初心者にもわかりやすく紹介します。
このノウハウには、効果が高いデバッグの5W1Hの解説や、リビルドなしでデバッグする方法、便利なライブラリの紹介を含みます。開発速度が気になっている方はぜひ聞いてみてください!
ユニットテスト書いてるけど、イマイチしっくり来ないな...
ログ取り一応やってるけど、コレでいいのかな...
これらの悩みが、MVIアーキテクチャの採用によって一気に解決しました。
話すこと (予定)
・MVIアーキテクチャとは?
・実例 iOSで実装するMVI
・実装量が増えがちなアーキテクチャの時短術
・MVIでのテスト戦略
・MVIでのログ取り
複数のiPhoneを、連携させたことがありますか?
一面にならんだ数十台のiPhoneにシンクロナイズドスイミングのような全く同じ表示をさせる……単純に見えますが、実は技術的にはとても高度なテクニックを必要とします。
フレームレート60fpsのiPhoneで、ぴったりあった動作を実現するためには端末間に許されたずれは、16ミリ秒以下。
これを実現するには、どんな要素技術、どんな設計、どんなテクニックを使えばよいでしょうか。
メルカリの新アーキテクチャー”MicroViewController”にReduxライクステートが導入されましたが、そのステートの副作用管理問題に悩まされた時期もありました。副作用を優先すべきケースと優先すべきでないケースの明確化、プロパティーの順序を意識することなく安全なステート変更の保証など、上手く副作用を管理する仕組みのThunkBagをこのトークで紹介致します。
Swiftで記述されたiOSアプリでも、grpc-swiftを利用してgRPC通信をある程度手軽に利用可能になります。
gRPCを利用すると、通常の通信を行うよりも通信速度は速く通信量も少なく済み、更には双方向での通信を行うことができます。
今回は、gRPCの概要、grpc-swiftの導入方法、実際にプロジェクトで利用する際の応用的なことや、grpc-swiftにコントリビュートしたときの経験談などをお話させていただきます。
Firebase の RealTime Database に代わるものとして、昨年10月に発表された Cloud Firestore 。未だベータ版ですが、そちらを弊社マッチングアプリ「タップル誕生」に導入して、運用している話をしたいと思います。すでに出来上がっているシステムにどうやって組み込んだのか、どのくらい簡単なのか、リスクヘッジはどうなってるか、などのお話をしたいと思います。
iOSのARKit、AndroidのARCore、それぞれ特徴は似ていますが本来別々で実装する必要があります。ですが、Unityを利用することでAR体験に必要なロジック等をできるだけ共通化させることができます。
このトークでは、Unityを利用したARの開発方法から、マルチプラットフォーム向けのARアプリを作るための方法などをUnityの前提知識なしでも分かるように紹介します。
QuickとNimbleというテスト用ライブラリを知っていますか?XCTestをラップし、テストコードをより楽しく、より効率的に書けます。これらはSwiftとObjective-Cの両方から使え、またSwiftPMにも対応し、Linux(サーバーサイドSwift)でも使えます。
コアコントリビューターが、このMixed LanguageかつCross-Platformという特徴をどのように実現・メンテナンスしているかを解説します。
「HTTPS化していればセキュリティ対策は十分」などと思っていませんか?
HTTPS化していても、無線LANやネットワーク機器にセキュリティ対策がなされていないと、中間者攻撃によって通信が盗聴・改ざんされるリスクがあります。これを防ぐ方法として、不正なSSL証明書を検知するピン留めという手法があります。
本発表ではピン留めを実装する手順、またSSL証明書の更新の際に気をつけることを紹介します。
タブレット型端末の中でもトップシェアを占めているiPad端末は、現在私たちの日常において無くてはならないものになっています。
私が担当したiPadリニューアル対応では、主要ページの回遊率が2倍、画面によっては3倍に向上しました。
このトークではiPadの縦・横画面対応やiPhoneと異なるUIを導入した話も交えながら、
iPadに最適化した際の設計やテクニックについてお話します。
varとletはSwiftコードを書く上で頻繁に使い、それぞれの特徴を理解してコードを書くことが重要です。しかし、実は適切な使い方をしていなくてもSwift Compilerがあるべき姿に最適化しています。このトークでは、Swift Compilerの最も重要な役割のひとつであるSIL(Swift Intermediate Language)を見ながらどのような最適化が行われているか紹介します。
東急ハンズのレジは内製開発のiPadアプリで動いています。
そんなレジ用アプリはアプリ間で様々な情報を交換しています。
レジ間を飛び交う通信内容や通信方式の現在に至るまでの変遷を紹介します。
運用段階のサービスで新規の機能実装した場合などに、QAテスト時にログの発火ミスなどのバグがあがってるくことがしばしばあるかと思います。
そこで画面操作に合わせたログの発火テストを自動化する試みをしました。
はじめはXCUITestで実装してみましたが様々な壁にぶつかったため、途中から方針を変えてUnitテストで実装することにしました。
本トークでは、実装する上での問題点や改善方法について話して行きたいと思います。
アプリ運営者はユーザに役立つ情報を届けるためにプッシュ通知を使っています。
しかし、一介のアプリユーザとして考えたとき、プッシュ通知はあまりいい印象がありません。届きすぎてうるさかったり、とどいた情報があまり役立たなかったりするからです。
このトークではどういう風にすれば、通知を許可してもらえて、長く使ってもらえるのかをiOS12で追加された機能も盛り込みつつサンプルコードを紹介しながら考えていきます。
Firestoreはアプリの命である「データ」を扱うBackend as a serviceの1つです。
先日私達はこのFirestore+Firebaseプラットフォームをすべてのバックエンドに使いサーバーレスなiOSアプリを開発しました。
その体験をもとに「まるでローカルDBを取り扱うように」Webバックエンドの連携を実現するFirestoreが持つシンプルで柔軟なデータストア層についてお話しします。
非同期処理のコードを改善するために、Swiftに適した形のasync/awaitがCore Teamから提案されています。iOSアプリは非同期処理のかたまりです。async/awaitの導入はiOSアプリ開発に大きな影響を与えると予想されます。本トークでは、提案の文書を元にiOSアプリ開発がどのように変わりそうかを説明します。また、実際にコードを書く演習時間を設け、iOSアプリ開発におけるasync/awaitを習得してもらいます。
差分更新のテクニックを使うと,IndexPathを持ち回ることなく,UITableViewの必要な箇所のみ挿入・削除できるようになります。
これはいつでも採用できる手法なのでしょうか? 0~5000行で変化するテーブルビューにも使えるでしょうか?
このトークでは主にトータルの更新パフォーマンスにフォーカスして,5000行規模の差分更新を実用的な速度にするために必要な,ボトルネックの解析と遭遇するトレードオフについて紹介します。
iOS 12の発表を機に、iOS 9やiOS 10などの古いiOSのサポート終了を考えている方も多いと思います。
サポートバージョンはできるだけ少なくして開発コストを減らし、iOS 12対応に集中したいですよね。
このトークでは、古いiOSのサポート終了を考える際の、
色んなアプリを使っていて「メニューがなぜモーダル表示?ドロワー表示の方が良いのでは?」など、UIに疑問を覚えたことありませんか?
しかしUIを考える側になってみると、ユーザからUIの指摘を受けるなんてこと、よくあるのではないでしょうか。
私はWWDC18に参加してAppleのデザイナーに直接質問してきました。そこで得た知見をもとに「〇〇の場合に理想的なUIは△△ではないか」という話をしたいと思います。