こんにちは。
サンタ業務を控えているパパiOSエンジニアのkentaroです。
今年実施したトレタ iPad台帳のカラーリファクタリング(v35.0にて対応しました)についてご紹介します。
なぜ行ったのか
これは担当デザイナーの言葉をそのまま引用します。
トレタはリリースされてから5年、デザインが大きく変わることはありませんでしたが、機能追加で画面が増えていく過程で、微妙な差の色も含めて120色も使用されていました。
色数が多いと下記のような問題が発生します。
- プロダクト内の統一感がない
- どの色を使用すればいいか考えなくてはいけないので、デザイナーの作業工数がかかる
今回は2つ目の業務効率化をメイン目標にリファクタリングしています。
どう変わったか
ホーム画面
キーカラーを少しだけ濃くして白文字の視認性を上げています
予約フロー画面
背景に埋もれがちだったテキストのコントラストを上げて視認性を上げました
フッターも装飾を少なくし、入力を邪魔しないよう修正しています
タイムテーブル・テーブルレイアウト
背景に埋もれがちだったテーブルレイアウトのステータスのコントラストがはっきりするよう調整しました
自分が担当したこと
新しい色の管理方法やソースコード上での利用方法の設計提案、実装の補助(困ったときに相談してもらう)、ソースコードレビューを行いました。
デザイン担当
date001 (去年のアドベントカレンダーにも登場いただきました)感謝!
去年のアドベントカレンダー
実装担当
実際に手を動かしてくれたのは CSからエンジニアにジョブチェンジしました でおなじみの@yukimura03です。感謝!
QA 担当
三度の飯より寿司が好きでおなじみのQAエンジニアの林です。感謝!
実装について
実装について紹介していきます。
色の定義
Asset Catalogに定義しました。
これによりソースコード上でもIB(Interface Builder)上でも名前をkeyにして同じ色が扱えるようになりました。
ある名前の色を少し調整したい、というときもAsset Catalogを編集するだけですみ、変更にも強くなりました。
ソースコード上で使いやすくする工夫
色名を表す Enum
と UIColor
の Extension
を用意し、Enum
の case
を渡して UIColor
を取得できるようにしました。
/// Assetsに定義した色を表すEnum @objc enum ColorPalette: Int { case green500 case green400 case green300 case green200 case green100 case green50 // その他の色も定義していく // MARK: - Property /// Assetsで定義した色名を返す /// /// ObjcでrawValueが使えないので暫定 /// トレタで実際に利用している命名とは異なります var rawValueString: String { switch self { case .green500: return "green-500" case .green400: return "green-400" case .green300: return "green-300" case .green200: return "green-200" case .green100: return "green-100" case .green50: return "green-50" } } }
extension UIColor { /// カラーパレットに対応するUIColorを生成する /// /// - Parameter palette: ColorPalette @objc convenience init(_ palette: ColorPalette) { // ここで落ちたらColorPaletteかColorSetに定義ミスがある self.init(named: palette.rawValueString)! } }
呼び出し
// Swift let green50 = UIColor(.green50)
// Objective-C
UIColor *green50 = [[UIColor alloc] init:ColorPaletteGreen50];
終わりに
カラーリファクタリングはiOSエンジニアだけではなくデザイナー・QA等様々なロールの仲間と取り組んでおります。
その中で「すでにカッチリ決まった仕様を実装していく」よりも「早い段階から複数職種が議論して作り上げていく」ほうが性に合っていると感じました。
同じような考えをお持ちの方にはトレタと相性がいい可能性高いと思いますので、是非遊びに来てください!
立ち呑みトレタ
という交流イベントもやっています。
前回のお知らせはこんな感じです。
次回は1月下旬頃との噂。詳細決まり次第お知らせ出るかと思いますので興味のある方は是非お越しください!