ハッカソンのアイデアを洗練させる

## はじめに

こんにちは、[@mahiro0x00](https://twitter.com/mahiro0x00)です。

この記事では、自分がハッカソンのアイデア出しの際に考えていることを書いていきます。
こんな考えもあるんだな、くらいに読んでもらえるとうれしいです。

### 簡単に自己紹介

23卒の関西の大学生です。

普段はバックエンドやSREよりのことをしています。
ハッカソンではバックエンド、インフラ、デザインを担当することが多いです。

以下に直近１年のハッカソンでの受賞歴も簡単に書いておきます。
- 技育CAMP 最優秀賞2回 努力賞2回
- 技育展   優秀賞1回 登壇2回
- SPAJAM予選 優秀賞
- sansan Trigger 2位
- JPHACKS 予選1位, 企業賞1つ
- JPHACKS Finalist Award
- JPHACKS 審査員特別賞, イノベーター認定, 企業賞3つ

<br>

詳しくはポートフォリオに書いてあるので良ければご覧ください。

[https://mahiro72-resume.vercel.app/](https://mahiro72-resume.vercel.app/)

それでは本編に入っていきます。


## ハッカソンのアイデアを洗練させる

これは個人的な意見ですが、
ハッカソンは「アイデア」、「技術」、「プレゼン」の3つが重要だと思っています。

比率は、アイデア(4) : 技術(3) : プレゼン(2) : その他(1)くらいだと思ってます。
(何度も言いますが個人的な意見です。)

技術はハッカソンに出るたびに向上すると思いますし、
プレゼンは参加してるとある程度テンプレートが出来てくると思います。

ですが、良いアイデアを出すのはなかなか難しいです。
僕自身、前のハッカソンのアイデアのほうがよかったな、と思うことはよくあります。

ということで、本記事では「**ハッカソンのアイデアを洗練させるための方法**」を書いていこうと思います。

<br/><br/>

以降では、アイデアを洗練させるための方法について実例を交えつつ説明します。


### ターゲットユーザーを絞る

#### ❌ 汎用的なサービス
ターゲットユーザーを絞らないと、汎用的なサービスになりがちです。
汎用的なサービスが悪いわけではないですが、あまり**印象に残らない可能性が高い**です。


#### ✅ ターゲットユーザーを具体的に設定する
**ユーザーの属性**や**どんな状況**の時に使ってもらうのかまで具体的に考えましょう。

また、ターゲットユーザーはできるだけ身近な人が良いです。(もちろん自分でも)
上記のような属性や状況を想定しやすいので。

また、このターゲットユーザーならこんな機能が欲しくなるだろうという**仮説**で進めず、
**実際にインタビューなどを行って**ユーザーが求めているものを**具体的**に調査しましょう。

ユーザーの属性や状況、また求めているものを具体的に考えることで、
**ユーザーの抱える課題のソリューション**を考えやすくなります。



#### 💡 実例
SPAJAMで優秀賞を受賞した「**タイマーアプリ**」です。

このサービスでは、ターゲットユーザーを**今すぐにキンキンの冷えた飲み物を飲みたい人**に絞りました。

現状の課題はこんな感じです。

```
(仕事終わり)
「.....!!!」
「仕事終わりの楽しみのビールを冷やし忘れている!?」
「今から冷蔵庫に入れると冷やすのに時間がかかるし、ビールに氷は入れたくない…」
「じゃあ急いで冷やすために冷凍庫にいれるか。でもいつキンキンに冷えたかわかりづらいな」
```

上記の状況のように、冷凍庫に飲み物を入れたとき**いつちょうどよく冷えるかわかりづらい**ですよね。

この課題を解決するために、
**飲み物がキンキンに冷える時間を測定してくれるタイマーアプリ**を作りました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/756651/65b510be-d81d-d23b-6e0e-670067a20baa.png" width="60%" />

もう少し具体的に説明します。

このサービスでは、フィードバック機能を実装し、
タイマー終了後にフィードバックを送信してもらうようにしました。

これにより、**最新のユーザーのフィードバックから**冷凍する時間を**更新**していきます。

最終的には以下のように全ユーザーが納得の**キンキンに冷えた状態にするための冷凍時間**がわかります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/756651/bdf5b514-6227-c76a-189f-13aa970f7d73.png" width="60%" />

このように**ターゲットユーザーの属性**や**状況**を**具体的**に決めたことで、
ユーザーの抱える課題のソリューションを考えやすくなります。

こちらのサービスについて詳しく知りたい方は以下の記事をご覧ください。
[SPAJAMハッカソン2022感想戦🔥](https://note.com/sino_72/n/nf2b42428d098)

<br/>

### 既存のサービスに新しい要素を追加する

#### ❌ 既存のサービスのまま

作ったサービスがすでにあった場合、車輪の再発明になります。
しかも審査員がそのサービスを知っていたら、評価はいまいちになってしまうかもしれません。

作る前に競合となるサービスを軽く調べておきましょう。


#### ✅ そのサービスにはない新しい要素を追加

既存のサービスでも**新しい要素**を追加することでイメージが変わります。

例えば、「手つなぎ鬼ごっこ」をご存知でしょうか。
鬼にタッチされたら鬼と手をつなぎ、どんどん鬼を増やしていくゲームです。

ただの鬼ごっこに**捕まったら手をつないで追いかけるというルール**を追加しただけで、
もともとの鬼ごっことイメージがだいぶ変わりましたよね。

このように、既存のサービスだとしても**何かを掛け算する**ことで、
面白いサービスが生まれる可能性があります。


#### 💡 実例

技育キャンプで努力賞を受賞した「**お菓子のおみくじアプリ**」です。
値段を設定しておみくじボタンを押すと、設定した金額以内で買えるお菓子が出てきます。

ですが似たようなサービスが実はありました。

以下の吉野家1000円ガチャです。
[https://hiraocafe.com/yoshinoya1000.html](https://hiraocafe.com/yoshinoya1000.html)


そこでもともとの「お菓子のおみくじ」に「**感情**」を掛け算したサービスを作りました。

感情を選択できるようにすることで、完全ランダム性ではなく、
**その時の気分にあったお菓子**が出やすくなります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/756651/3b036bc7-2f3d-ce87-b1f2-fa4cda9f49e8.png" width="60%" />

このように既存のサービスに**何かを掛け算する**ことで、サービスの印象が変わりますね。

こちらのサービスについて詳しく知りたい方は以下の記事をご覧ください。
[技育CAMP vol.4ハッカソン感想戦](https://note.com/sino_72/n/n7102ad343284)

<br/>


### サービスのコアとなる部分を考える

#### ❌ 機能の数で勝負する
サービスのコアを意識せず、いろいろな機能を追加するのは勿体ないです。

時間が余ってるなら追加機能の開発もありですが、
まずはサービスのコアをより洗練させましょう。


#### ✅ 沢山の機能より、サービスのコアとなる部分で勝負する

サービスのコアとなる部分を考えましょう。

突然ですが、自分の作ったサービスの魅力を一言で伝えられますか？
これができてるなら問題ないと思います。

もし出来なかったら、**自分のサービスの一番の魅力**を考えましょう。
それが**サービスのコアとなる部分**です。

サービスのコアを確定させると、
機能もコアにそったものを考えるだけでいいのでスムーズに開発が進みます。

また、サービスのコアからそれた余計な機能を開発することもなくなります。


#### 💡 実例

技育展で優秀賞を受賞した「交流会サポートアプリ」です。

このサービスを一言で紹介すると「**エンジニアの交流会を最初から最後までサポートする**」サービスです。

このようにこのサービスのコアが決まると、機能も考えやすくなります。

例えば以下の図のように、
交流会の流れを実際に書いて、**開始から終了までの間にどのような課題**が考えられるか、
また**どんな機能でその課題を解決できるか**を**具体的**に考えられますね。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/756651/f8715bc1-600c-7ded-bad2-ec788927d0e6.png" width="60%" />

こちらのサービスについて詳しく知りたい方は以下の記事をご覧ください。
[技育展2022 MeetHack 感想戦🔥](https://note.com/sino_72/n/n80bff7feda49)

<br/>


### ユースケースを考える

ユースケースは簡単に説明すると、サービスの利用例です。
例えば、TODOリストだったら以下の機能などが考えられますね。
- タスクを登録する
- タスクを完了する

このようにサービスに必要な機能を考えたり、その流れを図にします。

#### ❌ とりあえず実装を進める
とりあえず実装を進めてしまうと、
その**サービスのコアの部分が見えなくなったり、機能ごとの優先度がわからなくなったりします**。

ハッカソン中は時間が少ないかもしれませんが、簡単でもいいのでユースケース図を書きましょう。

#### ✅ ユースケースを考える

ユースケース図を書いて、サービスのコアとなる部分を
**ユーザーにどのように提供するか**を可視化しましょう。

例えば、そのサービスに**どんな登場人物**がいるのか、
また**どんな機能**を**どのような流れ**で使うかなどが可視化されるため、**チーム全体で共通認識**ができます。

さらに、機能の中でも優先順位を考えられることや
ドメイン設計の際にスムーズに設計できるなどのメリットがあります。

#### 💡 実例
JPHACKSで受賞した「**オンライン飲み会サービス**」です。

このユースケースは少し簡単に書きすぎているかもしれないですが、
これくらいでもいいので書いておくと良いと思います。

ユースケース図を書くことでこのサービスのコアが見えやすくなります。
また、その**コアをどのような形でプロダクトに落とし込むか**も考えやすいですね。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/756651/6641ebc4-5ee8-d8d5-e37c-68f1cc5c3f8f.png" width="60%" />

ちなみに上記の図はMiroというツールを使って書いています。
無料で、しかもチームの人と共有しながら使えるのでおすすめです。

気になった方は以下のリンクから確認してみてください。
[https://miro.com/ja/](https://miro.com/ja/)


<br/><br/>

この辺からは少し例外的な話なので、
どうしてもアイデアを洗練させるのに困ったときは活用してみてください。

<br/>

### その技術にしかできないような機能を取り入れる

#### ✅ その技術特有の面白味をプロダクトに取り込む

ハッカソンに参加しているほとんどの人はエンジニアです。
なので、**その技術特有の面白味**があるとわくわくしちゃいます(多分)。

したがって、**サービスのコアとなる部分をその技術特有の面白味で提供**できると印象に残りやすいです。

ただし、好きな技術にこだわりすぎてサービスのコアから離れないように気を付けましょう。

#### 💡 実例
技育キャンプで作成した「**エンジニアの勉強時間を可視化するサービス**」です。

このサービスの一部で**Processing**というプログラミング言語を利用しました。
Processingはアート制作やビジュアルデザインなどで使われる言語です。

この言語を勉強時間の可視化をする際に用いました。

具体的にはProcessingで木を描写し、勉強時間で**木の大きさ**、
また勉強したプログラミング言語の種類によって**葉の色**が変わるようにしています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/756651/52b85aeb-79cf-04b2-4c3c-17f71c4e3890.png" width="60%" />


このように、コアとなる部分である「エンジニアの勉強時間を可視化する」からそれずに
その技術特有の面白味を導入できたので一石二鳥という感じですね。

<br/>

### サービスの印象が変わるアクセントを少し加える

#### ✅ アクセントとなるアイデアを少し取り入れる

アクセントとなるようなアイデアを少し取り入れると、うまくはまる可能性があります。
しかし、アクセントを取り入れるとサービスのコアからそれる可能性があるので、**積極的にはお勧めしません**。

#### 💡 実例
2回目の紹介になりますが技育キャンプで努力賞を受賞した「**お菓子のおみくじアプリ**」です。

このサービスは「お菓子のおみくじ」に「感情」を掛け算したサービスなのですが、
実は**少しアクセントとなる機能**を加えていました。

それは、**時間帯によってサイトの仕様が変わる機能**です。

以下のように深夜0時から2時はラーメンが食べたくなる時間ということで、
サイトがラーメン仕様になります。


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/756651/8337c349-fbc2-b03f-7b65-216d5449cc5e.png" width="60%" />

上記のアイデアの反応はかなり良く、
このアクセントのおかげで印象に残ったかなと思います。

<br/><br/>

以上です。


最後に、記事の内容とずれてしまいますが、
ハッカソンに関して日ごろからやっていて良かったことをおまけで書いておきます。

### (おまけ) 課題をみつけたらすぐにメモする

**課題を見つけたら積極的にメモを取るようにしましょう**。

自分で感じた課題でも、ほかの人が愚痴ってた内容でも何でもいいです。
自分やその人が、**どんな状況**で**何に困ったのか**をメモしましょう。

ハッカソンではある程度お題が絞られている場合もありますが、抽象的なお題のハッカソンも多いです。
(例えば、世の中を楽しくするサービスなど)

抽象的なお題の場合、意外と使えることが多いので課題をメモしておいて損はないと思います。

また時間に余裕があれば、**その課題をどのような形でプロダクトに落とし込むか**を考えてみましょう。
普段から課題を考えておく癖をつけておくと、**自分の周りにあるアイデアたちに気づきやすくなります**。


<br/><br/>

最後まで読んでいただきありがとうございました。

もし、記事について何かミスや質問などありましたら
お手数ですが [@mahiro0x00](https://twitter.com/mahiro0x00)までご連絡いただければ幸いです。