kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

Scala Conference in Japan 2013 〜座長の軌跡〜

時間が経つのは早いもので、Scala Conference in Japan(略称ScalaConfJP) 2013 (3/2(土), 3/3(日)) が開催されてからもう2週間です。200名分のチケットが1週間足らずで売り切れ、その後もキャンセル待ちが増え続けた段階である程度の盛り上がりは予想していましたが、当日は予想以上に盛況で、朝一のJonasさんの講演にも100名以上が参加していました (こういうイベントだと、朝早い時間は来る人が少ないのがよくあることです) 。

Twitter上でのつぶやきも盛んに行われ、#scalaconfjp ハッシュタグがTwitterのトレンドを独占し続けた程でした。当日は、普段Twitterを通してしかやり取りを行っていない、Scalaを実用に用いている方々が議論をしている姿が見られたり、Typesafeからのゲストスピーカー4名と国内の技術者が交流している姿が見られたりと、今回のカンファレンスの目的を考えると概ね成功だったのではないかと思います。

既に参加者による感想ブログ/ツイートが多数書かれています。数が多いので、リンクは省きますが、概ね印象は悪くなかったようでほっとしています。また、スタッフの立場からのエントリもいくつか書かれています:

今回、運営スタッフが軒並みこういった大規模イベントの運営に関して経験がなかったため、様々な試行錯誤がありました。今年でノウハウが蓄積できたので、来年開催するときはスムーズに行くのではないかと思います(既に来年があることを前提にしていますが、来年もできればやりたいところです)。

さて、ここまでが前置きです。このイベントの言い出しっぺとして、座長として、一体どういう経緯でこのイベントを企画したのか、どういう時期にどういう考えがあったのか、座長という立場から時系列で書いてみようと思います。長いのでテキトーに読み飛ばしてもらってかまいません。

おまえ何やってたの?

その前に自分が何をやっていたかを簡単にまとめておきます。立場としては一応座長(?)だったのですが、やっていた作業は、以下のような感じです。時期に応じて必要な作業を色々やっていたように思います。

  • Typesafeのゲストとのメールのやりとり
  • 東工大側窓口とのメールのやりとり
  • 会場下見
  • 書類への押印・郵送作業
  • ちょっとヤバそうな人への対応 (謎)
  • ページ更新のアナウンス

あとは、「座長としてここは譲れない」部分に関する決定でしょうか。たとえば、英語話者の発表に関して、同時通訳を当日雇うのはどうかという案が出たことがありました。しかし、これは

  • 発表の醍醐味である動的な部分が損なわれる
  • 雇った同時通訳が、技術的な用語を含めてちゃんと通訳してくれるか不安がある
  • 発表者の負担が増える懸念がある

といった事を考慮して却下しました。

また、キャンセル待ちが大幅に出た段階で、チケットの追加販売の案が出たことがありました。会場のキャパシティには若干余裕はありましたし、不可能ではありませんでしたが、初回開催であることと、弁当の発注量の変更を含め、関係スタッフにかかる負荷がどのくらいになるか予測しづらかったなどの理由もあり、チケットの追加販売は今回は見送ることにしました(チケット買えなくて参加できなかった方、申し訳ありません)。これについては、来年はチケットの販売スケジュールにもっと余裕をもたせて、追加販売をやりやすい体制にしたいところです。

事の発端

今回のカンファレンスの発端となったのは、次のツイートでした。

Scala Days 2012に参加していたので、次の開催地がアジアになるかも、という情報は当日耳にしていましたが、日本誘致という事は考えてもみませんでした。その後、Scala Days 2013を日本に誘致するためには?という議論を経て、Scala Days 2013の日本誘致は難しそうだと考えるに至りました。しかし、その中で、

というツイートをみて、誘致は無理でも、日本でのScala Conferenceならいけるのでは?と考え始めました。この時のJoshのツイートがなければ、今回のカンファレンスを企画しようと本気で考えることは無かったかもしれません。Typesafeからゲストを数名呼ぶというのもこの頃から少しずつ考え始めていました。

構想段階 (2012年6月)

さて、日本でのScala Conferenceをやろうと考え始めたはいいものの、私にはそのようなイベントの運営経験はなく、右も左もわからない状態でした。とりあえず、そういうことは先人に聞くのが一番だろうということで、

  • サイボウズラボの竹迫さんにYAPC::Asia 2008の時の事を伺ったり
  • 会場の候補として考えていた東工大の首藤先生に話を伺う

などして、企画として始動するにはどうすればいいか、少しずつ自分の中で構想を固めていきました。

企画始動前の交渉 (2012年6月)

さて、このちょうどいい時期に、Typesafeの Jamie Allen (@jamie_allen) さんから別件で私宛にメールが来たのでした。今にして思えばこれはとてつもない幸運でした。

というのも、私はScala Days 2010, 2011, 2012と参加して、Typesafe内に数名知人はいたものの、EPFL時代とメンバの役割が大きく変わっている可能性があったため、誰とコンタクトを取るべきか悩んでいたからです。

この別件については省略しますが、返信のついでに彼に

  • 2013年3月に、詳しいプランは決まっていないがScala Conferenceを日本でやることを企画している
  • Typesafeから招待講演者を呼びたい

旨を伝えたところ、比較的好感触な返事が返ってきました。その後数回のやり取りを経て、ちゃんとした企画と渡航費の負担さえできればTypesafeから招待講演者を呼ぶのは十分現実的な範囲になってきたと感じていました(もちろん、その渡航費の負担は決して楽ではなかったのですが)。

企画始動 (2012年7月21日(土))

かなりおおざっぱではあるものの企画の骨子が出来たので、企画の是非および、そのために協力してくれる方がどれくらいいるかを確認するために、Scala Conference in Japan(仮) キックオフと題したイベントをpartake.inに作成し参加者を募集しました。参加者が少ない場合や、企画の趣旨に無理があるという意見が多いようであれば企画は放棄するつもりでした。しかし、幸運にも27名もの方に集まっていただいて、企画にも賛同していただいたため、この日からScala Conference in Japan 2013の企画が正式に始動することになりました。また、月1ペースでオフラインミーティングを行うことも決定しました。

ここから、私はJamieさんは継続的に連絡を取り合い、企画の進捗状況を定期的に報告するようになりました。

停滞期 (2012年8月)

企画が始動したはいいものの、Webページも存在せず、しばらくは全体的に活動は停滞していました。話し合いは主にスタッフ用のclosedなMLで行っていました。この時点での優先事項は会場を確定させることだったのですが、下見日程をスタッフと東工大側の窓口の方でなかなか合わせられなかったこともあり、話し合いのペースも比較的ゆっくりしていました。

会場下見・確定 (2012年8月下旬)

8月下旬にようやく日程を合わせることができ、会場候補である東工大 大岡山キャンパスに初めて下見に行くことになりました。このとき、東工大の窓口の方が大変丁寧に大学構内を案内してくださったのが印象に残っています。また別の会場を探してメールのやり取りをして…となるとかなり時間がかかりそうだったので、大岡山キャンパス内に会場を決めることにして、下見と同時に、会場に良さそうなホール・部屋をこの時期に仮予約しておきました。

Webページ開設 (2012年9月)

こうして施設の仮予約ができたことで、Scala Conferenceのページを公開できるようになりました。この時点では最小限の情報しか載せていませんでしたが、ようやく話が動き出したという感じがしました。8月当時、会場が決まらなかったら…ということで、内心焦っていたことを覚えています。

本格始動 in ML (2012年9月〜11月)

仮予約とはいえ会場が確定したため、この時期からようやく他のスタッフも動けるようになってきました。この期間、主な話し合いはスタッフMLで行われていたため、開催時期が近づいてくるにつれメールの流量が凄まじい量になり、末期は管理できる限界を超えかけていました。途中、"会場", "All" などの「タグ」をSubjectに付けることで個々人が把握する必要があるメールを区別する試みが行われましたが、膨大なメールの中に埋もれてしまい、必要な情報を検索するのがかなり手間でした。

Typesafeからのゲストについては、私が中心になって交渉を進めていました。比較的早い内に、4名のゲストは固まっていたものの、渡航費を全額支払える保証がこの時点ではなかったこともあり、しばらくは「暫定的」な状態でした。スポンサー募集については、ページで公募する前に色々模索していたのですが、最初のスポンサー企業様を獲得するまでは、スポンサーチムを含め、苦労が大きかったように思います。また、この時期、スポンサーチームの方が本業の方が多忙になってしまったため、事務局チームにスポンサーとの交渉をお任せすることになりました。

この辺りで、

  • 一人のスタッフへ負荷が罹りすぎないようにするにはどうすればいいか(チーム内での負荷分散)
  • ML + github Wikiより良い情報共有/議論の場

について考え始めていました。ただ、スポンサー対応にしろ、他の作業にしろ、チームで分担するより結局は個人でやった方が効率が良いため、今思えば「チーム内での負荷分散」という考え方に私が拘ったのは良くなかったと思っています。この頃は、どうすればいいのか日々考えて心労がたまっていたように思います(笑)。

また、ML + github Wikiでの議論はもはや管理できる限界を超えてしまっており、このままではまずい、とも感じていました。

co-meeting の導入 (2012年12月)

MLでのやり取りに(おそらく)皆限界を感じていたなか、12月の定例ミーティングで、Sawayamaさんがco-meetingを使ってはどうかという提案をしてくれました。私も別件でco-meetingを使ったことがあり、現状のMLベースでのやりとりの問題を解決するにはとても良さそうだと考えたため、その日の内にco-meetingを導入することが決まりました。早速、中核となっていたスタッフは全員co-meetingに入り、凄い勢いでスタッフ内でのコミュニケーションがco-meetingに置き換えられていきました。

Webページリニューアル(2012年12月〜2013年01月)

初期公開時のWebページはデザインを含め、色々問題があったのですが、@seratchさんが、複数ページ対応なども兼ねて、内部構成を Jekyll ベースに整理してくれました。このおかげで、後のページ更新作業が格段に楽になったように思います。また、細かい見た目の調整についても、かなりの部分を@seratchさんに手がけていただきました。ページ更新の頻度がその後どんどん増えていったことを考えると、この時期にページ構成を再編したのは大正解でした。

個人ベースの作業分担 (2013年1月〜)

co-meetingの導入によって、チーム内での情報共有・チーム間での情報交換は格段にやりやすくなりましたが、依然として少数のメンバに作業負荷がかかるという状態が続いていました。特に、私が

  • 座長としての作業 (請求書への押印・郵送)
  • Typesafeのゲストとのメールのやりとり
  • 会場チームリーダーとしての作業 (この時期までは主に東工大側とのメールのやり取り)
  • タイムテーブル・プログラム作成

を兼ねていたため、私がボトルネックになりかけていました。幸いにして、

引き継いでもらったため(作業を奪っていったともいう(笑))、私がオーバーフローすることなく、座長としての役割に専念できるようになっていきました。その他発生したタスクについては、個人がそれぞれのタスクに責任を持つ、個人ベースの作業分担になっていきました。これは私が割り振ったのではなく、スタッフの各々が自分で作業を受け持ってくれたようなもので、本当に助かりました。

カンファレンス参加者募集開始 (2013年2月〜)

決済にDoorkeeperを利用するというのは事前に決まっていたため、これに関しては比較的スムーズに行ったように思います(Sawayamaさんが裏で苦労していたかもしれませんが…)。ただ、1月の定例ミーティングの時点では、参加費3000円のScalaというメジャーとは言えない言語のカンファレンスで、200名枠が埋まるかどうかについてはスタッフの多くが不安に考えていたようです。

私は過去に類似イベントに多数参加した経験から、この手のイベントには、Scalaを仕事で使っている人だけでなく、Scalaを勉強し始めた人や、Scalaにはあまり興味がない「一見さん」もそれなりに参加すると考えていたので、最終的には200名枠は十分埋まるだろうと考えていました。結果としては、私の予想も遥かに上回って、1週間足らずでチケットが完売してしまったわけですが。

最終作業 (2013年2月中旬〜)

この時期は本当に大詰めといった感じで、定例ミーティングでも

  • 前日・当日の作業リストアップ
  • 緊急時の対応
  • ノベルティの補完場所
  • 翻訳チームとの連携(スライド同時通訳)
  • 招待枠の最終確認

といった作業が中心でした。この時期には、本当に座長として必要な作業以外は引き取ってもらっていたので、私自身の作業量は逆に減っていました。この時期は、本当に開催されるんだ、という実感でスタッフ皆がみなぎっていたように感じました。

前日作業 (2013年3月1日)

この日は、前日動けるメンバーだけが集まって、

  • 看板・机の借り受け作業
  • バッグにスポンサー企業様からのノベルティを入れる作業

といったことを行っていました。実は、とある別のイベントの実行委員から聞いたところによると、前日はかなりぎりぎりだったらしいのですが、幸いにして、前日準備は比較的早めに終わりました。

当日 (2013年3月2日)

当日の座長の仕事は飾りになることです。というわけで、お世話になった方々への挨拶周りが私の当日の作業でした。「座長」などという立場で、これだけの規模のイベントでオープニングスピーチなどやったことがないので緊張しまくりでしたが、参加者の皆さんにはどのように見えたでしょうか。後で動画をみると自分のアレさに卒倒してしまいそうで少し怖いです(笑)。ちなみに、この日は、スーツコス+ScalaConfJP スタッフパーカーという謎の格好をしていました。一応、会場を回って何か起きていないか確認したりもしていましたが、スタッフの方々のおかげで、こころおきなく、座長の責務(?)を全うすることができました。

ちなみに、懇親会で胴上げをされたのは想定外でちょっと怖かったです(笑)が、同時に達成感もあり、非常に嬉しかったです。

この日のスタッフの方々の働きは素晴らしかったです。参加者の方々にとって至らないところもあったかもしれませんが、それについてはアンケートに記載されている分も含めて、きちんと来年にフィードバックしたいと思います。

ハッカソン大会 (2013年3月3日)

ハッカソン大会は、無料イベントで申し込みも当日まで誰でもOKという感じだったので、私も座長というより一参加者として楽しむことができました。合間合間に好き勝手に参加者がtalkしたり、もくもくとコーディングしたりと、フリーダムな雰囲気が出ていたのではないかと思います。ただ、この前日でかなり気が抜けていたこともあり、ちょっとだらしなかったかもしれません。Typesafeからのゲストの内、Jonasさんを除く3名にも来てもらうことができ、活発な議論が行われていました。最後には、プチプログラミングコンテストが行われ、Typesafeのゲストによる審査の結果、優勝した@cocoa_rutoさんには、Joshuaさん直筆サイン入りの『Scala in Depth』が贈呈されました。

この日は、ハッカソン大会にも参加した一部スタッフを交えて懇親会があったのですが、疲労コンパイルだったので、最初1時間くらいだけ出て帰ることにしました。本当の事を言うと、最後まで居たかったですが。

まとめ

と、このように時期によって色々問題を抱えつつも、カンファレンスは盛況の内に終わることができました(まだ後処理は残っていますが)。これもひとえに、中核になって動いてくれたスタッフの方々、Typesafeからのゲストを招待するに当たっての原資となったスポンサー企業様、発表者の皆様、参加者の皆様のおかげです。あらためてお礼申し上げます。