LT1回しかしたことなかったエンジニアがKotlinConf 2017に登壇したお話

KotlinConfに登壇しました。海外カンファレンスでの登壇はなかなか出来ないので良い資料になればと時系列で出来事全て書き残しておきます。 (そしてまた海外カンファレンスで登壇出来る日が来て、このエントリーを自分が見直す日がくることを祈ります)

だいぶ長いし、エモいし、技術者としてのコツとかはないので、こういうのが嫌いな方は戻るボタンを押して下さい。ほぼ推敲もしていない雑文です。

こんなポエムで批判とかされると嫌なので、批判する可能性がある方はぜひ時間を浪費せず、戻るボタンをクリックして下さい。

またKotlinConfの内容は一切ありません。別途記述します。

KotlinConfが開催されることが発表

開催のアナウンスされたのが3/15あたりで、3/28に何かKotlinに関することを検索していたら偶然サイトを見つけて、KotlinConfの存在に気づきました。

そのすぐ後、登壇者はタダ!に気づきました。

当時まだ転職前で、トラウマになりつつあるカンファレンス参加。。。

転職直後でしかも海外カンファレンスにいきなり行かせてもらえるか不明だったのでこれは「CfP通っちゃったんで行きますね!タダだし。」とするしかないと自分の中でCfP出すことにしました。

(でも正直に言うとrefundされるか不明でしたが、どうしても行きたかったので、チケットはその日に購入していました。NGと言われたら会社休んで行ってしまい、また「海外カンファレンス自腹。転職したい」と呟けば誰か拾ってくれるんじゃね?と楽観的でした。そんなフラフラして良い業界でないことは承知しています。)

CfP

3/28のうちにCfPが通りやすそうな事柄を自分なりにリストアップしました。

  • Kotlinの機能に関してはJetBrainsや日本のKotlin勢には勝てるわけないので、そこに注力するトークは厳禁
  • JetBrainsが話せないことにする
  • 自信があることにする
  • 自分が話すことがベストだと思うような内容にする

これに当たる項目として以下の2つが思いつきました。

それから4/1にまでに特に自信があったHow to KontributeのCfPを作るために以下のことをしました。

  • 有名海外カンファレンスのセッションの説明を読み漁る(Google IO、WWDC、RubyKaigi、DroidKaigiなどなど)
  • How to Kontribute (for Japanese) - Shiraji's Blogのサブタイトルごとにセクション分け
  • ブログの英訳
  • 有名カンファレンスの説明を参考に楽しそうな雰囲気の説明を記述
  • 主催者にしか見えないメモ欄にはそれぞれのセクションで何を話すのか2,3文で概要を記述

その後、数日放置して、4/7にもう一度読み直し、これで落ちたらどうしようもないやろ?という気持ちになったので祈りながら申請しました。

人生初のCfPでした。

その後、4/30までに追加で3つほどCfP出しましたが、どれも落ちました。というか今思えばあのレベルのカンファレンスで2つとか通るわけない。。。

CfP通過まで

その後5月に転職し、会社がKotlinConf費用全部出してやるよ!by上司という言質を取りました。 (※広告※ 弊社太っ腹なので、興味ある方、弊社に来てください!英語出来ると尚可) そこでKotlinConf何が聞けるかなーと楽しみになりました。その後、Google IOでKotlinがGoogleにもサポートされることが発表され、KotlinConfの注目度がものすごく上がり、これはますます楽しみだなとなりました。

Google IOを受け、Kotlin助走本を出しません?というありがたいお誘いを頂き、5/29にそれがリリースされ、それを見てからボストンの出張に行きました。 ボストンではひたすらAndroid開発をしていました。

6/13朝起きてなぜか普段しないメールを確認したら[ACTION REQ'D] Congratulations!...というタイトルのメールがあり、「スパムか。Gmailにしては珍しいな。しっかりしろよ」ととりあえず開いてみたら、以下のメールがきていました。

本当にこれクリックする前で、震えてクリック数回失敗しました。ボストンにいるエンジニアたちに話したら、まじかよすげー!となって嬉しかったです。

その数日後、日本人(最終的にはアジア人)の誰も登壇しないことが判明して、辞退する方法ってないの?とおえっとえずくことが何回かありました。

登壇準備

それから数日後よく考えたらこのトピックJetBrainsが広告にしたいだけで需要ないだろうし、会場に行ったら誰もいなくて、何もせずにアメリカで旅行出来るんじゃね?という発想に切り替わったので、とりあえず準備することにしました。 (ここは反省点。需要がないという考えでいくと後で響く。CfP勝ち抜いたという自信を持つ。落ちた方に失礼。)

その前にまず、自分の発表経歴を書いておくと2017/06時点での登壇回数は「1回」です。その1回もIntellij plugin勉強会@サムライズムさんでCustom Inspection - SSSSLIDEの話をさらっとLT5分で話した程度です。実際は3分半くらいで終わった。今スライド見てみたけど、コンテンツがない発表でした。。。

そのため、KotlinConfまでにどこかで登壇経験しないとたぶん本番トーク中に死ぬということが明らかでした。そこで、助走本などで関わりがあったCAの@satorufujiwaraさんCA.kt #3 - connpassに出させて欲しいと依頼しました。 他にもTokyo Android Meetup (東京都, 日本) | Meetupで英語のスピーチを外国人向けにしていることを把握していたので、PermissionsDispatcherでのつながりでお世話になっている、@hotchemiさんとイベントの管理者の@niko_yuwonoさんに連絡をして、登壇させてもらうようにしました。

改めて、枠を作って頂き、本当にありがとうございました!

この時点でTokyo Android Meetupが9月終わりに、CA.ktが10月中旬になるだろうということになったのでそこから線を引きました。

  • 7月: 話す内容確定。スライド完成
  • 8月: 練習
  • 9月: 練習
  • 9月末: Android Tokyo Meetup
  • 9月末~10月中旬: Android Tokyo Meetupの反省点修正+練習
  • 10月中旬: CA.kt
  • 10月中旬~11/2: ひたすら練習

普段登壇されている人からしたら非常に余裕のあるスケジュールですが、長いトーク、初の登壇でしかも海外カンファレンスで英語でと考えたら自分にとっては異様に短いくらいでした。 ただ、話す内容はブログでもう書いてあるから、極力早めにすすめて練習に時間を割こうという考えでした。

7月中旬くらいに予定より早めに話す内容が確定。ほぼほぼスライドも頭の中では確定しました。ここまでは良かったのですが、問題が発生しました。

www.nintendo.co.jp

Splatoon2がTLに流れまくります。一時Twitter見ないようにするか?と思ったのですが、情報収集に必要なため、無理でした。 嫁ちゃんに呆れられ、買って良いよと言われたので、初めてSplatoonを買いました。めちゃくちゃはまりました。 そして、準備が滞ります。完全に社会人失格です。

8月中旬に盆休みで家を離れた際にSwitchを家においていき、Splatoon断ちをし、8月後半でなんとかスライドが形になりました。

仕事ではあんまり遅延させたことがなかったので、挽回方法がわかりませんでした。でも引き続きやばいなーと思いつつ、Splatoonとプレゼンの練習しました。

9/20事件

Android Tokyo Meetupを1週間後に控え、Kotlinプラグインの中の人がこんなツイートをします。

実は、登壇が決まったタイミングからKotlinへのコントリビュートやコミットの確認などを怠っていました。プレゼンするんだから!とSplatoonの時間をそちらに割けたはずですが、言い訳していました。

たぶんそこまでプレゼンに影響ないだろ?と思いつつ、コミットを調べていきました。事態のヤバさを正確に把握したのが9/22

その間、実は世界中のkotlinコントリビューター誰一人ビルド出来ない異様な状況になっていて、 中の人が「古いバージョンでも出来るから今のところ古いバージョンでやってくれていいよ?」とさすが欧米!と思うくらいな発言をしてきました。そんなんKotlinConfの時にはもう落ち着いているだろうし、練習の意味がなくなるやん!!!と苛立ちました。 なんとかコミットを全て確認し、ドキュメントが間違っていたので、修正PRを投げ、設定が一つ吹っ飛んでいたので、そこも修正PR投げ、プレゼン資料を修正し終わったのがAndroid Tokyo Meetupの前日でした。

すごい軽い感じでツイートしていますが、この一週間はエンジニアとしてやれること全てを出し尽くした感じです。またこれ以降build.gradle.ktsの監視とKotlinConfまでに今後こういうことが起きないように祈りました。無宗教ですが。

Android Tokyo Meetup

付け焼き刃でしたが、なんとか一通り話せるまでになったので、登壇しました。(会社で修正後のスライドを使って練習させてもらった。上司にはリソースの振り方など完全に任してもらっていた。ありがたい。)

同僚ではない人前で話すのがLT以来でしたが、案外うまく出来ました。フィードバックももらい、修正点がいくつか上がりましたが、これ以上ないほど上出来な感じで、「オレやれば出来る子じゃん?」と調子に乗り、Splatoonに戻りました。

CA.kt #3

修正をいくつかし、動画を16:9用に撮り直し、準備万端で登壇しました。

(余談ですが、英語で画面遷移などを全て説明してもわかりにくいし、飽きる。興味を持ってもらうために、デモか動画かで悩み、デモをやってみたら、ビルドで10分かかりPCがフリーズしたので、デモを諦めて、動画を多用することにしています。デモをKotlinConfでもちょくちょく見かけましたが、本当にすごいです。。。)

しかし、Tokyo Android Meetupは発表者との距離が近く、会話形式にほぼなっていたため気づきませんでしたが、一人で舞台の上で話すことの孤独さにここで初めて気づきました。 何が驚きかと言うと、思った以上に反応が返ってこないんです。(ただしTwitter上では盛り上がってくれていました。) 反応がないため、通じているのかどうなのかわからなくなり、パニック状態に陥り、何を話せばいいのか思い出せず、スライドのメモを読み続けるしかないと判断し、とにかく早くこの舞台から降りるために早口でひたすらスライドのメモを読み続けました。 しかもいくつかメモにかかれていないことがスライドに書いてあったりで、すっ飛ばした内容があったりともうそれは酷い内容でした。録画されてなくてよかった。 終わった後、こんなくそな30分を100人弱の方に見せてしまった。本当に申し訳ないという気持ちになりました。

なので、CA.ktを観た方は頭を打って当時の記憶を消して頂き、KotlinConfの動画も観て下さい。CA.kt #3にshirajiは登壇しなかったことに。

悪い点ばかりではなく、良い点もありました。

  • 動画があると、しゃべりがダメでもなんとか持つ
  • メモさえあれば、真っ白になっても挽回可能
  • 日本人技術者はTwitter好き。しかも結構しっかり聴いてくれているし、反応がTwitter上ではしてくれる。

CA.kt #3から当日まで

まず何がいけないのかを整理しました。

  • 反応がない場合、パニックになる
  • メモが不完全
  • 練習時間が足らなすぎ

ここで、一つ明らかになりました。Splatoonです。Splatoon断ちを決めました。そして、まずはメモとスライドをリンクさせました。 反応がない場合の件はそもそもTwitterみんな観てるんだから反応なくて当たり前だわ。という結論に至ったので、日本人相手ならそういうもんだということにしました。今後も日本人向けの登壇はそういうものだと割り切ることにしたほうが良さ気です。 また、外国人相手の場合、どうしたら反応をもらえるのかを考えたところ

  • 熱中させる
  • 真剣さ、誠意を見せる
  • 好奇心をくすぐる
  • KISS(Keep it simple stupid)
  • 巻き込む

くらいのことをやれば反応が良かっただろうと考え(野球の川崎選手のMLBでの対応を参考にした)

  • 一文が長い話を短文にする
  • 最初に質問をして、反応が来る前に、ah?と言って強制的に巻き込む

当たりに修正しました。(ah?のほうは当日他の点ですでに巻き込めていたため、当日使わなかった。)

前日

朝の10時にSFに到着し、白山さんとデートをしました。 その後、あんまり公に言って良いのかわからないのですが、スピーカーディナーがありました。船の上で。 Android開発者で有名な人を挙げて下さいと言ったらあの神思い出しますよね?彼ももちろん参加していましたし、今まで雲の上の存在だった人が目の前にいて普通に雑談していました。

その中で自分は無名だし、英語のコミュニケーション下手だし、そもそも何を話せば良いのかわからず、ポツンとしてしまいました。(JetBrainsの人が声をかけてくれたりして、なんとか楽しめました。)

そのまま何も発生せず、歩いてホテルまでみんなで帰ったのですが、そういえば元々このトークに需要なんてないし、コミュニケーション力ないし、なんで自分こんな調子こいてこんなところにおるの?アホなの?と泣きそうになりながら帰りました。

ところが、ホテルに入る直前で、急に @queencodemonkey さんに「あなたがいそがいさん?」と呼び止められ、「How to Kontribute聴きたかったのだけど、私の時間がその後(正確にはスケジュール変更が直前にあり、同じ時間になった)で練習しなきゃいけないから聞けないんだよ。残念。絶対録画観るね!」と言われ、そこで初めて日本人以外の人に話聞きたいと言われたことに気づいて、おっさんなのにガチ泣きする寸前になり、お礼を言って、泣く前に部屋に戻りました。

(日本人と記述していますが、日本にいる開発者のことを総称しています。簡単に言うと自分のことを知っている人=日本人として定義しています。誤解がありましたら、申し訳ありません。)

そして、日本の知っている人が来てくれると言っているんだし、CA.ktのリベンジしなきゃいけないし、そもそも選んだJetBrainsがいけないわけで何があっても俺のせーじゃないし、もうどうにでもなれや。という感じになりました。

当日

朝起きて、まだ上の状態でよっしゃーーーー!とやる気になり、一回練習して、会場に向かいました。 会場では午前中のセッションを聴いて、レベルの高いセッションを聴いてしまい、アカン!とまた気持ちが沈みました。

そこで、午後からの聴きたかったセッションを捨て、練習し直すことにしました。自分の発表会場の近くで一通り練習し、改めてレベルの違いに気づいてしまって、逆にやる前からほぼパニック状態に。

もう終わったわ。と思っていたら、偶然JetBrainsのエバンジェリストHadiさんがゆで卵食い始めたところを見つけて、ここしかないと、話しかけました。

自分「緊張しまくっているんだけど、どうすれば?」

Hadiさん「プレゼン失敗したとしたら、何を失うの?」

自分「吐く?」

Hadiさん「それはあかんw」

自分「まぁ吐いても特に自分には問題ないかも。何も失わない?」

Hadiさん「やろ?」

(ちなみに英語なのでこんなアホな会話ではないですが、Hadiさんと話すといつも自分はこんな感じのラフな会話に脳内変換しています。)

気持ちが楽になりました。吹っ切れて、写真撮ってもらいました。

その後、嫁ちゃん+息子くんからの激励もありました。

体が本当に楽になりました。

トーク

一つ前のトークが終わり、舞台に上がり、プレゼンが写ることを確認、マイクを体につけてもらい、時間まで待ちます。

ひたすら待っていると緊張するので、ジャンプしたり、とにかく体を動かしていました。 そのあたりで、日本人エンジニアが前のほうの席を陣取ってくれて、写真撮ってもらったりしました。 これが本当に気持ちよくて、なんでKotlin界隈はこんな良い人たちばかりなんだ。最高だわ。と思いました。

この時点で海外の方もちらほら会場に入ってきてくれて、え?まさか自分のトーク需要あったの?となりました。

最終的に始まるまでには後ろ側の席も埋まってしまって、もう有頂天でした。

そこで、「日本語英語だからな!嫌なら別の部屋いけよ!」とマイク入ってないのに大声で叫び、聴講者から「そんなん気にせんわーぼけー」という反応があり、あ、この反応あればいけるわと確信しました。 (ただし、この発言のせいで下に見られた可能性も捨てきれないため、あまりこの手法はよくなかったかもしれません。)

実際、動画が公開されればわかると思いますが、自分が狙っていなかったところでも笑いが起きたり、反応が非常に良かったです。 特に嫁ちゃんのことを言ったときの反応が良かったのが正直驚きでしたし、最初のほうで反応がもらえたので、これはまじでイケるぞ!と気分が乗れました。 また途中でアドリブで笑わせられるところないかと考えて、実際に即興でやってみたら案外笑ってもらえて、今思えば何しているんだということも実はしていました。

でもやっぱり緊張のせいか早口になってしまったようで予定より5分ほど早くトークが終了してしまいました。 前日に早口になっちゃうかも?と冗談で入れた、自撮りしようぜ!スライドがあったので、冗談なしで、本当に自撮り+客席撮影登壇中にさせてもらい、時間を稼ぎ、質問タイムを短くしてなんとかしのぎ(ただし、間違った回答をしたため、中の人にその場で修正してもらっていますw)、登壇終了となりました。

終わった後、本当にトークが良かったから写真撮ってと海外の人に写真撮ってもらったり、質問を個別で対応したりしました。特に難しい質問ではなかったので、なんとかなりました。。。

感想

登壇後や翌日、カンファレンス会場を歩いていると、急に知らない人に呼び止められ、すごく良かったよ?や握手して!なんて言われました。こんなことされる日がくるなんてなーという感じです。 また、Hadiさんに2日目に呼び止められ、「見間違えではなければ、お前のトークまじで投票結果良かったようだよ。見間違えでなければ。」と言われました。たぶん見間違えです。

証拠画像

なんと自分の記念すべき登壇の写真を撮り忘れるという失態を犯しましたが、わざわざ自分のセッションを聴いてくれた方に写真を頂いたので、ここに挙げさせてもらいます。

@yusukeさんから頂いた画像の一枚

f:id:shiraji:20171104193102p:plain

@shanonimさんから頂いた画像の一枚

f:id:shiraji:20171104192744p:plain

ngsw_taroさんから頂いた画像の一枚

f:id:shiraji:20171103084927j:plain

その他良かった点

そろそろブックマークされるのが落ち着いただろうし、ひっそりと追記(11/8アメリカ西海岸時間)。

発表日のPC2台持ち

人が多く、場所が足らないためなのか、控室がなく、電源もありませんでした。そのため、別のセッションを聴く時のメモ用マシンとトーク用マシンを2台持って行きました。これで特に気にせずに別セッションを楽しめました。

スライドのスクリーンが発表者側にもあった

動画の説明時に振り返って説明する必要があると思って準備していたのですが、前を向いても発表者がスライドのスクリーンが見えるようにディスプレイが置かれていました。本当にこれが助かりました。

マイク

腰に機器をつけてもらい耳にかけるタイプでした。首を動かしたり、移動してもマイクが音を拾ってくれるので、ジェスチャーがしやすく助かりました。

アダプター各種

不安だったので、アダプター各種を持って行きました。活躍はしなかったですが、重くもないので、発表時は必ず持って行くのが良いかなと。

証拠動画

www.youtube.com

スライド

photos.google.com