最初に宣伝させてもらいますと、freeCodeCamp というサービスを御存知ですか?

オープンソースベースの無料でプログラミング(javascript)が学習できるサービスです。

コードは全て、githubで管理されていて、プロジェクトも全てgithub issueを使って運営されています。利用者が実際に、フィードバックを書いて貢献できるところも素晴らしいです。私も実際にissueを立てたりして貢献できています。Issue #7409 FreeCodeCamp/FreeCodeCamp

よくある企業が提供する有料のプログラミング学習サービスとは違い、貢献する人の数が違うので、学習内容も頻繁にアップデートされ、モダンなプログラミングを学ぶことができます。私がやっているこの1年間でも何回もアップデートが繰り返し行われ、学習する Javascript フレームワークが Angular から React に変わるなど、大きめのアップデートも結構あります。

キャンプと呼ばれるローカルに根付いたコミュニティがFBグループを利用して世界各国に設立されていますが、私がgithubで見つけた当時は日本にまだコミュニティが存在せず、だったら自分で設立してみようと思い、おぼつかない英語力で freeCodeCamp の創設者の Quincy Larson さんと gitter でやり取りして、なんとか日本初のキャンプを東京に設立しました。freeCodeCampTokyo

勉強会を開催するにあたり、他の国で行なわれているミートアップを参考にさせてもらうと、カフェなどに集まりコーヒーを飲みながら、freeCodeCampを進めていき、質問したりしていくのがメジャーな進め方のようだった(freeCodeCampでは coffee-and-code と呼ばれています)ので、私が勤めている株式会社ソニックガーデンのオフィスを借りて、勉強会を開催していきました。初回の勉強会では私と1人の参加者の合計2人ではじまり、現在ではFBのページは200人を超えて、毎回5~10人が参加していただける勉強会になってきました。

感じているひずみ

勉強会を運営していくにあたって、色々とひずみを感じました。

  • 参加者の交流が生まれにくい
  • 他の人のコードを見る機会がない
  • 外部の人から見て何をやっているのかわかりにくい
  • 自分自身が勉強会を楽しめない

それぞれについて考えていきます。

参加者の交流が生まれない

モクモク会(ただひたすらfreeCodeCampのコンテンツを進める)としているので、最後の時間を使って何をしたのか報告はするんですが、初回の人だと、ただ Javascript の基本的なところを進めて発表するだけなので、他の人に見せる物もなく、質問もなければほとんど喋る機会がなくなる。せっかくリアルで会う勉強会に参加するので、何か交流できるものを取り入れたいと思いました。

他の人のコードを見る機会がない

1つ目と内容少し被りますが、appear.in というサービスを使い、画面共有して前のスクリーンにコードを表示できるようにしていますが実際に利用する人は少なかったです。今後もfreeCodeCampを進めていくなら、より良いコードというものを意識して書けた方が良いのでなるべく早い段階で、モダンなJavascriptの書き方やデザインパターンなどを身につけられる仕組みが必要だと感じました。

外部の人から見て何をやっているのかわかりにくい

勉強会の外部に対するアウトプットがないため、非常に謎の勉強会になってしまっており、新しく参加したい人にとってハードルが高くなっている気がしました。Facebookのグループにやったことを投稿すればいいんですが、もくもく会だったため、発表する内容が作りにくいという状況。

自分自身が勉強会を楽しめていない

自分一人で勉強会の開催や当日の運営などをやってしまっていて、人に任せるということがうまくいっていませんでした。モクモク会だし、賑やかになる必要はないんですが、質問も1回もない勉強会で終わりそうな雰囲気の場合には、何か自分が喋って話題でも出さなければという気持ちになってしまって、あまり自分自身が楽しめていなかったです。

反省を踏まえて、これからやっていきたいこと

ペアプログラミングを行い、コードをみんなで見せ合う

やはり、プログラマとしての成長という観点だとペアプログラミングを行うのが効率的な気がします。参加者枠を初心者(初めてプログラミングに触ってみる人)と中級者以上(他のコンピュータ言語含めて、実際にコードを書いたことがある人)に分けて、初心者と中級者以上のペアで組んでもらい、ペアプログラミングを行いながら毎回お題(アルゴリズムの問題等) を解いてもらって、発表しながらコードについて話していきたいですね。実際にペアプログラミングやっってみると、ナビゲーター(コードを書かずに、全体の構成などを考え指示する役割)も自分の知識で足りていない部分などにも気づき成長に繋がっていくと思います。また、発表の部分については、実際にGoogle Hangout OnAir などを利用して外部配信+youtubeで公開とかすれば、外部の人にとってもどういうことをしているのかわかるようになってくると思います。

自分以外を無理やり絡ませる

自分だけで、運営しようとすると無理が出てくるので、他の人を無理やり絡ませてやっていこうと思っています。ちょうど、今まで勉強会で利用していた、ソニックガーデンの渋谷オフィスが移転に伴い使えなくなったので、開催場所に困っていることをFacebookグループでつぶやいたところ、別のfreeCodeCampの勉強会FreeCodeCamp#1を開催してくれたり、会場を提供してくれる方が声をかけてくださり助かっています。困った時はつぶやくの大事ですね。別のfreeCodeCampの勉強会では、いつも私が開催してるイベントの10倍くらい人が参加申し込みが集まっているみたいで、募集の仕方一つでこうも変わってくるのかと驚いていますし、当日スタッフ枠を用意しておくなど、勉強会慣れしている感じがしますね。。。私自身も細々とですが、勉強会を開催していこうかなと考えています。

目的を決める

目的が明確になっていないため、自分としてどのように動けばいいのかが見えていませんでした。なので勉強会を行う目的について考えてみました。 まず、せっかくのリアルで会って行う勉強会なので利点を活かしペアプログラミングをしたり、終わった後に懇親会をするなど交流を持ちたい。あと日本でもfreeCodeCampを広めていくために、していかないといけないことがコンテンツのi18n化(日本語化)だと思います。そこら辺を踏まえて、次のような目的でやっていこうかなと考えています。

リアルでの交流とFreeCodeCampを通じて、勉強会参加者全員がより良いJavascriptを書けるようになり、この活動を継続可能な状態で拡大していく。

勉強会を開催していき、freeCodeCampのコンテンツを終わらせて一流のプログラマになりたいです。