CodeZine(コードジン)

特集ページ一覧

【デブサミ2015】 19-C-3 レポート
現場で使い倒しているから語れる 「Swift」によるアプリ開発のつまづきどころと対応策

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/03/09 14:00

 2014年の発表以来、大勢のエンジニアから興味や関心を集めている米アップルの新プログラミング言語「Swift」。2月19日のデブサミ2015では、開発の現場でSwiftを使い倒しているという、クラスメソッド株式会社 安達勇一氏が「ゲンバのSwift」と題したセッションを行い、Swiftで開発を行う際の「つまづきどころ」とその対応策について解説しました。当レポートではその模様をお伝えします。

目次

UIKitのSelector

 Objective-CではUIKitのSelector名を間違えて指定した場合、コンパイラが警告を出してくれます。しかし、同様の状況でもSwiftではコンパイラが警告を出してくれません。その対応策として安達氏は「Selectorの代わりにBlocksKitを使うようにしている」とのこと。BlocksKitを用いることで、ハンドラの中でメソッドを直に呼び出せるようになり、メソッド名が間違っていた場合、コンパイルエラーにできるからだそうです。

 ただし、循環参照によるメモリリークの問題も発生するため、弱参照を渡す(weakやunownedを使用する)処理も併せて行ったほうがよいとのことです。

BlocksKitを使うことでSwiftでもSelector名の誤りをコンパイラが指摘してくれる
BlocksKitを使うことでSwiftでもSelector名の誤りをコンパイラが指摘してくれる

 

テストでのMockの扱い

 続いて安達氏が紹介したのは、テストに関するノウハウです。「クラスメソッドではテストを書くことが多いが、その主な理由は『設計や実装を手助けする』ため。だから、モデル層を中心にして書いている。一方で、挙動が明らかなもの、例えばイニシャライザなどについてはテストをあまり書かない」(安達氏)。

 テストでは、Objective-CおよびSwift用のBDD(Behavior-Driven Development:振る舞い駆動開発)フレームワーク「Quick」をDSL(Domain Specific Language:ドメイン固有言語)として使い、実際の値と期待する値を比較するマッチャーとして「Nimble」を利用しているそうです。セッションでは、「病院に関わる一連のモデル」を実装したコード(安達氏が作成)が、これらの利用例として説明に使われました。コードは安達氏のGitHubで公開されていますので、興味のある人はご参照ください。

利用例として挙げられた「病院に関わる一連のモデル」を実装したコード
利用例として挙げられた「病院に関わる一連のモデル」を実装したコード

 


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • しんや(シンヤ)

    2010年末~2013年前半位までの期間で興味のある勉強会に頻繁に参加。参加してきた勉強会のレポートブログとTogetterをひたすらまとめ続け、まとめ職人(自称/他称含む)として暫く過ごしておりました。色々な縁あってDevelopers Summit 2013では『公募レポーター』も務めました。...

バックナンバー

連載:【デブサミ2015】セッションレポート

もっと読む

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5