宇宙の渚を眺めるエンジニアのブログ

技術的な備忘録や、日々思ったこと、たまに宇宙関連について綴る

ハッカソン初参加の感想

 エンジニアとして働き始めて2年弱になり、Webまわりの知識もある程度ついてきたため、「自分の実力を試してみるため」と「仕事以外のつながりを広げるため」という意識のもと、"Geospatial Hackers Program 福井"*1に参加してみたので、感想を書いていく。自分としては、これがハッカソンイベント初参加*2だった。全参加者はおそらく50人ぐらい(学生さん多め?)だった。

イベント全体の流れ

 イベント全体の流れはおよそ以下の通り。ただし、書きやすさのため、実際の順番と若干入れ替えている。

1日目

セミナー

  • G空間技術の現状と産業事例の紹介
  • ハッカソン用に公開されたデータの説明

主に座学の時間。

イデアワーク & チームビルディング

 アイデアワークは大雑把に以下のような流れだった

  1. 同じ机にいた人たちと、G空間情報を利用したアイデアをたくさん出し合う。この段階ではとにかくアイデアを出していく段階
  2. そのアイデアの中から、良さそうなものを2つ選ぶ
  3. イデア2つを全体に発表して、そのアイデアをやりたいと思った人が集まってチームをつくる

自分は、元々組む予定だったメンバーの2人と同じものを選んだ。また、他にも3名メンバーが集まり、合計6人のメンバーに。

ハンズオン

 G空間情報を利用したアプリの開発をハンズオン形式で学ぼうという時間。オープンデータを利用したWeb地図アプリの開発を実施。ハンズオン用にgithub上で公開されているコードをフォークして、それをいじってみようという感じだった。githubが簡易的なwebサーバーを持っていて、そこにwebアプリを立てられるということを初めて知った。

 今回のハンズオンでは、地図表示用ライブラリとしてleaflet.js、オープンデータ利用のためにsparqlというrdf用クエリ言語を利用していた。ハッカソンの前に個人的に少しいじったりしてみたが、sparqlの書き方が非常に独特で慣れるのに若干時間かかりそうだなという印象。rdfのデータ構造も把握しきれていない。

 ハンズオンの時間では、メンバーの学生さんにアドバイスしながら自分でもちょこちょこいじるといった感じ。個人的にいじっていたのが生きたか。

ハッカソン本番に向けての事前準備

 2日目のハッカソン本番の時間に向けて、アイデアに対して、どのような形で作っていくかをチーム内で話し合う時間。30分ほど。結局この時間では明確には決まらず、2日目に持ち越しに。

2日目

ハッカソン本番

 いよいよハッカソン本番。10:00頃から開始して、17:00には完全終了、17:10から各チーム発表して投票、デモデイ*3チーム発表という流れだった。

プロダクト確定〜作成体制決め

 1日目の時点では、プロダクトを確定させられていなかったため、まずはそれを確定させることに。自分は、1日目の夜に使えそうな外部APIを試しておいて、それも使っていけるように準備しておいた。この時点でもいくつか案が出たが、それなりに意味がありそう&現在の技術で動かせる方向で落ち着いた。

 開発体制としては、自分がバックエンド側の開発、もう一人の方がフロントエンド側開発、アイデア出した方が発表資料作成&発表者といった感じだった*4。昨日いたうちのメンバーの1人は残念ながら来れなくなってしまったが、自分は学生さん*52人にもプログラミングに触れて欲しいと思い、python教えつつ協力してもらうことに。

本作業

 自分は、主にFlaskでサーバーを立てて、フロントエンドと連携するためのAPIを作成。そのAPIを叩くと、外部APIを実行して最終的な処理を実施するという部分を作った。合わせて、学生さんにやって欲しい作業を伝えて、自身で調べてもらいながら*6、プロダクトに必要なパーツを作ってもらうことに。

 途中で、フロントエンド側のほうが作業が多そうだと思ったので、フロントエンド側の作業も少し分担することになった。仕事のほうではフロントエンドの人間なので、役に立てたような気がする*7。とはいえ、仕事のフロントエンド開発とは違う方式の部分もあったりして、内心はヒヤヒヤした部分もあった。

それでも、当初の予定通り動かせるものは準備できて、スマホでデモもできるようになったので、かなり頑張ったのではないかと思う。プロダクトづくりに短時間でこれだけ集中したのは初めてかもしれない。

発表〜投票・デモデイチーム発表

 各チームのプロダクトの発表。どのチームも面白いアイデアで、本当に実現したら良さそうと思えるものが多かった。また、発表に力を入れているチームが多く、発表者の力量が高い・劇を採用している・デモがしっかりしている、など工夫がなされていた。個人的に感じたのは、どのチームも自信を持って発表しているということだった。もちろん、限られた時間で作ったものなので、プロダクトとしては不十分なのだが、「自分たちのプロダクトではこれができる!」とアピールしており、すぐ自信がなくなる自分は見習おうと思った。

 自分のチームからは、アイデア出しの方が発表。ただし、デモは自分のPC&スマホでしかできない状況だったので、それを貸して発表してもらった。その方の発表が非常に上手だった。また、デモも滞りなく動いたので一安心した。

 いよいよ投票&デモデイチームの発表となったが、なんと自分のチームがデモデイチームに選ばれることとなった。他のチームのプロダクトも良かっただけに、望外の結果であった。外部APIと連携したのを見せられたのが良かったのかな、と思っている。その後は、写真撮影などして終了。

その他

全体の感想

 初めてハッカソンに参加したが、今回のハッカソンは、どうやらガチガチのものというわけではなく、どちらかというと学び重視で初心者の方も歓迎、という雰囲気があった。初参加だったので不安があったが、その雰囲気は非常に安心した。ただし、今回の場合の運営側の視点に立ってみると、初心者の方をできるだけフォローしたいと思いつつも、すべてをフォローするのには限界がありそうだった。そういう場合は、チームメンバー間のフォローや協調が大切だが、メンバーも本番中に決定するので、ギャンブル的なところはあるな、と思った。それでも、初心者が一人で行っても安心して取り組めるイベントがあるのは非常に重要だと思う。逆に、初心者歓迎と書いていないハッカソンに行くときには、それなりに準備しておいたほうが良いかもしれない。

 ハッカソンの内容としては、自分の興味がある分野とあって楽しく取り組めた。メンバーとも、短い時間ながらうまく連携できたと思う。なにより、自分の役割のなかである程度の成果を出せたことが嬉しかった。興味のあるハッカソンがあれば、また参加してみてもいいかも。

ハッカソンに向けて事前に自分が準備したこと

ハッカソンに向けて事前に準備しておいたことで、役に立ったことを記しておく。これがなかったらここまでうまくいかなかったかも。

  • 事前資料はひととおり試しておいた
    特にハンズオンのときに役に立った。本番ではあまり使わなかったものの、勉強になることが多かった。
  • 最小限の労力でAPIを立てられるように準備 PythonのFlaskでAPIを立てられるように練習していた。本番でも実際に利用した。
  • コピペしてすぐ使えるような汎用的なコードを用意 とくにAjaxまわり、htmlの基本的な要素を準備しておいた。これも本番で結構利用。

*1:"G空間情報"と呼ばれる、地理的な空間情報を活用する人材の裾野を広げることがイベントの趣旨だった。自分が地理情報に興味があるというのも参加した理由の1つ

*2:初参加だったものの、チームメンバーを探していた人に初対面ながら連絡をとって、3人のメンバーとして参加した。自分以外の2人はハッカソン複数回参加したことがある。

*3:得票数上位2チームが後日東京で行われるデモデイに参加してプロダクトを発表できる。もちろん交通費つき

*4:実はこの3人が、ハッカソン前に連絡して集まっていたメンバー

*5:プログラムはほんの少し触れたことがあるといった感じだった

*6:自分で調べていけるのが大事だと思うので、調べ方も教えた

*7:ハッカソンでは、敢えていつもと違う領域を担当したが、これもハッカソンの面白さだと思う