satococoa's blog

主にサーバーサイド、Web 系エンジニアのブログです。Go, Ruby, React, GCP, ...etc.

iOSのハッカソンに参加しました

あまり勉強も十分でないまま、勢いだけでiOSアプリを開発するハッカソンに参加しました。
ONLAB Hackathon | PeaTiX
公式のまとめエントリ → 36時間、44チーム、100名による耐久プログラミング「Onlab Hackathon」を開催しました! | Open Network Lab(オープンネットワークラボ)

このイベントですが、期間は二日間そして泊まりこみも可能という硬派なイベントです。
泊まりこみというか、宿泊用の設備があるわけではないので結局ほぼ寝ずの全員デスマ状態と言ったほうがいいのでしょうかw

そして当日になって初めて知った、実はiOSで動けばなんでもいいのでTitaniumやPhoneGapどころか別にrailsで作ってもいいという事実。

正直かなり心が揺れました。
でもこのイベントに参加しようと決めたきっかけは「iOSのアプリを作れるようになりたいけど、なかなかきっかけがないと一歩踏み出せない。じゃあ無理矢理にでもやらなきゃならない状況を作ろう!」ということです。なので頑張ってObjective-C書くことにしました。

僕が当日作ったのはRapidCheckinというアプリ。Foursquareでよくチェックインするポイントを登録しておいて、そのポイントの近くに行ったらアラートが出てワンタッチでチェックインできるというもの。
iOS5のiPhoneでだけ動けばいいということにし、ARCとストーリーボードを使ってなんとかひと通り動くところまで作りました。

以下のような感じで2日を過ごしました。

1日目AM

  • railsで作ろうかどうかの葛藤に一人で悶々と悩む

1日目PM

  • アプリの仕様を確定(この時点でFoursquare API, OAuth, Core Data, Map Kit, Core Location, TableView, Local Notificationあたりを調べなければならないことがわかり、軽くめまいがする。)
  • AppleがPDFで公開しているCore Dataのチュートリアルをこなす
  • さくっとCore Locationあたりの使い方を調べる
  • ストーリーボードで画面遷移とUIの作成、それぞれに対応するViewを作る
  • 最悪FoursquareAPIから現在地に近いポイントの検索くらいまで動けばいいかー、と軽く考えていたら検索にもOAuthの認証が必須であることを知り泣きそうになりながらOAuthの認証まで作る

1日目夜中(23時以降)

  • Foursquare APIから現在地付近のポイントの検索〜結果の表示ができるようになる。ここでTableViewに苦戦。またもや泣きそうになる。
  • Core Dataを使ってポイントの保存ができるようになった。意外とすんなり。

2日目AM

  • 前日の夕飯がちょっと足りなくてお腹が減りすぎ、集中力が落ちてしまったので仮眠(5:30〜8:00頃まで)
  • 朝食を食べて復活
  • Map Kitで地図を表示し、保存したポイントのところにピンを立てようとするも、JSでGoogleMapを使った時と勝手が違って泣きそうになる。ググりまくってなんとか実装

2日目PM

  • 「保存したポイントの近くに行ったらアラートが出る」という機能の実装のためにLocal Notificationあたりを調べて実装
  • とりあえず発表できそうになって安心
  • 発表

こんな感じでした。
まだまだバックグラウンドに入った時に適切に位置情報の精度を変更したりだとかそういうことをやっていないのと、デザインが皆無ということで完成には程遠かったのですが、一応ひと通り動くところまでできたので嬉しかったです。

発表ですが、想像以上にレベルが高かったです。正直、「あんまり完成させる人はいないのでは」なんて考えていたのですがとんでもなかったです。アプリも完動、デザインもちゃんと入っていてプロモーションの動画まで作っちゃう人もいました。すごいですね・・・。

次回参加することがあれば、それまでにもっとiOS開発に慣れておいてデザイナーさんと組んで出たいと思いました。