iOSDC でベストトーク賞(3位)をいただきました
8/19-20 にかけて開催された 400人規模 600人規模のiOSカンファレンス「iOS Developers Conference Japan 2016」にて「Xcode で快適なデバッグライフを追い求める」というタイトルで発表させていただきました。
以下、CFPより
僕は怠惰な人間です。プログラミングの大半はデバッグに時間を費やすと思っているので、なるべく早く原因に辿りついたり効率のよいデバッグライフを送りたいと常々思っています。 プリントデバッグもいいのですが Xcode には便利な機能が色々とあります。それらを使うことで簡単に原因を特定できるケースがあります。 visualize されるのは分かりやすいですよね。 それらを tips で紹介できたらなと思います。
発表資料
皆さん怠惰ですよね…? -Xcodeで快適なデバッグライフを送りましょう- #iosdc #a - Togetterまとめ
動画
(近々配信される予定ですので、後ほど埋め込みます)
ベストトーク賞(3位)
投票してくださった皆様のおかげでいただくことができました、ありがとうございます!!!
発表直前まで、この話しおもしろいのか...そもそも時間内に終わるのか...と不安だらけでしたが、うまくいったようで良かったです。Diagnostics の発音が分からなくなった辺りから会場の空気が良くなったので、忘れて本当に良かったなとw
こういった賞レースとは縁遠かったので貰えるとは思っておらず、後ろでバドワイザーを飲んでLTの余韻に浸ってぼーっとしてたんで、しばらく気づかなかったです。。。
反響も多く興味も持ってもらえたようなので本当に嬉しいかぎりです。
LLDB 芸にハマりたくなる気持ち、それな、分かるという気持ちになってる
— Yusuke Sugamiya (@DNPP) August 20, 2016
Xcodeデバッガーの奴、知見に溢れていて素晴らしいセッションだった #iosdc
— ぎぎにゃん (@giginet) August 20, 2016
今スタッフ業務やりつつだから集中して聞けてないけど後で資料をじっくり見て復習したいトーク。 #iosdc #a
— akatsuki174 (@akatsuki174) August 20, 2016
— みろなる |∀・꒱.。oO (CIO) (@mironal) August 20, 2016
会場ドッカンドッカンわかせてた発表だ。 https://t.co/UadlqjPk1M
— huin (koichisakata) (@huin) August 20, 2016
有用過ぎる!!!! / “Xcode で快適なデバッグライフを追い求める // Speaker Deck” https://t.co/iggypVDGYn
— kazuph (@kazuph) August 20, 2016
.@dealforest さんのすごいところは「めんどくさい」で終わらせるんじゃなくて、それをちゃんと解決してしまうところだと思った / “Xcode で快適なデバッグライフを追い求める // Speaker D…” https://t.co/twLyR3xzNE #iosdc
— Kosuke Ogawa (@koogawa) August 22, 2016
補足
発表自体かなり駆け足気味で話してしまったので、少し補足しておきます
Xcode Plugin が動かなくなる
Xcode のバイナリから証明書を消せば一部の Plugin は使えるようになります。みんな大好き XVim は動きます。
すべての Plugin が動くわけではなく一部なので何が原因か特定できず GM が出たタイミングでもう一度調べようと思っています。
詳しくは「Xcode Editor Extension と Xcode8 で Plugin が動かなくなったことについて発表してきました」をどうぞ
どの ViewController かわからない問題
symbolic breakpoint を使えば、特定のセレクタが実行されたタイミングでブレイクできるので、わざわざここかな?と推測してログを仕込んだりしなくても済むというお話でした。
LOG_CURRENT_METHOD
すでに仕込まれていれば便利ですけど、人が仕込むものなので、忘れられている可能性もあったりしますしね。
あとログが出すぎでうざったいとかも Breakpoint だと、該当する箇所だけ無効にするのも簡単です。
実機のログやファイルを取得したい問題
ここで特に触れていなかったので LLDB にslack コマンドがあると思ってしまったかもしれません。すみませんでした。
LLDB のコマンド自体に slack
コマンドはなく拡張しました。
gist から DL して、~/.lldbinit
から import しておくと、slack
コマンドが使えるようになります。
このようにデバッグ用のコードを LLDB のコマンドに寄せると、どのプロジェクトでも使えるし #ifdef DEBUG
のことも気にしなくていいようになるので、ライブラリにするより LLDB のコマンドで実装するようにしています。
おわりに
iOSDC はあの規模の人数を滞りなく終えていたので、とても初回のイベントとは思えませんでした。 さらに懇親会のビールの充実感がすごくて、COEDOの鞠花がビールサーバーであったり BREWDOG やよなよなエールがあったりなど、お酒好きの自分からすれば最高の懇親会でした。
良いカンファレンスは良いビールから。
これだ!!!と思い、これからこのフレーズは使っていきたいなと思いました。
今回のiOSDCやっぱり運営もiOS界隈の人だった事は大事な事実。自分たちも見たいトークがあるのに運営にコミットしてくれた人が沢山いるた。参加者の僕らができるのは来年は運営にもコミットしてみんなが学びの時間になるイベントにする事だと思う。来年は絶対やるよー #iosdc
— huin (koichisakata) (@huin) August 20, 2016
本当にこのとおりで、実行委委員長の長谷川さんはじめ、スタッフの皆さん、本当にお疲れさまでした!!!! 最高な2日間を過ごせました、ありがとございます!!!
おしらせ
iOSDC では話せなかった、もっと LLDB にフォーカスを当てた内容を発表させていただく予定です。
- AKIBA.swift×Swift愛好会 では 「LLDB の世界からみた Swift」
- iOSDC Reject Conference days2」では「魅せるデバッグ技術」
定員は超えていますがおそらく当日キャンセルも出ると思うので、今申し込んでも参加できる可能性が高いかなと思います。