こんにちは。BASE BANK株式会社でバックエンドエンジニアをやっている東口(@hgsgtk)です。
先日開催されたGo Conference Tokyo 2019 Springにて、「Design considerations for container-based Go applications」というタイトルで20分トークのお時間をいただきました。このエントリでは、発表内容をどう作ったかということについて紹介してみようと思います。
発表内容
実際に発表したスライドはこちらです。私が去年から取り組んできたサービス開発で得た実践知見を、なるべく忠実に投影した発表内容にしました。
Go・コンテナの組み合わせで開発・運用している・したい方が多いのか、当日は立ち見の方が出るくらい多くの方に参加していただき、大変感謝です。
今回は、トーク準備にあたって、どのように発表内容・構成を作っていったかについてご紹介します。
発表構成を考えるにあたって
トークするにあたって、至極当たり前のことなので恐縮ですが、「トークを聞きに来る人の期待に応える時間にしたい」という風に思います。この発想を重視して、次のような流れで発表内容・構成を考えました。
- 「誰に役立ってほしいか」というありたい姿を整理する
- 期待チェックリストを作る
- 期待に応えるための構成・ストーリーを作る
1. 「誰にどう役立ってほしいか」というありたい姿を整理する
「自分が共有する内容はこういう人に役立つはず」というトークのありたい姿を考えます。実際、このトークでは次のように定義していました。
- 誰に:Go、コンテナでのアプリケーションを本番導入しようとしている方
- どう役立つ:「これでいいのか?」という不安を少しでも解消して一歩進める内容にしたい
2. 期待チェックリストを作る
実際に話を聞きにきてもらう「聴講者の期待」・場を与えてくれる「カンファレンスの期待」の2点について考えて整理しました。
聴講者の期待
自分がトークする20分の時間、聞いてくださる方々の時間をお借りすることになります。全ての人の期待にしっかり応えられるかわかりませんが、なるべく多くの方にとって有意義な時間にしたいです。そのため、「プロポーザル概要を読んで何を思うか」について新鮮な目で見直しました。
今回のプロポーザル概要はこちらです。この概要を読んで「どんな事を話してくれそう」と期待するかをリストアップしてみます。
Go言語でのアプリケーション開発で、特にコンテナを前提とする場合の設計考慮点について話します。 例えば、Go言語でAPIを開発する場合、コンテナとして動かすことを前提とするケースが多いと感じます。コンテナベースで動かすことを前提とした場合、コンテナイメージ作成・アプリケーション監視において、考慮すべき点が出てくるでしょう。このトークでは、Go言語での実装にまで踏み込んだ上で、コンテナベースアプリケーションにおける設計の考慮点について話します。
カンファレンスの期待
トーク時間をいただくにあたって、プロポーザル審査の時間をかけていただき採択いただいています。そのため、「カンファレンスとしてどういうことが期待されているのか」について改めて見直しました。実際、公開されてるCall For ProposalのSelection Criteriaを読み直しました。
結果的に、ありたいトークの姿・聴講者の期待・カンファレンスの期待を総合的に見て、次の期待チェックリストになりました。
- Goの話が聞ける
- 知識ではなく実践の話が聞ける
- 業務導入の参考にしたい方のために業務での実践の話が聞ける
- コンテナ使う場合に抑えておくと良い設計ポイントがつかめる
- その設計ポイントを実現するためのGoの実装例が聞ける
3. 期待に応えるための構成・ストーリーを作る
ここまで期待を定義した上で、構成・ストーリーを考えていきます。特に今回のトークタイトルだと、「抽象的な概念の話」なのか「具体的な実践の話」なのかどちらなのかわかりずらいだろうと感じたので、トークの課題・背景共有を入れる方式にしました。
トークの課題・背景共有
前述したようなこのトークで伝えたい内容を定義します。「こういう話するんだな」という認識の統一を図る意図です。例を挙げると、「このトークで持ち帰ってほしいこと」とか「このトークで話すこと」といったタイトルのスライドのことですね。
また、実例系の話の場合、誰がどのような現場で実践したのかという前提があると参考にしやすいと思っています。そのため、Goへの習熟度・アプリケーション規模などの背景を抑えるための自己紹介・会社紹介を入れました。
プレゼンの準備
事前の練習
恥ずかしながらこれまで何度かカンファレンスで話させていただいていますが、脳内シミュレーションのみを行っていて、事前の社内プレゼン練習はしていませんでした(社内で話すほうが緊張するといった理由で避けていたり・・・)。今回は、1週間前に同僚に練習を見てもらってフィードバックをもらい、内容をブラッシュアップしました。 練習することで、よりわかりやすい構成や見えにくいスライドの改善など、より伝わりやすい表現を模索するきっかけに繋がりました。
道具の導入
プレゼン自体に向き合ってみようということで、ずっと二の足を踏んでいたlogicoolのSpotlightを導入しました。
遠隔でスライドを操作したり、ポインタで画面を拡大したりするものです。Spotlight自身がタイマー機能を持っていて適宜バイブレーションで残り時間を伝えてくれたり便利です。一番、大きい点としてPC操作から離れられる点でした。PCから離れて壇上中央寄りに立つことで、聴講者の方々の視線・顔が見えるので、伝えることに意識を向けようとする効果がありました。
発表を終えて
実際、全員の参加者の方の期待に添えた内容を伝えられたかは分かりませんが、Twitter上では次のような反応をいただけてひとまず安心しています。
コンテナアプリケーション設計方針、具体的なノウハウが詰まっててとてもためになった #gocon #gocon_a
— nosukeru (@ey_nosukeru) May 18, 2019
基本が忠実に押さえられてて、最初の一歩にちょうどいい感じのトークでした。#gocon_a #gocon
— チェシャ猫 (@y_taka_23) May 18, 2019
なかなか個人でここまで気にした開発運用はできないのでこういう場か業務でしか得られない知識だ #gocon #gocon_a
— むさしん (@musaprg) May 18, 2019
Design considerations for container-based Go applicationsを聞いてる。@hgsgtk さんの発表慣れがすごい#gocon #gocon_a
— po3rin (@po3rin) May 18, 2019
昨年のGo Conference 2018 Springに聴講者として参加してから、セッション登壇する(できるくらいGo力を上げる)ことがひとつの目標だったので、今回その目標を達成できてよかったです。
また、スピーカー特典でGopherくんの人形もらえて嬉しかったです。社内のデスクに飾ってます。
ただし、Go力はまだまだ足りないので、レベルアップしてまた次のカンファレンスでお会いできるように精進します。
Next Go Conference
2019年7月13日(土)にGo Conference'19 in Fukuokaが開催されます。
私も 「Cost-effective Go unit test thinking and practices」というタイトルで同じく20分お時間頂いています。ユニットテストの基礎的な考え方・Go特有のアプローチ・実践例について紹介します。ぜひ、福岡でお会いしましょう!