StoryboardやXibは使わない方が良いかも?

まだ、もや〜としているのですが、規模がある程度まで大きいものや長期的に開発を続けるものには、StoryboardやXibは使わない方が良いかもと思ってきました。
今まで、大規模なものでも使ってきましたが、長期的に開発を続けていると、途中でXcodeのバージョンを移行することが多くあります。特にMacのアプリの場合、動作環境は数年前のOSでもサポートしています。開発環境は最新OSでやっていても、ユーザーの環境は古いという組み合わせはごく普通のことです。すると、不具合が起きたときに、3個くらい前のOSでのみ再現するということが往々にして発生します。そんなとき、その環境を用意して、いざデバッグしようと思うと、Xcodeのバージョンも古くしないと出来ないという状態になります。コード自体は古いバージョンでもビルド出来るのですが、XibやStoryboardのフォーマットバージョンに阻まれて、ビルド失敗になることがあります。
もちろん、Xcode上でXibのフォーマットバージョンを下げることは出来ますが、数が多いと大変です。また、Xcodeのメジャーバージョンを2つくらい下げるときには、次のように多段階に下げる必要があります。
(1) 最新版で下げられる所まで下げる
(2) 下げたところを開けるOSとXcodeを別に用意して、更にターゲットの所まで下げる
(3) ターゲットで開発
そして、ターゲットの古いバージョンで修正が終わって、Gitにコミットするときには、コードだけをコミットします。Xibはビルドのためだけに下げているので、コミットしません。しかし、疲れていると、間違えてコミットしてしまうこともあります。それが原因で別の問題がとなると目も当てられません。
この操作ミスの可能性も無くしつつ、Xcodeのバージョン横断も出来るようにと考えていくと、XibやStoryboardを使わずにコードだけで作った方が良いと思えてきました。
また、別の人も書かれていますが、GUI上の変更もコードになっていれば、Git上で追いやすいという利点があります。差分が分かりやすいからです。
短期的には少し余計に時間がかかるかもしれませんが、長期的にはデバッグや開発環境更新時のトラブルを減らすことが出来ると思います。

少しやってみて(2017/06/24 13:13追記)

実際にやってみると、座標の感覚になれていないところで時間がかかりますが、一度、作ってしまえば、再利用もやりやすいと思います。
同じ座標や同じ大きさのダイアログなどは結構ありますし、特定の種類のボタン(例えば、「OK」ボタンや「Cancel」ボタンなど)は常に同じような座標で使うので、それらは直ぐに作れる様になります。
もうしばらく、実際にやってみて、検証していきます。

しばらく経ってみて(2021/04/15)

使う使わないは一概に言えないと思っています。現在は使うようにしています。また、Xcodeのバージョンを遡ることがかなり減りました。

投稿者プロフィール

林 晃
林 晃アプリ開発者
アールケー開発代表。Appleプラットフォーム向けのアプリ開発が好きなアプリ開発者。アプリの受託開発、技術書執筆、技術指導・セミナー講師。3DCGコンテンツ作成にも取組中です。

基礎から学ぶARKit


「基礎から学ぶARKit」を執筆しました。本書はARKitを使ったARアプリの開発方法を解説した技術書です。

ARKitを使ってARアプリを作るときの流れや基本的なAPIの使い方などをサンプルアプリを作りながら学べます。

詳細

基礎から学ぶMetal


「基礎から学ぶMetal」を執筆しました。本書はMetalを使ってGPUプログラミングを行うための最初のステップを解説するMetalの解説書です。

私が初めてGPUプログラミングを行ったとき、どこから手をつけて、学んでいけば良いのか分からず呆然としました。もし、あのとき、これを教えてくれればという部分を解説しました。本書で解説している部分はMetalの基礎となる部分で、Metalを使うときに必ず触れることになる部分です。

詳細

関連記事

  1. Mac Pro の強さはベンチマークの数字以外にもある

  2. Mac OS X 10.5.8上でのRKDetailDesignのプリ…

  3. RKTextConverter 1.0.0公開

  4. ネットワーク越しのTimeMachineでの復帰方法

  5. 色々試した末、Fire TVにしました

  6. 週一メンテナンス

最近の著書

  1. 基礎から学ぶ SwiftUI

最近の記事