try! Swiftに参加しました。とても楽しい時間でした。
帰ってカンファレンスで言及されたりした技術やフレームワークなどを利用してアプリを作ってみました。
星が飛びます。星をタップします。右上のLanguagesをタップすると捕獲したものが一覧表示されます。更にタップすると詳細表示されます。Get…というのははじめはポ○モンを捕まえるようにしようとしたのですが、権利関係が怖いのでやめた名残です。
まだ未完成です。ここをこうしたら良いよ!というところがあればPRください。
利用した技術やフレームワーク等
このアプリに利用したのは以下の技術やフレームワーク等です。
パッケージマネージャ
- Carthage
- CocoaPods
初日にどのパッケージマネージャが生き残るか質問したのですが、SPMだろうというお答えをいただきました。が使ってません。環境も対応状況もまだまだですね。
ちなみに私はカッセージと呼んでます。
アーキテクチャ
- VIPER + MVVM
- Storyboard + Segue + TransitionOperator
VIPERに似ている等で質問しました。インスタンスの所有に気をつければかなり使えると思います。
遷移コードをコントローラから分離するためのTransitionOperatorというライブラリを作成しているのでそれを利用しています。
I love storyboardです。
DI
- Swinject
DIではDIコンテナのSwinjectを利用しました。たしか少し名前が出てきましたよね?
ユニットテスト
- Quick
- Nimble
- OHHTTPStubs
ルートビューのモジュールのみでテストを書きました。他モジュールは時間がなかったので割愛。
ネットワーク&JSONパーサ
- APIKit
- Himotoki
他のプロジェクトではJSONパーサはGenomeを使っていますが、今回はHimotokiです。
PawというHTTPクライアントアプリを利用したのでそのファイルもプロジェクトに入っています。
DB
- Realm
CoreDataと悩みましたが、主催という事で。
Realmも結局スレッドを超えるのが面倒なのがあれです。
アニメーション
- Core Animation
- XCPlayground
- PaintCode
まずXCPlaygroundを利用して動かしました。星のパスはPaintCodeで作成しました。PaintCodeのファイルもプロジェクトに入っています。
Functional Reactive Programming
- ReactiveCocoa
try! SwiftではRxSwiftが注目されましたが、以前からReactiveCocoaを利用しているので…
その他
- Swiftz(のオペレータのみ利用)
- R.swift
R.swiftもちらっと登場しましたね。
感想
Objective-C時代とは全く違う世界になってしまいました。長い事Objective-Cを使ってきましたが、少しさみしい気もします。ですが、まちがいなく楽しいです。
Swiftのフレームワークはまだ定番が定まっていない分野もあり、選択が難しいです。今回はtry! Swiftに関するものを利用しましたが、実際のプロジェクトで選定するとなると…パッケージマネージャも群雄割拠の時代に入りました。ふたつもみっつもパッケージマネージャを利用するのはできれば避けたいところです。
アプリは動きはしましたが、この書き方で良いのか、もっと良い書き方や正しい書き方があるのではないかと思いつつ書きました。更に情報が充実すると良いなと思いました。
来年はどこで開催されるのでしょう。英語を使いこなせるように頑張ります。
いや、まずSwiftを使いこなせるように頑張るんですが…