ukoasis blog

TyphooonFrameworkをインストールしてみる

Jan 24, 2015

プライベートで開発しているアプリをswiftで実装中だが、テストをどうやってやろうかを試行錯誤中。アプリのテスト自体に慣れてないのに加えて、Objective-cのツールが使えたり使えなかったりと、情報収集しながらやってるとアプリの開発自体が進まないという蟻地獄状態に・・まぁこれも今後の肥やしになると思い、自分の中のベストプラクティスを模索していって辿り着いたのが本題のTyphooonFramework(本題までが長い・・・)ドキュメントをみる限りでは、Objective-c, Swift両方に対応したDIのフレームワークとのこと。どうやって利用していくかは、試行錯誤して、自分の中に腹落ちしたら別途まとめたいと思う。なので、まずは導入から。

参考

https://github.com/appsquickly/Typhoon/wiki/Swift-Quick-Start

概要

基本的に上記URLの通りにやっていく。

  • git submoduleでソースを自分のプロジェクトに取り込む

git submodule add https://github.com/typhoon-framework/Typhoon.gitを実施。自分の場合は、Vendorというフォルダを作成して、そこにライブラリをまとめているので、下記のコマンドを実施した。

git submodule add https://github.com/typhoon-framework/Typhoon.git Vendor/Typhoon
  • Typhooon.xcodeprojを自分のプロジェクトに追加する

場所は自由で、自分の場合は、テストでも利用したかったので、テスト用のtagetにも追加した。

  • Build PhasesTarget DependenciesTyphooon.frameworkを追加する

+をクリック

screenshot

Typhoonを選択し、Addをクリック

screenshot

該当の箇所に追加されていればOK

screenshot

  • Build PhasesNew Copy Files Phaseを追加する

screenshot

  • 追加したNew Copy Files PhaseCopy Frameworksにリネームする(ここはやらなくてもいい)
  • 追加したNew Copy Files PhaseDestinationFrameworksに設定する
  • 追加したNew Copy Files PhaseTyphooon.frameworkを追加する

before

screenshot

after

screenshot

  • TyphoonBlockComponentFactory.mでUIKitをimportする

設定の項目にも特に記載がないのか、自分が見落としているかは不明だが、上記の手順だけだとビルドエラーになる。エラー内容を見て、UIDeviceが利用できないというエラーだったので、UIKitをimportしたら解決した。とりあえず、試行錯誤中なので、これで利用していこうと思う。恒久的に利用する場合は、ソースに手を入れない方法を探してみる予定。

diff --git a/Source/Factory/Block/TyphoonBlockComponentFactory.m b/Source/Factory/Block/TyphoonBlockComponentFactory.m
index 0917054..a272493 100644
--- a/Source/Factory/Block/TyphoonBlockComponentFactory.m
+++ b/Source/Factory/Block/TyphoonBlockComponentFactory.m
@@ -9,7 +9,7 @@
 //
 ////////////////////////////////////////////////////////////////////////////////

-
+#import <UIKit/UIKit.h>

 #import "TyphoonMethod+InstanceBuilder.h"
 #import "TyphoonBlockComponentFactory.h"

最後に

とりあえず、ビルドは通るようになったので、今後、テスト時にライブラリをmockに差し替えるというのをやってみたい。というより、それがやりたくてのDI導入だったりするので・・サンプルのプロジェクトがあって一通りの実装については、それを見れば良さそうなので、色々試行錯誤してみようと思う。