渋谷Deランチ

リモートワークは週4が良いです!海紫です。 主にswiftでアプリを開発してます。

今回は、研修期間に開発した渋谷Deランチというアプリを紹介 兼 開発からアップロードまでした体験談をまとめたいと思います。

紹介

渋谷でランチをする時にお店選びが困らなくなるアプリです!

iOS : 

https://apps.apple.com/jp/app/%E6%B8%8B%E8%B0%B7de%E3%83%A9%E3%83%B3%E3%83%81/id1510506481

Android :

https://play.google.com/store/apps/details?id=tech.landland.shibuya_dejeuner

開発

制作期間

  • 2020 年 02 月 15 日 ~ 2020 年 02 年 29 日 (この期間の内 9 日で完成)

プロジェクトの進め方

1. 仕様書から仕様を把握する

2. github projects に仕様をタスクに分解する

3. 切り分けたタスクに対応する

issue を作成し、タスクでやることを書き込んでいく。詳細に書いてもよし。さらに、issue では、label 機能があり今回はその issue にかかる時間を label で用意し、issue に紐づける形でそのタスクのおおよその時間を計画しました。

4. マイルストーンの作成

マイルストーンに期間毎にやるタスクを振り分ける.

今回は期間が短かったため、3 つのマイルストーンに切り分けてタスクを振り分けました。

  • 1 つ目がレイアウト中心のタスク。
  • 2 つ目がロジック中心のタスクと 1 つ目で出来なかったレイアウトの修正
  • 3 つ目が最初の仕様書に加える要望とテスト、バグ修正等。

5. issue着手

コードの管理は git で行う git-flow のブランチモデルを意識してブランチを分けながら進めて行きました。

https://qiita.com/KosukeSone/items/514dd24828b485c69a05

6. アーカイブ作成、申請

アーカイブの作成やAppStoreの文言作成・スクショ作成をしアップロード!

大変だったこと

AutoLayout

始めは一つの端末でシミュレータを動かして制約をつけて確認してましたが、プルリクを投げて確認してもらった際に、他の端末でみたらボロボロだった時は泣きました。 そこから再度 fix のブランチを作成し、再度制約をつけましたが...完成した際に完成品を確認して頂いた際にも autolayout のエラーが発生してました。泣 storyboard 上で警告が出なくても制約のエラーが出てしまうことが分かりました。これは、デバックの出力のところにエラーが吐かれていてずっとなんのエラーか気になってましたが最後の最後に制約のエラーだと気付けてよかったです。(api 通信時にずっと制約のエラーが発生してて本当邪魔でした)

設計

ロジックを実装してる時に api 通信を行う処理があり、json の値をモデルに格納して使うようにしました。 初めから仕様書に書いてある api から取得する項目をモデルに用意するのではなく、進めているタスクで必要な項目をモデルに追加して進めていくようにしてしまい、ブランチ毎に必要なプロパティやメソッドがまだマージされてなく使えなかったり、モデルの部分でコンフリクトを起こしてしまったりととても大変でした。

今回は Alamofire を使用し api 通信を行いました。モデルと同様に進めているタスクで必要な値を返す api を作成してしまい、他のブランチで api を実装してもプルリクが通るまでには時間がかかるため、他のブランチでは使用できなかったりと不便なことがとても多かったです。

画面が増える毎にファイルが増え MVC を考えフォルダを分ける作業を途中で行いましたが、一つのブランチで行ってしまったために他のブランチではフォルダが分かれてなくマージした際にコンフリクトがバチこり起こり泣く泣くレイアウトを再度組み直ししました。

モデルの設計や api の仕様、フォルダの分け方などは初めのうちにしっかり固めておきそれを各々のタスクで使用できるようにすると開発段階でスムーズに進むと思いました。今回は初めのうちにしっかり定義せずに進めてしまったため、時間が相当割かれてしまったので今後は気をつけたい。

git

Sourcetree を使って git 管理をしました。Sourcetree は git を GUI で操作できるアプリケーションです。

swift の勉強と共に git の勉強も共に進めて行きましたが、ブランチを機能毎に切りながら進めて行きますが、マージするまで他のブランチで作業していたコードが使えない事や git 操作も把握できておらず戸惑うことが多かったです。下記のグラフは Sourcetree を用いてブランチの状態を確認できるのですが初めの方は見方が分からず苦労しました。

一人で機能毎にブランチを切って作業してたため他のブランチで進めてる作業が欲しい時は自分で完結できますが、他の人とやる場合はもっと苦労するのかこれから経験していきたい。

命名規則

フォルダ名、ファイル名、クラス名、メソッド名、関数名、プロパティ名、ブランチ名と自分が決めた命名に分かりにくいと言われることが多かった。1 週間後 1 ヶ月後にわかる命名にするように。 クラス名やフォルダ名においてはある程度命名規則があるのでそれに則りメソッド名に関してはどこで使えるのかやどのように使えるかをクラス名とセットでしっかり付けることが重要。

まとめ

1 プロジェクトは自分一人ではないため、常に他の人が見やすいようにコードなりプルリクなり気を付ける。

2 一人でコードを書いてアップロードまで出来たので、自信がついた。

3 オブジェクト指向について分かってきた。()

4 AppStoreのスクショを自分で作ったが、すぐに新しいデザインに変わってしまった泣

4 開発は楽しい!

インストールお願いします( ´ ▽ ` )