登壇にあたってプロポーザルを考え、発表スライドを作るまでの流れとtips

CARTA fluct エンジニア の なっかー @konsent_nakka です。

PHPerKaigi2025 (3/22, 3/23) に @konsent_nakka @ryu9555 @_guri3 の3人で登壇してきました!
その経験からどうやって登壇を成功させるまでに至ったのか、流れやTipsを備忘録として残します。未来の私やこれから登壇する人はぜひ参考にしてください。

そして今回の登壇をするにあたって、かなりのサポートをしてもらいました。
@ShuzoN__ さん、 @t_wada さん、 @soudai1025 さん、 @shin1x1 さん、 CARTAデザイナーの與野 さん、発表練習に付き合ってくれたチームのみんな、ありがとうございました!!!!

他にもプロポーザルにスターつけてくれた人や、Xでリツイートしてもらったりなど様々なお助けありがとうございました。

流れの概要

  • 発表した結果、聴講者にどうなって欲しいのか、ゴールを具体的なシナリオベースで考える
  • ゴールを達成できるようなプロットを練り、この段階で誰かにガッツリとレビューしてもらう
  • プロットからマインドマップ形式で内容を深掘りしていく
  • 社内のテンプレを使いつつ、tipsに気をつけ、マインドマップで考えた内容に肉付けしスライドに起こす
  • 初登壇者は絶対1度オフラインで発表練習する

0. ネタを考える

何となく自分がやったことの中で、オッと思えるものを書き出します。

普段からネタ帳に色々書いておくとだいぶ楽です。

1. ゴールを具体的なシナリオベースで考える

プレゼンテーションのゴールを設定する際には、以下のポイントを考慮することで、聴講者に与えるインパクトを最大限に引き出すことが可能です。具体例を基に、効果的なシナリオを描いていきましょう。

聴講者の行動変容を第一に考える

具体的なシナリオを考える

  • 現場に帰ってやってもらいたいことを具体的に想像することで、対象ユーザーが明確になり、話すべきことやどこを重点的に説明するべきか分かる
  • 私が登壇するときに考えていたシナリオ例
    • プロポーザル: PHPでお金を扱う時、終わりのない謎の1円調査の旅にでなくて済む方法
    • 問題があったことに気づき、調査をする
      • 潜在的な問題がありまずいので対応しましょう、とプロジェクトマネージャーに改善の提案をする
    • お金を安全に扱えるようにコードを変える
      • 現在の問題点にどう対処すれば良いか分かり、具体的な修正が出来るようになる
    • より安全に設計しなおす
      • 現状どうにかなっているが、より効率よく安全性を高められるように再設計し直す

2. プロポーザルを考える

  • インパクトがあり、キャッチーで、内容が伝わりやすいタイトルを考える
  • 本文には過不足なく登壇内容が伝わるように情報をしっかりと詰め込む
    • タイトルで目を引き、内容で視聴者として聞きたい/運営として採択したいと思わせる
    • プロポーザルの許容文字数によって内容を削る必要は出てくる
      • 600字くらい書けるとだいぶ伝えられるが、400字になるとめちゃくちゃ削らないといけない印象
  • 私の例
    • 想定聴講者
    • 話すこと
    • 話さないこと
    • 内容についての詳細

3. 出す

出すだけです。

4. プロットを作る

登壇資料を作成する上で、プロット作りは最も重要なステップです。聴講者の行動変容を起こすには、プロットの構成がしっかりと計画されている必要があります。

発表のアジェンダとしても機能するよう、章ごとに整理することが重要です。

プロットの基本構造

  1. 起: 聴講者の注意を引くために、問題の根源となるコードや事象を提示します
    • 例: PHPで小数を四則演算で足し合わせて、切り捨てしたら想定より1円少なくなった
    • 目的: 聴講者に問題の緊急性や重要性を認識させ、私はこの発表を聞かなければいけないと思わせる
  2. 承: 問題の具体的な内容とそれがどのように影響を与えているかを説明します
    • 例: PHPにおける四則演算の問題と、それがなぜ起こっているのかを説明
    • 目的: 聴講者が問題の詳細を把握し、明確に倒すべき敵を見定めさせる
  3. 結: 問題解決の方法を具体的な実例を交えて示す
    • 例: 想定通り安全に計算するためにはBCMathを使う必要がある
    • 目的: 聴講者が問題解決に向けた具体的なステップを理解し、すぐに行動に移せるように動機付ける
  4. 問題提起と解決の繰り返し: もし問題を分割し、ステップに分けて話したい場合はを繰り返す
    • 例: 計算は正しくなったため、次は比較方法を正しくする
    • 目的: 問題が複雑であったり、コードを交えて小さくステップを踏みながら説明したい場合は、を繰り返す方が容易に着いて来やすくなる
    • その上で、ステップごとにLv1、Lv2と成長していくコードベースなどを見せられると各章ごとの繋がりも見えやすいし、最強のコードが何なのか最後に明確になりやすい

プロットのレビュー

  • プロットが完成したら、チームメンバーや社内の強い人にレビューを依頼する
    • プロットの内容が想定聴講者にしっかりと伝わるか?
      • 初学者向けなら内容が難しくないか?
    • ゴールは達成できそうか?

レビューで納得の行く内容になるまでしっかりと練るのが大事です。ここの練りが甘いとふわふわした内容のまま喋ることになり、何となく大変さが伝わるだけのやったこと発表会になってしまいます。

プロット原案例

* タイトル  
  * title: PHPでお金を扱う時、終わりのない謎の1円調査の旅にでなくて済む方法  
  * date: March 22, 2025  
  * author: @konsent\_nakka 
  * hash tag: \#phper\_kaigi  
  * icon: (写真OKとかあれこれを表示するならtwadaさんのを参考に)  
* 問題のコードを表示、実行結果の表示  
  * 例えば売上と軽減税率対象の売上それぞれに消費税の計算を通常の\*で計算しているコード  
* 問題の箇所を列挙、深掘り  
* agenda = 解決策の列挙
* 計算方法  
  * 小数が生まれる可能性のある計算を通常の四則演算でやっているところ  
  * bcadd / bcsub / bcmul / bcdiv など  
* 比較方法  
  * 小数の比較方法に== / \=== を利用しているところ  
  * bccmp  
  * 計算機イプシロンを無視するような比較処理を自前実装  
* 型変換  
  * float, int to 文字列  
  * 文字列 to float、int  
  * 原則として変換はあまりしない
* 型宣言  
  * BCMath\\Number を使う
* 独自型定義  
  * ValueObjectにより数値の種類/型を限定  
    * 消費税率10%対象の売上、軽減税率対象の売上、繰越金額だったり、請求金額だったり  
    * この時、計算に使う売上を分けたのは後にValueObjectで解決させる予定で、金額の種類が色々あるけど全部string、Numberで間違える可能性あるよねってところを表現できると良いかも
  * 正しい数値になっているか?  
    * intかfloatかstringかNumberか  
    * 0許容かマイナス許容か上限数値はどうか  
    * 比較/計算時の桁数をどこまで扱うべきか  
* 今までの設計を組み合わせた最後のoutputを出す  
* 参考文献

5. プロットからマインドマップ形式で内容を深掘りする

整理されたプロットをもとに、さらにマインドマップで内容を深掘りしていきます。具体的には、VSCode拡張のMarkmapを使用してマークダウン形式でマインドマップを作成します。

マインドマップの利点

  • 発表の全体像と各章の詳細を視覚的に把握でき、スライドの構成と近くできるため大きなズレがなく作り込める
  • 考えたことを全部アウトプットしても、視覚的に整理されているのでノイズになりづらい

プロットを章ごとに整理

  1. アジェンダ設定
    • プレゼン全体の流れを章立てで整理する
    • この段階で各章のタイトルも考慮する
    • 例:
      • 正しく計算する
        • 計算方法
        • 比較方法
        • 型変換
      • 出来ていいことだけを出来るようにする
        • 型宣言
        • 独自型定義
  2. それぞれの章の内容を詳細化
    • 各章ごとに具体的に話したい内容やデータを整理し、章の中での内容をアウトプットする
    • そのまま章ごとのスライドになるようなイメージで書く

6. スライドに起こす

マインドマップをもとに、実際にスライドを作成していきます。CARTAのテックカンファレンス向けに提供されているテンプレートを活用し、プレゼンテーション資料を作成しましょう。以下に、今回私がスライド作成時に考慮した具体的なポイントとtipsを示します。(個人でカスタマイズしてもらって構いません)

具体的なTips

  1. スライドテンプレートの活用
    • ある場合は会社のテックカンファレンス用スライドテンプレートを使用
  2. 文字サイズとフォント設定
    • 箇条書きスライドの文字サイズは18px、コードは16pxを使用
    • 通常の文字フォントは「Zen Kaku Gothic New」の標準、コードは「Courier New」のBold
    • フォントカラーは、通常文字にはテンプレートの濃い目のグレーを設定
  3. コードのカラー設定
    • コードの配色は、VSCodeのダークモード系スキームを使用しコピペ
      • カラーが維持されたまま貼り付け出来る
      • そのために、コードを貼り付けるスライドの背景色は黒(#1E1E1E)にしている
    • Vim操作を有効にしている場合は、ctrl+cだとカラーが反映されない
      • 右クリックコピーを使用することでカラーが反映される
    • コードコメントの色は、初出の場合は明るい色(例:#00EA00)を使用し、2度目以降はデフォルトカラー
      • ダークモードのコードコメントは暗めの緑でオフラインだと見えない
  4. 箇条書きスライド
    • 重要な部分のみ太字にし、時間が足りない時には太字の部分だけを読む
  5. 引用の活用
    • 出来るなら本を引用して話に説得力を持たせる
    • 本を引用する場合、表紙の画像とページ番号を引用箇所のスライドに載せる
  6. 自己紹介と会社紹介の配置
    • 自己紹介スライドはタイトルの次に配置
      • どんな属性の人が話すのかを明示して、話に説得力を持たせる
    • 会社紹介スライドはまとめの直前に配置
      • いい発表の後にあった方が聴講者に覚えられやすい
  7. 発表のクロージング
    • 発表の終わりには「まとめ」スライドを表示したまま終わる
    • 「ご清聴ありがとうございました」スライドは不要で、質疑応答中も「まとめ」スライドを表示
  8. Q&A
    • なくてもいいが、まとめスライドよりも後ろに用意していても良い
    • 例えば発表時は使わないが、後日資料を公開するときに発表の結果を踏まえてQ&Aを拡充してアップロードするのはあり
  9. 茶番
    • 問題を意識づけるために、社内のslackやり取りをスクショにして見せるのも手
      • ただ、そのまま使えない場合や伝わりやすいものがない場合もある
      • 私は自分のDMでメッセージを投稿し、アイコンだけ変えてそれっぽい茶番劇をやった
      • 人間ごとに表示名を変えると編集が楽

7. 発表練習

発表時のtips

  • オフライン登壇の場合は、1度は本番に近い環境(広い会場やセミナールーム、オフィスで一番広い会議室など)などを借りてプロジェクタに移して発表練習するといろんな問題が見つかる
    • 文字が読めない
    • 色が薄くて見えない
    • 図が見えない
    • 下向きすぎ
    • 喋りの抑揚
  • 喋りにメリハリをつけて、退屈になったり眠くならないようにする
    • 強弱をつける
    • 投げかける
    • 笑いを誘う
    • 強い感情を出す
  • 原則として今どこを話しているのかは、スライド上の表現で何とかする
    • 言いたいことを1スライドの中で絞る
    • 1行ずつコードを表示する
    • 吹き出しで今見るべきところを示す
    • もう説明が終わった部分は色を薄く/暗くする
  • オフライン登壇の場合はマウスポインタに頼りすぎない
    • 登壇中の操作が難しい場合もある
    • マウスポインタを使うなら、それ前提で準備する
  • ハイブリッド登壇の場合はレーザーポインタや指し棒、指差しなどに頼りすぎない
    • オフラインの人には見えるけど、オンラインの人には伝わらない
  • 下を向きすぎない

8. 登壇本番

「聴衆の明日を変える」気持ちだけ持って、後は楽しみましょう!
まあ何とかなります。

まとめ

PHPerKaigiから帰ってきてそのまま書いています。明日になると気力がなくなる読みでスピード重視のアウトプットですので、多少変なところがあっても許してください。アップデートします。

後はPHPerKaigi2025の参加ログも書きます。