ハイブリッド ScalaMatsuri の舞台裏
今週末、virtual/Tokyo ハイブリッドの ScalaMatsuri が開催された。まずは、登壇者の皆さん、スポンサー各社、参加者の皆さんにお礼します。
初のハイブリッドということで、至らない点も多々あったけども、成功したカンファレンスだったのではと思う。僕は、16名の ScalaMatsuri スタッフの一員、それからメインのセッションと飛びコンでの登壇者として参加させてもらった。
ScalaMatsuri の 10年
過去のエディションのハイライトをいくつか振り返ってみる:
- ScalaMatsuri の前身となる Scala Conference in Japan 2013 が 2013年3月2日に開催され、僕はスタッフとして訪日した。カンファレンスを翻訳するによると、僕は RubyKaigi の真似をして IRC から web socket へのリレーサーバーを書いてトークをその場で翻訳して、テキストをプロジェクタで投影するみたいなことをやってた。当時の発表資料を見ると、字幕もついてることが分かる。
- それまでは「壮大な趣味なんですよ」とか言っていたが、2014年は Typesafe社に入って毎日 Scala のことを普段から考えるようになったという意味で節目の年だった。当時何を考えていたのかは、カンファレンスでのユニバーサル・アクセスへ向けてから垣間見ることができる。行動規範を採用したり、nescala の真似でアンカンファレンスを採用した年だ。
- 2016年版は、お台場の大きい会場に移って、明確にナンパ禁止を打ち出した行動規範動画を作って、あと東京へのトラベルグラント付きの公開 CFP を行った。その年は、僕がグラフィック・デザイナーの人と組んで Tシャツのデザインなんかもやった。あと竹下さんが学生ボランティアさんに「無限コーヒー」を淹れてもらうという天才的なアイディアを出してたりした。そこに自然と人が集まってきて会話が始まるからだ。ライフスタイルとしての ScalaMatsuri にその辺りのことも書いてある。
- 2017年版は、EPFL の大学院生などのメンバーが 4人訪日してくれた特別な年だった。確かこの年は僕の弟が焙煎した ScalaMatsuri オリジナル・ブレンドコーヒーが無限コーヒー採用された。
- 2020年にコロナ禍の世界流行によって、ScalaMatsuri は Zoom Webinar と Discord を使ったバーチャル・カンファレンスとなった。ハッカソンの開催についてハッカソンの仮想化を当時書いた。
ハイブリッド・カンファレンス
ScalaMatsuri 2023年版は 16名のスタッフと当日数名のボランティア・スタッフにより運営された。いくつか僕個人が担当したものもあるが、ほとんどが数ヶ月に渡るチームワークの成果であることをまず書いておく。ハイブリッド・カンファレンスの運営は、会場開催のカンファレンスともバーチャル・カンファレンスとも違った難しい側面がある:
┌────────────┐ ┌──────────────┐ ┌────────────┐
│会場からの ├─┬─►│ Zoom Webinar ├─┬─►│会場での参加者 ├─┐
│登壇者 │ │ │ │ │ │ │ │ ┌───────┐
└────────────┘ │ └──────▲───────┘ │ └────────────┘ ├─►│Discord│
│ │ │ │ │ │
┌────────────┐ │ ┌──────▼───────┐ │ ┌────────────┐ │ └───────┘
│オンラインから │ │ │ 同時通訳 │ │ │オンラインから │ │
│の登壇者 ├─┘ │ │ └─►│の参加者 ├─┘
└────────────┘ └──────────────┘ └────────────┘
第1日目、登壇者のうち数名がサテライト会場から、他はリモートから登壇した。同時通訳は、プロの通訳の方にさらに別の場所から Zoom Webinar 越しで行われた。サテライト会場のスタッフは、会場の登壇者と Zoom Webinar のリレーの 2つの設定を行き来する必要があり、それが大変そうだった。
また、この構成によって実質的にサテライト会場のメイン・トラックで登壇できるのは日本語話者のみ、かつサテライト会場の音声再生も日本語に限定された。頑張ってサテライト会場で参加した英語話者の人にはスマフォかラップトップで、イヤホンを付けた状態で Zoom Webinar の英語音声を聴くよう案内が出された。
全セッションを通じて、雑談や質問などは Discord チャンネルを用いて行われた。
20 分トーク
2021年版で、セッションの長さを基本的に 20分をメインにして、複数トラックの長いトークの代わりに単一トラックの短いトークにする提案をした。今年もその方針を継続した。
- 主な動機は、じっと座ってバーチャルな講義を聴くのが僕的には 20分ぐらいが集中の限界だからだ。
- Bazelcon やその他の学術的な学会でも短めのフォーマットを見たことがある。
- 字幕を付ける作業、通訳を雇うというコスト面からもメインを単一トラックにすることで改善することが多い。
両日第2トラックとしての飛び入りカンファレンス
今年から始めた試みは、飛び入りカンファレンス (アンカンファレンス) を第2トラックとして両日行うことだ。
- これも僕が Bazelcon で見たアイディアで、彼らは Bird-of-Feature という言い方をして、小さいグループで専門的なトピックを掘り下げて議論するのに用いられている。
- 通常セッションで登壇者が時間切れなっても飛びコンで回収できる。
- 飛びコンがあることで、カンファレンスを受け身でレクチャーを聴く場だけではなく、トピックを議論できる場として機能させることができる。
事前に用意されたトークと違って、飛びコンは話が発散しやすいので多分 45分とか 60分ぐらいあった方が良いと思う。
基調講演の復活
日本は隔離した技術文化を持ちがちなこともあり、ScalaMatsuri の根底にあるテーマとして英語圏での潮流を日本に紹介して、また日本の技術者が海外へとアイディアを発信できる場を設けるという技術交流的なものがある。その観点から、Daniel Spiewak さんの「Effect システムのすゝめ」は基調講演に最適だと思った次第だ。今重要な話題だし、ScalaMatsuri の参加者に字幕と同時通訳付きで提供できる機会となるからだ
今回もう1つやってみたかった実験はトークを事前録画することだ。事前の作業の手間はかかるが、それができる能力をつけておけば時差問題の回避策となると思うからだ。
- まず、僕が Daniel にコンタクトを取ると、快諾してくれた。ありがとう!
- 次に、発表資料に僕が字幕を付けた。
- Daniel が発表資料と自分の顔を映したカメラ動画を別々のファイルで送ってくれた。
- ところが、Daniel が発表に使ったのが字幕付きの資料じゃなかったので、彼の発表を再生しながら僕が発表資料を同じタイミングで動かす 3つめの動画を作成。
- Adobe Illustrator を使って ScalaMatsuri ロゴを背景に入れる PDF ファイルを作成した。
- iMovie を用いて、背景に字幕付きの発表資料を乗せた 4つめの動画を作成。
- 次に、picture-in-picture で Daniel の顔の動画を乗せる。
- iMovie でいくつかのシーンを編集した。例えば、Daniel バージョンではスライドが一枚抜いてあったのでその調整を行ったりした。
- 最終版は mp4 ファイルとしてエキスポートした。
時差としては、彼が住んでる Boulder は夜の 21:00 ぐらいの時間だったため Daniel は Discord で待機してくれていて、質疑応答もカメラ上、Discord の両方でやってくれた。挙げられた質問を書いておくと:
- ディレクト・スタイルに付いてどう思いますか?
build.sbt
は applicative なディレクト・スタイルだと考えることができますか? - Project Loom との差分についてもう少し詳しく教えてください。
- cats.effect.IO のランタイムを Loom の VirtualThread に寄せる予定はありますか?
- モナド変換子って最近聞かなくなった気がしますが、IO vs モナド変換子 vs Eff 戦争において IO は勝利したのでしょうか?
- Cats Effect を Scala 3 機能を活用して書き換える予定はありますか?
トイレ方針の文言化
一般論として、全てのカンファレンスは自分たちトイレ実装を理解して設計する必要があると思っている。トイレは、机上のジェンダー論が現実に直面するからだ。具体的には以下の質問を答える必要がある:
- 誰がどのトイレを使うことができ、また誰がどのトイレを使うのかを決定することができるのか?
- トイレに関してどのようなサイネージを行うのか?
- 方針に関して、書面もしくは口頭でどのようなコミュニケーションを行うのか?
これに関しては、2019年頃でもスタッフの間で議論されたと思うが、現行の方針を書き記して (毎年1から考え直さなくてもいいように)、行動規範の運用方法として文言化した。
- 会場のお手洗いは、ご本人が自己宣言したジェンダーアイデンティティに基づいて利用していただいています。非バイナリジェンダーの方は、どのお手洗いでも利用可能としています。
サテライト会場の口頭でのスクリプトは以下のようにした:
サテライト会場の皆さんにご案内です。
会場内のお手洗いは、この2Fフロアに男女トイレ、1Fに多目的トイレがあります。 ScalaMatsuriのポリシーとして、会場内ではご自身のジェンダーアイデンティティに基づいてお手洗いを選択してもらっています。 ご自身を男性だと思う方は男性トイレ、ご自身を女性だと思う方は女性トイレをご利用ください。 ノンバイナリジェンダーの方はどちらのお手洗いでも大丈夫です。
これは、個人の権利と日本の慣習の丁度良いバランスを取っているんじゃないかと思う。男性は男性トイレ、女性は女性トイレを使う。誰が男性なのか? 本人のみが自己宣言で決定することができる。非二元論的性別 (ノンバイナリ) の人は、全てのお手洗い (トイレ) を使うことができる。以上に関して、心地よくないという人は、そういう人がご自由に多目的トイレで用を足せばいいと思う。サイネージの変更もする必要は無い。
将来の ScalaMatsuri スタッフは別の方向を取るかもしれないが、現行の僕たちの考えは記録されたと思う。
僕が登壇したセッション
トーク: Helix と Scala
2日目に、Helix と Scala という内容で登壇した。Helix という今好きなエディタがあって、そのまま LSP とか Treesitter が使える状態になっていて、20分のデモ・セッションをやったら面白いんじゃないかと思ってやってみた。まずは、モダンジャズにおいて Bill Evans がピアノで弾けるけど、敢えてベース音を弾かないでベーシストに弾かせることで本来伴奏楽器だったピアノを前に出すことができたみたいな話から始めた。
Helix というエディタが、敢えて独自の構文ハイライトを実装せずに各々の言語が Treesitter パーザを持つことを前提としてのは Bill Evans 的だと言えることができないだろうか。また、ここでタイミングを見計らって僕が monokai_aqua を Helix にコントリしたことを自慢した。
後半は、Scala 3 マクロの実装にジャンプしたり、バッファ内のコンパイルエラーを表示したり、メソッドのリネーム行うなどのデモをした。
飛びコン: about sbt 2.x
リクエストがあったので、sbt 2.x に関しても open-mic トラックで話した。酢鶏のこととか、sbt 2.0 ideas とか RFC 関係のことなど、今までの活動を手早く紹介する感じになった。この辺のことは英語だけでしか書いてなかったりするので、日本語で紹介できたのがお役に立てれば良かったかなと思う。その場で質問を聞いたり、アイディアをもらえたのが良かった。
フィードバック
ScalaMatsuri 出席しましたか? 感想や、改善点の提案などあればアンケートで教えて下さい:
- 1日目: https://forms.gle/cLRm9U6EqsY8UAtU7 (4/23 まで)
- 2日目: https://forms.gle/WBFS6WigUtTyozQW8 (4/23 まで)
- もしくは
[email protected]
までご一報ください - もしくはブログ記事を書いてください
あと、良かったなというトークがあれば Twitter とかで登壇者の人にメンションを飛ばす、メールで一言送ると喜ぶと思います。