iOSDC Japan 2018 に参加してきました。

#はじめに
iOSDC Japan 2018に参加してきました。
私が聞いたセッションで興味を持ったものをまとめました。

#AR関連
###ARKitのための3D算数
https://speakerdeck.com/fujikawakei/arkitfalsetamefalse3dsuan-shu

####ARKitで使う座標系
**ワールド座標系**
一番大きな座標系
**オブジェクト座標系**
オブジェクトが持つローカル座標
**カメラ座標系**
カメラのローカル座標
**スクリーン座標**

スライドで①と②の変換を省略しようとスクリーン座標でZを入力したが、
計算が大変だから①と②は必要という結論になっていた。

スクリーン座標をワールド座標に変換した後にワールド座標でのカメラの座標と向きを取得し計算したものを
zに入力すれば簡単にできるのではと思いました。

###ARKit Maniacs
https://speakerdeck.com/satoshi0212/arkit-maniacs
ARKit2
World Map Persistence
EnvironmentTexturing
平面を見つけてからの工夫

World Map Persistence
建物をシェアできるのでリアル脱出ゲームなどで活用できそうだと思いました。

###ARKit2.0でAppleが伝えたいアプリ体験を考える 
https://speakerdeck.com/mcz9mm/arkit2-dot-0deapplegachuan-etaiapuriti-yan-wokao-eru?slide=17
https://twitter.com/mcz9mm/status/1035803170536976384
（チートシート）


##デバッグ関連

###iOS アプリの開発速度を70%高速化したデバッグノウハウ 
https://speakerdeck.com/orgachem/debugging-knowhow-that-improved-our-development-velocity-to-170-percent
#####①LLDBを使いこなす
A:コールスタックを遡る
B:リビルドなしで再実行
C:起動したまま状態を変更する
#####②デバッグのタイミングを変更直後にする
#####③不安駆動でセルフチェックする
#####④動作確認を自動化する
**A:AppDelgate経由**
欠点
・複数の動作確認が失敗すると、
先に実行された方しか把握できない
・fatalErrorをprint へ変えれば複数の失敗を把握できるが、
失敗した際にIDEがジャンプしないので不便
**B:動作確認のための標準ライブラリ**
欠点
・ビルドの設定が壊れていると直すまで動作確認のコードが実行できない
（設定をすぐに直せなさそうならAppdelgateの方法を一時的に使うのも手段）

#####⑤間違いにくい設計にする
**A:IDを直接のIntやStringにしない**
IDを個別のstructにする
**B:コードを自動生成する**

###AutoLayoutエラー診断所 ~発狂しないためのデバッグ手法~ 
https://speakerdeck.com/akatsuki174/wan-quan-ban-autolayouterazhen-duan-suo-fa-kuang-sinaitamefalsetehatukushou-fa?slide=28
#####コンソールを読む系
**CASE x**
Warningを頑張って読む
**CASE 2**
WTF Auto Layout
http://www.wtfautolayout.com/
**CASE 3**
Identifierをつけて見やすくする
**CASE４**
制約を出力する
Constraints()
制約を取得できる
constraintsAffectingLayout(for:)
軸を指定して取得できる
**CASE 5**
シンボリックブレークポイント
**CASE ６**
hasAmbiguousLatoutを使う
**CASE 7**
recursive Descriptionを使う
**CASE 8**
＿autoLayoutTraceを使う
**CASE 9**
_printHierarchyを使う
**CASE 10**
_icarDescriptionを使う
####ビジュアルから判断する系
**CASE 11**
cellの高さを疑う
**CASE 12**
ビューデバッガーを使う
**CASE 13**
contentHuggingPriorityを使う
**CASE 14**
contentCompressionResistancePriorityを調整する
####LLDB使う系
**CASE 15**
色々使ってみる
・LLDB上でオブジェクトを操作する
・text filterを使う
**CASE 16**
Facebook / chiselを使う

##Swift４．２
###Swift4.2はどのような進化をしているか？
https://speakerdeck.com/yusukehosonuma/whats-new-swift42?slide=51

RandomUnification
importが不要になった
1.範囲から作成
2.配列からランダムび要素を取得
3.配列をシャッフル
Boolを反転
末尾から要素を探す
全ての要素が条件を満たすか判定するAPI
letな値に対しても直接呼び出せるように
指定したキーパスのオフセットを取得するAPI

####言語仕様
Hashableプロトコルの方法が変更
Enumのcaseが列挙できるように
allCaseのカスタマイズ
コンパイル段階のプロバテイに
ドット記法でアクセスできる仕組み
IUO属性　→IUO型
条件付きのプロトコル適合
配列などがHashableに適合
コンパイル時に警告、エラーがだせるディレクティブ
＃Compileの導入
モジュール間のインライン化を指定できるように

####SwiftPackageManager
Localパスも依存関係で指定できるように
SwiftLanguageVersionsの指定がEnumに
システムライブラリの依存指定が変更

###プッシュ通知はどのように進化をたどってきたか
https://speakerdeck.com/urouro/putusiyutong-zhi-hadofalseyounajin-hua-wotadotutekitaka

iOS12
通知のグループ化
複数の通知をまとめられる
通知設定周りの改善
通知から直接設定できるq
通知の許可ダイアログを出さずに通知でき
一番最初の通知に確認のUIがつく

##感想
iOSでの開発を始めたのが去年の１１月頃でiOSDC初参加でした。
まだまだ知らない事の方が多い中、専門的な物が多いんじゃないかと
カンファレンスに参加するのが少し不安でした。
ですが、実際のにセッションを聞くと全てわかりやすく丁寧に説明されており
私でも理解することができました。(難しいものも中にはあります)
最終日には聴くのが楽しみになっていました。

色々な技術を知ることができ、
とても楽しい四日間でした。
来年もまた参加したいです。


会場の準備、案内をして下くださった
スタッフの皆様
快適なネットワークの環境を提供してくださった
ネットワークスタッフの皆様
素晴らしいセッションをしてくださった
スピーカーの皆様
飲み物や様々なノベルティを提供してくださった
スポンサー各社様

本当にありがとうございました。