カナダ西部最大級のハッカソンnwHacksに日本人1人で飛び込んでみた
先日、カナダで開催されているハッカソンnwHacksにソロ参戦してきました。
間違いなく人生史上最高の経験となったため、体験したこと、感じたこと、考えたことを文字起こししてみました。海外のハッカソンに参加してみたいと思っている方や興味のある方に対して少しでも参考になれば幸いです。
nwHacksとは
nwHacksは、カナダ西部最大級の学生向けハッカソンで、ブリティッシュコロンビア大学(UBC)を中心とした、プログラマやデザイナを目指す学生による学生団体「nwPlus」が主催・運営しています。対面で行われるハッカソンであることも特徴的なポイントだと思います。
私が参加した2025年1月開催のnwHacksでは734人のハッカーが参加していたようです。2024年開催時には743人のハッカーが参加していたようなので例年800人弱くらいの参加人数なのかなと思います。学生もしくは卒業から1年以内であれば参加権利があるようです。
日本のハッカソンと同様に、二日間でプロダクトを作り上げ、最終的に審査員に対してプレゼンテーションやデモを行います。具体的には土曜日の昼12:00から日曜日の昼12:00までの24時間が開発に割くことができる時間です。そのため、土曜日の午前中までにアイデアソンは済ませておく必要があるかなと思います。ハッカソン期間中は、スポンサー企業との交流を行えるブースが設置されているため、スポンサー企業から提供されているリソースを利用したり、インターンシップに参加するための質疑応答などが行われていました。また、メンターによる技術サポートも整備されているため、技術的に詰まったら質問することができますが、なんせ参加者が多いだけにメンターの数が足りていないようにも感じました。
学年や専攻分野、プログラミングのスキルレベルに関わらず誰もが参加できる場であることは、ハッカソン開始前から感じられました。様々なワークショップを通じてgitやAPI、Reactの基礎から、Figmaなどのデザインツールの使い方などを学べる機会が提供されていました。ただ、これらは対面によるイベントであり、私はハッカソン前日にカナダに到着する予定であったため参加することはできませんでした。😢
参加を決めた理由・背景
まず第一に、ハッカソンの熱量が大好きで、様々なハッカソンに参加していました。その中で、学生のうちにチャレンジしたいこととして、海外ハッカソンに挑戦することをかねてから目標として考えていました。そこで、友人と共に海外のハッカソンをリサーチしている中で見つけたのがこのnwHacksでした。開催日の1年前くらいからnwHacksにエントリーすることを決め、練習として日本のハッカソンに参加したり、英語の勉強をしたりとそれなりに準備してきたと思います。諸々の事情により、その友人とハッカソンに参加することは実現しなかったものの、彼のおかげでこの貴重な経験を積むことができたため感謝してもしきれない思いです。
また、将来的なキャリアとして海外のエンジニアとも働いてみたいという思いが強く、実際に海外エンジニアとのチーム開発経験を詰めることが期待できたことも参加を決めた背景にあります。
と、表向きの参加理由をまとめましたが(嘘ではない)、実際に友人が参加できないことが決まった時には自分1人で参加するかは非常に悩みました。それなりに英語は勉強してきたものの、海外ハッカソンでソロ参戦して上手くコミュニケーションが取れるのか、海外エンジニアの技術力についていけるのかなどの不安でいっぱいで正直怖かったからです。ただ、もしここで逃げたら絶対後悔するだろうし、今後も逃げの選択をする自分になることの方がもっと怖かったので思い切って参加を決意しました。「自分に勝つため」という理由が最大の参加理由になったかなと思います。
事前準備と手続き
長期準備期間
英語
まずは言わずもがな英語です。コミュニケーションツールであるため欠かすことはできません。私が特に取り組んだこととしは、大学のカリキュラム外の英語のスピーキングの授業を追加で受講したことです。これは前期(4月~7月)に開講されていたため、その期間有効活用することができました。ただ、問題は、後期(10月~2月)は英語の講義が存在しなかったことです。そこで前期の講義を担当していた先生に直談判し、毎週特別授業を行ってもらえることになりました。本当に感謝です。授業外で多くの洋書を読み、授業中にその内容をシェアするというのが主な内容で、これが、ボキャブラリやリスニング力、スピーキングの瞬発力が従来の自分に比べてかなり向上した良い時間でした。
エントリー
参加希望者全員が参加できるわけではなく、書類審査をパスする必要があります。そのエントリーが11月下旬から12月上旬にかけて提出する必要があります。詳しい設問内容は覚えていませんが、「なぜ参加したいのか」「nwHacksに期待すること」などが聞かれた記憶があります。また、学歴や職歴・過去のプロジェクトなどのまとめたレジュメを提出する必要があります。もし英語のレジュメを作成してたことがない方は、オープンソースのOpenResumeがおすすめです。必要事項を記入したら半自動でレジュメをフォーマットしてくれます。
参加可否連絡のメールには、「1600以上の応募を審査した結果、あなたを招待します」という旨の連絡をいただいたため、書類審査の倍率はざっくり2倍程度だと想定されます。光栄です。書類審査に落選した人を知らないため、ここでのポイントは分かりかねますが、「CEFRでB1レベルの英語力です」ということは提出書類にはっきりと伝えていた上で書類審査に通ったため、英語力に関しては心配しすぎる必要もないかもしれません。
直前期間
エントリー結果発表
必要書類を提出してエントリーした結果が返ってきたのが新年明けた1/4でした。ハッカソン当日のちょうど2週間前の連絡です。この連絡が来るまで参加できるかわからなかったため、航空券や宿泊地の予約は一切できない状態でした。もう少し早めに連絡をもらえると嬉しかったかなと思ったポイントです...
宿泊地
参加可能連絡が来てから宿泊地を探し始めました。宿泊地はAirbnbとBooking.comをメインに利用して探しました。ただ、この時点では本当に参加するのか半信半疑の自分がいたため、「キャンセル料無料」であることを条件として宿泊先をさがしていました😅。後は、ハッカソン後に思う存分観光してやる思いが強かったので、その拠点となる宿泊先であることを考慮していました。
実際には、バンクーバー国際空港とUBCとの中間地点くらいの場所に宿泊し、立地的にも申し分なかったと思っています。後日談ではありますが、その宿泊地が寮のような場所で、Wi-FiのSSIDが「MakeFriend」だった時点で「あーそういう感じね」と察し、他の宿泊者にも積極的に話しかけることができたのも旅の良い思い出です。
航空券
航空券を買ってしまえばもうキャンセルできないため、ここで腹をくくって参加を決意しました。航空券を買ったのは出発のおよそ1週間前だったのですが、オフシーズンだったこともあり往復16万くらいで購入することができました。トランジットで韓国を経由する便だったのですが、韓国からカナダに行く便で6時間の遅延が発生し、当初は前日の15時到着予定であったものの、結局21時到着になったというアクシデントも発生しました。入国審査やら預け荷物の受け取りやらで宿に到着したのは23時頃。幸いすぐに眠ることができて翌日のハッカソンに備えることができましたが、もっと余裕を持ったスケジュールで向かうべきだったなぁというところが反省点ではあります。
余談ではありますが、この6時間の遅延の間、空港で暇だったため、初めてCline×DeepSeekでAIエージェント開発を試し、「これハッカソンで使えるやん!」と感動を覚えていました。
ハッカソン当日の流れと体験談
ここでは私が担当したことや私自身の時間の過ごし方についてまとめています。
Day1
9:00-11:00
9:00以降に会場に入ることができ、会場に入り次第、参加登録を行います。11:00までに登録できないと参加権利をはく奪されるようなので時間厳守です。
この時間内にチームを作る時間も設けられていますが、事前に招待されるDiscordサーバーにてチームに参加したりチームメンバーを集めたりすることもできます。私はDiscordでチームを見つけることができたため、この時間は主にチームメンバーとのアイスブレイクの時間に充てていました。ちなみにチーム構成としてはPM兼デザイナーが1人、フロントエンドエンジニアが1人、バックエンドエンジニアが私を含めて2人という構成でした。私たちが構築したプロダクトの詳細は、「得られた成果と結果」にて後述します。
また、スポンサー企業によるブースも設置されていて、様々なTech系の企業から政府やカナダ軍(主にサイバーセキュリティ系)などのブースも設置されていて面白かったです。インターンの情報収集をしている方も見られました。
必要に応じて、この時間を使ってアイデアソンや方針の確認を行うこともできるので、この時間の過ごし方はチームによります。
11:00-12:00
11:00からオープニングセレモニーが催されました。スポンサー企業による挨拶がメインでした。だた、参加人数が多すぎて、オープニングセレモニー会場に入りきっていなかったですね。
12:00-16:00
12:00から本格的に開発が始まります。もしGithubレポジトリがこの時間以前に作られていたらルール違反になるようです。PMがハッカソン開始までにアイデアやMVP、使う技術をNotionに分かりやすくまとめてくれていたおかげで何をすべきか非常に理解しやすく、開発効率が高かったように感じます。適宜コミュニケーションを取りながら変更箇所はあったものの、事前の設計から大きく変わることはなく開発を進めることができました。PMがいかに開発効率に寄与しているかを実感できた瞬間でもありました。DBはFirestoreのデータベースを利用することになったため、基本設計やドキュメント及びコレクション等の作成を行っていました。
13:00からはランチでピザ2ピースが提供されました。ハッカソンを通してですが、食事は無料で提供されています。非常にありがたかったです。
16:00-21:00
バックエンドの開発の進捗状況としては、このあたりでアプリケーションで呼び出す基本的なAPIを一通り実装し終えた状態でした。加えて、メイン機能の1つとなる(予定だった)レコメンデーション機能のAPIも構築し終えました。ただ結果的には、時間の関係上レコメンデーション機能をアプリに実装することはできず、このAPIは使われることがなかったのは残念でした。ハッカソンなので仕方ない部分ではあります。
なお、会場の様子は以下の写真から雰囲気を感じ取ってもらえればと思います。開けたスペースでそれぞれのチームがそれぞれのテーブルで開発を進めています。このスペースがもう1つ別に用意されている規模感です。他のチームが作っているものや様子を見ることができ、面白いものを作っているチームに話しかけに行って質問したりすることもできるのは、対面のハッカソンならではな部分で楽しかったです。
このあたりのタイミングで、サブウェイライクなサンドイッチが夜ご飯として提供されました。結構スパイスが効いていて個人的にかなり好みでおいしかったです。
また、アクティビティの1つとして行われていたTechTogether Meetupにも参加してみました。円になって座り、ソフトウェアに関することについてざっくばらんに話し合う会です。英語の問題でついていけない話題がいくつかありましたが、「一番重要だと思うソフトスキル」や「新しい技術のキャッチアップ方法」などについて情報交換していました。
21:00-24:00
バックエンドとしてのタスクがほとんどなくなったため、フロントエンドの構築に回りました。ReactおよびTypescriptを用いた開発だったのですが、Reactの経験値は限りなくゼロに近かったため苦戦しましたが、ReactのUIライブラリMantineを使ってみて、モジュールが画面に追加されていく様が楽しかったのを覚えています。
またこの時間に催されていたカラオケにも少し参加しました(聞き専)。かなり盛り上がっていました。他の人が歌っている傍ら、エディターを開いて開発している人も散見されました。
Day2
0:00-9:00
深夜のスナックも大量に準備されていたので、ハッカソンを通して空腹になる時間がありませんでした。ハッカソンでは寝ずに開発し続けるチームや、しっかり休息を取るチームなど様々だと思いますが、このハッカソンでは私たちのチームも含め、半数以上のチームが夜通し開発し続けていた印象です。必要であれば仮眠スペースも用意されていたため、そこで睡眠を取ることもできます。
開発状況としては、フロントエンド側の構築も概ね終了してきた段階でした。ただ、プロダクトに実装するLlamaのAPIとの連携がうまくいかず、四苦八苦していましたが、もう1人の天才バックエンドエンジニアのおかげで無事連携することができ、プロダクトに組み込むことができました。👏
9:00-12:00
提出締め切りが正午までであるため、チームとしてはプロダクトの修正をしつつ、ドキュメントの整備や発表準備などに追われていました。締め切りが近いことと、夜通し稼働してきた疲れから少しぴりついており(それでも十分に最高の雰囲気)、英語での議論についていけなかったことが非常に悔しかったポイントです。私自身、飛行機移動での疲れと、24時間以上起きている状態であったため、脳機能がかなり低下しており、全然リスニングできなかった可能性も要因としてありますが。そのため、少しでもチームに貢献すべく、ドキュメントの整備の部分に尽力しました。朝食は何を食べたか記憶にありません...
12:00-19:00
無事提出を完了し、ランチを食べ、審査発表会を迎えました。審査の方法は、各テーブルに審査員が訪問してくるため、その審査員に対して3分間でピッチし、その後質疑応答の時間が設けられる形式です。1チームに対して別の審査員が異なるタイミングに合計3人訪問し、それぞれの審査員の評価の合計スコアで競うようなイメージです。満身創痍でした(笑)
審査終了後、クロージングセレモニーまで時間があったため、UBCのキャンパスを見て回っていました。そのうちの1つにビーチに行ったんですが、そのビーチが壮大で、いくらか疲れが癒されたと思います。
クロージングセレモニーでは審査にて選ばれた優秀作品が何点か全員の前で発表されました。最初の2つのプロダクトは、ピアノを初心者向けにIoT化しているものや、新しいCLIアプリケーションなど、面白くてクオリティが高く記憶に残っているのですが、それ以降は私の体力の限界でした。クロージングセレモニーで寝てしまい、残りの発表は全く聞けませんでした。残念です。
得られた成果と結果
私たちが構築したプロダクトは、コンセプトとしてはコミュニティの構築とモノのシェアリングを同時に行えるプラットフォームです。基本的な技術スタックとしては、バックエンドにFastAPI/Python、フロントエンドにReact/Typescriptを用いています。外部APIとしてLlamaやGoogle Vision APIを利用し、シェアする物に対しての説明文生成やタグ付けを自動的に行い、ユーザー体験の向上に努めている点が最大のセールスポイントになると思います。PMのアイデアではありますが、個人的におもしろいと思った点は、借りる側が貸す側への対価として「お金」だけでなく、「カフェでお話する時間を作る」など柔軟に選択できるようにした点です。コミュニティの構築の観点からすると、モノをシェアリングする対価としてそのモノについて話す機会や出会いを作るというのは理にかなっているなと感じました。
プロダクトの詳細はDevpostにまとめられているので、もし興味を持っていただければ覗いていただけると幸いです。
ハッカソンの結果としてなんらかの賞を受賞することはできませんでしが、それ以上にこのハッカソンが自分史上最高の経験をもたらしてくれたと感じています。
振り返り:nwHacks参加におけるポイントや注意点
nwHacksに興味がある人へアドバイスとなればと思い、私が今回参加したnwHacksからのみの経験談にはなりますが、何点かまとめられればなと思います。nwHacksに限らず、海外ハッカソンという点からも少し参考になればと思います。
- ごはんめっちゃあるから心配無用
空腹時に備えて会場に向かう前にいくらか食べるものを容易していきましたが、空腹になることがまずありませんでした。腐らないために無理やり食べましたが、正直買っていく必要は無かったです。水に関してもウォーターサーバーがあります。コーヒーに関しては、会場のすぐ向かいにスターバックスがあります。日本のコンビニのようなものは近くにはありませんが、24時間戦う上での食料・飲料に関しては基本心配する必要はありません。 - ソロ参戦も心配無用
私自身もソロ参戦だったのですが、他にもソロ参戦の人はたくさんいるため、心配する必要はありません。当日はもちろん、Discordでチームメンバーを見つけることは容易です。 - めっちゃアクティビティやワークショップある
開発だけでなく、ハッカソンのイベントそのものを楽しんでいる感がすごくありました。これはオンラインではなく対面形式のハッカソンだからこそなのかもしれませんが、プロダクトをより良いものにするためにフルコミットするのも1つ、あらゆるアクティビティに参加してソフトウェア開発を楽しむのも1つ、様々な楽しみ方があるなと感じました。正直、ハッカソン期間中にプロダクト開発にフルコミットすることは日本にいてもできることなので、様々なアクティビティに参加しながら開発を楽しむ方が価値があるのではないでしょうか。 - 夜中に一度出ると再入室できない
セキュリティ上の理由で、ある時刻を過ぎて会場から出てしまうと、外からはロックがかかって建物内に入ることができない状態になります。特に理由がない限り、夜は建物外に出ない方が諸々安全かと思います。
まとめ
自分史上、自分のコンフォートゾーンから最も遠い環境に飛び込んでみました。参加する前はめちゃくちゃ怖かったし、「お金がない」「論文の締め切りが近くてハッカソン行ってる場合じゃない」などいくらでも言い訳して参加しない選択をすることもできましたが、それでも挑戦してみて、間違いなく最高の経験となりました。
英語に関しては、相手の言っていることが理解でき、自分の伝えたいことも上手く伝えられた成功体験を積むことができた一方で、それ以上に英語でのコミュニケーションの難しさを痛感した場でもありました。ただ、英語学習のモチベーションはこれまでにないくらい高いです。もっと流暢に英語使えるようになって、いつかまた、このチームメンバーでおもしろいプロジェクトに取り組みたいという強い思い。
Discussion