ishikawa_pro's memorandum

若手webエンジニアの備忘録です.

Swift Node.js Docker AWS etc...色々やります。

Googleのiosched-ios リポジトリが勉強になる

お久しぶりです。
3月に大学を卒業して、今は渋谷で新卒としてWebエンジニアしてます。
まだ研修しかしてないのでそれほど大変でもないですが、中々家でコードを書く体力がなくてSwift書けてないです。

何となくブログ書くかなという気になったけど、ネタがないので同期が教えてくれたリポジトリを貼っときます。

iosched-ios というGoogle.ioのkeynoteのタイムテーブルなどが確認できるiOSアプリのリポジトリで、GoogleGithubアカウントが公開してます。
github.com

デザインなど

アプリのデザインは マテリアルデザイン(material-components-ios)で作られていました。
StoryBoardは一切使っていなかったです。

サーバーサイド?

バックエンドはFirebase(主にfirestore)使っていました。
Google.io開催前は、Homeタブのupcomming eventsという部分で開催までのカウントダウンをしていたのですが、firestoreのドキュメント内で開催までの残り時間を減少させて、それをrealtime updateを使って変更を受け取ってリアルタイムにカウントダウンさせていて、なるほどなーってなりました。(firebaseのプロジェクト見れないのと、結構ざっくりしか見てないので間違ってるかも)

アーキテクチャ

アーキテクチャは、MVVMっぽいですがRxSwiftなどは使わずピュアなSwiftで作られていました。 firestoreのrealtime updateとかを使ってmodelの変更を伝播してるような感じの所もありました。
UICollectionViewのDataSourceをUICollectionViewDataSource protcolに準拠した、NSObjectのクラスで管理しているのは勉強になりました。

その他

ライブラリは全部cocoapodsで管理されてました。
firebaseのsdkがcocoapodsにしか対応してないからだろうけど、それ以外のcarthageに対応してるライブラリもcocoapodsで管理してたのは何でなんだろう?
単純に1つのツールで管理した方が楽だからかな?
リポジトリ自体は9コミットしかなく、最初の1コミットでコード自体は完成したもの上げてるだけだった。(多分1人で開発した?)

感想

僕はむやみにRxSwift入れたく無い派で、割と似たような実装方法してる所もあったり、そういうやり方もあるのかと感動する所もあった。
まだ、コードを読み切れてないので、時間見つけて解読進めて自分の知識にしていきます!

今日はここまでにします。
本業の方も頑張ります。