【英語スピーチの振り返り】日本で初開催のCakeFest 2019での登壇、スポンサーしました

こんにちは、はじめまして、お久しぶりです!BASE BANK株式会社にてソフトウェアエンジニアをしている東口(@hgsgtk)です。2019年11月7日(木)〜11月10日(日)にCakePHPの国際カンファレンス CakeFest 2019 が、日本で開催されました。私は、スピーカーとして参加したのですが、初めて30分強、国際カンファレンスで話す機会となったので、発表のために準備したことや反省点も踏まえて、参加レポートをお届けします。

CakeFest 2019

CakeFest 2019とは、PHP製ウェブフレームワークの一つであるCakePHPの国際カンファレンスです。年に1回開催されており、今回は初めて日本での開催となりました。

cakefest.org

CakeFest 2019は、Workshop dayが2日、Conference dayが2日の合計4日間でした。WorkshopはDMM.comさんのオフィスが会場で、Conference dayはSmartNewsさんのオフィスが会場になりました。

私は、Conference dayからCakeFest 2019に参加しました。

f:id:khigashigashi:20191111095552j:plain

ノベルティが豪華で、CakeFestのElePHPant(緑色の象)と、CakePHPのノートなどをもらえました。

また、私はスピーカー参加だったのですが、スピーカーは、あまり世に出回っていないと噂のCakeDCのElePHPant(青色の象)も貰えました!

f:id:khigashigashi:20191111095619j:plain

また、ネックストラップ・名札もおしゃれです。今回、BASEは、シルバースポンサー・ランヤードスポンサーとして協賛していたので、ネックストラップにはBASEのサービスロゴを入れていただいています。CakePHPのFounderのLarry Mastersさんなど、普段お世話になっているOSSのコアメンバーの方が、自社のロゴの入ったネックストラップをつけている光景は大変感慨深い光景でした。

f:id:khigashigashi:20191111095713j:plain

basebook.binc.jp

また、今回、参加したBASEのエンジニア4名で、Larry Mastersさんと記念撮影していただきました!

f:id:khigashigashi:20191111095738j:plain

最終日には、CakePHPのケーキが参加者全員に振る舞われました。

f:id:khigashigashi:20191111095759j:plain

Presentation

私は、Conference day初日の11月9日の夕方に35分ほど、Test-Driven Development to avoid test painfulという話をしました。

f:id:khigashigashi:20191111095826j:plain

「テストがつらい」という状況に対して、TDD(Test-Driven Development)がどのように使えるのかを説明する内容です。TDD自体の説明には、現在beta4がリリースされているCakePHP4.0のサンプルコードを用いて、ライブコーディングを行いました。

資料

資料には、ライブコーディングでその場で話した部分も入れています。TDDのアプローチを行うことで、テストからコード設計に対するフィードバックを受けることができます。設計道具としてテストを使える点が伝われば幸いです。

ライブコーディング中に使用したサンプルコードは、GitHubの下記のレポジトリに公開しています。基礎となる内容は、CakePHPのチュートリアルとなっているContent Management Tutorialで、これにデモするための機能を追加したコードになっています。

github.com

CakePHPは、開発中最新の4.x-devのbranchを利用しました。もともとは、バージョン3.5を利用していたコードだったので、4.0へのバージョンアップもこの発表機会を機に実施しました。バージョンアップしてみて気がついた点などは、別途12月のCakePHP Advent Calendar 2019でブログを書きます。

発表後の反応

発表後、「良かった」というフィードバックをいただくことができました。また、Twitterをエゴサすると、「ライブコーディングが参考になった」・「TDDやっていくぞ」といった反応があったので、何かしら参考になってポジティブな影響を与えられたような発表になった気がします、、、!

準備

CakeFest 2019は、初めて英語で30分強話す機会でした。「カンファレンスで英語でトークしたい」と思っている方は潜在的に多いと思うので、今回どのように準備したか紹介したいと思います。

社内でエンジニア英語勉強会を開催した

とにもかくにも、先人たちのカンファレンスでのトークを見て、英語でのフレーズとか雰囲気に慣れていきたいところがあったので、継続的かつ定期的に学ぶために、社内でエンジニア英語勉強会を始めました。6月から半年間毎週、TEDのトークやテックカンファレンスのトークを聞きました。

半年継続したおかげで、6月当初は「ほとんどわからん...!」となっていた状態だったのが、「なんとなくこういうこと言ってるよな」と分かるようになっていきました。

また、いろいろなスピーチを見つつ、スピード感・スライドの量や構成・話のはじめ方などを考えることができました。

英語の原著を参照した

普段、翻訳された日本語があれば、それを読んでいるのですが、英語で人に伝えるとなると、どのように専門用語が表現されているかを知る必要があります。そのニーズに、原著は最適でした。実際に、今回のカンファレンストークをきっかけにいろいろな書籍を購入して読んで参考にしました。自分の例では、「Growing Object-Oriented Software, Guided by Tests」や「xUnit Test Patterns: Refactoring Test Code」、「Practical Object-Oriented Design: An Agile Primer Using Ruby」などを参考にして、実際に発表資料内でも引用させていただきました。

逐次通訳を想定した原稿

今回のCakeFest 2019では、逐次通訳があったので、自分の話を通訳の方が日本語に翻訳していく時間があります。これは本当に初めての経験だったので、自分の発表が何分で終わるのか全く読めませんでした。結果経験してみて、逐次通訳があるとそれを前提にした話し方が必要だと感じました。

具体的には、自分で喋れる時間と量が、単純計算で半分になるので、短く簡潔にワンセンテンスで伝える必要があります。今回のトークでは、スライドに書かれた文章とは別に、スライドごとに一文で説明する原稿を用意していました。

ライブコーディング用のメモ

ライブコーディングが一番頭を使いました。英語を考えつつ目の前のPHPコードを書いていくことになるので、相当パニック状態で進めることになります。

最悪困って脳が停止したときの拠り所として、コードと話す言葉を用意しておくといいです。実際に使ったのは、ちょっと長いコードのコピペにつかったくらいですが、問題発生時の準備は多いに越したことはありません。

事前練習・添削

社内発表練習を計2回行いました。実際に母国語ではない言語で話すとそれだけで普段の倍くらい時間がかかりました。泣く泣く話を削っていきながら、ちゃんと参加者の方々の期待感に応えられそうな内容を増やしていく作業となりました。また、実際に話すことで詰まってしまったり違和感を感じる表現が出てくるので、それらを原著や海外スピーカーの話を参考に修正していきました。

さらに以前、GopherCon 2019でLightning Talkをした際に、練習に付き合っていただいた、英語が得意な方に個人的にお願いしてスライドの英語表現を添削いただきました。

練習や添削に付き合っていただいた方々には、この場を借りて改めてお礼申し上げます、ありがとうございました!

ふっと話す用の英語用意

スライド外で喋りがちな英文を120%の準備としてあるとよいです。今回、たまたま用意していた一文が、I'm sorry to keep you waiting(待たせてごめんね)だったんですが、後に書くのですが本当に機材トラブルで遅れて参加者の方を待たせることになるので用意しておいてよかったです。

その他にも、時間がなくてスライドをカットしないといけない時のセリフとか、例外系発生時のフレーズを用意しておくと安心できると思います。

反省・改善点

また、反省点や他の方の発表を見て気づいた改善点もあったのでまとめてみます。

手元で原稿見る用の機材準備

今回、私はライブコーディングがあったので座りっぱなしで話していたのですが、PCから離れて立って話す方がベターではあります。理想を言えば、全部暗記しているか暗記しなくても心の中から英語が出てくるのがいいのですが、なかなかそうもいきません。 同じくスピーカーだった@t_motookaさんの発表では、PCをスクリーンにつないで、スライド操作をiPadで行っていました。それであれば、立って話せるしスライドごとの原稿も見れていいなと思いました。次回は、その手法でやります。

残り時間を見失った(凡ミス)

機材トラブルで当初の時間から遅れて始まったこともあって、内心めっちゃ焦っていました。普段、logicoolにタイマーを設定しつつ、バックアップでスマホのタイマーを使って自分の持ち時間の残りを確認しています。今回非常に凡ミスをして、ライブコーディングでスライドから離れたタイミングでlogicoolのタイマーがリセットされ、さらにスマホのタイマーも動かすことも忘れていました、、、。

時間が押している上で何時までに終わればいいのか見失ってしまい、喋りながら「今何分経っているんだ」とソワソワし続ける羽目になってしまいました。これに関しては、気をつけようくらいしか教訓は無いかもしれませんね・・・。

結果、30分弱だったので最適解だったなと思いつつ、「これ話しておきたいな」と思った部分をいくつかカットしたのが心残りでした。

また、これは余談ですが、MacBook Airが機材と相性悪くて映らないパターンが、今年24回発表していて3回確認されています。機材相性が悪いことは他のPCでもあると思うので、AirPlayでもできるように準備するなど対策をしておくといいでしょう。

Speakers

最後にケーキと一緒にスピーカーとコアスタッフのみなさんで写真を取りました。

f:id:khigashigashi:20191111095857j:plain

また、CakeFest 2019参加者でカンファレンスバナーにサインしました。

f:id:khigashigashi:20191111095915j:plain

ここにも、BASEのサービスロゴを大きく入れていただいていたので、BASEの近くにサインしました!

最後に

CakeFest 2019では、普段のカンファレンスではなかなか機会が少ない、CakePHP自体のノウハウやそれを題材にしたトークをがっつり聞けました。また、普段GitHubやSlack上でやり取りをさせていただいていた、CakePHPのリードエンジニアである@mark_storyさんや、日本人コアコミッターの@chinpei215さんなどと直接話せたり、とても楽しい時間を過ごさせていただきました。

このような楽しい時間を用意していただいた、CakeFest 2019の運営メンバーの方々に感謝いたします。また、参加するチャンスが有れば、次回のCakeFestにも参加したいと思います。

Thank you for holding CakeFest 2019 in Japan!