けものみち

まったりと、きのむくままに。

Keyboard Input Hackathon 2023 の運営をしつつ開発者として参加もしました

2023/4/22~4/23 、秋葉原にて Keyboard Input Hackathon というイベントを開催しました。 タイピング・キーボード関連のイベントの運営側として参加しましたので、レポートを書き残しておこうと思います。

Keyboard Input Hackathon?

キーボードに関連することならなんでもOKなハッカソンで、今年が初開催となるイベントです。 情報系の企業が主催するような一般的なハッカソンとは少し異なり、制約が緩く、各々が得意な分野で短期間で開発を行いながら交流を行うイベントとなっています。

運営に入ったきっかけ

2022年の年末あたりに、本イベントがあると知って、情報をつかむために専用の Discord サーバーに入っていました。

当時は開発参加者側として本イベントに参加するつもりだったのですが、イベントの運営メンバーを見ると2人しかおらず、どうみても人手不足だったのと、そのうち運営側に誘われそうな予感を感じ取ったので、先手を打って入っておくか、ぐらいの気持ちで適当に運営メンバーにジョインしました。 ...とジョインするノリは雑でしたが、自分のことを思い返すと、タイパーとして打鍵の速さと正確さを追い求めるだけでは限界を感じており、開発関連のお話があればそちらの方面で貢献できないかと考えていたので、このイベントに参加すれば何か学びや新しい刺激が得られないかなという好奇心は大いにありました。

大学生時代にも、受験生サポートやオープンキャンパスの学生向けイベントの運営と運営補助、ホームカミングデーのイベント運営、大学の学科の謝恩会幹事代表など、多岐にわたってイベント関連の仕事はこなしてきたので、なんやかんや運営側に慣れているというのもあり、運営サイドに参加することへの懸念はさほどなかったです。

イベント準備

自分が担当したタスクは主に以下のものでした。

  • 会場下見
  • 投票ルールの決定
  • 発表ルールの決定
  • 告知物系
  • 当日の司会

金銭にかかわることやスポンサーにかかわることは主催者のテルさんにお任せしており、交流関係のタスクはたのんさんが担当されていました。

会場下見

会場の見取り図はありましたが、実際に入ってみてどれくらいの広さか、どんな備品があるか、といったことを細かく把握するために、主催のテルさん、配信機材準備をされる Daihuku さんと一緒に行きました。

特に持ち物とかは考えていませんでしたが、会場の広さは計測したくなるだろうなと思い、自分のほうから 10m メジャーを持っていきました。

会場下見でやったこととしては以下のことです。

  • メジャーを使用してより詳細な会場図を作成
  • 備品の確認
  • 机や椅子、ノートPCを置いてみて開発のイメージをつかむ
  • トイレや喫煙所、エレベーターの場所の確認

どの作業も大事でしたが、詳細な会場図を作成したり机や椅子の大きさを把握できたことによって、会場に入れられる人数と、一つの机あたりに配置できる人数が明確にイメージできたことが特に大きかったように思います。

備品についても、スクリーンを映し出す機械がどのようなものなのか、Wi-Fi の速度はどれくらいか、ハンガーがあるか、延長コードなどはあるか...といったことが細かく確認出来てそのあとの運営会議がスムーズに進んだように思います。

投票ルールの決定

投票ルールについては、会場下見のついでにテルさんと相談して決めました。

最初は Notion を利用して投票システムを作ろうという話でしたが、そこまで投票できる人数が多くないので、投票用紙を作って、手動で集計したほうが早いという見込みになり、紙での投票になりました。

投票ルールに関しては、1人1票にするか複数票にするのか、1人複数票の場合票の配点はどうするのか、自投票される可能性はないか、チームが作られた場合、自投票ができないと不利にならないかといったことを議論しました。その結果、1人がMVP(1ポイント)と準MVP(0.333ポイント)を決定し、運営と自分 or 自チームへ投票できないという割とシンプルなルールができあがりました。

発表ルールの決定

ここについてはほぼ丸投げだったので、ゼロベースで決めていきました。

参加人数がギリギリまで確定しないため、開発参加者が最大人数来た時に一人あたり発表に何分割り当てられるか、入れ替えの時間はどれくらいか、休憩をどこにいれるかを考えて組んでいました。

運営も開発に参加するとのことで、発表の雰囲気をつかんでもらうべく最初の3人は運営で固め、そのほかは当日ランダムに順番を決定するという方向で固めました。

告知物系

ツイッターのヘッダーとか、会場のウェルカムスクリーンを作りました。

作るだけではありますが、フォントや写真の著作権とかで訴えられないようにどんな素材を使ったかとか、ライセンス違反していないかの確認をするのは大事です。

当日の司会

運営3人がそれぞれ担当した個所をそれぞれ司会するということで、自分は投票ルール・発表ルールの説明と、発表会の司会を担当しました。

イベント本番

www.notion.so

当日何が行われたか、どんな発表が行われたかは上記の Notion サイトにまとまっています。

イベント1日目・2日目における自分のタスクは以下です。

1日目

  • 当日設営
  • 会場の外から案内
  • アイスブレークの班ごとのファシリテーター
  • 投票・発表ルール説明
  • ケータリングの設営・整理
  • APC クイズの回答促進と自分の回答提出
  • 自身の開発

2日目

  • 自身の開発・発表資料準備
  • ケータリング準備
  • 発表会の司会
  • 自分の開発の発表
  • 投票集計
  • 後片付け

運営だけをこなすのであれば全く問題がないのですが、自分自身も開発に参加し、発表を行うことになっていたので非常にハードなスケジュールとなっていました。 そんなハードなスケジュールをこなすにあたって気を付けたことを書き残しておきます。

工数見積もりと実開発作業

2日あるとはいえ、運営のタスクをこなしつつ、発表資料準備やほかの人のお手伝い等に時間を割くことを考えると、自分の開発にとれる実作業時間は7~8時間程度と想定されます。 言い換えれば、工数的には1人日程度の作業しかできません。

かといって、前もって何かを作り置きしておくのは自分が許さなかったので、以下のことだけは決めていました。

  • 技術選定で無理をしない(無理に新しい技術にチャレンジして変なバグを踏んだりするとあっという間に時間が溶けて発表がボロボロになるため)
    • この観点と、Web で動かせるということ、普段の仕事で C# を書いていること、個人開発中の Web アプリで実際に採用していてある程度理解していることから Blazor を選定
  • 作るものは「自分の打鍵を徐々に学習していくモデル」
  • 作りこみ度の松竹梅(梅レベルができればとりあえず発表はできるなあという温度感)
    • 松: bi-gram データを取得して、正規分布を背景に仮定したモデルを用いて、学習速度がそれなりに速いモデルを構築できている+アプリの見た目もそれなりに整っている
    • 竹: bi-gram データを取得して、正規分布を背景に仮定したモデルで学習ができる(パラメータについてはハードコーディングな部分があってもよい)+アプリの見た目が整っている
    • 梅: bi-gram データを取得して学習しているように見せられる(こういうことができる、という可能性を示せる)

イベント当日は、まず Azure 上にリソースを作成し、GitHub と連携したワークフローを組むところから始めました。 開発リポジトリの main ブランチに push されるたびに自動でビルドが走り、デプロイされる仕組みを最初に整えておいたことにより、ローカルだけではなく、実際に Notion 上に Web アプリを埋め込んで、参加者に触ってもらえる仕組みが早い段階で作れました。

その後は、自分の打鍵を学習していくモデルを組んでいき、非同期処理によって打鍵をディスプレイする仕組みを作っていきました。 非同期処理による文字列ディスプレイの実装が、処理がキャンセルされた場合、複数回走らせようとした場合の制御などを考えると地味にめんどくさかった記憶があります。

実装していくうちに、タイピングゲームライクな UI や判定が欲しいことに気づいてしまい、急遽自分が過去に作った FoxTyping のワードセットや、GitHub に公開している日本語ローマ字タイピングゲーム用のひらがな→ローマ字打鍵列マッピングデータを引っ張ってきて、タイピングゲームのサブセットを組み込みました。一度実装したことがあるためか、1時間~1時間半程度で簡単なタイピングゲーム的なものがつくれたので、慣れや過去の経験がだいぶ功を奏しました。

最終的にできたものは、松竹梅でいうと竹と梅の中間ぐらいの出来で、学習しているようにある程度見せることはできるようにはなっています。ただ、処理がちょっとハードコーディングだったり、学習速度を無理やり早めるために大量にデータを使わないようにしていたりと、発表用に無理やりチューニングしている部分があります。 UI 面はユーザビリティや見た目の美しさを考えるとまだまだ不出来な部分が多いのですが、一定水準で整えることはできたかなと思っています。

司会

司会の台本は特に作っておらず、ほぼアドリブでしたが、参加者の名前や参加者がこれまで作ってきた作品(キーボードの配列名など)を読み間違えるのは大変失礼にあたるので、事前にすべて読みをチェックしていました。

イベント後の反省

自分視点でのよかったこと・改善したいことを箇条書きにまとめました。

運営側にまとめた振り返りシートにはもっと細かい事項も書いてありますが、長くなりすぎるのでサマリーだけここに書き残します。

よかったこと

  • 開発に集中して交流が少なくなってしまいそうな懸念があったが、想定よりはるかに交流が進んでいてうれしかった
  • ほぼオンスケで動いていた
  • 少ない開発参加者人数ながら、幅広い年代・ジャンルの方に集まっていただいてバラエティー豊かな発表だった
  • 投票集計がミスなくスムーズだった
  • トラブルにも対応できていた
  • 初開催のイベントとは思えないぐらい機材やスポンサー、内容が充実していたと思う

改善したいこと

  • 作品へのフィードバックの記入が厳しそうだった
  • 会場の写真撮影を促進するべきだった(特に集合写真)
  • ツイッターでの広報や作品紹介をもっと積極的にしてよかった
  • 投票のシステムと順位決定方法の改善
  • 広報デザイン周り
    • ロゴ、ツイッターのヘッダー、チラシ、ウェルカムスクリーン、ノベルティでデザインに統一感がなかったので
    • 負担が重くてもデザイン・アート面の役割を担うのは一人に任せてよいと思う
  • 年代が想定していたよりも広かったことによる問題点
    • 食事の問題
    • イベント情報の伝達手段とか Discord の運用とか

次回以降開催するかどうか、どうなるかはまだわかりませんが、事後アンケートを参考にして、よりよいイベントにしていけるようにしたいですね。

感想

今回のイベントではさまざまなバックグラウンドを持った方が集まって交流できたことが本当に大きくて、狭まっていた視野が一気に広がった感触があります。特に、自作キーボード勢、配列勢の開発のモチベーションや開発において大事にしていることをうかがえたところが自分にとっては大きかったです。自作キーボードや自作配列に関しての知識はほぼなかったのですが、なかったからこそすべての情報が自分にとっては新鮮で面白かったです。実際に会場に持ち込まれた自作キーボードを触ってみてどういう点を工夫されているか、どういう狙いがあって作ったか、この配列はなにがうれしいのか...といった話を聞くたびに面白くて時間が過ぎていくのがあっという間でした。

個人的な話にはなってしまうのですが、2022年後半ぐらいから、タイパーとしてタイピング練習サイト・ソフトで記録出したり大会出たりすることに限界を感じていて、自分自身の打鍵をより洗練させていくことにあまり関心が向かなくなっていました。イベントの準備期間中に RTC というタイピングの大会が開かれ、一時は競技タイピングに戻ろうかと思いましたが、それよりも、新しい知識や技術を習得していくことやモノづくりをしていくことのほうがずっと楽しいと思えたため、開発方面で何か個人レベルより大きい単位で貢献できることはないかと模索していました。まさにそのタイミングでイベントがめぐってきて、今回運営側としてお手伝いしつつ、開発もすることができました。これから、また開発関連で何か貢献できるといいなと、作成途中のタイピング練習サイトを放置していることを脳裏に浮かべながら感じました。

おわりに

開発参加者・閲覧参加者・運営などのくくりに関係なく、各々がイベントを構成する一員として主体的に盛り上げてくださったことがイベントの満足度につながったのかなと思っており感謝の気持ちでいっぱいです。

また、配信関連を一人ですべて行ってくださった Daihuku さん、ノベルティや体験ブースを設営してくださった東プレ株式会社様、主催のテルさん、運営メンバーのたのんさん、この日のためにいろいろ準備を進めていただき、本当にありがとうございました。