iOSのUITableViewが難しい話
Mobile Act NAGOYA #1でのLTの内容をQiita用に投稿します。
自己紹介
- 龍一郎 (@K_Ryuichirou)
- エンジニア(主にiOS, ARも少々)
- アプリ開発勉強会を開催中 (2016/3〜)
- Nagoya.Swift+
- 最近Doorkeeperを使い始めました
今日の内容
- iOSの学習でつまづきがちな箇所について共有
- 実際に勉強会で課題になった箇所について共有します
- 学習者から見て、何が難しいのかについてお話します
- 解決策については対象外とします
勉強会のご紹介
- Nagoya.Swift+
- 2016年3月から毎月一回開催中
- 向上心と好奇心を満たすため、分野を超えて挑戦するフリをして遊びます
- メンバー:11名
- 主に主催の個人的な知り合い
- 内容: Swift, Unity, 機械学習など各自が気になったもの
- 後援: idea+ (http://www.idea-plus.biz/)
勉強会の参加者
-
参加者のうち、ほとんどがIT系エンジニア
-
普段は開発をやっていない方々がメイン
- 開発経験者も「書くこともある」程度
-
入門書を書き写したりして勉強する方が多め
- 自分でテーマを設定して学習する人も
勉強会の風景
iOS学習時によくある問題
- 入門書のサンプルアプリ1〜2個はできた!
- Hello, world.的なアプリはOK
- if文、while文とかもOK
- クラスの定義も書いた
UITableViewを使ったアプリをやる!
なぜか動かない
どうすればいいのかわからない
FIN.
ありがちな症状
- 何を言っているのかわからない
- 何をやっているのかわからない
- なぜ動かないのかわからない
1. 何を言っているのかわからない
原因1. 用語の急な増大
- 入門書でも3ページでこれだけ増える
- UITableView
- UITableViewController
- UITableViewCell
- UITableViewDelegate
- UITableViewDataSource
- delegate
- dataSource
- プロトコル
原因2. デリゲートの多義性
-
油断すると全部「デリゲート」と言ってしまう
- UITableViewのプロパティ(delegate)
- UITableViewDelegateプロトコル
- デリゲートパターン
-
「UITableViewのデリゲートを設定する」はどれ?
2. 何をやっているのかわからない
原因3. InterfaceBuilder
- StoryboardでUITableViewのプロパティを設定する操作が、それと気がつきにくい
- 更に知っている人は「UITableViewのデリゲートを設定すればいいよ」とか言ってしまう
- Storyboardを使うなと言っているわけではない
原因4. デザインパターンの壁
- デリゲートでデザインパターンが初めて出てくる
- 初心者向け書籍では解説されない
- 良くて「デリゲートは処理を他のクラスに移譲することです」程度
- 全くない場合もままある
原因5. フレームワークの壁
- MVC的な考え方をここではっきり意識することになる
- ViewとViewControllerの違いがわからなくなりがち
- 当然、初心者向け書籍では解説されない
3. なぜ動かないのかわからない
原因6. UIに関する部分のデバッグが難しい
- Storyboardの設定ミスではアプリが黙って落ちる
- コードを逐次実行していくとAppDelegateで落ちる
- 書いていないところで落ちて何が何だかわからない
原因7. 入門書が間違っている
- なぜかUITableViewになると解説書の間違いが多くなる
- 今までと同じ方法で動かなくなるのは大変なストレス
原因8. コードが悪いのか自分が悪いのかわからない
- 「こんな簡単なことを聞いていいのか」となりがち
- Webサイトのコードが動かなかった場合に発症
- 大概、サイトが悪いけれどそれがわからない
- 特に書籍のコードが動かなかった場合に被害が深刻
解決策
解決の方針
- 何が難しいのか共有する
- 何故それが難しいのか解説する
- その難しさにどう対処しているのか解説する
まとめ
- これから書く人向け: UITableViewはむずかしい
- 1人で理解しようとしてえらいことになりました
- 書ける人向け: UITableViewはむずかしい
- その難しさを分析できるだけの能力があるはず
- 初心者の視点から解説するの大事