採択
2018/08/31 11:20〜
Track A
レギュラートーク(30分)

MicroViewControllerで無限にスケールするiOS開発

tarunon tarunon

MicroViewControllerという仕組みを導入したことで我々はメンバーの誰もが経験したことのない開発速度とスケーラビリティを手に入れました。
「10人規模で画面の開発が可能」「全てのVCとVMは500行未満」「手軽に値レベルで実現可能なMock」「50のVCで構成される一画面」
MicroViewControllerを取り入れた画面設計について、我々のベストプラクティスを紹介します。

採択
2018/08/31 11:20〜
Track B
レギュラートーク(30分)

Swift 4.2 はどのような進化をしているのか

tobi462 Yusuke Hosonuma

Xcode 10 から Swift 4.2 に変更となりますが、変更点のチェックはお済みでしょうか?
CfPを出す現時点で Swift 4.2 には 18個の Proposal が実装されています。
本トークでは時間の許す限りで、すべての Proposal についてその解説を努めていきたいと思います。

採択
2018/08/31 11:20〜
Track C
レギュラートーク(30分)

リアルタイム革命

Keisuke69 西谷圭介

チャットに代表されるリアルタイムなアプリケーションを皆さんはどのように開発していますか?リアルタイムな双方向通信をサポートするソリューションを利用したり、Socket.ioなどを用いてWebSocketで自前で構築するなどあると思います。本セッションでは新たなクエリ言語として注目されるGraphQLのSubscriptionを用いる方法をGraphQLのマネージドサービスであるAWS AppSyncとあわせてご紹介します。

採択
2018/08/31 13:30〜
Track A
レギュラートーク(30分)

安定したチャットを実現するためのアプリとAPI設計

muukii0803 muukii

SNS系のアプリのほとんどはチャット機能を持っています。
しかし、チャット機能の実装はUXを求め始めると難しく、複雑になっていきます。
「順番が狂う」「送信完了までメッセージが表示されない」「受信されない」「重い」など
データが蓄積されていくチャットのような機能はどのように実装すべきなのかをお話しします。

採択
2018/08/31 13:30〜
Track B
レギュラートーク(30分)

Swift Compilerの最適化入門 - AllocBoxToStack編

kitasuke Yusuke Kita

varとletはSwiftコードを書く上で頻繁に使い、それぞれの特徴を理解してコードを書くことが重要です。しかし、実は適切な使い方をしていなくてもSwift Compilerがあるべき姿に最適化しています。このトークでは、Swift Compilerの最も重要な役割のひとつであるSIL(Swift Intermediate Language)を見ながらどのような最適化が行われているか紹介します。

採択
2018/08/31 14:20〜
Track A
レギュラートーク(30分)

iOSアプリ内で不正なSSL証明書を検知する

kobakei122 kobakei

「HTTPS化していればセキュリティ対策は十分」などと思っていませんか?
HTTPS化していても、無線LANやネットワーク機器にセキュリティ対策がなされていないと、中間者攻撃によって通信が盗聴・改ざんされるリスクがあります。これを防ぐ方法として、不正なSSL証明書を検知するピン留めという手法があります。
本発表ではピン留めを実装する手順、またSSL証明書の更新の際に気をつけることを紹介します。

採択
2018/08/31 14:20〜
Track B
レギュラートーク(30分)

コンパイラから紐解くSwift method dispatch

kateinoigakukun 家庭の医学

Swiftには実行するメソッドを効率的に決定する機構があります。
しかし、静的型付け言語であるにも関わらず動的に決定せざるを得ないパターンや、finalやprivateなどの修飾子がパフォーマンスに影響するパターンなど、実際にはどのような動きをしているのでしょうか。
このトークではSwiftコンパイラの中からその疑問を紐解いていきます。

採択
2018/08/31 14:20〜
Track C
レギュラートーク(30分)

grpc-swiftを使ってiOSアプリでも快適なgRPC通信を行う

KyoheiG3 Kyohei Ito

Swiftで記述されたiOSアプリでも、grpc-swiftを利用してgRPC通信をある程度手軽に利用可能になります。
gRPCを利用すると、通常の通信を行うよりも通信速度は速く通信量も少なく済み、更には双方向での通信を行うことができます。
今回は、gRPCの概要、grpc-swiftの導入方法、実際にプロジェクトで利用する際の応用的なことや、grpc-swiftにコントリビュートしたときの経験談などをお話させていただきます。

採択
2018/08/31 15:10〜
Track A
レギュラートーク(30分)

宣言的UICollectionView

_ishkawa ishkawa

UICollectionViewに複数の種類のセルがある場合、どのセルがいつ表示されるのか把握するのが難しくなります。この問題を解消する手段の1つには、コンテンツの宣言的な定義が考えられます。

このトークでは、はじめにコンテンツの宣言的な定義の実現方法を説明します。続いて、宣言的な定義を導入した時のコードの見通し、レイアウトの役割分担、差分更新、アニメーションなどの面におけるメリットとデメリットを解説します。

採択
2018/08/31 15:10〜
Track C
レギュラートーク(30分)

MusicアプリのTransitionを再現する

kzmsngd Nagado

iPhone にプリインストールされているアプリの中でも、 Music アプリの Modal Transition が良い感じですね。Githubなどで探してみると、ほぼ完全に再現してみせているライブラリやサンプルコードがいくつかあるのですが、コードを見てみるとすごく難しそうな印象が…。そこで、Musicアプリのような Modal Transition をより簡単に再現する方法を模索してみて、得られた知見をお話します。

採択
2018/08/31 16:00〜
Track A
レギュラートーク(30分)

Swiftコードから状態遷移図を自動で生成し、継続的にメンテナンスしやすくする

yaso_san 八十嶋祐樹

アプリの中の複雑な状態はステートマシンなどを導入することで管理しやすくなります。
しかし、コードだけを見ても流れが分かりにくかったり、状態遷移図を作ってもコードに合わせて更新していくのが面倒だったり、継続したメンテナンスは大変です。
このトークでは、シンプルなステートマシンとSourceKit・Graphvizなどのツールを使ってコードから状態遷移図を自動で生成する仕組みを作り、継続的にメンテナンスしやすくする方法をお話しします。

採択
2018/08/31 16:00〜
Track B
レギュラートーク(30分)

iOSと(深層)強化学習

yuky_az 我妻幸長(Yukinaga Azuma)

強化学習は機械学習の一種で、試行錯誤を通じて「環境における価値を最大化するような行動」を「エージェント」が学習します。強化学習が例えばゲームでうまく機能した場合、次第にゲームの打ち方は開発者の手を離れ、エージェントは開発者自身よりもずっと強くなっていきます。発表では、強化学習の概要、及びSwiftで強化学習をどのように実装できるのか、そして、AlphaGoで注目を浴びた深層強化学習とは何か、について解説します。

採択
2018/08/31 16:50〜
Track A
レギュラートーク(30分)

差分アルゴリズムの原理について

horita_yuya horita-yuya

TableView, CollectionViewの部分更新の為に、RxDataSources, IGListKitなど、多くのライブラリが開発されて来ました。
それらの内部では、効率的な差分検出のために差分アルゴリズムが使われています。作る側はもちろん、使う側もその原理について理解しておくことは重要です。
今回、Myers, Heckelの2種類の差分アルゴリズムについて解説させて頂きます。

採択
2018/08/31 16:50〜
Track C
レギュラートーク(30分)

Swiftの型システムに入門する - lib/Semaの歩き方

ukitaka_ ukitaka

Swiftの型システムを実装するSemaモジュールはswiftcの中でも1番巨大で複雑ですが、普段お世話になっているTypeCheckerの動きがわかるようになったらSwiftへの理解が一歩深まりそうですし、なにより型の話って楽しいですよね!!

このトークではSemaの実装をチョット読めるようになることを目標に、Swiftの型システムがもつ特徴を「型システム入門」や実際の実装を参考にしながら簡単に解説します。

採択
2018/08/31 17:40〜
Track A
レギュラートーク(30分)

レガシーなアプリケーションの60fps化を目指す為にやっていること

satoshin21 Satoshi Nagasaka

私の現在担当しているアプリケーションはファーストリリースから早5年が経過しようとしています。
しかし、ユーザの求めるサービス、そして何よりUI/UXへの期待値は5年前とは比べ物にならないくらいに上がりました。
ユーザの期待を裏切らない為に、我々iOSチームがfpsを一つの指標に置いてUI/UX改善の為に行っている事、またこれから改善していきたい事についてお話します。

採択
2018/08/31 17:40〜
Track B
レギュラートーク(30分)

Swiftの生みの親によるasync/await for Swiftを徹底解説し、新しい非同期処理の手法を理解する

yimajo 今城 善矩

Swiftの生みの親、クリス氏によって2017年8月にプロポーザルasync/await for Swiftの下書きが公開されました。その内容はコルーチンサポートで、我々はSwiftで非同期処理をより使いやすく読みやすいコードを書けるようになります。このトークはその内容を理解するために、様々な言語で使われるasync/awaitの比較分類、Swift3から使えるasync/awaitライブラリの利用例とその内部実装を解説します!

採択
2018/08/31 17:40〜
Track C
レギュラートーク(30分)

GraphQL on Swift

bird_tummy tummy
このトークはスピーカー都合でキャンセルになりました

apollo-ios や GraphQLSwift/GraphQL といったライブラリを使うと、GraphQL を使ったクライアントアプリや GraqhQL サーバを実装することができます。
このトークでは、クライアントとサーバの両面から GraphQL について触れつつ、ライブラリを利用した実装方法や実際にプロジェクトで利用した際の注意点などをお話できればと思います。

20
採択
2018/09/01 11:20〜
Track A
レギュラートーク(30分)

詳解Fastfile

giginet ぎぎにゃん

プロジェクトが大規模化していくと、さまざまな業務を自動化したくなってきます。同時にロジックが増え、特定の人しかメンテできなくなったFastfileにお悩みの方も多いでしょう。

このトークでは、実際の活用事例を交えながら、大規模プロジェクトにおける効果的なFastfileの書き方、プロジェクトの雑務自動化についてをお話しします。
そのほか、fastlaneコミッターによる明日から使える実践的なtipsも数多くお伝えします。

採択
2018/09/01 11:20〜
Track B
レギュラートーク(30分)

東急ハンズのP2Pレジ間通信2018

r_plus taiki komaba

東急ハンズのレジは内製開発のiPadアプリで動いています。
そんなレジ用アプリはアプリ間で様々な情報を交換しています。

レジ間を飛び交う通信内容や通信方式の現在に至るまでの変遷を紹介します。

採択
2018/09/01 11:20〜
Track C
レギュラートーク(30分)

二癖くらいある画面収録からの生放送

matsuokah_ matsuokah

iOS11から可能になった画面収録で生放送機能を実装し、サービスインするまでの実装

  • 生放送のするまでの全体フロー
  • RPBroadcastSampleHandlerおよび、画面収録のExtensionのライフサイクルについて
  • 画面のサンプリングタイミングと生放送の特性について
  • SampleBufferの差し替えによる、生放送中の動画の動的な編集
  • 動画データの検証ポイント