Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

1. AizuHackについて

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

- 前述の評価点から以下の賞を決めた ● 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について

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

- 「日々の生活をより豊かなものに」というコンセプ ト - 選択した日のイベントを表示、近くのお店を表 示、イベントのリマインド通知の機能がある - カレンダーはFlexMessage、地図はLIFFで作ら れており、Messaging APIをちゃんと活用してい る - Nuxt.jsやAWSなど、勉強会では教えていない 高度な技術も使えている 1作品目 秘書BOT 2. LINE賞受賞作品について

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

- 基本勉強会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勉強会について

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

5. さいごに

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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