iOSDC Japan 2018 で、ベストトーク賞2位をいただきました。タイトルは「iOSアプリの開発速度を170%に向上させたデバッグノウハウ」です。この記事では、スライドの紹介に加えて、スライドに書ききれなかった背景やレビュー体制などについてお話ししようと思います。
発表スライド
スライドでは語られていない発表の目的
この発表は少し特殊な構成で組まれています。発表内で繰り返し出てくる「動作確認の自動化」とは、実のところ「テスト」のことです。しかし、私はこの発表でなるべく「テスト」というキーワードの使用を避けました。
この背景には、iOSDC ではテスト関連の CfP が通らないという経験則があります。私はこの原因を CfP 選考に関わる方たちに次のような人が多いからではないかと推測しました:
- テストをやったことがなくて興味がない
- テストに嫌な体験がある
そこで、上記のような方にも受け入れられてもらえるようなテストの発表を企画しはじめました。前者については丁寧な動機付けとチュートリアルで対応できそうでしたが、後者の対応には頭を悩ませました。ここで閃いたのが「テスト」という言葉を使わないでテストの重要性を説明するというアイデアです。
なぜ「テスト」という言葉を避けたかというと、テストにまつわる嫌な体験が、最近の「テスト」という言葉の使われ方にあると感じたからです。例えば、皆さんも「テスト」を書かなければ村八分、といった押し付けがましいものを見かけることがないでしょうか(この悪い風潮への言及は@t_wada氏による「テスト駆動開発入門」の付録Cによくまとまっています)。このような状況では、テストがどんなに役立つものだったとしても拒否感が先にでてしまうのも無理はありません。そこで、今回の発表では嫌な体験を引きずらないように「テスト」という言葉を避けたのです。
スライドの制作体制
今回印象的だったのは、「スライドをどうしてこんなに綺麗に作れるのか」というご質問でした。端的に理由を説明すると「腕のいいレビューアに丁寧なレビューをしていただいていたから」に尽きると思います。
具体的には、今回の発表ではデザイナー視点(@cocopon氏)・想定聴衆視点(@yokoyas000氏)・社内のテスト識者視点(SWETのみなさま)・社内のiOS識者視点(社内のiOSエンジニアのみなさま)・出版社視点(PEAKSのみなさま)の方々からの多面的なレビューをうけています。また、私が以前から使っているこのスライドテンプレートについては、過去に@itakura2氏のレビューも受けています。
また、私側からもよりよいコメントをいただくために、レビューアに以下の事項を伝えるように努力していました:
想定する聞き手:
- テストをやったことがない
- テストにいいイメージを持っていない
最終的に伝えたいこと(上の方を優先):
- テストを学ぶことの重要性を知ってほしい
- テストを学ぶはじめの一歩はそこまで難しくない
- 自動化の谷の越える/越えないかで天と地の差がある
備考
- 「テスト」が嫌いな人のために「テスト」って言葉は使わないようにしてます
このようなレビューイの工夫とレビューアの方々のご協力によって、わかりづらい配置や説明をことごとく洗い出すことができ、今回のスライドが削り出されたのです。ですから、今回の発表はレビューアの方々の協力なしには辿り着けなかったものと痛感しています。たいへん感謝しています。
言葉のチョイスについて
また、発表や質疑の言葉のチョイスについてもご質問がありました。
Kuniwakさんは言葉のチョイスがうまくて、聞いてて凄い伝わりやすい言葉を用いるのが強いなーと思う。
— ありぜ (@a_aryzae) 2018年9月2日
これは後天的に得たなら学びたさあるなー#iosdc #a
今回の質問のほとんどは、すでに引き出しにあった答えなんです。というのも、実はテストに関する質問ってどれも似たようなパターンなことが多いんです。私は TDD BootCamp の TA 経験などを通してこの受け答えに慣れていた、というのが大きいかもですね #iosdc #a
— Kuniwak@A man using Vanilla DI/Mock (@orga_chem) 2018年9月2日
これを一般化するならば、「人に何かを伝える機会が多いほど、言葉が磨かれる」ということではないでしょうか。
嬉しかったコメント
以下、嬉しかったコメントです(ありがとうございます!):
— ろあ (@roana0229) 2018年9月2日
— ダンボー田中@本書きマン (@ktanaka117) 2018年9月2日
kuniwakさん早口なんだけど整理されてるからすっと頭に入るんだよなぁ。すごい #iosdc #a
— 心中 (@shindyu) 2018年9月2日
— K. Kumamoto @iOSDC 9/1(土) 13:30 Track C (@kumamo_tone) 2018年9月2日
— おもちメタル (@omochimetaru) 2018年9月2日
アイコンイラストの推移が可愛すぎる...... #iosdc #a
— Mai Aisaka (@mist_dev) 2018年9月2日
スライドにXcodeとApp Codeの両方の説明があるの丁寧だし、App Codeへの愛を感じる#iosdc #a
— culumn (@Yoshi64190101) 2018年9月2日
スライドのアイコンの画像がすごい動きしててかわいい #iosdc #a
— 小泉ひやかし (@nnsnodnb) 2018年9月2日
#iosdc #a AppDelegate経由でテストするパターン、考えたことなかったけど面白いのは面白いな〜(普通にXCTest使うのがいいけど)
— 池田・ジェンキンス・翔 (@ikesyo) 2018年9月2日
ユニットテストという単語出さずにXCTestの話してるの斬新 #iosdc #a
— 心中 (@shindyu) 2018年9月2日
— mogaming (@_mogaming) 2018年9月2日
質問の受け答えが的確だしおだやかですばらしい #iosdc #a
— Yuki Sumida (@y_sumida) 2018年9月2日
スライドも素敵で喋りも全て納得のいく感じで質問の受け答えもわかりやすくてすごい
— もっちー (@Motchy_1204) 2018年9月2日
#iosdc #a
@orga_chem さんの発表スゲーよかった。
— Shuhei Kagaya (@kgy_shuhei) 2018年9月2日
体調悪かったけどほんと来て良かった。#iosdc #a
発表めっちゃよかった!
— なかの (@nkano_t) 2018年9月2日
Qiitaのhttpクライアントを自作する記事も何度も何度も読み返して参考にさせていただいてる超いい記事です。
僕はこの記事のおかげでテストを少しずつですが書くようになりました。
.@orga_chem さんありがとうございます🙇♂️#iosdc #a
https://t.co/7urHEqeZe8
.@orga_chem さんのスライド、発表では割愛するけど、後から読むひと向けの配慮もされてて読み物としても成り立ってるのがすごい。
— Objective-ひろC (@hirothings) 2018年9月2日
テキスト少なくて登壇見ないと内容全然分からん…とかがない。
もちろんnoteとかで別途読み物にする手法もあり https://t.co/8HH2SbQQCC
kuniwak氏のiOSDCの発表凄く良かったです、次にオススメしたいのは過去の発表「iOSでテスト容易な設計を実現するためのデザインパターン」の写経です。個人の感想ですが、昨年一番の知見が得られてます。https://t.co/Y7vUCa7ISD
— tanaka (カバの方)@Go勉強会 (@tikidunpon) 2018年9月2日
kuniwak さんの発表、iOSアプリフレームワーク(とswift)が題材なだけで、本質はフレームワークや言語に関係ないし、もちろん内容がとても良い。自動化の壁では完全に Android でも同じことが言える。あとデザインがよくて見やすい。https://t.co/FQpLI83krf
— jmatsu (@red_fat_daruma) 2018年9月2日