Upgrade to Pro — share decks privately, control downloads, hide ads and more …

会津大学生70人を集めて勉強会付きハッカソンを実施した話

Yuto Takamune
October 02, 2021
580

 会津大学生70人を集めて勉強会付きハッカソンを実施した話

LINE DC REVUP 2021で発表した資料です。
https://linedevelopercommunity.connpass.com/event/224003/

Yuto Takamune

October 02, 2021
Tweet

More Decks by Yuto Takamune

Transcript

  1. 会津大生70人を集めて勉強会付
    きハッカソンを開催した話
    LINE Developer Community REVUP 2021
    会津大学学部一年 しんぶんぶん(高棟 雄斗)

    View Slide

  2. #linedc_revup_C
    ツイートお願いします!!

    View Slide

  3. - 会津大学学部一年生
    - 高校一年生の時からLINE Developer Communityで活動
    - LINE API実践ガイド LINEログイン章著者
    - 普段はNuxt.jsやNode.jsでWeb開発をしている
    - 最近のマイブームはアイデンティティ管理/認証系
    - WebAuthnとかDIDとか
    自己紹介
    @shinbunbun_ https:/
    /shinbunbun.info

    View Slide

  4. 1. 今回実施したハッカソン( AizuHack)について
    2. LINE賞受賞作品について
    3. LINEBot勉強会についての概要
    4. プログラミング未経験者に向けた勉強会資料を作る上で気をつけたこと
    5. 新しく立ち上げた会津大生のプロダクト開発コミュニティ( ASCs)について
    アジェンダ

    View Slide

  5. 1. AizuHackについて

    View Slide

  6. - 今回僕が会津大学で実施した勉強会付きハッカソンのこと
    - 参加者70名(ほとんどが1 , 2年生でプログラミング初心者 /未経験者)
    - スタッフ14名
    - サークルの先輩などを中心に声をかけてお手伝いしてもらった
    - 勉強会1ヶ月(週1×4回)、ハッカソン1ヶ月の2ヶ月間で実施した
    - LINE Developer Community協賛でLINE賞を提供して頂いた
    AizuHackの概要
    1.AizuHackについて

    View Slide

  7. - LINEBotコース、IoTコース、Webコース、デザインコースの4
    コースにわかれて実施
    - LINEBot勉強会は僕が講師を担当し、他のコースは先輩にお
    願いした
    - LINEBot勉強会は他コース参加者も受講可にしたため、実際
    にLINEBot勉強会を受講したのは20人弱ほど
    - 勉強会は全て対面で実施した
    勉強会について
    1.AizuHackについて
    コース 人数
    LINEBot 12
    IoT 14
    Web 30
    デザイン 8

    View Slide

  8. - 勉強会終了後、18チームにわけた
    - 下記のようなチーム構成をこちらで用意し、希望の構成を選んでもらう形にした
    - 1チーム1人、先輩をアシスタントをつけてサポートを行った
    ハッカソンのチーム編成について
    1.AizuHackについて

    View Slide

  9. - 講師・アシスタント陣に以下の項目で評価をつけてもらった
    - 共通項目
    - 発表資料は見やすかったか?( 5点満点)
    - プロダクトの魅力は発表で伝わったか?( 5点満点)
    - 以上2つは、発表時間超過 1分あたり素点の 10%減点(小数点以下切り捨て)
    - ワクワクする作品か?( 10点満点)
    - アイデアの創造性( 10点満点)
    - 作品は最低限動作するか?( 10点満点)
    - 技術的なレベルは高いか?( 10点満点)
    - 個別項目(該当作品のみ、各10点満点)
    - IoT技術の活用度・完成度
    - Web技術の活用度・完成度
    - デザインの完成度
    ハッカソンの評価方法について
    1.AizuHackについて

    View Slide

  10. - 前述の評価点から以下の賞を決めた
    ● IoT賞: IoT技術の活用度・完成度がもっとも高かった作品に贈られる賞(
    1〜3位まで表彰)
    ● Web賞: Web技術の活用度・完成度がもっとも高かった作品に贈られる賞(
    1〜3位まで表彰)
    ● デザイン賞: デザインの完成度がもっとも高かった作品に贈られる賞(
    1〜3位まで表彰)
    ● 奨励賞: レベル1, 2のチームでもっとも総合点が高いチームに贈られる賞(
    1位のみ表彰)
    ● オーディエンス賞: オーディエンス投票で最多票だった作品に贈られる賞です(
    1位のみ表彰)
    ● Geek賞: 「技術的なレベルは高いか?」の評点がもっとも高いチームに贈られる賞(
    1位のみ表彰)
    ● LINE賞: LINE Developers Community様の協賛賞。LINE API Expertによって選出される(3チーム表彰)
    ● 準々グランプリ: 共通評価項目の総合点が
    3番目に高い作品へ贈られる賞
    ● 準グランプリ: 共通評価項目の総合点が
    2番目に高い作品へ贈られる賞
    ● グランプリ: 共通評価項目の総合点がもっとも高い作品へ贈られる賞
    各賞について
    1.AizuHackについて

    View Slide

  11. - 各賞1位〜3位:Aizu Geek Dojoのレーザーカッターで作ったストラップ
    - 各賞1位受賞作品:Aizu Geek Dojoのレーザーカッターで作った盾
    - LINE賞受賞作品:LINE Friendsグッズ
    賞品について
    1.AizuHackについて

    View Slide

  12. 2. LINE賞受賞作品について

    View Slide

  13. - 「日々の生活をより豊かなものに」というコンセプ

    - 選択した日のイベントを表示、近くのお店を表
    示、イベントのリマインド通知の機能がある
    - カレンダーはFlexMessage、地図はLIFFで作ら
    れており、Messaging APIをちゃんと活用してい

    - Nuxt.jsやAWSなど、勉強会では教えていない
    高度な技術も使えている
    1作品目 秘書BOT
    2. LINE賞受賞作品について

    View Slide

  14. - Todoと推定所用時間を入力すると自動で予定
    を組んでくれるLINEBot
    - リッチメニューを活用して機能がわかりやすく
    なっている
    - Todoリストの編集画面やスケジュール画面は
    LIFFで作られている
    - ESP32を使用してIoTポモドーロタイマーも制作
    した
    - 全体的に完成度が高い
    2作品目 TODOスケジューリングBOT
    2. LINE賞受賞作品について

    View Slide

  15. - 学校のシステムがバラバラで使いにくいため、
    それを1つのBotに集約しようという作品
    - リッチメニュー、FlexMessageなどの
    Messaging APIの技術をしっかり使っていること
    に加えて、デザインの完成度がとても高い
    - 外部APIとの通信やDBも活用しており、技術的
    なレベルも高い
    3作品目 Assignment Manager
    2. LINE賞受賞作品について

    View Slide

  16. - 全体的にレベルの高い作品が多かった
    - Messaging APIの機能をちゃんと活用できており、とてもプログラミング初心者 /未経験者の作品とは思
    えなかった
    - ここまでの作品が作れた理由
    - もちろん参加者の努力が一番の理由だが、勉強会のやり方が良かったことにもその一端があるの
    では...?
    主催者としての感想
    2. LINE賞受賞作品について

    View Slide

  17. 3. LINEBot勉強会についての概要

    View Slide

  18. - 基本勉強会3回+エクストラ勉強会1回の構成
    - 各勉強会の内容
    - 第1回:Webコースと合同でJavaScript勉強会
    - 第2回:サンプルコードを使って Botを動かしてみる &
    Messaging APIで受け取れるイベントや送れるメッセージ
    についての解説
    - 第3回:LINE Bot Designer & FlexMessage & リッチメ
    ニュー & PUSHメッセージについて
    - Ex回:外部APIとの通信(axios)、SheetDBの使い方、LIFF
    の作り方、ESLintの使い方
    - 勉強会資料はQiitaで公開中
    LINEBot勉強会の概要
    3. LINEBot勉強会について

    View Slide

  19. 4. 勉強会資料を作る上で気をつけたこと

    View Slide

  20. - 今回の勉強会の目的は「 LINEBotに触れてみること」ではなく「自分で LINEBotを作れるようにすること」
    - 色々なハンズオンや記事があるが、その多くが「触ってみる」というところで止まっている
    - 今回の資料は、「この資料があれば勉強会終了後に1人でも新しい
    LINEBotが作れるようになる」ということを
    念頭において作成した
    - 改造しやすいサンプルコード
    - 今回の勉強会でBotのコードを完全に理解する(1から自分でBotのコードが書けるようになる)必要はなく、「サンプル
    コードのどこをどういじればどのように動くか」が理解できれば、サンプルコードをベースにして新しいBotが作れる
    - 「なんで動くかはわからないけど、とりあえずここをいじればこう動くらしい」ということがわかれば良い
    応用が利く資料にする
    4. 勉強会資料を作る上で気をつけたこと

    View Slide

  21. 具体的にどんな工夫をしたの?

    View Slide

  22. - それぞれのイベントやメッセージオブジェクトについての解説を一通り書いた
    (資料: AizuHack LINEBot勉強会 Vol.1)
    - 全部知っておきたいけどリファレンスは難しくて読みにくい
    - →リファレンスを噛み砕く形で解説を書いた
    - メッセージオブジェクトについては各々の画像を掲載した
    イベントやメッセージの解説を一通り書く
    4. 勉強会資料を作る上で気をつけたこと

    View Slide

  23. - 前述の通り、「サンプルコードのどこをどういじればど
    のように動くか」を理解してもらう必要がある
    - 演習課題を用意して、実際にソースコードをいじるこ
    とで理解を深めてもらった
    積極的に手を動かしてもらう
    4. 勉強会資料を作る上で気をつけたこと

    View Slide

  24. - Messaging APIで一般的に使われるほぼ全ての機能をサンプルで実装した
    - 各EventやMessage、プロフィール情報の取得など
    サンプルコードを工夫する①
    4. 勉強会資料を作る上で気をつけたこと

    View Slide

  25. - 機能ごとに関数/ファイルを細かく分割して、どこに何が書いてあるのか
    わかりやすくした
    - 「ここをいじればこんなことができる」
    ということが直感的にわかる構造
    サンプルコードを工夫する②
    4. 勉強会資料を作る上で気をつけたこと
    イベントごとにファイルを分割

    イベントの中でも機能ごとに関数を分割

    View Slide

  26. - コメントを大量に書いた
    - これでもかというくらい大量のコメントを書いて、その行がなんの
    処理をしているのか分かりやすくした
    - JSの構文をきちんと理解していなくても、コメントが書いてあれ
    ばその行で何をしているかがわかる
    - 「このコードはよくわからないけど、ここではこんな処理をしている
    んだな」というのが理解してもらえるように
    サンプルコードを工夫する③
    4. 勉強会資料を作る上で気をつけたこと

    View Slide

  27. - 拡張性を重視する以上、ローカルで
    サーバを立ててngrokを使うというあり
    がちな手法は不採用
    - Google Apps Scriptは拡張性が低い
    - AWS Lambdaなどは若干難易度が高

    - ではどうするか→Vercelが最適解で
    は?
    ホスティング先の選定
    4. 勉強会資料を作る上で気をつけたこと
    - 永続的に使えるという面で応用がきく
    - AWSのように設定が複雑でない
    - サンプルコードに設定ファイルを用意してお
    けば、コマンド1つでデプロイできる
    - サーバのログも確認しやすい
    - Expressを使えばLIFFで使うフロントエンドも
    一緒にデプロイできる
    - ただ、VercelでExpressを使うのはアンチパ
    ターンなのでもうちょっと良い方法を考えたい
    感はある
    Vercelを使うメリット

    View Slide

  28. 5. さいごに

    View Slide

  29. - 会津大で新しく立ち上げたプロダクト開発コミュニティのこと
    - 今回実施したハッカソンも、このコミュニティを立ち上げる前準
    備として行った
    - 活動内容は主にチーム開発や開発に関する勉強会
    - ASCsは学校と独立した組織のため、活動資金などを自分たち
    で調達する必要があります
    - 勉強会やハッカソンなどのイベントに協賛してくださる企業の方
    がいらっしゃいましたら是非ご連絡ください 🙏
    ASCsについて
    5. さいごに

    View Slide

  30. - イベントレポートを公開しました
    - 今回のセッションよりも多くの情報が書かれているので、興味ある方はぜひ!
    AizuHackのイベントレポートについて
    5. さいごに
    https://blog.ascs.dev

    View Slide

  31. ご清聴ありがとうございました

    View Slide