TDDBC in Tokyo 2014-11にSwiftで参加してきました #tddbc

TDDBC in Tokyo 2014-11に参加してきました。TDDBCの参加は昨年のin Yokohamaから2回目です。

当初はJSで参加するつもりでしたが、前日にサポート可能な言語を見たところ、@akuraruさんがSwiftをサポートしてくださるとのことで、急遽前日に環境を作ってFizzBuzz書いたレベルのSwiftで参戦することにしました。

Doorkeeper

TDDBC in Tokyo 2014-11 - TDDBC | Doorkeeper

togetter

TDDBC in Tokyo 201411 #tddbc - Togetterまとめ

Gerard Meszaros氏による基調講演

英語大事。。。

ペアプロ大会

Swift希望者は僕も含めて2人しかいなかったので、もう一人の希望者@yana_3さんとペアプロを行いました。Swift歴2日目の僕はとても助けられました。ありがとうございます。

課題発表

TDD演習課題 - TODOリストアプリ

コマンドライン、もしくはWebアプリのTodoリストを作る、というのが今日のお題でした。 お題の中にはUIや永続化についての要件も含まれていましたが、慣れないSwiftでそこまで手を出すと絶対に火傷するから、とペアで合意を取り機能要件を満たすモデルを作るまでを目標としました。 (ちなみに隣のObjective-CチームはCoreDataでの永続化とテストを書いていました。すごいですね。)

そして終了

出来上がった成果はgithubで公開しました。

Peranikov/TDDBCTokyo201411_Swift · GitHub

テストコードを書く上で工夫した点としては、テストケースのベースクラスを作って、テストしたい状態(Todoが登録されていない、1つだけ登録されている、複数登録されている、etc...)ごとに継承クラスを作るということでした。

こうすることで、テストしたい状態をそれぞれのsetup内で完結することができ、テストケースごとに状態を作るコードを含む必要がなくなるのでよりDRYにテストを書くことができました。(@akuraruさんに教えて頂きました)

Swiftについて

今回のお題からSwiftのArrayのAPIを触ることが多かったですが、やはりよりLLらしくなったというか、気の利いたAPIが多数用意されていました。おかげで車輪の再発明のようなことをする必要もなく、プロダクションコードの方がとてもすっきりとしました。

Swift Standard Library Reference: Array<T>

最後に

お世話になった以下の方々に感謝いたします。ありがとうございました!

  • TDDBCのスタッフのみなさん
  • 会場提供してくださったヤフーさん
  • 基調講演してくださったGerardさん
  • TAしてくださった@akuraruさん
  • ペアプロしてくださった@yana_3さん