とりあえずやってみればいいじゃん

とりあえずやってみればいいじゃん

エンジニア関連のことについてつらつら書くブログ

#iOSDC でAuto Layoutのデバッグの話をしました

今年は30分枠をもらってAuto Layoutのデバッグの話をしたので、そのことについて書きたいと思います。

スライド資料

省略版はこちらです。これを元にトークをしました。

完全版はこちらです。
※自分のトークと同時に公開したのですが、その時は完全版と言いつつ完全版になっていませんでした。すいません。今は16tips、181枚揃ってます。

事前準備

詳しいことや完全版のスライド資料にも乗らなかった補足説明はこちら↓に書いてます。ものすごい時間帯でのトークになってしまったということ、iOSDCという大きな舞台でのトークであること、「Auto Layouをデバッグする時にこれを見れば大丈夫!」というものを作りたかったということもあり、かなり入念に調べ、連日資料作りをしていました。たぶん今までで一番時間をかけて準備したトークです。

akatsuki174.hatenablog.com

おかげさまで胃は痛めなかったものの、1週間前に背中は痛めましたwたぶん長時間ずっと椅子に座ってたせいですwわりと痛かったので整体とマッサージと湿布という白魔術を使って凌ぎました。

そんなこんなでなんとか資料は作りましたが、当然ながら全部喋れるような量ではなくなったので削りました。半分くらい。それに加えライブデバッギングにしたのでさらにスライドの量は減りました。なんとなくもったいない感はあったのですが、スクショを淡々と見せるより実際にやって見せた方が頭に入ってくるかなと思ったのでライブデバッギングを選択しました。より一層準備が大変になったのは言うまでもない。

ちなみにトークが最終日だったのでこんなかんじでした。

当日

登壇

あの時間帯だったわりにはちゃんと人が来てくれた感があって良かったです。ライブデバッギングはちゃんと全部成功したし、トークも時間内に終わったので思い残すことはないかなと思います。

余談としては、スクリーン表示用のMacとは別にiPadを用意してライブデバッギングの内容も書いてあるスライド(つまりカンペ)を手元に表示してプレゼンしてたのですが、最後の方になってそいつがクラッシュしたのでちょっとだけ焦りました。なんとかなりましたが。

個人的に良かったなと思ったものとしては、予約ツイートがあります。事前の練習で「何分頃にこの話題に入るからその時に関連資料をツイートで流しておこう」と計画し、TweetDeckを使って予約ツイートを設定しました。その様子はかっくんさんがまとめて下さったTogetter↓からも見ることができます。

togetter.com

質問と回答

Q&AやAsk the Speakerで質問されたものの中で覚えているものをここに書いておきます。

Q. Storyboardで優先度の設定が入るとどこで何してるかわかりづらい。どうにかならないもんか。
A. Storyboardは見た目に関する設定にフォーカスして、切り替えが必要なものについてはできるだけコードで書けばわかりづらさは解消されるはず。

Q. facebook / chiselのborderの色は、x階層目は必ずy色というように決まっているのか
A. 私が何回か使っている範囲では決まっているっぽい。ただ、オプション指定で色や線の太さは変えられる。

Q. スクロール量によって変化するUIのデバッグは?スクロール途中で何かがおかしくなる。
A. スクロールして、おかしくなった瞬間にビューデバッガーとLLDBを駆使して原因を特定するのが良さそう。

Q. Aspect比の関係で画面の横幅に応じて縦のコンテンツ幅が決めるレイアウトで、ワーニングが出てきたりする。
A. 一度レイアウト設定をしてから、画面の横幅計算が終わったタイミングで再描画をかけるなどするのが良さそう。
※実際、初期化時にAuto Layoutの設定(高さを除く)をして、 override func draw~ の中で画面の横幅に応じて高さを設定してうまくやっている箇所が弊社コードにありました。

その他、Revealというツールがいいよというコメントもありました。これ知ってはいたんですが基本有料なので特に詳しく見ておらず…。

これから

GitHubサンプルコードとしてわざと崩したレイアウトと、それが解消されたレイアウトを置いているのですが、解消に至るまでの解説がまだ不十分なのでそれを書きます。とりあえずQiitaで書いてそれを貼り付けるかんじにします。その後余裕が出てきたらGitHub上にちゃんと英語での解説を付けようかという野望はあります。いつか。

ということでQiitaとかTwitterとかでこれからもAuto Layoutのデバッグ周りは発信していきます。

Qiita
Twitter

最後に

いろいろ大変でしたがAuto Layoutのデバッグ周りはだいぶ詳しくなって、登壇駆動勉強がだいぶ捗ったかなと思います。やっぱり定期的に登壇をして知識を固めたり、そのフィードバックをもらうのは良いなと思いました。

来年もまたiOSDCで登壇できるよう、日々勉強と経験を積んでいきたいと思います。