try! Swift Tokyo 2017 ざっくりレポート (day1)
の続き、try!Swift Tokyo 2017 二日目のレポートです。
ランチタイムまでの半日分となります。
2017-03-02 (day 2)
では2日目のレポートです。
テスト可能なコードを書くということの2つの側面
Brandon Williams さん
Kickstarter のエンジニアさんだそうです。
コードをよりテスト可能なものにしていくことが重要である。
経験が必要で、方法を知る必要もある。
テストすると潜在的なバグを見つけ、クラッシュを防げる。
テストできるコードを書くようにする。
テストをドキュメント化しているそうです。
Testing Output
- テストは簡単
- Side Effects(副作用)
- 実行後の外部の影響(副作用)を知る必要がある
- 副作用をコードの境界付近に近づける必要がある
Testing Input
- テストが難しい、新しい分野である
- Co-Effects (きょう作用?)
- DI を使う
- 一つのグローバル構造体に全て(シングルトン)持たせている
- 例として Environment構造体に APIサーバー、Cookie、ユーザー、Date(プロトコル)、言語、ハンドル、reachability、scheduler(Reactive)、Userdefaults などをもたせている。
- プロトコルを入れてテスト可能なコードにRefactorする
その他
- テスト駆動で開発している
- propertyベースのテストは行っていない
誰もが知りたいSequenceとCollectionのすべて
Collectionを使う場合ほとんどはArrayを使用している、という前置きの後は、各種Collectionの具体的な実装についての解説でした。
- Sequence(一回しかイテレートできない、LinkedList)
- EachPair(グループ化する)
- Collection(なんどでもイテレートできる)
- BidirectionalCollection(逆戻りができる)
- RandomAccessCollection(素早くアクセスできる)
- RangeReplaceableCollection(塊を取れる)
様々な場面でSwiftを使う
Serverside Swift についてのお話でした。日本語のセッションでした。
Swift について
- Package Manager も公開されたのが良い
- Linux/ARM でも利用可能
- Raspberry Pi でも動く
なぜServerside?
- Node.js や Python で実装しているものを 安全な Swift に置き換える。
実績1:Pythonで作られた Web Crawler をSwift に置き換えた
- Swift は LLVM ベース、Cライブラリをリンクできる
- gRPC : grpc/grpc-swift 最近出た
実績2:Swift for ARM and Raspberry Pi
使いたいライブラリがない場合
- 自分で実装する
- C言語のライブラリをWrapする
- 移植する
VRの革新と新たなユーザー体験
事例
- Retail : VR SHOPPING (Alibaba)
- 不動産(Real Estate) : 360度の写真を撮って公開 → iOSアプリで閲覧
- Carディーラー : ジャガー、ボルボ、アウディ、Honda, VW
- Sports : スケボ
iOSにおけるDocument IndexingとApp Search
AppSearch
- Spotlight or Safari から検索
- 6万アプリしか対応していない
- 3つのAPI
CoreSpotlight API
- カタログのアイテムをindex化
- アイテムのArrayを作る
- spotlight で検索できる
有効期限の設定が可能(expoiratonDate)
複数のアイテムをグループ化してindex化できる
バックグランドで処理されるためクラッシュしても大丈夫
Search Continuation
iOS10から Search Continuation 追加
1画面あたり10アイテム → アプリ内でさらに検索できる
バックグランド(beginBatch) に関するドキュメントがない
Batchを閉じてから次のbatchを始める(クラッシュする)
スレッド処理化も自分で適切に実装する
Real Device でテストしよう
NSUserActivity
publicにすると
→ アプリがインストールされていなくても検索できる
private
→ ユーザーに見えない
スタートアップのSwift
iOSアプリ Hey! VINA
女性の友情を育むためのアプリ
ローンチ直後
- 2weeks / 10万
- Parse を使っていたが 有料プランの最大 Notifications数/min を超えてしまった。
アーリーアダプタじゃない人が使い始めた
- 「アプリが動かないだけど…」「クラッシュするんだけど…」 などのレポート
- slack + TestFlight でフィードバックを得る活動
その他
- 最初に書いたコードの品質を高めるのは無駄 → 廃棄する時期がくる
- Parse がshutdown した...
2日目のレポートは以上です。