Terrarium

いわゆる掃き溜めの ありふれた有象無象

アプリを作っていきたいと思います.

アプリ製作

最近ソフトウェアアーキテクチャを学ぶのが非常に楽しい. 通学中に↓↓↓のような本を読んでいたりする.

www.amazon.co.jp

peaks.cc

Clean Architectureの原書が半分くらい読んだものの,この1週間くらいは英語に疲れたのでiOSアプリ設計パターン入門を読み進めている. なぜアーキテクチャを学ぶのが楽しいのかはわからないが,おそらく数学を学ぶ時の混沌としたよくわからないものが理論で整理されていく感覚に近いのかもしれない.

本を読んでいるとはいえ,プログラミング関係のことを学ぶ時には実際にコードを書いてみるのが一番である. ということで数ヶ月前からアプリ開発を思い出すために(1年近いブランクがあった)少しづつ作っていたアプリを使って様々なアーキテクチャでこれらを実装していこうと思う.

購入履歴アプリ

なんといえばいいかわからないが,「1ヶ月での消費を記録するためのアプリ」である. 機能としては巷に溢れている小遣い管理アプリに近い. しかしこれは貯蓄は記録せず,あくまで「いくら使ったか」を記録するアプリである. 機能一覧は次の通り.

  • 購入した物品の金額を記録する
    • 少ない操作数で記録できることが理想
  • 1ヶ月の記録と使用した合計金額を確認できる
  • 過去の月に消費した金額とその月の記録を確認できる

やることが少ないので勉強にはピッタリである. なおニーズがあるかという話だが,まさに自分自身が欲しいと思っているアプリなので周りのニーズはあまり考えないことにする.

デザイン

画面のデザインがあるとViewの実装が非常に楽になる. なのでまずはAdobe XDを使って画面のデザインから行った.

f:id:tellusium:20181216184154p:plain:w250
今月の購入履歴
f:id:tellusium:20181216184210p:plain:w250
入力画面
f:id:tellusium:20181216184234p:plain:w250
履歴画面

いざ実装すると今月の使用額などが想定以上に強かったり,入力に必要な時間がかかったり,今後変更していくべき部分が多いが,とりあえず実装していく.

MVC

最初はSwiftの機能のみを使ってMVCに近いパターンでの実装を行なった. 基本なので最初の実装にはふさわしいと思う.

  • Domain
    • ビジネスロジックを記述
      • 今回の場合,基本的なデータ構造,必要な処理などを記述する
  • Controller
    • ViewとModelを結びつける
      • 専用のクラスを作るのが普通であるが,今回はViewControllerをControllerとして使っている
      • Viewのイベントを拾いModelの処理を起動したり,Modelの処理結果をViewに反映させたりする
  • View
    • 画面の見た目
      • 基本的にはStoryboard上でAutoLayoutを用いて記述した
      • 再利用するために色々工夫してみている
        • があまり納得できていないので,将来的には各Componentごとに実装してみたい
  • Repository
    • データベースやネットワークなど外部に依存したものとのインタフェース
      • 今回はデータベースをモックしている

現在の実装

コードはGitHubに.

github.com

アプリ画面は現在以下のようになっている.

f:id:tellusium:20181216192448p:plain:w250
現在の実装

次のアーキテクチャ

RxSwiftを使ったMVVMに挑戦したい. Rxのチュートリアルサイトを読んだり,夏のインターンなどで多少使ったものの理解度が圧倒的に足りていないのでその練習になると考えている.