try! Swift Tokyo 2018 (Day 1)の参加メモ。(Day 2はこちら)
try! Swift Tokyo 2018
セッション
裏 Swift Tour
- Swiftのオペレーターやクロージャなどの挙動について深掘り
- didSet、willSet、deferが呼ばれるタイミングに注意する
SIL入門
- SIL(Swift Intermediate Language)はSwiftコンパイラが生成する中間言語
- Swiftコンパイラによるコード最適化の挙動を紹介
Clang モジュールの探検
- Module Mapを使うと、Cで書かれたStatic LibraryをObjective-C/Swiftプロジェクトに橋渡しできる
- Objective-Cで書かれたFrameworkをSwiftプロジェクトで利用する場合もModule Mapで橋渡しできる(逆も同様)
- Module Mapに対する不満いろいろ
レスポンダチェーンを知ろう
- ユーザーのアクションがParent View、View Controller、App DelegateのResponderに伝わる仕組みの紹介
関心の分離と単純化のためのSwiftコードの最適化
- Swiftでコードを単純、簡潔、明確に書くためのテクニックを紹介
- extensionを活用し、何をしているのか他人が理解できるコードを書く
- Sub Classを使い、あちこちでやっている同じ処理を纏める
業務メモ
- Example 7の、iPhone Xに対応したSafe Area Guideのサンプルが分かりやすかった
- コード上でAuto Layoutの設定を行っていたため、Storyboardは使っていない?
- Example 10の、Stateの変化でChildren Viewを切り替えるサンプルが分かりやすかった
コーダーがデザインすべきなのか
- デザインは見た目だけでなく機能も含まれる
- 広い視点で/近づいて問題を解決するための手段を考えてみる
- ユーザーに効果的に説明する手段を考えてみる
- テクノロジーについてはコーダーのほうが詳しいことが多いため、機能についてコーダーも一緒に考えてみるとより良いものができる
Event driven networking for Swift
- SwiftNIO(Netty for Swift)を使うと、Swiftで低レイヤーのソケット通信処理を書くことができる
変性のダイヤモンド
- Swiftにおける変性、共変性、反変性の紹介
SwiftyPi
- iOSアプリ、サーバー、RaspberryPiのLED制御をすべてSwiftで実装したシステムのデモを紹介
- Swift 4はLinuxではリソース不足で使えず、Swift 3.1で実装
業務メモ
- Swiftは組み込み用途ではExperimentalな印象で、まだ業務に使うには難しそう
我が家を支えるSwiftの技術
- 家庭内で使うツールをSwiftで作ってみた紹介
- 育児記録iOSアプリ、病院待ち人数通知Slack Bot、フリマ情報収集Slack Bot
UI Test の楽しさとメリット
- TrelloでのUIテストの導入事例を紹介
- Xcodeが2015年にUITestをサポートしたが、実用に耐えられなかった
- TrelloではXCUITestを使っているが、いくつか制約がある
- Siriにテキストを読ませることができるが、ボタンは押せない
- Translationはサポートしていない、など
- 全く理由が無いのにUIテストが20%の確率で失敗する
- CIに組み込むべきではない、レグレッションテストに組み込むに留めるべき
- Kickstarterが勧めるUIテストのアプローチがあるが、XcodeのPlaygroundがフリーズしやすく使いづらい
業務メモ
- UIテストの自動化は茨の道
- もし導入するのであれば、開発終盤以降(UI仕様が完全にFIXした以降)に検討すべきと感じた
- Appiumの話題が出なかったのが意外に感じた
ブロックチェーンのクライアントをSwiftで実装する
- イーサリアムクライアントをSwiftで実装するための方法を紹介
- Swiftで書かれたイーサリアムクライアントはまだ存在しないらしい
Protocol Oriented WebAPI Abstraction
- API通信のBaseURL、Path、Responseを抽象化するライブラリ(AbstructionKit)の紹介
- AbstructionKit+APIKit+RxSwiftでシンプルにAPI通信処理を書くことができる
👾
- Xcodeは実はゲーム開発ツールだった
- SpriteKitを使うと簡単にゲームが作れるデモの紹介
- SpriteKitが普及しないのはAppleデバイスでしか使えないため
- UnityはApple Watchでは使えないため、Apple Watch用のゲームを作るにはSpriteKitを使うしかない
AST メタプログラミング
- AST(Aspect Syntax Tree)はプログラムの構造を表現する
- ASTはコードのリファクタリングやLint(静的解析)で利用されている
- SourceKitを使うとプログラムの構造をパースすることができる
- ASTを使うと、元のコードを汚さずにログ出力を割り込ませることができる
- ASTを使うと、ユニットテストのAssertが詳細に出力できる
- SwiftコードをHTMLに変換する、ログ出力を割り込ませる、ユニットテストのAssertを詳細に出力するデモの紹介