この記事は、ニフティグループ Advent Calendar 201917日目の記事です。
昨日は@h_okawa0303さんの[Go言語] freshでサブコマンドを扱うでした。
Go言語は詳しくないですが、ホットリロードができるのは嬉しいですね。
はじめに
ハッカソン、参加してますか?
私は今年、社内のエンジニア定例での合宿ハッカソン、全世界で同じ日に開催されるLocalHackDay、Yahoo主催のHackDayといった様々なハッカソンに参加しました。
ハッカソンと呼ばれるイベントは大抵1,2日間ぐらいのとても短い期間で開催されることが多いですよね。
そうなると開発時間は正味8~24時間ぐらいでしょうか。
今回はそのように超短期間で作品を作るためどうすればよいか、自分の経験を踏まえながら挙げていきたいと思います。
人によっては当たり前の話であったり開発力には個人差もあるので参考にならないかもしれませんが、あしからず。
目標を高くしない
短い開発時間、あれもこれもといろいろな機能を追加したくなりますが、欲張ってはいけません。
「この時間でここまでできそうだ!」と思っても実際にはそこまでできることは、まず無理です。
自分の感覚では、最初の見積もりの3割ぐらいが妥当なのではないかと思います。
ハッカソンは1人で参加するか、チームで参加するかのどちらかだと思います。
1人の場合は、自分の実力がわかっていると思うので比較的無理のない範囲で目標を立てられますが、チーム開発となるとなかなか難しいのではないでしょうか。
人数がいるゆえに、目標を高くしがちですが、そこをグッとこらえて低く見積もっていきましょう。チームメンバーがどれくらいできるのか意識をすり合わせるのも大切ですね。
設計や実装をこだわらない
通常の開発であれば厳密に設計して、きれいな実装をすることはとても大切です。
ですが、ハッカソンとなると話は変わってきます。
時間が少ないので、きっちりとした設計に沿って実装していくとなると完成しなくなるかもしれません。
とにかく動くものを時間内に作るというのが一番なので、多少いびつな設計だったり汚いコードだとしても目を瞑って開発する方がよいと思います。
しかし、あまりにも設計が良くないと逆に開発に時間がかかったりうまく実装できなかったりするので、バランスが大事ですね。
このときだけは拡張性や保守性といった観点は捨てて、シンプルで実装しやすい設計にするのがベストだと思います。
未知の技術を使わない
ハッカソンのようなイベントに参加すると、せっかくなので普段使わない技術を使いたくなりますね。
気持ちはとても良くわかりますが、それは危険です。
例えば「Androidアプリ開発をほとんどしたことないのにAndroindのARアプリを作ろうとする」なんて無謀です。やめましょう。
短い期間で未知の技術を使おうとしても、その技術の使い方を調べるだけだったり、慣れないゆえにハマってしまい抜け出せないのが関の山です。あまり使ったことのない技術を使うのは避けましょう。
使うにしても事前に素振りをしておくのがいいですね。
技術の引き出しを増やす
当然ですがいろんな技術を知っていれば、できることは増えます。
できることが増えるということは何を作るか考えるときのアイデアが広がります。
普段からいろいろな技術に触れて、できることを増やしていくと作れるものが増えて楽しくなると思います。
クラウドサービスは武器
時間が少ないハッカソン、サーバの環境を整えたり難しい実装をしたりしているとどんどん時間がなくなります。
そこでクラウドのサービスなどを活用すると時間をショートカットできるかもしれません。
例えばAWSやAzureなどのクラウドサービスでは簡単にアプリケーションをデプロイできる環境を素早く作れたり、各種DBのサービスを簡単に立ち上げられたりできます。
あるいは、AWSのLambda+API GatewayやAzureのFunctionsなどのサーバレス環境を使ってAPIをサクッと作るのも良いでしょう。
私はあまり使ったことはありませんが最近は機械学習系のサービスも充実しているので、知識がなくともそれらを組み込めばできることの幅が増えますね。
ただし、先に述べたとおりあまり使ったことのないものをいきなり使おうとすると結局うまく使いこなせないということになりますので、注意しましょう。
しっかり休む
短期間で集中して開発するので休憩する時間が惜しいと思いますが、休憩はした方がいいです。
どうせある程度開発し続けていると集中力が切れる時間が発生してなかなか進まなくなります。
それでも、ずっと書き続けているとコードが読めなくなり気を失います。だめだと思ったら休憩しましょう。
そのために最初に述べたとおり余裕を持った開発計画を立てましょう。
楽しむ!
これまでたくさんのことを挙げてきましたが、ハッカソンは楽しんで開発することが一番です!
完成して評価されれば達成感もあり嬉しいですが、別に完成しなかったからと言って誰かから責められるわけでもないので自由に好きなものを開発しましょう!
次の担当は@yukiex@githubさんです。