自己紹介
いおと言います。
N/S高等学校というところでプログラミング講師をしています。
仕事柄でWeb系(フロントエンド・バックエンド)、ゲーム系(Blender・Unity)、アプリ開発(Kotlin・Swift)など広く浅く触ってきました。
ここでの「浅く」は実務経験はともかく個人制作でプロダクトは作ったことがある程度であることを表しています。
大学は工学系で理系ではあるものの、情報系出身ではありません。
プログラミング経験自体はまだ4年程度です。
前職では産学連携ベンチャーで研究よりの開発をしていたため、ソフトウェア製品化するまでの経験は薄いですが、プロトタイプ作成には慣れています。
そういった背景を踏まえて、自分が初心を忘れないようにするため、何を学んだか言語化するためにハッカソンに挑戦した話をしていきます。
PLATEAU Hack Challenge 2023 for ルーキー とは
「PLATEAU Hack Challenge 2023 for ルーキー」は、PLATEAUを利用した「初めてのプロトタイピング」に挑戦する人向けのオンラインハッカソンです。 オンラインプレイベントや、ハッカソン当日のテクニカルサポート、メンタリングなど、「はじめてPLATEAUに触れる」方や「開発イベントに初参加する」方など、「ルーキー」のみなさまに向けた各種サポートを用意しています。
ルーキーと名がついているように、PLATEAU自体の初心者や開発イベントに参加したことがない層をターゲットとしているイベントです。
個人・チーム(グループ)どちらでも応募可ということで、知り合いを誘うこともできますし、一人で参加して武者修行もできるようになっています。
slackではテキストベースで、oViceは音声やテレカンで使う形でした。
テキストと音声、映像が異なるプラットフォームのため、意思疎通が少々大変でした。
特に、制作物のプラットフォームであるVRChatというVRSNSで集まろうとした時に、セッティングのアドバイスをしづらかったです。
参加目的
理由は2点です。
- ハッカソンイベントに初めて参加する中で、一番とっつきやすそうだった
- PLATEAUをあまり触ったことがなく、プロダクトを作ってみたかった
初心者向けと銘打たれているように、相談しやすい環境でした。
ハッカソンイベントに参加する上で何から始めればいいのか、事前にプレイベントも実施されていました。
https://connpass.com/event/284259/
また、主催は国土交通省、運営は角川アスキー総合研究所(ASCII STARTUP)ということで、運営への安心感が大きかったです。
他の参加者も同じような理由の方が多く、エンジニアと非エンジニアで半々といった印象でした。
作成物
PLATEAUから都市データを3Dモデルにコンバートし、VRChat上で観光しながら遊べるワールドとして公開することを目標にしました。
名物や観光案内を3Dモデルとして設置したり、UdonSharpを書いて色んな移動手段で見て回れるようにしています。
結果としては、グランプリは取れなかったものの、オーディエンス賞を獲得できました!
Web上で賞状もいただき、とても嬉しかったです!
役割
チームメンバーは全部で7人。
そのうちUnityを扱えるのが3人だったことから、開発部分の担当を3つに分けて各自が実装していくことになりました。
- 都市の3Dモデル(今回は名古屋駅周辺)を変換して、VRChatワールドとしてアップロードする
- 情報収集やアセット準備の担当が集めた素材から看板やUIを作成する
- ワールド内の移動手段ギミックを実装する
自分は移動手段のギミック実装を担当しました。
本当は都市の3Dモデルを扱いたかったのですが、PCスペックが足りずブルスクばかり吐いてしまったので断念……
もはやPLATEAUとは関係なくなってしまってましたが、UdonSharpをひたすら書く時間が多かったです。
また、最終的な成果発表を行うプレゼン担当でもありました。
日頃から生徒と一緒にLT発表していた甲斐があったなと思います。
スケジュール
1日目
10:00 オープニング/主催者説明
プレイベントなどでも聞いたPLATEAU関連プロジェクトの目的についてのお話でした。
審査員やサポートメンバーの紹介がありました。
10:10 アイスブレイク
oVice上でグループに分かれて、自己紹介とポーズを取って撮影するという内容でした。
あまり時間がなかったことと、初対面でいきなり顔を出して自己紹介+ポーズを取るというハードルの高さから他参加者と仲良くなることはできませんでした。
後のチームビルディングでは全く違う方と組むことにもなったので、もう少しゆっくりコミュニケーションできる時間があると嬉しかったなという感想です。
10:45 プレイベントおさらい
イベントに2週間前くらいに実施されたプレイベントと同内容のお話でした。
(どちらも参加していた人には冗長だったかも)
時間が押していたので端折り気味で進行しました。
11:00 アイデア発想、チームビルディング
1人あたり1アイデアを決めて、お互いに投票した中で人数が多いアイデアを採用し、チームを決定する形式でした。
事前準備としてスプレッドシートを用い、一人ずつアイデアを出すためにブレストを行いました。
キーワードをたくさん挙げていき、キーワードを組み合わせて徐々にアイデアとして昇華させるという流れです。
個人的にはアイデアはたくさん浮かんでいたので1つに絞るのは少しやりづらかったですが、一番自信のあるアイデアを提出しました。
「時間経過で発展していく街に対して災害を仕掛ける魔王側となり、最終的にすべてのエリアを支配対象にできればクリア」という某ゲーム(やったことはない)を参考にしたアイデアです。
コンセプトが少々過激だからか残念ながら採用ならずでした
悔しいので、いつか自分で作ろう
結果的には、採用されたアイデアはジャンルは近いものが多く、テーマ設定の上手さが投票数に影響していた印象です。
12:30 チームアイデアソン・ランチ
採用されたアイデアの中から興味のあるものをoVice上で見て回り、参加するチームを決める時間です。
アイデアが採用された人は、来る人来る人にコンセプトを毎回説明し直すの必要があるので、大変そうでした。
私は謎解き・データ分析・ワールド制作の3つのテーマで迷って、何回か話を聞きに行きましたが、最終的にはワールド制作のチームに入りました。
各チームごとに技術力の有無が偏りとして生じやすくなっており、一応エンジニア側の人間としては慎重に選びました。
興味の合ったVRChatのワールド作成とPLATEAUの3Dデータを直に活用できる点が決め手だったかなと思います。
チーム決定後は方針の話し合いをしつつ、同時にお昼ご飯を食べていました。
出前館やUberEatsで3000円分のクーポンをもらえたのは地味に嬉しかったポイントです。
私はピザを頼んで、開発のお供にしていました。
14:00 開発方針発表
出来上がった各チームごとに開発プラットフォームやプロダクトの方向性を発表する時間でした。
自チームは名古屋を取り上げて、観光地や名物を紹介するコンテンツをVRワールドとして展開する方針を発表しました。
開発を進めるにあたって、この時点での方針からズレてしまってもいいと運営からはアナウンスされています。
個人的にはむしろ決めた方針を貫いてワールドのアップロードまでできたことに達成感がありました。
14:30 ハッカソン
ここから作業開始です。
はじめにチームリーダーからGoogleドライブを共有してもらって、具体的に役割分担をするところから始めました。
前述の通り、Unity環境がある人は各担当に分かれて、残りの方には情報収集や素材集め、発表に向けた資料作成をお願いしました。
この時の自分の反省点として、下記の2点が挙げられます。
- 他のチームメンバーが何をできるかをきちんと確認せずに突き進もうとしてしまったこと
- 制作物はVRChatにアップロードするため、VRChat未経験者を事前に案内する必要があったものの時間配分をできていなかった
また、何から始めるか、アイデアをどうブラッシュアップするかでチームメンバー内でも迷いがあったため、メンターの方からアドバイスをいただきました。
ハッカソンではどういったアウトプットが良いのか、名古屋をどう面白く見せるかという話を雑談ベースで掘り下げてもらうことで、方向性を具体化することができた印象です。
ここで話題に出たアイデアは完成物にもいくつも登場しています。
作業自体はオンライン上でもあるので、各自黙々と作業を進めてなにか進捗や質問があればボイスチャットで確認することが多かったです。
ハッカソンに夢見た一つである、チームメンバーとのコミュニケーションは物足りなく感じました。
19:30 初日解散
本来は中間報告の時間があったのですが、スケジュール変更でこの時間には解散となりました。
チームメンバーの皆とも解散しました。
ただ、納得いくものを作りたかった&力を尽くしたかった私はこの後もずっと作業を続けています。
(それに気づいた開発メンバー何名かは一緒に残ってくれて嬉しかったです)
午前3時位まで作業して担当していたギミックの実装を終えましたが、その後Unity packageにエクスポートする際にエラーで作成データが全部消失しました……。
6時間位の作業データをよりにもよって時間の足りないハッカソンで吹っ飛ばしたことが悲しくて、めちゃくちゃ落ち込みました……
データのバックアップは取りましょう!
アセットとして書き出すデータを選択する際に依存関係を含めて書き出す設定をオフにしてしまったことが原因だと思われます。
この後は依存関係も自動で適用する設定をオンにして、特に問題は起きませんでした。
発表担当でもあったので、ある程度復旧作業をした後は普通に寝ました。
オンサイトだったら徹夜するのも思い出になるんだろうなと思います。
2日目
10:00 オープニング
前日から引き続き作業をする時間です。
成果発表にあたって、発表資料だけでなくProtoPediaというプロダクト登録サービスに情報を記載する必要がありました。
この部分は資料作成担当の方に丸投げしてしまいました。
必要な情報を適宜指摘をいただいてから、素材を用意したり文面を考えたりしていたのでかなり行き当りばったりでした。
2日目はやることが多く、手続き類は他のメンバーにお願いしたことも多かったです。
とても助かってました。
13:00 発表エントリー締切、発表順番決定
ProtoPediaに登録することで発表エントリーをし、発表順もここで決定しました。
発表は2番目ととても早く、内心かなり焦っていました。
発表資料は資料作成担当の方にお願いしていたおかげで、ラストスパートの開発やワールドアップロードをギリギリまで粘るのに集中できて良かったです。
しかし、データ消失のロスも祟り、目標としていた完全版の機能は最後まで実装しきれませんでした……。
UdonSharpでグローバルで変数を同期するのが大変で、初心者の自分が理解してやり切るには時間がかかりすぎました。
16:00 成果発表
全部で11チームあり、各チームごとに4分で発表をしていきます。
oViceではカメラ接続と画面共有を同時に複数画面展開できるのが面白かったです。
私はエンタメ感を出すためにあえて顔出しせず、VRChatワールド内を探検して、さながらVTuberが如く実況して発表を行いました。
スライド資料の後半をほとんど読むことができずチームメンバーには申し訳ないことをしてしまいましたが、良い発表はできたと思います。
終わった後メンバーからも暖かく出迎えてもらって、胸が一杯になりました。
oViceのリアクション機能やslackでのお疲れ様コメントで盛り上がったのが一番のハイライト。
チーム制作の楽しさを実感できてとても満足感がありました。
自分のことに精一杯で他チームの発表はあまり覚えていません……。
スパイダーマンのアセットを使って、糸を出しながら移動するゲームを作ったチームはコンセプトが近い上にクオリティも高かったので印象に残っています。
(実際グランプリもそのチームだったので、直感は正しかったようです)
チームビルディングの時に迷っていた、謎解きやデータ分析のチームもきちんとプロダクトを作り上げていて、何もしていないのに嬉しかったです。
分身したかったなと心から思います。
18:00 審査、交流時間
この時間もやり終えて燃え尽きていたので何も覚えていません。
アンケートに回答したり、オーディエンス賞の投票フォームに回答したり、イベントの終わりをしみじみと実感しながらのんびりしていました。
あと、ハッカソンが終わった後にVRChatのワールドでお疲れ様会をやろうみたいな話をしていた気がします。
18:30 結果発表、表彰
結果発表の時間はずっと緊張でした。
オーディエンス賞の発表が先で、チーム名が呼ばれた時は自宅で叫んでいました。
(oViceではリアクションを連打していたのですが、他のメンバーも同じことをしていて面白かったですw)
グランプリは受賞できなかったのですが、絵としてのクオリティは悔しくも上だったので納得です。
この時、日頃は斜に構えている自分が悔しさを覚えていることに気づきました。
やっぱり何かに一生懸命になる経験は必要なんですね。
19:00 クロージング
イベントの締めにPLATEAU AWARD本戦や地域ハッカソンのことが話題に上がりました。
自分自身もPLATEAUに関しては消化不良のところもあるので、今後も機会があればリベンジしてみたいと思います。
終わった後は、ハッカソン中はできなかった作成ワールドでのお疲れ様会とVRChatの案内をしていました。
オンラインでも密なコミュニケーションを取れて、VRChatの良さも伝えられた良い時間でした。
参加して得られたこと
勢いは大事
実は、ハッカソン当日まで何かと理由をつけて不参加にしようか、ふらふら悩んでしまっていました。
経験がないことには抵抗感があって、どんなに意識を高く持っていてもやりたくない理由を見つけようとしてしまう癖があります。
とりあえず申し込むことで退路を断っておいたのが良かったのかなと思います。
失敗したことはいくらでもありましたが、それは普段と違う状況に置かれたから見えた弱点だと考えています。
ハッカソン経験を積めたことで、今後はあまり抵抗感なく参加できそうです。
最初のきっかけは勢いで掴み取らないといけないと学びました。
個人制作では得られない不自由さと達成感
私は職務としてのエンジニア経験をあまり積んでいません。
個人制作の楽しさ、大変さは理解していてもチームで何かを作ることは何かしらで経験したいと思っていました。
今回学んだことは、特に見知らぬ人同士でチームを組む場合は、お互いの得意分野を知って役割分担をするのは目的達成ではかなり重要ということです。
出来もしないことを任せてしまったり、本来得意なことを任せられなかったりすると悲しいミスマッチが置きます。
自分が何をできるかきちんと説明するのはもちろん、チームメンバーからしっかり聞き取ることが私の課題だと感じました。
不自由なことがあるからこそ、何をやってほしいか・どの情報を欲しがっているのかを汲み取るコミュニケーション能力の重要性が身にしみます。
その不自由さを乗り越えてチームで作り切るが故に、一人でモノづくりするよりも大きな達成感があったのだろうと思います。
一緒に制作に携わったメンバーに感謝です。
手を動かせること、発表できることはどちらも重要なスキル
これは参加していた私自身の主観として、参加チームだけでなく他チームの様子を見ても感じたことです。
手を動かせるのは技術力の有無と相関があるとは思いますが、何か試そうとなった時に議論する以前にやってみようと言える人間がいるかはポイントです。
評論家になってしまっても、尻込みしても、ことハッカソンにおいては良い結果にはならないと感じました。
私は各種技術への深い造詣はありませんが、とにかくプロダクトを作ってみることを重視してきました。
その意識は自分の中では当たり前でしたが、ハッカソンイベントでそれができること自体が大きな強みになると認識できた気がします。
単純に広く浅く知っているだけで、技術者以上にPM的な役割としても重宝されやすいようです。
また、人前で発表することも当たり前にできることではないと知りました。
仕事で私の担当するクラスでは、毎月LT大会をやって発表することがルールなのですが、自分も一緒に発表する癖をつけていてよかったと思います。
やっていることが技術的に大したことが無くても、間違っているかもしれなくても、まずは伝えてみなければ何も始まらないことを本能的に学べていました。
登壇経験は技術以前に場馴れが必要だと思うので、これからも前に立って話す機会を逃さないようにしていきたいです。
おわりに
初めてハッカソンに参加してみた話を、細かくメモを掘り起こして記事を書きました。
これからハッカソンに挑戦してみたい人やモノづくりにチャレンジしたい人へ少しでも後押しになれたら幸いです。
これからも些細なことでもチャレンジしてみて、実績解除を進めていきたいと思います。
大学卒業からエンジニアを始めたが故の悩みですが、社会人が気軽に参加できるハッカソンは少なくて二の足を踏みがちです。
少ない機会を大事にしていきたいですね。