ハッカソン、コンテストの制作物か中途半端になってしまう人へ
この記事を書いた理由
ハッカソンやコンテストに 5 回以上参加した経験から、よく目にするのが中途半端に完成された制作物。これらの作品は、核となる機能が完成されいないため利用や目的がわからないことや、未デプロイであるため実際に試すことができない。もちろんのこと、中途半端な制作物が最優秀や優秀賞を取ることは経験上ほぼなかった。(スライドや資料が上手だと努力賞ぐらいはある)。そのため今回は、ハッカソンやソフトウェアなどの短期開発で中途半端になる原因を徹底的に追求し、少しでも日本のハッカソン、コンテストのレベルが上がるようにしたい!
結論
先に結論として 4 つを並べる
MVP を考えられていない
MVP(Minimum Viable Product)とは、ソフトウェア開発において、ユーザーに必要最小限の価値を提供できるプロダクトやサービスを開発する手法である。普通の開発のプロジェクトでも、必要な概念だが、ハッカソンこそ意識してほしい。特に意識して欲しいことは 2 つである。
1. アイデアを伝える機能であるかどうか
提供しようとしている価値が何であるか、また、それを最もシンプルに伝えるための機能は何かを必ず意識してほしい。これを意識するだけで、優先すべき開発が必ず見えてくると思う
2. デプロイはできているか
これは、後のテーマともなっているのにで省略する
この 2 つだけでも、心掛けてハッカソンに望んでほしい
ログイン機能って本当に必要!?
例えば、伝言ゲームをアプリで作ろうとする。この時に email と password を入れたログインを入れるべきなのか? これは明らかに入れるべきではない。名前だけで十分である。またユーザに紐づく情報を DB に保存する必要もないから名前も DB 管理する必要はない。これは、極端な例かもしれないが、ハッカソンではよく見る光景であり、そういった作品に限ってログイン後の機能、画面のクオリティーが低い。ハッカソンにおいて「email と password でログイン機能を作成しました~」「google 認証実装しました~」「認証基盤を作ってセキュリティを担保しました~」などで評価されることはまずないし、ログイン機能は、開発コストも高い。そのためログイン機能の実装は、ハッカソンという限られた時間の中では、コストパフォーマンスが悪すぎるのだ
デプロイを最後にやるな、最初にやれ
皆さんは、多くのハッカソン参加者は、発表の前日に初めてデプロイを試み、しばしば失敗する経験そて。一般的には、「デプロイ」という行為は製品が完成してからのものという先入観があるが、私はそれに異を唱え、デプロイはプロジェクトの初期段階で行うべきだと思う。その理由は以下の二点。
1. 開発コストは変わらない
デプロイのタイミングがいつであれ、かかる開発コストは変わらない。上でもハッカソンで求められるのは最小限の機能を持つ製品(MVP)であり、その構築を最初に行うことはプロジェクト全体の価値を高める。
2. 環境構築の利点
早期にデプロイを行うことで、開発環境とデプロイ環境の整合性が保証され、プロジェクト終盤に緊急の大規模な修正を避けることができる。これにより、スムーズな開発プロセスが実現可能ができる。
ハッカソンでの成果物はより完成度が高く、実用的なものとなる。デプロイを先延ばしにするのではなく、初期段階で取り組むことで多くの問題を防ぐことにつながるのだ
無料、安いに縛られてしまう
開発をする上で、ツールやライブラリーにお金が掛かることがある。しかし、日本人と言ったら必ず無料、一番安いものといった値段基準のみに選ぶ傾向がある。しかし、その観点だけで選択すると必ず自分の首を絞めることになり、最終的に開発コストが跳ね上がり、お客様やユーザに価値を提供する開発が出来なくなってしまう。例としては、自分はプロジェクトで認証基盤の auth0 を導入していたが、cognito(AWS) の方がコストが圧倒的に安く抑えられるため cognito(AWS) への移行の話が持ち上がった。しかし cognito には大きな問題があった。それはドキュメントやライブラリー少ないことやログイン、新規登録の画面とその処理を書かなければいけないことであった。(auth0 は ウェブアプリケーション が用意されている)。そのためコスト削減の開発コストが膨大になってしまう可能性があった。このサービスは、始まったばかりで、お客様やユーザに価値が提供されていないのに自分たちに対する価値を高める開発であったため、延期することとなった。このようにお金に縛られることで、本当の価値を見失ってしまうことがある。だからこそハッカソンでは、価値の方向を自分たちではなく、ユーザに向けてほしい。
まとめ
今回のハッカソンに関する内容は、開発プロジェクト全般に共通する重要な視点だと考える。
1. 誰に価値を提供するか(ターゲットユーザー)
開発の最初のステップとして、プロダクトやサービスが誰に向けて作られるのか、ターゲットとなるユーザー層を明確にする必要がある。これにより、ユーザーのニーズや期待に沿ったソリューションを提供することが可能になる。
2. どのような価値を与えるか(提供価値)
そのターゲットユーザーに対して具体的にどのような価値を提供できるのかを考える。ユーザーにとっての利便性、問題解決、感情的な満足感など、提供できる価値は多岐にわたる。
3. どのような規模で価値を与えるか(影響力やスケール)
その価値がどの程度の規模で影響を与えるのかを検討します。プロダクトが小規模なコミュニティ向けなのか、大規模な市場やグローバルに広がるものなのかを理解することで、リソース配分やプロジェクトの方向性が明確になる。
これらのポイントを常に意識することで、開発プロジェクトやハッカソンがより効果的に価値を生み出せるようになっていて欲しい。
Discussion