Swift

try! Swiftででてきたキーワードを組み合わせたアプリを作ってみた

More than 3 years have passed since last update.

try! Swiftに参加しました。とても楽しい時間でした。

帰ってカンファレンスで言及されたりした技術やフレームワークなどを利用してアプリを作ってみました。

rizumita/GetLanguages

星が飛びます。星をタップします。右上のLanguagesをタップすると捕獲したものが一覧表示されます。更にタップすると詳細表示されます。Get…というのははじめはポ○モンを捕まえるようにしようとしたのですが、権利関係が怖いのでやめた名残です。

まだ未完成です。ここをこうしたら良いよ!というところがあればPRください。


利用した技術やフレームワーク等

このアプリに利用したのは以下の技術やフレームワーク等です。


パッケージマネージャ


  • Carthage

  • CocoaPods

初日にどのパッケージマネージャが生き残るか質問したのですが、SPMだろうというお答えをいただきました。が使ってません。環境も対応状況もまだまだですね。

ちなみに私はカッセージと呼んでます。


アーキテクチャ

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を使いこなせるように頑張るんですが…