日本ディープラーニング協会主催のCDLEハッカソン2021にメンター参加したので振り返り

# CDLEハッカソン2021にメンターとして参加しました
　 JDLAが主催の **[CDLEハッカソン2021](https://www.jdla.org/cdle-hackathon/)** に **「team HEROZ」** のメンターとして参加したので、やったことや感想などをメンター目線でつらつらとメモです。今後こういうイベントに参加したいなあという人の参考になればと。
　簡潔に言うと、メンターなので困ったらアドバイスしようという気分で臨んだけど、いいメンバーが集まってそれぞれの得意分野もバランスよかったのであまりアドバイスすることはなかった。いろんな知見がありためになったという感じです。

## 日程
- 10/16:開会式
- 11/27:提出締切
- 12/4:閉会式

### ～10月前半：メンバー選定
---
- 9月後半　エントリー者情報（スプレッドシート）共有  
- 10月前半　選考結果提出（メンター正会員⇒JDLA事務局）  
  
 スプレッドシートで参加者の情報が共有される。各社はG会員3人、E会員2人の候補を5人選ぶ。各社の希望集めてドラフト形式で選ばれる。
　項目は、**年齢・職業・住所・開閉会式参加可否・ハッカソン経験・技術領域・言語経験・ツール・使える時間・希望役割・自己PR。** 1か月力を入れてやってくれる人が必要かつ、各自のスキルのバランスも考える必要があるので非常に重要。多くの申込があるが**自己PR**など丁寧に書いてくれている人などを見ていくと結構絞られる。書類選考っぽい。難しい。

個人的な選び方の方針として
- 年齢・職業：学生と社会人がバランスよくいると良さそう。学生の方が時間はある。社会人で実務経験あると引っ張ってくれる。学生は振れ幅が大きいので少し賭けになる。
- 住所・開閉会式参加可否：リモートだと初めの話し合いが少し進みにくい。
- スキル等：目安程度：azureで学習とかgitまとめたり、フロントエンド作ったり、パワポ作成もあるのでばらけていると良さそう。
- 使える時間：長い方が良いが、熱意によって変わるので参考程度
- 自己PR：これで見分けるしかないので短いと厳しい。長いといいわけではないけど何をしてくれそうかを考えながら選ぶ。コンペ経験とかサイトとかあるとスキルの実績が読めるので選びやすい。

　今回は全員コードをかけそうな人を選んだ。ただ、硬い会社の人も選んでおくことで資料作成とかを任せたいという想定。
 大企業で働いている人は社内調整のために資料作り慣れてそうという前職の経験ともとにした偏見がある。
 dockerにそこそこ慣れている人、ちょうど良いフロントエンドを作れる人がいたのは運が良かった。あとコンペによく参加している人が話を出す人だったのも良い。基本的に話してくれる人・アイディアを出してくれる人が重要で、ここはシートだけの情報で選ぶので運の要素が大きい。
 他の会社では全員社会人で固めたり、逆に全員20代の若さで攻めているチームもあった。

### 10月16日：キックオフ・開会式
---
会社説明を2、3分で行うので資料が必要。参加者はきっと覚えてはないだろうけど初めの印象は大事なのでそこそこ重要。
この日はデータの公開と数時間の話し合いの時間が与えられる。**打ち合わせ日程などを決めておくのは必須。** 役割分担はまだ細かくはしなかったが、asure管理者は先に決めておく必要があり2人選定した。話し合いでは軽くデータを見ながらアイディア出しなどがメインで、どういうことができそうかを概念レベルで話し合う。

使用ツール：ホワイトボード、付箋、ブレインストーミング

### 10月20、29：テーマ選定
---
基本週一回、平日7時にweb打ち合わせ。
テーマ決めが難しい。評価は[2019年](https://www.jdla.org/cdle-hackathon/ch2019/)と同じで**①産業・社会的なインパクト②先進・独自性③技術力**なのでテーマの要素が大きく、非常に重要。
slackで世の中でどういう取り組みがあるか各自調べたのを共有しあう。マインドマップを使用してイメージを広げて深堀するテーマを決めて、各自深堀したテーマに関してスプレッドシートにもまとめてテーマ選定。
心配ならばこの間に簡単にでもgithub、azureも触っておく使おうとなってから問題が起きないので良いかも。今回は特に問題はなかったがメンバー次第か。

打ち合わせ
- 10/20：データを各自EDA、マインドマップを使用してのアイディア出し。各自深堀テーマ決め
    ホント難しかった、いろいろできそうだけどやっぱ情報として足りないところがある。悩みながら使えそうな案を出していった。こういう提案を作る話し合いに慣れてる人がいたらありがたいかもしれない。
- 10/29：各自深ぼったテーマを話し合い、テーマ選定。完成系のイメージも決めた。テーマに合わせて各自の役割を決定
    良さそうなのが決まった。モデルを複数用意する必要があったので、コードを皆書けて良かったなと。

使用ツール：zoom、pandas-profile、jupyternotebook、mindmeister、スプレッドシート

### 11月5、11、19：実装、報告書作成
---
テーマが決まったので実装開始、始まると一気に進むように見える。コンペ慣れてる意図は初動速いなあと感心。UIのイメージができ始め報告書を作り始めると締め切りが意識される。間に合うかがどきどきだった。まあメンターとしては眺めているだけなのですが。

- 11/4：各自の分析状況の確認、UIイメージの確認。
    休日があって曜日を勘違いして参加し忘れたのでどういう話し合いだったかは不明。slackを見る限り、各自タスクに合わせて順調に分析していた。UIのイメージがあると盛り上がる。
- 11/11：各自の進捗確認、モデルについての前処理・入出力話し合い、報告書の概要作成
    焦りの様子が見られるけど終わりそうな雰囲気も見られる。モデルが複数あるので、データをどういう形式で渡すかを決める
    報告書もデザインと目次が決まった。オシャレ
    構成図を書くと各自データの流れが見えてわかりやすいなと
- 11/19：モデルが固まってくる。入出力再確認。環境合わせ
    提出に向けてそれぞれの環境を話し合う。別のdockerにするか共通でいくかなど。審査員が立ち上げて確認してくれるとのことだったのでreadmeをどう書くかも決めた。各自のブランチの内容がmainにどんどんマージされていく。

使用ツール：azure、github、tensorflow、sklearn、xgboost、streamlit

### 11月23、25、26、27：提出コード環境合わせ、報告書完成
---
最後に向けて仕上げ。打ち合わせの回数も増えてくる。jdlaの事務局にお願いして集まるスペースを用意してもらって集まっていた。
報告書は作ったものの説明、データの加工の工夫の説明など伝わるような資料になっているかを確認しあう。

- 11/23 この日は集まっての開発、私は行ってないので様子は不明だけどきっと楽しそう。
    残るタスクはコードの動作確認、資料もわかりやすくするための追加などわずか。
- 11/25 集まれるメンバーのみで細部確認
- 11/26 この日は集まっての開発、こちらも私は行ってないがzoomで参加
- 11/27　最終提出、プロジェクトを通して見てるだけでしたが良いものでした。
- 12/4　発表用資料を報告書から抜粋、デモ画面など見やすいのを切り出し。

使用ツール：docker-compose、readme、パワポ、jdla会議室、google drive

## 閉会式

評価基準は、業界への波及性、分析の工夫、実装の実現性

発表資料は結構ぎりぎりまで修正可能。
ハッカソンとして発表するのでどのように見せるのか。先にデモをすると制作物のイメージがしやすい。
ユーザーを決めて一般の人に使ってもらうものならアプリ化は必要。企業に使うものならレポート形式でも良さそう。

出力：推論結果をパワポに貼る、ウェブアプリ化、Line bot作成
コンペだけじゃなくて何かものを作成した経験があると出力はやりやすい。

発表順は難しい、あとの方が印象が残る可能性もあるが、元データが似てるのでかぶる可能性もある。
元データが多めなら先、独自のデータを集めたなら後が良いのかも。

発表回を通して
- 背景：どういう課題についてどういう解決策を提案するか  
    どれくらい深ぼれるか、現実の問題に向き合っているか。
    実際のユーザーにヒアリング、実地調査・試行しているチームもあり感心した
    今回はテーマ敵に、社会課題解決の要素も考えておくと評価は高かった印象
- アプリ解説：どういう特徴のあるアプリか、何を出力するか  
    見やすさ、デモがあればおしゃれな感じを出せる
    発表はパワポなのでUI画面だけで最悪アプリはなくても何とかなるけどあった方が良いはず。実装点もあるし
- 手法解説：入力データ、前処理、モデル、出力  
    ハッカソンの中ではそこまでの精度は求められない
    分析の仕方は説明があった方が個人的には好き、評価されるかは不明
    データを自分たちで用意することも大事
- 今後の展開：あると分析した感じがあって良い、追加データ、今後の成長案

- 質問：他に対してどのような付加価値があるか。他にどのようなデータが使えそうか。これからどのように発展するか、
    利用者にどのようなインセンティブがあるか、データをどう管理するか
    普及のために必要なものは、レコメンドの成果の評価はどうするか、
    ちなみに質問は「～って議論はありましたか」という聞き方が多い
    発展に関しては質問が予測しにくい。提案のコンセプトの芯をどれだけ話し合っているかが大事かな
    芯を話し合っていれば、あとは喋れる人なら質問はうまくふわっと回答できると思う

- 評価：街の価値を高めていく、社会課題の解決とビジネスの両方について考えられている。
    シンプルでより追加できそう。複数モデルについてうまくくみあわせている。
    社会課題から実際のユーザーから掘り下げられている。

## 感想

距離感が難しい。今回は最低限上手く提出まで進めるというのを目標とした。
ちょっと目標低いかもしれないけど、各自の熱意もわからないしハッカソンのレベル感もわからなかったので。
結果としてはメンバーがほんと良すぎた。こうやった方が良いだろうなあということをやってくれて、眺めてるだけでうまくいっていた。

メンターはしっかりかかわったチームと放任主義だったりと様々。でも大体困ったら助けるというくらいの立ち位置ではいたよう。
データ分析あたりで詰まることはないと思われるので、助けるところはテーマ選定、モデルの工夫、環境合わせ、アプリ化あたりかなと。

自チームと勝ったチームとの違いとしては、データからというアプローチにこだわりすぎたかなと。**テーマにちゃんと向き合って、もらったデータだけだけじゃなくないなら自分で用意するアプローチ**をとったチームが勝っていた。

一つだけ、審査項目に実装があったのだけど講評であまり実装について触れられないのは少し気になった。
物事を動かすには提案力が大事だと思うけど、やはりエンジニアとしては各チームの実装力の評価もしてあげてほしかったなあと。

素晴らしいイベントでした。運営者も参加者も力を割いていいイベントにしようと努力しているのがすごく伝わりました。
1か月半でみんなこんないいものを作り上げれるんですね。メンターとかやってる場合じゃないのではと危機感を覚えました。エンジニアとしていいものを作れるようでありたい。

## 使ったツール

この辺りを使用した。粒度とかめちゃくちゃだけどこういうのがあるとというか使うよという目安になればと。
全員じゃなくても使える人が混ざっていると良い

- 話し合い・テーマ選定：slack、zoom、ホワイトボード、mind meister、スプレッドシート
- コード環境：github、docker-compose、azure
- 分析スキル：pandas、matplotlib、tensorflow、sklearn、xgboost
- フロントエンド：adalo、streamlit、linebot

でも懇親会などで話を聞いてたらフロントエンドのツールは初めて使ったという話だった。ハッカソンの中で必要になったので調べながら実装したと。すごい。