iOSDC Japan 2019 トーク一覧

採択 2019/09/07 14:20〜 Track A レギュラートーク(30分)

自作して理解するリアクティブプログラミングフレームワーク

y.imajo yimajo
WWDC19で発表されたCombine.frameworkはリアクティブプログラミングという言葉では発表されなかったものの、複雑になりがちなイベント処理をデータの流れとして統一的に扱い、イベントへ反応する処理を組み合わせる宣言的なコーディングを実現します。
このことによりCombine.frameworkは最近のリアクティブプログラミングのパラダイムに沿ったフレームワークと言えるでしょう。これに備え、我々はリアクティブプログラミングのパラダイムを仕組みから理解する時がやってきたのです。

このトークでは、現状のリアクティブプログラミングフレームワークであり広く普及しているRxSwiftを構成するソースコードを解説し、それを参考にテストコードを交えながら最小限の「偽・リアクティブプログラミングフレームワーク」をトークの中で作成していきます。

もちろん最小限の構成で理解を促進するものなので、非同期プログラミングのためのフレームワークとして本来は必須であるスレッドセーフ、メモリ管理、スケジューラの概念は捨てます。トキメかないので。


説明のため必須なものまで捨てられた「偽・リアクティブプログラミングフレームワーク」によって、今まで雰囲気で知っていた次のルールが心で理解できるはずです。

- Coldなストリームはなぜsubscribeされないと動作しないのか
- SubjectがObservable/Observerの性質を持つというのはどういう意味か
- ColdをHotなストリームに変換する具体的な方法
- Hotなストリームがsubscribeされても1回しかイベントを発生しないとはどういう原理か

本セッションの進行とともに、皆さんには「理解したわー。リアクティブプログラミング完全に理解したわー」という感想を持っていただければ幸いです。
採択 2019/09/07 14:20〜 Track B レギュラートーク(30分)

多言語対応と戦う 2019年版

matsuokah matsuokah_
多言語対応はLocalizable.stringsやXcodeのツールをうまく使うだけでは終わりません。
例えば、文字を装飾していたり、レイアウトやプレースホルダーの順番が変わるなどさまざまな課題があります。

このセッションでは実際に多言語対応するための運用フローやコーディングで気をつけるべきことを話します。

◯ 多言語対応の基本技術(Localizable.strings)
◯ 翻訳SaaSの導入
◯ NSAttributedStringでの装飾
◯ 画像に文字が入っている場合の対処法
◯ 多言語対応のデバッグ
採択 2019/09/07 14:20〜 Track D レギュラートーク(60分)

SwiftyMath で学ぶ数学(抽象代数学)

さのたけと taketo1024
iOSDC 2017 でのトーク「Swift で数学のススメ」から 2年を経て、 SwiftyMath は ver 1.0 となりました。
このトークでは SwiftyMath のコードをベースに、抽象代数学の入門として

・基礎的な概念である「群・環・体」
・具体例としての数(整数・有理数・実数・複素数)・行列・多項式
・剰余類環、中国剰余定理、代数拡大

などについて解説します。これらの概念は数学専攻で学ぶもので、初学者にはハードルの高いものですが、抽象的な公理を protocol として、具体的な対象を struct として実装したコードと合わせて解説することで、Swift に慣れている人ならスンナリと理解できるようになることを目指します。

Swiftで代数学入門: https://qiita.com/taketo1024/items/bd356c59dc0559ee9a0b
SwiftyMath: https://github.com/taketo1024/SwiftyMath
採択 2019/09/07 14:20〜 Track E レギュラートーク(60分)

すべての人のためのアクセシビリティ対応

akatsuki174 akatsuki174
あらゆる人が、あなたの提供するアプリの恩恵を受けられるように。
あらゆる人が、あなたの提供するアプリをより便利に使えるように。

アクセシビリティ対応と言うと特定の誰かのための対応だと思われ、優先度が低くなってしまいがちです。確かにアクセシビリティ対応は特定の誰かのための対応という側面もありますが、すべての人のための対応でもあります。いつも使っているアプリが、手を使わずに使えるようになったら。もっと使う手間を省けたら。夢は広がるばかりです。

「とはいえアクセシビリティ対応をしても一般ユーザは使ってくれないのでは?」そう思う方もいると思います。しかしアクセシビリティ対応で可能になることをきちんと理解して実装、広く告知をすれば、一般ユーザも便利に使えるような体験革命ができるかもしれません。

このトークでは、Appleがどのようなアクセシビリティ機能を提供しているのか、そして私たちiOSアプリ開発者はどのような実装を経て、どのような体験をユーザに提供できるのかについてお話します。

【目次】

・アクセシビリティ最新情報(WWDC2019 Keynoteより)
・設定 - 一般 - アクセシビリティから何ができるのか
・視覚のアクセシビリティ
 ・文字サイズの変更に耐えうるデザイン作り
 ・VoiceOverにきちんと対応するには
 ・アプリデザインとコントラスト
・聴覚のアクセシビリティ
 ・Siriはどこまでユーザを楽にするのか
・身体のアクセシビリティ
 ・Voice Controlに見るアプリの未来
採択 2019/09/07 15:45〜 Track A LT(5分)

俺たちのARKitでめちゃめちゃ表情豊かなVTuber向け表情トラッカーを作るぞ

hiragram hiragram
Animojiにも使われているTrueDepthカメラを使って3Dモデルの表情を動かす表情トラッカーを作りました。webカメラを用いて顔認識する他のシステムよりも精度高く、細かく、感情表現に必要な顔のパラメータを取得できるTrueDepthカメラの本気をお見せします。

表情トラッキングの精度以外にも、ARKitのおかげでバーチャルYouTuberを運用するにあたって地味に嬉しい機能をたくさん獲得しているので、プロデュースの現場の目線から面白おかしく紹介できればと思います。
25
採択 2019/09/07 15:50〜 Track A LT(5分)

iOS 12以下でDark modeに対応した地獄の話

かっくん fromkk
私が個人的に開発している# Typeというアプリには、iOS 13が発表されるより前にRxSwiftを利用せずにDark mode機能を導入しました。導入するにあたって、

- Dark mode機能の考え方
- 実装方法
- iOS 13以降への対応

を紹介します。その上で実際にアプリにDark modeを導入する際に発生した表示崩れ修正地獄についても紹介します。
採択 2019/09/07 15:55〜 Track A LT(5分)

Swiftのスタック変数とCPUレジスタの関係を読み解いた

rikusouda rikusouda
このLTはコードの解説というよりは体験共有に比重を置いたLTです

Swiftの関数内でIntのような型(struct)のインスタンスを確保すると、スタックのメモリ領域に格納されるということは過去のWWDCセッションでも語られています。「スタック」とはメインメモリ上の領域です。CPUが演算をするときには「レジスタ」という高速なデータ領域を利用します。メインメモリはCPUのレジスタに比べてとてもアクセス速度が遅いことが知られています。一般的には変数は「スタック」に確保することになっていますが、実際にはCPUレジスタを使って高速化したほうがよい気がしますよね? しているはずですよね? でも確証がありません。

決してSwiftコンパイラに詳しくない私は自分で調査するという発想になかなかならず、疑問を抱えたまま過ごしていました。
WWDC19に参加することができたので、かねてよりの疑問をのラボで聞きました。しかし直接の回答にはたどり着けません。いただいたアドバイスは「LLVM IRとかアセンブラ読むといろいろわかって面白いよ」と。
覚悟を決めて、LLVM IRやARM64のアセンブラを読みました。

雰囲気で「こう動いている気がする」と思っていたことが明確になり「Swiftわからない」という気持ちが減りました。そして、その過程はとても面白い体験となりました。

決してSwiftコンパイラに詳しくない私が、どのように結論にたどり着いたのかの体験を共有します。
採択 2019/09/07 16:00〜 Track A LT(5分)

モノレポで複数アプリをリリースする場合のGit運用戦略

GoogleやFacebookといった大規模開発では、モノレポと呼ばれる1リポジトリで複数のアプリケーションを運用するフローが取られており、実装の共通化が計れるなど、多大なメリットを享受することができます。
しかし、モノレポでの運用ではBitriseなどのCICDツールへの影響は大きな課題となります。
リリースフローのロジック、各種パラメータを分離するためには、どのアプリケーションへのリリースアクションなのかを正しくCIツール側がフックできるようにしなくてはいけません。
また、複数リリースフローが走った場合にhotfixは正しくmasterブランチに、場合によっては別のリリースフローに対しても反映させる必要があります。
本トークでは実際にチームで複数のリリースフローを同一レポジトリで共存させた経験から、その解決策を余すことなくお話しします。

- モノレポ戦略時のGitHubFlow、GitFlow、GitlabFlowへの影響
- モノレポ戦略時に起こりうる事故
- 運用フローでどうやってそれを防ぐか
採択 2019/09/07 16:05〜 Track A LT(5分)

SwiftUIでの開発に向けた我々が出来る既存アプリのリファクタリング

くろるり kuroruri
WWDC2019でSwiftUIが発表され、iOSアプリ開発の新たな時代が幕を開けようとしています。
しかしSwiftUIが使えるのはiOS13からです。では我々はiOS12が世間一般から退場するまで何も出来ないのでしょうか?
そんなことはありません。来るべきSwiftUIでの開発に向けて我々が間違いなく行うべきことが1つあります。それはリファクタリングです。
このLTでは来るべきSwiftUIでの開発に備え、我々が今から出来る既存アプリのリファクタリングを大きく分けて3つ紹介します。
- UI開発のコンポーネント思考化
- プレゼンテーションとドメインの分離
- 依存性注入の導入
そしてなぜこれらを行うべきか、Appleが公式に一般公開しているSwiftUI Tutorialsの中から特に以下のトピックに注目しつつ、解説します。
- Use UIKit and SwiftUI Views Together
- BindableObject / EnvironmentObject
- PreviewProvider
採択 2019/09/07 16:10〜 Track A LT(5分)

ARKitの壁認識で、壁にぶち当たった話

shibatom shibatom_dev
ARKitってうまい具合に、床や壁を認識してくれるんでしょ?

そんなふうに考えていた時期が私にもありました..。

壁にARで仮想のポスターを貼るアプリを開発する際に
ぶち当たった壁。それは壁の認識。

「ほ と ん ど の 壁 は 特 徴 量 が 少 な く て 認 識 で き な い!」
※ ARKitの水平面、垂直面認識には一定以上の特徴量が必要です。

では、どうやったら壁にARでポスターを貼れるのか….。

文字通り壁の為に、壁に向き合い続けた1ヶ月間で得られた
ARKit開発にまつわるTipsや教訓を5分でまとめてご紹介します。

【対象の方】

- そろそろARKitにちょっと触れてみたい
- ARKitの床、壁認識の方法に興味がある
- ARKitのUI事情に興味がある
- ARKitで仮想の壁をつくる方法に興味がある(ニッチ)
15
採択 2019/09/07 16:30〜 Track A LT(5分)

iOSDCのプロポーサル判別器をつくろう

Daiki Matsudate d_date
今年もiOSDCのプロポーサルを考える季節がやってきましたね。一人でたくさん応募できるので、たくさん書くぞ!と息巻きます。かといって、たくさん出すのは骨が折れます。もし、採択されるかどうか事前にわかれば…?

このトークでは、iOSDC4年分のプロポーサルを使って、判別機を作成し、実際に採択されるか判別してみます。
採択 2019/09/07 16:35〜 Track A LT(5分)

Write the "code", Change the world. 〜エンジニアと法律〜

niwatako niwatako
iOSエンジニアが転生してブロックチェーンエンジニアになりました。
と思いきや、私はいま、暗号資産関連の法改正に向けて、法律を学び、調査報告や提言、要望を作成しています。
これは、アプリケーション開発の前の、開発環境構築の前の、社会環境構築です。
プログラムも法律も"Code"です。どちらも世界を変えるものでしょう。
Write the "code", Change the world.
日本は民主主義です。ソースコード以外にも、私達が世界を変えるためにコミットできるコードがあります。
Coinhiveやアラートループが逮捕されるこんな時代だからこそ、私達がすべきコミットがあるのではないでしょうか。
採択 2019/09/07 16:40〜 Track A LT(5分)

Getting Started with Swift WebAssembly

kateinoigakukun kateinoigakukun
巷ではServer Side SwiftやSwift for TensorFlowが盛り上がっていますが、Swift on WebAssemblyにも大きな動きがありました。しかし、SwiftのWasm対応は、まだまだKotlin NativeやRustに遅れをとっている状態です。LLVMをバックエンドに採用しているSwiftならシュッと対応できそうですが、なぜここまで難航しているのでしょうか?
このトークではSwift on Wasmのランタイムがどのように実現されているか「軽く」お話しします。
採択 2019/09/07 16:45〜 Track A LT(5分)

これデフォルトで作れないんだ!?を解消した話

m-naruse
要求通りに従順に作るエンジニアとプロジェクトをしていると、
「これってデフォルトの機能じゃないんだ..」「この動き作るのってそんなに辛いの..?」
と後からデザイナーが知る、ということがたまにあるのではないかと思います。
また、UISearchBarを使えばいいところを細かい見た目の要求を守ろうとすることでUITextFieldを使ってみたり、
UILabelじゃなくてあえてUIButtonで実装したりなども経験のあるエンジニアもいるのではないかと思います。
この辺りは認識の差をなくせば解決できる問題であり、
デザイナーにある程度周知することで、裏で変に頑張るエンジニアを減らせるのではと考えています。
このトークでは、
「(おそらく)あるあるな辛いデザイン要求」を順に見て考察しながら、技術面、コミュニケーション面含めどのように解決したのかについて話したいと思います。¥
また、それに伴って開発した、UIレシピブックアプリについても公開しようと思います
採択 2019/09/07 16:50〜 Track A LT(5分)

フィードやチャットのスクロールを全力でなめらかにする

Hiroshi Shikata dotrikun
UICollectionViewやUITableViewでセルの高さが可変なフィードやチャット画面を作る機会は多いと思います。

そして作ったものを動かしてみると、スクロールが微妙にカクつきがあることに気づきます。

InstagramやFacebookアプリのフィードはなぜあんなになめらかにスクロールできるのか?

5分で実装方法をお話します!
採択 2019/09/07 16:55〜 Track A LT(5分)

令和時代のゲームボーイ開発 👾

ぎぎにゃん giginet
1989年に発売したゲームボーイは、今年30周年を迎えました。
そんな今だからこそ、実機で動くゲームボーイ開発をしてみましょう!

30年の時を経て、ゲームボーイが最新の技術で蘇ります。
  • 1
  • 2
  • 3
  • 4 (current)
iosdc-japan-2018 sponsors iosdc-japan-2018 potential-sponsors 開催後請求
ブースWL 要支払確認 要モノクロロゴ
仮採択 採択しない Rookie
仮採択 採択済 保留 情熱加点 採択しない 前夜祭 目玉 ルーキーズLT参加
Order#確認 アンケートメール不要