# MoyuruAizawa/TimetableLayout
https://github.com/MoyuruAizawa/TimetableLayout
縦横にスクロール可能なタイムテーブル画面を実装するためのViewコンポーネント。DroidKaigi2019アプリ内のタイムテーブルを実装を任されたのでついでにライブラリ化しました。
CATS(CyberAgent Advanced Technology Studio)でWinTicketを開発していたときに競輪のオッズ表を実装するためにRecyclerView.LayoutManagerをスクラッチで開発した経験が元になっています。
このViewコンポーネントに関する資料はかなり少ないので、英語資料複数とGitHubで公開されているコードや公式のコンポーネントを読み漁って実装しました。
# MoyuruAizawa/Cropify
https://github.com/MoyuruAizawa/Cropify
Jetpack Composeに画像をCropするライブラリで自分の納得のいくものがなかったので自分でつくりました。
Android View版で人気だったCropライブラリとにた触り心地を再現するよう開発しました。
# Snapshot Test
## 参考リンク
https://twitter.com/MoyuruAizawa/status/1154339690142560256
https://github.com/cats-oss/fastlane-plugin-snapshot_test
## モチベーション
UIテストをしたい。しかし、UIテストは実装コストもメンテナスコストも高い。その矛盾を解決するためにCATS(CyberAgent Advanced Technology Studio)内で仕事として開発したFastlaneプラグインです。
## 詳細
1. apkファイルをFirebase Test Labにアップロードし、Firebase Test Lab上でテストしたい画面のスクリーンショットを網羅的に撮影。
1. そのスクリーンショットと、予めFirebase Cloud Storageにアップロードしておいた前のコミットのスクリーンショットとをダウンロードし、2つのスクリーンショット間に差分がないかを検出。
1. 差分があった場合にはBEFORE, AFTER, DIFFの3枚のスクリーンショットをPullRequest上にコメントの形で通知する
- どんな変化があったのか
- 意図しない変化が生まれていないか
といったことを都度自動で検出することが可能になります。
styleの変更など多画面にわたって影響のでるものや、ライブラリのアップデートによる微細な変化
といったことまで機械がピクセル単位で自動検出してくれるので結構便利です。