49hack

ゆるふわエンジニアが魔法使いになるまで

技術書典で買った「さわって学べる!iOSテスト駆動開発」を読んだのでその感想と3章の誤植の共有

今年の技術書典ではboothでiOS中心に10冊ほど買いました。

今回読んだ本はこれ👇

shindyu.booth.pm

swiftでテストを書いたことがなかったので、TDDを勉強するというよりは、その書き方や導入が把握できればいいかなー、と思って読んでみました。
結果、とてもわかりやすく体系的に学べたので無事テストを書いていけそうです。
これで1,000円とは、お買い得な世の中ですね🤗

TDDをやっていて一つ気になったのが、
「プロパティや関数名をまだ宣言してないのでコード補完が効かなくてつらい問題」
特にtableviewまわりはメソッド名長すぎてtypoがつらい😢

こういうのってどうしてんだろうなーと思って友人のエンジニアに聞いてみたら、

まずは「tableviewがあること」みたいなテストを書いてプロパティつくっていくかなー。 そのテストが通ってればtableviewのコード補完も効くしね。

と言われて、なるほど!!と思った💡

その他メモ

  • Dependency Injectionの中にはConstructor InjectionとSetter Injectionなるものがある
  • 初耳のアーキテクチャがあった
    • MVP, VIPER
  • 既存アプリにTDDを導入する手順は参考になった
    • ビルド時間の計測
      • BuildTimeAnalyzerはそのうち使ってみる
    • Carthageへの移行
    • Embedded Frameworkの利用
    • CIの導入
      • CircleCIは経験済みなのでbitrise使ってみる

3章の誤植の共有

3章は実際にアプリをつくっていく流れだったので、理解のために写経しました。
途中でビルドやテストが通らなくて困ったので、「こうやったら進行できたよ」という共有です。
同じように写経する人の参考になれば😉


p.38 ファイル名が間違っている

ArticleListViewControllerTests.swiftArticleListViewController.swift

p.39 宣言文が間違っていてテストが通らない

// この部分を
let vc ArticleListViewController()

// こう書き換える
let article = Article(title: "記事タイトル")
let client = FakeArticleListAPIClient(fakeResponse: [article])
let vc = ArticleListViewController(client: client)

p.41 itemsの初期化をしていないのでビルドが通らない

// この部分を
var items: [Article]

// こう書き換える
var items: [Article] = []

p.42 tableviewにcellを登録してないので落ちる

// この一行をviewDidLoadに追加する
tableView.register(ArticleListCell.self, forCellReuseIdentifier: "ArticleListCell")

p.45 moduleをimportしてないのでテストできない

// ArticleListViewControllerTests.swiftに追加する
import SafariServices

以上です。
swiftやってくぞ!💪