「Javaにおけるnull。これまでとこれから」という発表をしてきた

JJUG CCC 2015 Spring(4月11日開催) で発表をしてきました。

一コマ目であり、エントランスから一番近い入り易い場所だったせいもあるとは思いますが立ち見が出る程の盛況ぶりでした。発表を聞いて下さった皆様、本当にありがとうございます。

発表資料はこちらです。

発表者がどういう風に考えてコンテンツを作り、どういう準備をしているのか、というのは余り共有されていないように思います

このエントリでは僕がどの様に事前準備を行い、当日はどんな風に考えながら発表していたのか記録しておきます。

事前準備

内容の決め方

まず、50分では前提条件の多くなる話はできませんので、凡そ言語仕様かライブラリの話をするのが妥当でしょうとアタリを付けます。

恐らくビギナー向けを標榜しつつも、設計方法論などメタモデルについて話をするのが良いのでは無いかと考えます。

Javaの標準ライブラリは表層的な使い方の話をするのは簡単なんですけども、何故そういう設計になっているのかという話は、前提条件が多くなるので望ましく無い、つまり言語仕様について話すという方向性で固まります。

その頃に、脱ビギナー!Androidのnullな話が良い感じにバズっていたのを思い出します。

null の話はビギナー向けとして悪くないし、そこでの考え方や方法論について議論するのであれば、エキスパート同士の会話としても成立するだろうと類推します。

nullの話をするのであれば、Java8で追加されたOptionalについて話すのが良いでしょう。そう思って手元にあるRSSリーダーからOptionalの記事をガシガシと抜き出します。そこで見つけたのが、今回の発表のネタ元となる Embracing the Void: 6 Refined Tricks for Dealing with Nulls in Java です。

このエントリを繰り返し読んで、自分なりの理解を作ります。Should java 8 getters return optional type? でOracleのブライアンによる返答は広く知られるべきものです。

その時点におけるぼんやりとした僕の理解を箇条書きするとこうなります。

  • Optionalは便利であるけども濫用は避けるべきAPI
  • そもそもOptionalって何が便利なんだっけ?
  • Optionalを使うモチベーションの話とOptionalに至る話は分けて考えよう
  • ScalaのOption型との違いはなんだっけか?

これで、アウトラインが見えてきましたのでCfPを書きます。

構成について

スライドを書き始める前にmarkdownで5000文字程の文章を書いて論理的な構造に根源的な破たんが無いかどうかを簡単に確認します。

この時点でスライドの中に含めるサンプルコードも併せて書いた上で、コードをmarkdownの中に入れておきます。サンプルコードは28ptで表示して画面内に収まるような量にします。ディスプレイだけで見ているとフォントサイズが少々小さくてもコードは読めますが、プロジェクタに映すと小さい文字は基本的に読めません。

この時点で、サンプルコードの難易度も調整します。コードの量が多いと細かい説明をキチンとしないと伝わらないので、一つのコードでは一つの事だけを表現し、できるだけ余分なものを削ります。

スライドのデザインについて

僕にはデザイン能力が欠如しているので、ネタ元となるカッコいいデザインのスライドを探します。今回のスライドで参考にしたスライドはこれらです。

今回僕の能力でこれらのスライドから読み取れたのは、

  • 写真をテキトーにボカしてスライドの背景にするとカッケェ
  • 半透明のボックスを文字の背景に置くとカッケェし見易い

僕のヴィジュアルデザイン能力の欠如が明確に分かってもらえると思います。

これで、Googlesスライドのテンプレをせっせと作ります。尚、「表示」メニューにある「マスター」を選択するとテンプレを編集できます。

テンプレをちゃんと作らないとスライドを書く速度を上げられないのでテンプレは作りましょう。

発表時に進捗が分かるようにする

スライド一枚辺りの情報量をなるべく揃えると、単純にページ数だけで進捗が分かるので喋り易くなります。

一定のテンポでスライドをめくるれるように資料を作ると少々緊張していても、終了時間を適切にコントロールできます。

単に右下辺りに分数を出しても良いのですが、背景や文字の色で自分だけに進捗が分かるようにすると、カッコつけられます。

発表開始前

飲み物について

普段はウーロン茶を飲んでいるのですけども、大きな声で発表する場合には喉が渇き易いウーロン茶はあまり望ましくありません。

なので、頭の片隅にあった「リンゴジュースを飲みながらしゃべるとマイクにペチャクチャした音が入り辛い」という謎情報を試してみました。Rebuild.fmか何かで言ってたような気がします。

これが非常に上手くいったので、発表中に飲むのはリンゴジュースがオススメです。

10分おきのタイムキーピング

今回の発表時間は50分でしたが、こういう長時間の発表では時間の管理が非常に難しいので10分おきに時間を連絡して貰いましょう。

最後の10分とか20分で時間が分かった所でリカバリはできません。変にリカバリしようとペースを上げたり下げたりすると、テンポがおかしくなるので聞き辛い発表になります。

声をだす

会場に入ると100人以上入る部屋が割り当てられています。つまり、見知らぬ人が大量に見ている場で一時間近く孤軍奮闘する訳です。それなりに場馴れしているとは言え僕だって緊張します。

そこで僕は、緊張を和らげるために何か理由をつけてマイクを使わずに大きな声で発言するようにしています。今回は前の方の席が余っていたので、それについて何かテキトーな事を喋ることで緊張状態を緩和していました。

発表者の皆様におかれましては出来るだけ大きな声で発声しましょう。僕はマイクなしでも100人程度の会場であれば全員に聞こえるレベルの声量でしゃべるようにしています。

自信が無かったり、緊張していると声が小さくなりがちですけども、大きな声で喋ると自信が無いことが聴衆に伝わり辛くなります。

発表中

トラブル発生したら、どうする?

今回は午前中にA~Dまでが繋がっていた影響で、僕のCD部屋にAB部屋のマイクが入っていました。エンジニア向けのイベントに週末に態々来るような人達は機材トラブルに対しては寛容です。むしろ発表者を応援する気持ちにすらなってくれます。

こういう時は、少し大げさに腕を振り上げたり、前を歩いたりして大きな声でウケを狙いにいきましょう。皆さん応援する気持ちがありますので、相当変な事を言っても笑って貰えます。今回も、機材トラブルのおかげで始まるなり、凄い一体感があったように思います。

変な風に慌てたり、バタつくと見ている側の方がより不安になりますので虚勢を張るくらいで丁度いいです。

今回はJJUGのスタッフが迅速に対応してくれたので、数分ロスするだけでトラブルを解消できました。本当にありがたいことです。

終わりに

発表の未経験者の皆様が発表する際の準備の参考にして頂けると幸いです。

また、より多くの発表者がより良いコンテンツを提供できるように願っています。