iOSDC 2018 ノート

# Day 01
## ARKitのための3D算数

思ったより（甘いね〜）算数が必要だった。使ってみたいです！

## Working in a multi-cultural environment with a global app

グローバルなアプリはどんな問題が現れるのか？

国によってユーザーrequirementは違う

問題解決は:

Provide customization for the default layout.
Different app layout for each country.


Always document before you act otherwise someone else could already be working on it.

Writing documentation is really important and should be very detailed otherwise on a global team they will have to search and wait until that team is awake and at work for an answer.

specification - implementation - testing are an important circle for alleviating problems.

## Code PushとReact Nativeで緊急OTAリリース！了解！

Code Push is a CI and it has a free version with no limits.

Javascript is the only exception to injected code according to the app store guidelines.

Code push sounds great but I don`t want to write an app in JS...

## ツールとして利用するUIテスト

Layout testing should have UITests and people checking it.

[Lunch](https://github.com/fromkk/Lunch) unit testing.

xcode 10 parallel tests

2 simulators had the best performance

[TestSummaries](https://github.com/fromkk/TestSummaries) is a great tool

## アルゴリズムを通じてよりよいアプリを

iOS 12s speedup is due to algorithms

Landau O

autolayout is O(2n) but in 12 it is O(n)

update constraints is called 120 times per second so you should leave out heavy stuff

raw loops are bad mmkay

gotta learn those algorithms

bridging between objc and swift has a large cost

for example getting a range from the objc side took 400ms longer than just using the objc side in the first place

# Day 02

## Markdownをリアルタイムに解析する

The current IDEs are heavy so he wanted to try making a light version of his own.

the points he wanted to make

coloring and code styling(indent, etc)

NSTextStorageDelegate is important to this process

emoji is really difficult because it changes with the text format (UTF8, Unicode, etc.)

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

Swift history has lots of huge changes

4.2

random number generator became more swifty(don`t need to use arc4 anymore)
shuffle/shuffled function was added as well!

isHidden you can toggle now 

so no more isHidden = !isHidden

Much more friendly with Python because of dynamic lookup

#warning and #errorつかいましょう！

can check the code against the compiler version in 4.2 super convenient!

Should take a look at swift package manager...

# Swift Compilerの最適化入門 - AllocBoxToStack編

SIL - Swift intermediate language

there are 100 different optimizations in swift

https://github.com/apple/swift/blob/master/lib/SILOptimizer/Transforms/AllocBoxToStack.cpp

writing code inline helps with compile performance

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

static is when the app is compiled

dynamic is when the method is called

Direct > V > Dynamic

final and private ちゃんと使っていきましょう
internalクラス使ってもdynamicになってしまう

## 宣言的UICollectionView 

https://github.com/ishkawa/iosdc-2018-demo

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

難しかったです

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

when redoing the app it is important to put the parts that will affect user experience first

ReSwift and Redux...

broken autolayout slows down the ui alot

make views with a background and alpha as much as possible to up fps

# Day 03

## iOSでSwitchの複数ディスプレイ配置調整を実装してみた

Creative use of Multipeer Connectivity. I want to try using it again because in ios 8 it was terrible...

## 詳解Fastfile 

Look up spell checker plugin for code reviews (ruboty)

private lane = Ruby Proc

add `#vim: syntax=ruby` and github will format it for you

verify_block looks pretty useful

leaving the changing of settings to xcode is the best idea

binding_pry使いこなしてデバッグしましょう

## Depth in Depth

素晴らしいdepthの説明

リアルタイムできない。。。残念

# セッションまとめ
https://qiita.com/winterwind26/items/210e5735d2ce832d0c36

# iOSDC過去の発表
https://crash.academy/lecturer/iosdcjapan