Swiftの開発でstoryboardを使う意味
解決済
回答 3
投稿
- 評価
- クリップ 1
- VIEW 5,598
iOSアプリ開発をしたいと思い、xcodeで開発を始め、入門書を一冊読み終えました。
入門書では、基本的にstoryboard上でUIを作成していましたが、
ネットの情報や手元のSwiftポケットリファレンスでは、コード主体でのUIの作り方が記載されています。
そこで、2点ほど疑問に思ったのですが、
⑴storyboardでUIを作るメリット/デメリットは何でしょうか?
storyboardが視覚的にUIを設計できてとても便利だということは承知の上での質問です。
⑵また、ポケットリファレンスではコードベースで記載されているのはなぜでしょうか?
もしもstoryboardが万能だとしたらわざわざコードベースでの説明とせず、図主体のリファレンスの方が扱いやすいように思えてしまいます。
初心者はstoryboardで作成し、上級者になればなるほどかゆいところにも手が届くコーディングベースでの開発となっていくのか、
それとも上級者でもstoryboardとコーディングを使い分けているのか・・・
よろしくお願いします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+3
storyboardでUIを作るメリットはすでに理解されている通りですが、デメリットはいろんな場所に設定が散らばっていて必要な情報が隠れやすく流用がしづらいということだと思います。例えばStoryboardで作られているビューを別のプロジェクトに流用したかったら、とりあえずビューをコピーした後、アウトレット接続等の設定を一度全部見直して再接続したり、制約を再設定したりする必要があります。すべてコードで書かれていたら、そのビューを定義しているファイルをコピーし、そのビューを利用するコードを書けばいいだけです。(その利用するコードを書くのが面倒という話もありますが)
質問にあるポケットリファレンスは見た事ありませんが、おそらく全てコードで説明した方が必要な設定が説明しやすいのだと思います。初心者には図入りのリファレンスの方がわかりやすいと思いますが、ある程度理解している人には、コードで書かれていた方が必要な設定が簡潔にまとめられているので理解しやすいということです。そして、そのコードで書かれた設定をStoryboardで使う場合にはどうしたらいいかという事はだいたい理解しているし、Storyboardで設定できない部分はコードで書けばよいと思っているので、Storyboardで説明してもらう必要がないのです。
たぶん上級者ほどstoryboardとコーディングの使い分けがうまいと思います。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+2
個人的というか、プログラムをする会社の1社員として答えさせていただくのであれば、
基本的な部分はstoryboardで作っておくと多少コードが汚くても他の方への引継ぎや見直しが楽になります。
View周りはコードベースで書くのは個人的にとても楽なのですが、よほど綺麗に書いておかないと後が大変です。
後、大きいアプリになってくると、開発途中でもスポンサーやデザイナー等にUI見せて案のすり合わせ等が何度も入ってくるので、storyboardである程度形が見えないと説明が大変です。(絵の準備が大変)
ちいさめのアプリ作ってリリースするというのであれば、コードベースで全然かまわないと思ってます。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
StoryBoard使用派なので偏りがありますが、、、どちらも大切だと思っています。
⑴storyboardでUIを作るメリット/デメリットは何でしょうか?
・メリット
ビジュアルで見えるので、UIの配置を変更するのが楽(「引き継いだ人もひと目で見て分かりやすい」とか「 デザイナーでも操作に慣れれば見た目を触れる」)
UI部品のプロパティの設定をGUIでできるので楽
画面遷移など画面間の結びつきが分かりやすい
Autolayoutの設定もビジュアルで見えるので分かりやすい(これは意見が別れるかな?)
・デメリット
使い回すときにIBOutlet、IBAction等を設定し直すのが面倒
そもそもUI部品のプロパティの動きが分かっていないとどこで設定されているのか分からない
⑵また、ポケットリファレンスではコードベースで記載されているのはなぜでしょうか?
StoryboardからUI部品の全てのプロパティの設定できるわけではありません、コードベースでの記述も必要になるので勉強も必要になります。
あわせてStoryboardでの設定はあくまでも初期値を設定しています、ユーザーの操作に応じてプロパティの値を変更するときにはどちらにせよコードでの変更が必要になります。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.36%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/06/13 22:52
たしかに、storyboardを使うとコードのどこに何が書かれているのか、何を書かなければいけないのかがわかりませんでした。
逆にコードで書いたものがstoryboard上に現れないのも少し不便ですが・・・。
ポケットリファレンスですが、実現したい機能がまとめられていて便利だと感じることがある反面、初心者の自分にとってはつまずくポイントが多いです。
例えば、「テーブルのセルを表示する」という見出しで以下のようなコードが書かれています。
```Swift
VC/TableStyleViewController.swift
override func viewDidLoad(){
super.viewDidLoad()
//テーブルに表示するデータ
items = ["Item1","Item2","Item3"]
}
//テーブルのセルのデータを指定
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
//セルを生成
var cell = tableView.dequeueReusableCellWithIdentifier(kCellIdentifier)
if cell == nil {
cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: kCellIdentifier)
}
//セルのタイトルにX番目に該当するデータを指定
cell?.textLabel?.text = items[indexPath.row]
return cell!
}
```
itemsはString型の配列だということはわかるのですが、kCellIdentifierが何なのかがわからずにつまずいてしまいます。
変数名からCell固有のIDオブジェクトみたいなものだとは何となくはわかるのですが・・・。
このような時に欲しい情報を得るにはリファレンスを読んで理解するのが最も効率が良いでしょうか?
2016/06/14 02:21
そのポケットリファレンスを読んだこともないのにコメントしてしまいますが、そもそもポケットリファレンスというのは、一度理解したことある機能を使う必要が出てきた時に、どんなんだったかパッと思い出すために携帯して使うものじゃないでしょうか?
なので、tableView.dequeueReusableCellWithIdentifierのパラメータの意味が何かは、もっと親切で丁寧な入門書でテーブルの作り方の基本を勉強しておいて、ポケットリファレンスは実際にテーブルを作らないといけなくなった時に入門書で勉強したことを改めて思い出すために見ればよいように思います。
2016/06/14 23:32
入門本よりも少し難易度が高くて、実例が豊富な技術書があればいいなと思いつつ、なかなか見つけられません。
入門本より難易度が高めの本となると、実例を交えた本というより、swiftの言語仕様そのものに言及したものが多いように思えます。
何かおすすめの書籍などがあれば教えてください。
トレーニング日誌アプリを作りたいと考えています。
(カレンダーやグラフなどを使って、本格的に作ってみたいです。)
それか、使ったことがありませんが、Githubの方が勉強になるでしょうか?
2016/06/15 00:28 編集
> トレーニング日誌アプリを作りたいと考えています。
> (カレンダーやグラフなどを使って、本格的に作ってみたいです。)
すみませんが、私はあまり書籍を持ってないのでおすすめを紹介することはできません。
何かやりたいことがあるなら、とりあえずやってみて、わからないところはネットで調べればいいと思います。
ただ、ネットには正しくない情報もありますから、実際に自分でやってみて、最終的には
Appleの公式リファレンスで仕様を確認しておく必要があります。
GitHubは、何か勉強するために参照するものではなく、何かやりたいことがWebサイトで解説されていて、その解説のサンプルコードやライプラリがGitHubで公開されているなら利用させてもらえばよいと思います。
カレンダーを作りたいとか、グラフを作りたいとか具体的にやりたいことがあれば、ネットを調べれば最終的にGithubで公開されているサンプルが見つかるかもしれません。
2016/06/15 12:48
ご教授いただきありがとうございました。