LoginSignup
8
2

More than 5 years have passed since last update.

try! Swift Tokyo 2018 (Day 1) 参加メモ

Last updated at Posted at 2018-03-01

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を詳細に出力するデモの紹介

おまけ

  • お土産いろいろ IMG_0147.jpg
8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2