酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

clgをXcode 11でビルドできるようにした

griffin-stewie/clgをXcode 11 (Swift 5)でビルドできるようにしました。

今週末はダークモード対応をしていたことで、Colors.xcassets を利用していきたいという気持ちが高まりました。ふだん使いの clg でダークモード対応すべく、Colors.xcassets 出力できるように対応しようとしたところ、残念なことにSwift 2.0時代で更新が途絶えてしまっていて、プロジェクトをそのまま開いてビルドするのもしんどい感じです。

clgが便利ツールであること

過去に「〇〇イベント2018夏」「〇〇イベント2019春」のようにUIがほぼ同じで、画像リソースや色リソースが大きく異なるアプリを開発していた時期がありました。

色を変えるのは簡単なので、最初の方はiOS/Androidアプリ向けにちまちま手作業でRGB値を入力していました。次第に画面が増えてくると1色変更するたびに膨大な工数がかかるようになってしまいました。作業ひとつでは時間かからないけど、如何せん変更する箇所が多すぎる。

無駄な作業を減らすべく、自然と利用しているリソースを管理して、一箇所に色リソースをまとめることにしました。この頃はまだAppColor.swiftcolors.xmlの値をそれぞれ書き換えてスクリプトでプロジェクトディレクトリへコピーするくらいでした。AppColor.swiftはUIColorの拡張メソッドです。

2017年3月ごろ、それでも限界がきたのか clg を使って jsonからAppColor.swiftcolors.xmlを生成するようになりました。

現在では「〇〇イベント」アプリの開発から手が離れて、自作アプリのiOS/Androidの開発用に利用しています。このツイートでも言ってるけれど、jsonを一箇所直せば、iOSとAndroidに同時に適用できるのが偉いと思っているのですが、僕以外に使ってるのを聞いたことがないです。

コンバート作業自体はとてもスムーズに終わった

griffin-stewie/clgのSwift 5.0への移行作業に取り掛かるまでに、かなり気合が必要だったので手をつけてなかったけど、これ以上コンバートが苦痛な状態にしたくなかったので、三連休最後の成果として頑張りました。

Swift 5.0への移行作業で一番つらかったのは、昔のXcodeが動くMacBook Proを用意するのとXcodeをダウンロードするのにめっちゃ時間がかかったこと。

次はダークモード対応でも使えるように Colors.xcassets を 出力できるようにしたいですね。