try! Swift Tokyo 2017に参加した

3/2~3/4に開催された www.tryswift.co

に参加してきました。

会社からの支援でチケットは購入して貰っていたので一般参加者として。
またカンファレンスの裏側の仕組みを知りたい。少しでも貢献したいと思いボランティアスタッフをやらせてもらいました。

ボランティアスタッフとして何をしたか

簡単に紹介すると

  • 設営
    • スポンサーブースのお手伝い
    • ノベルティ(シールやパンフレット)をエコバッグに詰める作業
  • 受付の案内
  • 質問時のマイク係

を行いました。

700名の受付という事もあり、時間をかけすぎたら後続が詰まるという焦りの中なんとかこなせたと思います。
日本人以外の参加者も多いカンファレンスという事もあり 、慣れない英語での対応に苦労しました。。

セッション開始後は、マイク係として会場袖に待機。
try! Swiftは1トラック構成で行っているので、ほぼほぼ全てのセッションを見ることが出来ました😊

参加者として

#tryswiftconf をひたすら眺める&呟いていました。
幾つか気になったセッションの内容をメモしていたので共有します。

テスト可能なコードを書くということの2つの側面

@mbrandonwさんのセッション

関数を完全にテスト可能にするためのものが2つあります。作用の分離と共作用を表面化です。この2つの側面の背景にある理論を探り、どのようにすればテスト容易なコードに導けるかを示します。

サンプルコード: kickstarter/ios-oss

  • テストの目的は、"テストできるコードだけを書きたい"から
  • テスト対象の入/出力に関しての話
  • アウトプットのテストが難しいのは副作用(side effects)があるから
    • => 副作用をコードの境界に持っていく
  • インプットを難しくしているのは共作用(co effects)があるから
    • ある特定の世界の状態がなければ実行できないということ
    • => テストの為に特定の世界を作る(DIと呼ぶ人もいる)
    • 共作用に対してグローバルな関数に直接アクセスしなくて良いように EnvironmentStruct を作成する ios-oss/AppEnvironment.swift
    • テストコードはwithEnvironmentで任意の環境(グローバル変数)を上書きしつつ、テストを実行できるようにしてる ios-oss/XCTestCase+AppEnvironment.swift

@niwatako さんの書き起こし niwatako.hatenablog.jp

iOSにおけるDocument IndexingとApp Search

@gridNAkaさんのセッション

ZalandoのiOSアプリでApp Search機能をどのように使っているのかを説明し、さまざまなタイプのコンテンツ向けのApp Search機能を紹介し、経験と実例を共有します。

サンプルコード: gridNA/appSearchExample

@niwatako さんの書き起こし niwatako.hatenablog.jp

ハッカソン

3日目のハッカソンは参加者として参加しました。

devpost.com

アクターモデルに関して知見はなかったのですが、並行処理はもちろん、
iOSにおける通知実装の一つの案として興味があったので、今回作成するSwiftActorのサンプル実装を書きました(未完成..)

github.com github.com

惜しくも入賞は逃してしまったけど、
@rizumitaさん @ikesyoさん @applideveloperさんはじめ、優秀な方々と貴重な時間を過ごせてとても楽しく勉強になりました!
(iOSクライアントの実装において、アクターモデルの有用性を示すのは中々難しかったです。。)

SwiftActorの開発は継続していくので、興味のある方はPRを!*1

参加してみて

*1:Slackチームもありますよ