Swiftの動向とアツさを追う try! Swift参加レポート

try! Swift 3日目 参加レポート

この記事を読むのに必要な時間:およそ 5 分

Ash Furrow氏「An Arsty Testing Tour(Artsyにおけるテスト手法の紹介)」

try! Swift最後のトークとなったのは,Moyaなどの作者としても知られ,数多くのOSSに関わっているArtsyのiOSエンジニア,Ash Furrow氏@ashfurrowによるセッションです。冒頭で以下の3つの項目を述べ,これらについてはセッションを通して強調していました。

  • テストにおいては完璧,理想形を目指さない。100%のカバレッジを目指さない。
  • コンポーネントは小さくし,Publicなインターフェイスのみをテストする。
  • 新しいアプリケーションも小さなコンポーネントから始める。

その上で,Artsyで実際にどのようなテストの戦略を取ってきたのかについて,以下4つの実際のプロダクトを順に紹介しました(すべてGithub上に公開されています⁠⁠。

以下で順番に紹介します。トークを通してコードはほとんど用いず,図をメインで説明しているのが特徴的でした。

artsy/Emergence

Apple TV用のアートワークを見るためのアプリケーションであるEmergenceが最初の例でしたが,テストは全くないとのことです。プロジェクトのデッドラインが厳しく,作業は1人のみという最小限のリソースの中でバランスを考えた結果であるとのことで,テスト戦略に際してはバランスが重要だと語りました。ですが,同時にテストが書けないことを気にはすべきだと述べていました。

artsy/energy

アートギャラリーのアプリケーションのテストケースの紹介です。元々はテストはなかったのですが,非常に大きいコードベースだったため,途中でテストを書くことになったとのことです。

まず,Bus Factor(もしチームの誰かがバスに轢かれてもプロダクトを出荷できるかどうか⁠⁠,イコールどれだけチーム内の個人に情報が集中しているかの指標について触れ,その集中を避けるために行うべきこと・行ったことについて述べました。

  • 良いテスト => 外部に対しての振る舞いのテスト
  • クラスは小さく保つ
  • Dependency Injectionを多く活用
  • オブジェクトは必要のないものは生成しない
  • RSpecスタイルでのテストで,共通処理は外に出す

artsy/eigen

eigenというアートのアプリについても後からテストを加える形だったそうですが,以下の困難があったことを紹介しました。

  • 複数の箇所からネットワークアクセスがある状態へのテスト
    • => Mockを使用
  • iPhone, iPadという複数のプラットフォームに対してテストが必要
    • => shared_exampleを利用

また,特徴的なテストとして,Snapshot Testの紹介がありました。こちらはfacebook/ios-snapshot-test-caseを利用したもので,スクリーンショットの比較によってUIのテストを行っていたそうです。

画像

その他にも以下のような説明をしていました。

  • 新しいコードはテストがなければならないというルールを設けた
  • クラスはできるだけ小さく保つ
  • テストは小さな要素から始める
  • よくないコードを書かなければならない場合でも,どう修正したいのかを残しておく

artsy/eidolon

最後にアートオークションのアプリであるeidolonでのテスト事例の紹介です。Swiftが出た直後から始めたプロジェクトで,すべてが新しい中で,Unit Testが唯一慣れ親しんだもので,それがSwift自体を理解することにも繋がったと述べました。また,QuickNimbleを利用することで,RSpecスタイルのテストを効果的に書くことができたと述べました。特にNimbleの利用により,XCTestで記述していた部分を以下のようにシンプルに書くことができることを紹介しました。

// XCTest
XCTAssertEqual(1 + 1, 2, "...")

// Nimble
expect(1 + 1).to( equal(2) )

// Or 
expect(1 + 1) == 2

最後に冒頭の3つの項目を繰り返し,セッションを閉じました。

画像

終わりに

すべてのトークを紹介できないのが残念ですが,これ以外にも3日目の発表はSwiftでの統計学的な処理やサーバサイドでSwiftを利用する方法など,興味深い話が非常に多くありました。クロージングでは今回のカンファレンスでの様々な数値も発表されましたが,来場者は536名,そのうち147名は海外からの参加者だったそうです。

画像

日本でのMobile・Web技術系カンファレンスで海外からの参加者の比率がこれほど高いものはそれほど多くはないと思います。私自身も多くの海外からの開発者と話す機会を持つことができ,非常に濃密な3日間を過ごすことができました。最終日の夜には参加者全員での懇親会も開かれたのですが,通訳ができる方を有志で募り,海外からの参加者と日本人の参加者がより交流を持てるようにするという試みも行われました。そのこともあってか懇親会も大変盛り上がり,3日間のカンファレンスの幕が閉じられました。

以上がtry! Swift3日目のレポートになります。主催者のNatashaTheRobotさんが以下ブログで語っていますが,開催に至るまでの道のりは大変だったようです。運営に携わった皆様,本当にありがとうございました。素晴らしいカンファレンスでしたので,ぜひまた開催されることを期待したいです。

Do you believe in magic? The making of try! Swift Conference Tokyo 2016

著者プロフィール

後藤慎一(ごとうしんいち)

Wantedly, Inc.のソフトウェアエンジニア。

インフラエンジニアとしてサービスを支える仕事をしていたが、プログラマとしての能力を高めたくなり転職。現在はObjective-CでのiOSアプリ開発やRailsでのサーバサイド開発に従事。ヒマがあればSwiftと戯れて生きている。

Twitter:@_shingt