この記事はN高等学校アドベントカレンダー2018の初日の記事です。
N高等学校の職員で、ドワンゴが運営するN予備校のプログラミング講師のsifueです。N高等学校のプログラミング教育の実務責任者をしています。
2018年のN高プログラミング教育について
N高等学校についてや、N高プログラミング教育に関しては、過去2年間の記事の
で説明してしまっているので、今回は簡単に最近の情報のアップデートだけ紹介します。
2016年から始まったN高等学校ですが、3年目となった現在では生徒数は7000名を超えました。現在も勢いはそのままに生徒数は増え続けています。またN予備校でプログラミングを学んでいる高校生は1800名を超え、現在は8キャンパスの通学拠点があり、800名近い生徒が通学して学んでいます。
通学拠点では週に2回のプログラミング学習時間があるほか、プログラミングだけを専念して学び、CoderDojoのようにコーチと一緒にプロジェクト学習的に作りたいものを作りながら学ぶプログラミングクラスというものも運営しています。
プログラミングクラスは1クラス定員30名なのですが、来年度は代々木2クラス、御茶ノ水、心斎橋、名古屋の5クラスに拡張予定で、各通学コースの各拠点では、現在は入学試験真っ最中です。
なお、より詳しいプログラミング教育の状況については最近「教育従事プログラマーというキャリアについて」というドワンゴの技術ブログに書かせてもらいましたのでそちらを参照ください。また生徒たちのポートフォリオやメディア露出などはこちらにもまとめてあります。
チャンネル参加人数変動を毎朝報告するボットについて
ここからが本編ですが、今回はN高Slack用に毎朝、各チャンネルの人数変動を報告するボットをHubotとJavaScriptで開発したのでその紹介です。
N高等学校では学内のコミュニケーションのためにSlackというチャットツールを使っています。また、そこで運用するチャットボットに関しては、N高等学校の生徒もN高 Slackボット申請より申請することが可能です。
N高 Slack ボット可動申請のページ |
ルールとして、学内の情報を外部サイトに保存しないことや公序良俗に反しないこと、他の生徒が不快に感じないなど様々なものがありますが、そのルールをパスしたものであればプログラミング講師陣のコードレビューを経たあと、生徒たちにボットのトークンが発行される仕組みとなっています。
Hubotアプリケーションでのトークンの払い出しは行われますが、実際にはそのボットトークンでどのようなプログラミング言語でも利用可能となっています(自作言語と機械語のみのものを除く)。
生徒が実際作っているボットとしては、Twitterと連携して相互に通知しあったり、ニュースを報告したり、災害情報を通知したりというものなどがあります。自分自身も学内の「いいね👍」のリアクションをカウントして褒めてくれるボットなどを運用していたりします。
今回作ったチャンネル参加数変動を報告するボット (チャンネルマップインフォ) もそのような取り組みの一環として作られたものです。
チャンネルマップインフォの稼働の様子 |
このような動作をします。
なおこのボットが報告したパブリックチャンネルの参加者数変動情報を活用して、N高のSlackチャンネルマップという学内Webサイトの更新を、有志の生徒たちが手動で編集してくれています。
N高Slackチャンネルマップのページ |
こちらのN高Slackチャンネルマップは、N高等学校に参加した生徒が自分と趣味の合うひとなどをパブリックチャンネルの中から探すために利用されています。
そして今回のこのボットのコードはこちら
内容としては公式が出しているライブラリの
- SlackのHubotアダプター slackapi/hubot-slack
- SlackのAPIクライアント slackapi/node-slack-sdk
以上を普通に使っているボットとなります。
これらのライブラリが優秀すぎて、あとは、SlackのAPIドキュメント を見ながらできることを確認しながら実装していきました。やっていることは、
- 毎朝6時に起動
- チャンネルリストを取得
- ファイルに保存している前日のチャンネルリストとの差分を作成
- Slackの #チャンネルマップ に投稿
となっています。ボットスクリプトのコードも非常に短くて特に難しいことは何もしていません。
以上の流れを見てだいたいわかったかもしれませんが、実は副産物として毎日チャンネルの参加人数情報がファイルとして溜まっていきます。今回は年の瀬ということもあるので、それを利用してチャンネルの参加人数ランキングと増加数ランキングを作ってみました。(実は学内の人ならチャンネル一覧を参加者数でソートすると参加人数ランキングは見れますが)
なおランキング集計時のために利用したCSVへの出力スクリプトはこのようになっています。今回はあえてPromiseではなくasync/awaitで書いてみたりもしました。
では以下、N高Slackチャンネルランキングの紹介です。
チャンネル参加者数ランキング (18/11/27時点)
全体 TOP200
順位 | チャンネル名 | 参加者数 |
---|---|---|
1 | 学校からのお知らせ | 7186 |
2 | n_help | 6764 |
3 | workexp | 6023 |
4 | チャット練習用 | 6021 |
5 | zatsudan | 3949 |
6 | 部活同好会宣伝用チャンネル | 3629 |
7 | 2018年度新入生 | 3208 |
8 | 2017年新入生 | 2142 |
9 | n高文化祭2018 | 1876 |
10 | 通学_プロn質問回答用 | 342 |
11 | club_art | 200 |
12 | kagai | 198 |
13 | programming | 196 |
14 | adobe-cc | 159 |
15 | club_jinrou | 148 |
16 | club_computer | 145 |
17 | 1_お悩み相談室 | 144 |
18 | splatoon | 140 |
19 | club_music | 140 |
20 | toho_daisuki | 130 |
21 | ドラゴンクエスト10 | 129 |
22 | fgoスマホアプリ | 129 |
23 | wellness_info | 122 |
24 | club_esports | 120 |
25 | club_music_dtm | 118 |
26 | 4gamer | 107 |
27 | music-game | 101 |
28 | 2018ネット運動会 | 96 |
29 | programming-beginner | 95 |
30 | fortnite | 95 |
31 | ncre_ekaki | 93 |
32 | 文芸とライトノベル作家の会 | 93 |
33 | 1031-1032合同クラス | 92 |
34 | 写真同好会 | 90 |
35 | club_quiz | 90 |
36 | 2017年度第5回大阪スクーリング特別活動 | 87 |
37 | n_call | 86 |
38 | anime | 85 |
39 | trpg | 84 |
40 | lol | 82 |
41 | ポケモン同好会 | 79 |
42 | 2017年度第6回大阪スクーリング | 77 |
43 | pubg | 75 |
44 | cosplay | 74 |
45 | 絵描きの卵 | 74 |
46 | 夜行性_fooooo | 73 |
47 | 超会議2018 | 72 |
48 | エンジニアアルバイト | 72 |
49 | バンドリ | 71 |
50 | n-movie_creator_映像同好会 | 70 |
51 | 2_お悩み相談室 | 66 |
52 | モンスト | 65 |
53 | programming-intro | 65 |
54 | club_kakuge | 64 |
55 | kankore | 64 |
56 | 自作er | 63 |
57 | regular_1 | 63 |
58 | compass | 61 |
59 | 第6回ネット遠足 | 61 |
60 | パズドラ | 59 |
61 | minecraft_circle | 58 |
62 | minecraft | 57 |
63 | ディベート | 57 |
64 | club_shogi | 55 |
65 | rainbow_six_siege | 55 |
66 | pso2 | 54 |
67 | overwatch | 53 |
68 | 20171221仙台特別活動 | 53 |
69 | 2018年度多摩動物公園_校外学習 | 53 |
70 | shadowverse | 52 |
71 | 模型同好会 | 52 |
72 | 森 | 52 |
73 | nature_and_animals | 50 |
74 | mhw | 49 |
75 | mahjong | 47 |
76 | pokemon | 47 |
77 | nコイン取引所 | 47 |
78 | 災害情報 | 47 |
79 | schooling-in-okinawa | 46 |
80 | club_soccer | 45 |
81 | ハロウィンパーティhr | 45 |
82 | club_igo | 43 |
83 | _lovelive | 43 |
84 | カニチャンネル | 43 |
85 | 大宮キャンパス | 43 |
86 | zatsudan-mattari | 42 |
87 | unity_gamedev | 42 |
88 | 同好会一覧 | 42 |
89 | toukenranbu | 41 |
90 | 横浜キャンパス生徒雑談場所 | 41 |
91 | art_mini | 41 |
92 | maker | 40 |
93 | アズールレーン | 40 |
94 | クラロワ | 39 |
95 | 人民のための素晴らしき雑談チャンネル | 39 |
96 | fps_ | 38 |
97 | jinrou | 38 |
98 | ここにキマシタワーを建てよう | 37 |
99 | 寿司教n高校支部 | 36 |
100 | 憩いの場-fika- | 36 |
101 | blender | 36 |
102 | nvcc | 35 |
103 | e-sports | 34 |
104 | baseball | 34 |
105 | thetudan | 34 |
106 | 合同たこ焼き大会会場 | 34 |
107 | _ncre_windmusic | 33 |
108 | handmade | 33 |
109 | バイク同好会 | 33 |
110 | english_enjoy | 33 |
111 | アニメ同好会 | 33 |
112 | slack_bot_develop | 33 |
113 | 荒野行動 | 33 |
114 | wot_wows | 32 |
115 | vocaloid | 32 |
116 | table_game | 32 |
117 | デレステミリシタ | 32 |
118 | music_chorus同好会 | 32 |
119 | lovelive | 31 |
120 | 猫好きch | 31 |
121 | ネットコースの民 | 31 |
122 | girls_anime | 31 |
123 | お散歩ホームルームin日本橋 | 31 |
124 | チャンネルマップ | 31 |
125 | music | 30 |
126 | bokaro | 30 |
127 | n1gp | 30 |
128 | pokemongo | 30 |
129 | ディベート_雑談 | 30 |
130 | club_ncreative | 29 |
131 | utattemita | 29 |
132 | schooling-in-tokyo | 29 |
133 | 読書会 | 29 |
134 | myproject | 29 |
135 | typing | 28 |
136 | machikaigi2016 | 28 |
137 | 鉄道同好会 | 28 |
138 | 文芸とライトノベル雑談の会 | 28 |
139 | military | 28 |
140 | スマブラ同好会 | 28 |
141 | n-info-tech | 28 |
142 | 演劇サークル | 28 |
143 | プロn_議論 | 28 |
144 | 16裏channel | 27 |
145 | unicorn | 27 |
146 | おしお | 27 |
147 | 2018年加藤クラス雑談 | 27 |
148 | waidan | 27 |
149 | 28年度6組 | 26 |
150 | 大喜利ch | 26 |
151 | javascript | 26 |
152 | otona | 25 |
153 | dqx | 25 |
154 | project-imas | 25 |
155 | war-thunder | 25 |
156 | 闘会議2019 | 25 |
157 | nコインジャンケン会場 | 25 |
158 | vtuber | 25 |
159 | 永続17_32_saito | 25 |
160 | unity_game-making | 25 |
161 | 美容研究会 | 25 |
162 | ch宣伝用ch | 25 |
163 | n高意見交換 | 25 |
164 | 2018沖縄研修旅行雑談 | 25 |
165 | n幼稚園 | 25 |
166 | vantan | 24 |
167 | カービィ | 24 |
168 | game_dev | 24 |
169 | 9月10日_中室さん授業 | 24 |
170 | n_girl | 23 |
171 | tv_jikkyo | 23 |
172 | line | 23 |
173 | 大学受験 | 23 |
174 | 生き物チャンネル | 23 |
175 | nvtc | 23 |
176 | nagashima_n_center | 22 |
177 | tokaigi2017 | 22 |
178 | オカルト研究会 | 22 |
179 | 7月生_ohanashi | 22 |
180 | nコイン売買掲示板 | 22 |
181 | 御茶ノ水cp_既存生チャンネル | 22 |
182 | python | 22 |
183 | zatsudan通話民 | 22 |
184 | consult | 21 |
185 | newcomer | 21 |
186 | channel_senden | 21 |
187 | moviecritics | 21 |
188 | kamen_rider | 21 |
189 | ようzyo大好きクラブ | 21 |
190 | vtuberになりたい貴方 | 21 |
191 | 戦略ゲームで遊ぶ会 | 21 |
192 | github | 20 |
193 | chokaigi_project | 20 |
194 | mhxx | 20 |
195 | java | 20 |
196 | zisakugengo | 20 |
197 | 部活同好会交流用チャンネル | 20 |
198 | 短編掲載企画用チャンネル | 20 |
199 | ひよこを愛でる会 | 20 |
200 | 通学_麻雀 | 20 |
プログラミング・IT関連 TOP45
順位 | チャンネル名 | 参加人数 |
---|---|---|
1 | programming | 196 |
2 | adobe-cc | 159 |
3 | club_computer | 145 |
4 | programming-beginner | 95 |
5 | エンジニアアルバイト | 72 |
6 | programming-intro | 65 |
7 | 自作er | 63 |
8 | unity_gamedev | 42 |
9 | maker | 40 |
10 | blender | 36 |
11 | slack_bot_develop | 33 |
12 | typing | 28 |
13 | n-info-tech | 28 |
14 | javascript | 26 |
15 | vtuber | 25 |
16 | unity_game-making | 25 |
17 | game_dev | 24 |
18 | python | 22 |
19 | github | 20 |
20 | java | 20 |
21 | zisakugengo | 20 |
22 | 機械学習 | 19 |
23 | swift | 18 |
24 | scala | 16 |
25 | golang | 16 |
26 | computer_science | 15 |
27 | hololens_dev | 15 |
28 | mitou | 14 |
29 | vr | 13 |
30 | infra | 13 |
31 | css | 13 |
32 | designer | 11 |
33 | html | 11 |
34 | vantan_game | 10 |
35 | web_designer | 10 |
36 | ruby | 10 |
37 | zisakupc_and_gadget | 9 |
38 | spajam | 9 |
39 | cg | 9 |
40 | vrchat | 8 |
41 | 情報処理技術者試験 | 7 |
42 | vantan_game_tokyo | 6 |
43 | tinkercad | 6 |
44 | legacy_pc_maintainer | 4 |
45 | ue4_gamedev | 4 |
参加者増加数ランキング (18/9/19-11/27間)
全体 TOP100
順位 | チャンネル名 | 増加数 |
---|---|---|
1 | 学校からのお知らせ | 449 |
2 | 2018年度新入生 | 431 |
3 | 部活同好会宣伝用チャンネル | 414 |
4 | n_help | 390 |
5 | zatsudan | 384 |
6 | workexp | 379 |
7 | チャット練習用 | 330 |
8 | club_esports | 120 |
9 | 2018ネット運動会 | 45 |
10 | ハロウィンパーティhr | 45 |
11 | 合同たこ焼き大会会場 | 25 |
12 | 2018沖縄研修旅行雑談 | 25 |
13 | n幼稚園 | 25 |
14 | zatsudan通話民 | 22 |
15 | 森 | 21 |
16 | fortnite | 20 |
17 | adobe-cc | 20 |
18 | こっぺぱんるーむ | 19 |
19 | 機械学習 | 19 |
20 | lol | 18 |
21 | クラロワ | 17 |
22 | キュバニア帝国領slack | 17 |
23 | カスタムキャスト | 17 |
24 | ゆゆうた | 17 |
25 | ようじょ教 | 17 |
26 | n幼稚園保護者会 | 17 |
27 | club_art | 15 |
28 | 名古屋_中国語_文法 | 15 |
29 | compass | 14 |
30 | 芸術っていいよね | 13 |
31 | ほたるの食生活改善委員会 | 13 |
32 | css | 13 |
33 | やきそばフランクフルト | 13 |
34 | キャンフェスたこ焼き | 13 |
35 | パズドラ | 12 |
36 | medicine | 12 |
37 | 64bitを計算する会 | 12 |
38 | キャンフェス名古屋歌って見た踊ってみた | 12 |
39 | キャンフェス名古屋けいおん | 11 |
40 | 学ぶのが好きなひと | 10 |
41 | rocket_league | 10 |
42 | 2018大阪町会議 | 10 |
43 | 通学_プロn質問回答用 | 10 |
44 | キャンフェス名古屋ディベート | 10 |
45 | キャンフェス名古屋劇 | 10 |
46 | maker | 9 |
47 | 絵描きの卵 | 9 |
48 | スマブラ同好会 | 9 |
49 | レポート質問-職員室的な感じ | 9 |
50 | パソコンはお好きかい | 9 |
51 | cg | 9 |
52 | 10月新入生歓迎会実行委員 | 9 |
53 | 通話チャンネル | 9 |
54 | 夜の静かな小川 | 9 |
55 | ニコニコ超会議2019 | 9 |
56 | キャンフェス名古屋クイズ | 9 |
57 | splatoon | 8 |
58 | club_music | 8 |
59 | unity_gamedev | 8 |
60 | バンドリ | 8 |
61 | syamu学 | 8 |
62 | は進学希望 | 8 |
63 | 超パーティー2018 | 8 |
64 | 編集部_沖縄組 | 8 |
65 | アトチャン放題チャンネル_ミュート推奨 | 8 |
66 | スーモ | 8 |
67 | キャンフェスタピオカジュース | 8 |
68 | processing | 8 |
69 | n幼稚園うさぎ組 | 8 |
70 | n幼稚園職員室 | 8 |
71 | モンスト | 7 |
72 | baseball | 7 |
73 | war-thunder | 7 |
74 | ディベート | 7 |
75 | エンジニアアルバイト | 7 |
76 | 脱出_名古屋_3班 | 7 |
77 | 東京オリンピック2020ボランティア | 7 |
78 | 茶葉連合軍 | 7 |
79 | rktnテロ対策委員会 | 7 |
80 | キャンフェス名古屋未成年の主張 | 7 |
81 | n高校茨城 | 7 |
82 | 墓場 | 7 |
83 | ドイツ帝国 | 7 |
84 | mahjong | 6 |
85 | waidan | 6 |
86 | 災害情報 | 6 |
87 | zatudann2 | 6 |
88 | ちくわ大明神 | 6 |
89 | 分限裁判所 | 6 |
90 | プロn_代々木2 | 6 |
91 | 省庁ドラマ制作4班 | 6 |
92 | 立法裁判例研究会会議室 | 6 |
93 | キャンフェスわたがし | 6 |
94 | n幼稚園ことり組 | 6 |
95 | n幼稚園りす組 | 6 |
96 | club_shogi | 5 |
97 | programming | 5 |
98 | 自作er | 5 |
99 | toho_daisuki | 5 |
100 | club_jinrou | 5 |
プログラミング・IT関連 TOP45
順位 | チャンネル名 | 増加数 |
---|---|---|
1 | adobe-cc | 20 |
2 | 機械学習 | 19 |
3 | css | 13 |
4 | maker | 9 |
5 | cg | 9 |
6 | unity_gamedev | 8 |
7 | エンジニアアルバイト | 7 |
8 | programming | 5 |
9 | 自作er | 5 |
10 | swift | 5 |
11 | club_computer | 4 |
12 | programming-beginner | 4 |
13 | blender | 4 |
14 | slack_bot_develop | 4 |
15 | vtuber | 3 |
16 | unity_game-making | 3 |
17 | python | 3 |
18 | javascript | 2 |
19 | game_dev | 2 |
20 | golang | 2 |
21 | typing | 1 |
22 | zisakugengo | 1 |
23 | mitou | 1 |
24 | vr | 1 |
25 | html | 1 |
26 | web_designer | 1 |
27 | vrchat | 1 |
28 | 情報処理技術者試験 | 1 |
29 | programming-intro | 0 |
30 | n-info-tech | 0 |
31 | scala | 0 |
32 | computer_science | 0 |
33 | infra | 0 |
34 | designer | 0 |
35 | vantan_game | 0 |
36 | spajam | 0 |
37 | vantan_game_tokyo | 0 |
38 | tinkercad | 0 |
39 | legacy_pc_maintainer | 0 |
40 | ue4_gamedev | 0 |
41 | github | -1 |
42 | java | -1 |
43 | hololens_dev | -1 |
44 | ruby | -1 |
45 | zisakupc_and_gadget | -1 |
おわりに
ランキングどうだったでしょうか。全体のお知らせ的なものを除き、N高ではやはりゲームが人気コンテンツで、それに関わるチャンネルが多いことがわかります。
ゲームの中で非常に力強いのは
- スプラトゥーン
- ドラクエ10
- FGO
- フォートナイト
- LoL
- ポケモン
- PUBG
- バンドリ
このあたりです。ドラクエ10が多いのは、これで学内のネット遠足が企画されているというところが大きいと思います。
ゲーム以外で言うと雑談系や創作系趣味のチャンネルも人気だったりします。学校が公式につくっている部活系チャンネルはすべてclub_ではじまっており、それらもやはり人数が多いです。部以外にもたくさんの公認同好会や非公認同好会があります。
もちろんプログラミング・ITに関するチャンネルも人気があります。最近N高生が無料で使えるようになったAdobeCCチャンネルが一番大きいものの、競技プログラミングをする#club_computer、自作PCを作る#自作er、Unityゲーム開発をする#unity_gamedev、もの作りをする#makerや、Blenderを触る#blenderなどが人気です。最近だと機械学習チャンネルの参加者がガツンと増えました。
やはりN高のSlackの参加人数を見ると分かる通り7000人以上が参加するチャンネルもあり壮観です。なお各チャンネルの参加している人の傾向ですが、かなり、チャンネルごとに参加しているメンバーは異なります。流れる情報量も結構多いので、自分の趣味のものにしか入ってないという人は多いのではないかと思います。
このような全体のチャンネルの日々の変化をボットを使って報告させることで、Slackのチーム全体の動きを知ることができるので、このボットはN高Slackの活性化にそこそこ寄与できているのではないかなと思っています。
なお、このチャンネル参加数変動を報告するボットもCSVへの集計スクリプトも、ISC License にて公開しています。もし自分が参加するSlackチームでこういうのを出力したいという方は sifue/channelmapinfo を自由に改変して使っていただければと思います。
実は今回は、Twitterのアカウント名を入力するとそれがN高生なのか判定する機械学習モデルを作っていたのですが実装が間に合わず、ちょっと過去作ったものでお茶を濁す感じになりました。そっちの方は完成したらまたQiitaの記事を書こうかなと思います。
ここまで読んでいただきありがとうございました!では次のN高アドベントカレンダーを引き続き宜しくおねがいします!
その後の記事
- [【2019年度】 N高等学校でプログラミング教育をはじめて4年が経ちました] (https://qiita.com/sifue/items/1b95647cd643f787d9aa)