StoryBoard Referenceについての所感
StoryBoard Reference
Xcode7からStoryBoard間での参照ができるようになりました。
今までのStoryBoardでは、1つのstoryboardファイル上で複数のエンジニア・デザイナーがそれぞれ異なるViewControllerのオブジェクトに編集作業を施してマージを行うと、容易にファイル競合(コンフリクト)が発生してしまいました。(バージョン管理はgitを使っていると仮定)
- 作者: 西方夏子
- 出版社/メーカー: インプレス
- 発売日: 2014/06/18
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
StoryBoardは御存知のようにXMLで記述されているので、競合を解消するとなるとstoryboardファイルをエディターで開き、競合箇所を探し、都度手作業で直すという恐ろしく泥臭い作業をこなさなければいけません。
もちろん、この競合をさけるため1storyboardファイルは1作業者とルール付けをし、そのルールを守るためにstoryboradファイル自体に収めるViewControllerのオブジェクト数も限定する(脱・Moster Storyboard) という、設計レベルからの十分な考慮をされている方もいらっしゃるでしょう。
ただ、アプリの「機能」という軸で画面を分割していく過程で、どうしても1人のエンジニアが大量の画面群と遭遇してしまうことは往々にしてあるのかと思います。そういったケースの打開策として、上述のように無理矢理、複数人で同一storyboardを編集してファイル競合の憂き目にあうのではなく、StoryBoard Referenceの利用により複数人による安全な開発を行うということは十分現実的なのかと考えられます。
また、開発の現場においては、例えば「ユーザの回遊率アップを図るため実験的に画面の追加、それに伴う画面遷移の変更」というような突然の仕様変更が不確実な要素として降ってくることは往々にしてあるでしょう。そのような時にstoryboard間での参照機能があれば、新たに追加しなくてはいけなくなったViewControllerを専用の別のstoryboardに追加して、その参照を今回の「対応」の対象となるstoryboardに持たせることで比較的安全かつ柔軟に、そして今後の保守を見据えて「不確実な要素」に対応することが可能になるのではないでしょうか。
使ってみる
Xcode7 betaをインストールする
StoryBoard ReferenceはXcode7 betaから導入された機能です。
使うにはXcode7 betaが必要です。
ダウンロードしましょう。
storyboardファイルを用意する
今回は2つのストーリーボードを用意します
- Main.storyboard
- Detail.storyboard
Main.storyboardのViewControllerからDetail.storyboardのDetailViewControllerへReference経由で遷移します。
Main.storyboardを開きます。
オブジェクトライブラリーにStoryboardReferenceが追加されていることを確認しましょう。
もし、StoryboardReferenceが無ければあなたの使っているXcodeはXcode7-betaではありません。
StoryboardReferenceを配置する
Main.storyboardのキャンパス上にStoryboardReferenceを配置します。
StoryboardReferenceのアトリビュートエディッターを開きます。
項目は以下の3つ
- Storyboard
- 参照を持ちたいStoryboardファイルを指定します。指定は.storyboardより前の名称だけです。
(今回の場合はDetail
)
- 参照を持ちたいStoryboardファイルを指定します。指定は.storyboardより前の名称だけです。
- ReferencedId
- Detail.storyboard内で参照したいViewControllerのStoryboard IDを指定します。
(今回の場合はDetailViewController
)
- Detail.storyboard内で参照したいViewControllerのStoryboard IDを指定します。
- Bundle
- 使用するBundleを指定します。(デフォルトは
Main Bundle
)
- 使用するBundleを指定します。(デフォルトは
Detail.storyboardにDetailViewControllerを配置する
DetailViewControllerを配置したら、Storyboard IDにDetailViewController
を設定しましょう。
Segueを設定する
遷移イベントを発火させるButtonとStoryboardReferenceをSegueで結びます。
これだけ
あとはbuildしてシュミレーターで起動しましょう。
Main.storyboardのViewControllerからDetail.storyboardのDetailViewControllerへReference経由で遷移することができました。
すごく簡単でしたが、これでStoryBoard Referenceを介してStoryboard間での参照ができるようになりました。
打倒!MonsterStoryBoard!