MicroViewController
という仕組みを導入したことで我々はメンバーの誰もが経験したことのない開発速度とスケーラビリティを手に入れました。
「10人規模で画面の開発が可能」「全てのVCとVMは500行未満」「手軽に値レベルで実現可能なMock」「50のVCで構成される一画面」
MicroViewController
を取り入れた画面設計について、我々のベストプラクティスを紹介します。
Xcode 10 から Swift 4.2 に変更となりますが、変更点のチェックはお済みでしょうか?
CfPを出す現時点で Swift 4.2 には 18個の Proposal が実装されています。
本トークでは時間の許す限りで、すべての Proposal についてその解説を努めていきたいと思います。
SNS系のアプリのほとんどはチャット機能を持っています。
しかし、チャット機能の実装はUXを求め始めると難しく、複雑になっていきます。
「順番が狂う」「送信完了までメッセージが表示されない」「受信されない」「重い」など
データが蓄積されていくチャットのような機能はどのように実装すべきなのかをお話しします。
varとletはSwiftコードを書く上で頻繁に使い、それぞれの特徴を理解してコードを書くことが重要です。しかし、実は適切な使い方をしていなくてもSwift Compilerがあるべき姿に最適化しています。このトークでは、Swift Compilerの最も重要な役割のひとつであるSIL(Swift Intermediate Language)を見ながらどのような最適化が行われているか紹介します。
「HTTPS化していればセキュリティ対策は十分」などと思っていませんか?
HTTPS化していても、無線LANやネットワーク機器にセキュリティ対策がなされていないと、中間者攻撃によって通信が盗聴・改ざんされるリスクがあります。これを防ぐ方法として、不正なSSL証明書を検知するピン留めという手法があります。
本発表ではピン留めを実装する手順、またSSL証明書の更新の際に気をつけることを紹介します。
Swiftには実行するメソッドを効率的に決定する機構があります。
しかし、静的型付け言語であるにも関わらず動的に決定せざるを得ないパターンや、finalやprivateなどの修飾子がパフォーマンスに影響するパターンなど、実際にはどのような動きをしているのでしょうか。
このトークではSwiftコンパイラの中からその疑問を紐解いていきます。
Swiftで記述されたiOSアプリでも、grpc-swiftを利用してgRPC通信をある程度手軽に利用可能になります。
gRPCを利用すると、通常の通信を行うよりも通信速度は速く通信量も少なく済み、更には双方向での通信を行うことができます。
今回は、gRPCの概要、grpc-swiftの導入方法、実際にプロジェクトで利用する際の応用的なことや、grpc-swiftにコントリビュートしたときの経験談などをお話させていただきます。
UICollectionViewに複数の種類のセルがある場合、どのセルがいつ表示されるのか把握するのが難しくなります。この問題を解消する手段の1つには、コンテンツの宣言的な定義が考えられます。
このトークでは、はじめにコンテンツの宣言的な定義の実現方法を説明します。続いて、宣言的な定義を導入した時のコードの見通し、レイアウトの役割分担、差分更新、アニメーションなどの面におけるメリットとデメリットを解説します。
iPhone にプリインストールされているアプリの中でも、 Music アプリの Modal Transition が良い感じですね。Githubなどで探してみると、ほぼ完全に再現してみせているライブラリやサンプルコードがいくつかあるのですが、コードを見てみるとすごく難しそうな印象が…。そこで、Musicアプリのような Modal Transition をより簡単に再現する方法を模索してみて、得られた知見をお話します。
アプリの中の複雑な状態はステートマシンなどを導入することで管理しやすくなります。
しかし、コードだけを見ても流れが分かりにくかったり、状態遷移図を作ってもコードに合わせて更新していくのが面倒だったり、継続したメンテナンスは大変です。
このトークでは、シンプルなステートマシンとSourceKit・Graphvizなどのツールを使ってコードから状態遷移図を自動で生成する仕組みを作り、継続的にメンテナンスしやすくする方法をお話しします。
強化学習は機械学習の一種で、試行錯誤を通じて「環境における価値を最大化するような行動」を「エージェント」が学習します。強化学習が例えばゲームでうまく機能した場合、次第にゲームの打ち方は開発者の手を離れ、エージェントは開発者自身よりもずっと強くなっていきます。発表では、強化学習の概要、及びSwiftで強化学習をどのように実装できるのか、そして、AlphaGoで注目を浴びた深層強化学習とは何か、について解説します。
TableView, CollectionViewの部分更新の為に、RxDataSources, IGListKitなど、多くのライブラリが開発されて来ました。
それらの内部では、効率的な差分検出のために差分アルゴリズムが使われています。作る側はもちろん、使う側もその原理について理解しておくことは重要です。
今回、Myers, Heckelの2種類の差分アルゴリズムについて解説させて頂きます。
Swiftの型システムを実装するSemaモジュールはswiftcの中でも1番巨大で複雑ですが、普段お世話になっているTypeCheckerの動きがわかるようになったらSwiftへの理解が一歩深まりそうですし、なにより型の話って楽しいですよね!!
このトークではSemaの実装をチョット読めるようになることを目標に、Swiftの型システムがもつ特徴を「型システム入門」や実際の実装を参考にしながら簡単に解説します。
私の現在担当しているアプリケーションはファーストリリースから早5年が経過しようとしています。
しかし、ユーザの求めるサービス、そして何よりUI/UXへの期待値は5年前とは比べ物にならないくらいに上がりました。
ユーザの期待を裏切らない為に、我々iOSチームがfpsを一つの指標に置いてUI/UX改善の為に行っている事、またこれから改善していきたい事についてお話します。
Swiftの生みの親、クリス氏によって2017年8月にプロポーザルasync/await for Swiftの下書きが公開されました。その内容はコルーチンサポートで、我々はSwiftで非同期処理をより使いやすく読みやすいコードを書けるようになります。このトークはその内容を理解するために、様々な言語で使われるasync/awaitの比較分類、Swift3から使えるasync/awaitライブラリの利用例とその内部実装を解説します!
apollo-ios や GraphQLSwift/GraphQL といったライブラリを使うと、GraphQL を使ったクライアントアプリや GraqhQL サーバを実装することができます。
このトークでは、クライアントとサーバの両面から GraphQL について触れつつ、ライブラリを利用した実装方法や実際にプロジェクトで利用した際の注意点などをお話できればと思います。
プロジェクトが大規模化していくと、さまざまな業務を自動化したくなってきます。同時にロジックが増え、特定の人しかメンテできなくなったFastfileにお悩みの方も多いでしょう。
このトークでは、実際の活用事例を交えながら、大規模プロジェクトにおける効果的なFastfileの書き方、プロジェクトの雑務自動化についてをお話しします。
そのほか、fastlaneコミッターによる明日から使える実践的なtipsも数多くお伝えします。
東急ハンズのレジは内製開発のiPadアプリで動いています。
そんなレジ用アプリはアプリ間で様々な情報を交換しています。
レジ間を飛び交う通信内容や通信方式の現在に至るまでの変遷を紹介します。
iOS11から可能になった画面収録で生放送機能を実装し、サービスインするまでの実装