iOS Swift 5| R.swiftでリソース管理を楽ちんに

DAIKI MOCHIZUKI
7 min readApr 9, 2018

--

Do More!
2019年4月10日追記:Swift5での導入方法が変わりましたので、文中にやり方を追加で書きました。

どうも、もっち(@dkmczk)です。

今回は、私がプロダクトを作る際に必ず導入するライブラリの1つであるリソース管理ライブラリ「R.swift」の説明と導入方法を具体的な事例を交えて、紹介していきたいと思います。

何ができるのか?

iOSアプリを開発したことある人なら、必ず一回は頭を悩ませたであろうハードコーディングによるスペルミスのエラーを防ぐ時にとても役立つライブラリです。例えば、下記の場合は良くあるパターンでは無いでしょうか?

本来なら、Hogeというストーリボードを呼び出したいのに、hogeと小文字のスペルミスをしてしまって、アプリがクラッシュしてしまう、なんてありがちですよね。

let hoge = UIStoryboard(name: "hoge", bundle: nil).instantiateInitialViewController() as? HogeViewController
詰んだ…

そんな時に役立つのが「R.swift」、ハードコーディングによるスペルミスや、画像、ストーリーボード、セル、色などのリソースを呼び出す時に、コード補完で作業の生産性を著しく向上させてくれます。なにより、ソースコードに直接文字列を打ち込まなくなるので、コードが見やすくなります。

しゃきーんッ!

上記のコードをR.swiftを使って書き直した場合は、こんな感じになります。

let hoge = R.storyboard.hoge.instantiateInitialViewController()
喜びが止まらない

直接、ソースコードに文字列を打ち込むことは無くなり、短くそして可読性も上がっています。 R. まで入力すると、コードの自動補完で入力することができます。

導入方法

さて、便利なことを分かって頂けたことと思いますので、さっそく導入に入っていきます。まずは、Podfileにライブラリを追記します。

pod 'R.swift'

完了したら、 pod install をしましょう。

次に、 Run Script を設定していきます。 TARGETS > Build Phases に進み、 + ボタンをクリックして下さい。

R.swiftの設定 ①

ボタンをクリックすると、下記のポップアップ画面が出ますので、 New Run Script Phase をクリック。

R.swiftの設定 ②

次に、新しく生成されたRun Script[CP]Check Pods Manifest.lockCompile Sources の間にドラッグ&ドロップをして下さい。

ドラッグ&ドロップの詳細

Run Scriptをクリックし、黒い画面部分に、下記コードを挿入して下さい。※Swift3.x系の場合、generate の部分は必要ありません。

"$PODS_ROOT/R.swift/rswift" generate "$SRCROOT"

Swift5での導入方法

Swift5系の場合は、青枠で囲まれている部分に下記のコードを挿入して下さい。

"$PODS_ROOT/R.swift/rswift" generate "$SRCROOT/R.generated.swift"

そして、Input Filesと書かれている部分で、+ボタンを押して、下記コードを挿入します。

$TEMP_DIR/rswift-lastrun

その後、Output filesと書かれている部分で、+ボタンを押して、下記コードを挿入します。

$SRCROOT/R.generated.swift

入力が完了したら、アプリをビルドして下さい。アプリフォルダを見てみると、 R.generated.swift が生成されたことを確認できるかと思います。

R.generated.swift

次に、生成されたR.generated.swift をプロジェクトのルートに移します。下記を参考に、ドラッグ&ドロップでファイルを移動させて下さい。※ copy item if needed はチェックを外して下さい。

ファイルを移動

ここまで完了しましたら、下記を参考に HogeViewControllerHoge.storyboard を作成して下さい。

HogeViewController

その後にアプリをビルドし、 R.generated.swift を見てみると、このようにリソースファイルまでのアクセスが定義され、型指定でリソースへのアクセスが可能になるという仕組みです。

では、実際に試してみましょう。先ほど作ったリソースへのアクセスを試してみます。

型補完

このように、型が補完され、Hoge.storyboard までのアクセスが容易にできるようになりました!

最後に

上記以外に、

  • Images
  • Fonts
  • Resource files
  • Colors
  • Localized strings
  • Storyboards
  • Segues
  • Nibs
  • Reusable cells

などのリソースファイルへのアクセスが対応しています。詳しくは、公式のドキュメントを見てみて下さいね!

— — -

TwitterでiOS関連の情報発信をしています。
もし良かったらフォローを宜しくお願いします。

--

--

DAIKI MOCHIZUKI

Seattle based software developer (iOS, Android, Flutter). I have recently moved to Seattle from japan.