iOS
Swift

try! Swift Tokyo 2017 ざっくりレポート (day2)

More than 1 year has passed since last update.

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のすべて

Soroush Khanlou さん

Collectionを使う場合ほとんどはArrayを使用している、という前置きの後は、各種Collectionの具体的な実装についての解説でした。


  • Sequence(一回しかイテレートできない、LinkedList)

  • EachPair(グループ化する)

  • Collection(なんどでもイテレートできる)

  • BidirectionalCollection(逆戻りができる)

  • RandomAccessCollection(素早くアクセスできる)

  • RangeReplaceableCollection(塊を取れる)


様々な場面でSwiftを使う

Yusuke Ito さん

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


使いたいライブラリがない場合


  1. 自分で実装する

  2. C言語のライブラリをWrapする

  3. 移植する


VRの革新と新たなユーザー体験

Artis Birzins さん

VR HUB TOKYO

事例

- Retail : VR SHOPPING (Alibaba)

- 不動産(Real Estate) : 360度の写真を撮って公開 → iOSアプリで閲覧

- Carディーラー : ジャガー、ボルボ、アウディ、Honda, VW

- Sports : スケボ


iOSにおけるDocument IndexingとApp Search

Kateryna Gridina さん


AppSearch


  • Spotlight or Safari から検索

  • 6万アプリしか対応していない

  • 3つのAPI


CoreSpotlight API


  1. カタログのアイテムをindex化

  2. アイテムのArrayを作る

  3. spotlight で検索できる

有効期限の設定が可能(expoiratonDate)

複数のアイテムをグループ化してindex化できる

バックグランドで処理されるためクラッシュしても大丈夫


Search Continuation

iOS10から Search Continuation 追加

1画面あたり10アイテム → アプリ内でさらに検索できる

バックグランド(beginBatch) に関するドキュメントがない

Batchを閉じてから次のbatchを始める(クラッシュする)

スレッド処理化も自分で適切に実装する

Real Device でテストしよう


NSUserActivity

publicにすると

→ アプリがインストールされていなくても検索できる

private

→ ユーザーに見えない


スタートアップのSwift

Mo Kudeki

iOSアプリ Hey! VINA

女性の友情を育むためのアプリ


ローンチ直後


  • 2weeks / 10万

  • Parse を使っていたが 有料プランの最大 Notifications数/min を超えてしまった。


アーリーアダプタじゃない人が使い始めた


  • 「アプリが動かないだけど…」「クラッシュするんだけど…」 などのレポート

  • slack + TestFlight でフィードバックを得る活動


その他


  • 最初に書いたコードの品質を高めるのは無駄 → 廃棄する時期がくる

  • Parse がshutdown した...

2日目のレポートは以上です。