LoginSignup
14
4

More than 3 years have passed since last update.

SwiftGenとR.swift 導入するにあたって

Last updated at Posted at 2019-05-07

はじめに

SwiftGenR.swiftはiOS開発上でリソース管理を楽にできるライブラリ。というより、ツールと言った方がしっくりくるかと思います。
コードに存在するハードコーディングをなくし、運用保守しやすくなります。
そして今回弊社の新規プロジェクトでどちらか採用しようと考え、いろいろ比較したのをまとめます。

対応しているリソース比較

以下のように対象プロジェクトの欲しい部分は両方ありました。
プロジェクトによってはCoreData扱えるSwiftGenは良いですね。(CoreData扱ったことないので、詳しくわかりませんがw)

SwiftGen R.swift
image
font
color
localize string
storyboard
segue
nib
reusable cell
core data ×
plist △(※1)
file △(※2)

※ 2019 4月時点

※1. File読み込みまでは簡潔にできる。
※2. jsonとyamlは設定できる。

導入比較

Xcodeの設定上でBuild Phaseに各々のshellを追加し、走らせる点は同様ですね。
両者の導入方法を見てみましょう。

SwiftGen

以下のswiftgen.ymlファイルでカスタマイズできますので、汎用性が高いですね。

swiftgen.yml
strings:
  inputs: Resources/Base.lproj
  filter: .+\.strings$
  outputs:
    - templateName: structured-swift4
      output: Generated/strings.swift
xcassets:
  inputs:
    - Resources/Images.xcassets
    - Resources/MoreImages.xcassets
  outputs:
    - templateName: swift4
      output: Generated/assets-images.swift

加えてbrewでも用意されているため、xcodeでいちいちビルドして、リソースファイル生成という手間がありません。

$ brew update
$ brew install swiftgen

R.swift

特に設定ファイルもなく、ライブラリをプロジェクトに導入し、Build Phasesで設定し、ビルドすれば、リソースファイルが生成されます。

一律Rprefixで呼び出せるのは一意性があって、良いですね。

まとめ

  • SwiftGen

    • カスタマイズできる
    • コマンド実行でき、ビルドの手間が省ける
    • CoreDataが扱える
  • R.swift

    • 導入が簡単
    • カスタマイズできないため、プロジェクト間の揺れはない
    • 対応リソース間の呼び出し方に揺れがない

結局今回のプロジェクトでは知見がないSwiftGenの方をお試し採用しました。

今回は導入するにあたっての比較となりましたが、いかがでしょうか?ぜひ皆さんの今後の開発のてだすけになれば、幸いです。

14
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
4