Shoken Startup Blog

KitchHike Founder/CTO

よちよち.rb 第25回を見学して勉強会というコミュニティについて考えたこと

よちよち.rb 第25回に主催者のゆかおさんにお願いして見学させてもらいました。

よちよち.rb 第25回 - よちよち.rb(初心者限定 Ruby On Rails 4 とか勉強会) | Doorkeeper

僕は2年ほど前に丸の内MongoDB勉強会を始めました。(しばらく海外に行っていたので今は別の人が主催をしてくれています。)

勉強会という一つのコミュニティを始めるにあたって、意識したことが2つありました。

  1. 自分がいなくなっても継続するコミュニティを目指す
  2. 参加条件を用意して参加者のモチベーションを一定以上に保つ

よちよち.rbというミートアップに参加して感じたことは、上の2つとは全く逆のことでした。 まずは、この2つを意識するようになった経緯を書きたいと思います。

自分がいなくなっても継続するコミュニティを目指す

これは新卒で入社して間もない頃、日本の著名なDebianコミッターの方の講演を聞く機会があり、その中での質疑応答がもろに影響を受けています。 僕の質問「理想の(オープンソース)コミュニティとはどんなコミュニティですか?」に、「自分がいなくなっても継続していくコミュニティが理想なんじゃないかな。」と答えてもらいました。クラウドなんてほとんど知られてなかった当時ですが、DNSなどに代表されるWWWの分散型システムと重なり、とてもとても影響を受けました。

これについて丸の内MongoDB勉強会ではある程度達成できたと思っています。初回の勉強会から約2年。周りの方々の協力のおかげで、僕が海外に行った後でも丸の内MongoDB勉強会は継続的に開催されています。次回は7/17に開催予定です。 丸の内MongoDB勉強会 #18 - 丸の内MongoDB勉強会 | Doorkeeper

参加条件を用意して参加者のモチベーションを一定以上に保つ

こちらはDebian勉強会に影響を受けました。学生時代に初めて参加した勉強会です。とてもドキドキしながら、まだ渋谷にあったGoogleオフィスで開催された東京エリアDebian勉強会に行ったのを覚えています。 当時も今も、Debian勉強会は参加登録と同時に、事前課題を提出することを参加の条件としています。事前課題と言っても、勉強会に参加しようとする人なら時間を少々かければできるものです。当時の事前課題はたしか「自分の好きなオープンソースライセンスとその理由」だったと記憶しています。最新の事前課題を見ると、「本日の東京エリアDebian勉強会でDebianに関して何の作業をするかを宣言してください。」でした。 この事前課題によって、

  • 勉強会参加者の共通知識ができる
  • せっかく事前課題をやったのだから、という気持ちがドタキャンを抑止する
  • まったく事前学習無しのセミナーノリでの参加を抑止し、モチベーション高く参加する

という効果が期待されます。 当時も事前課題のおかげで、初参加の学生ながら会話に参加できたことを覚えています。

丸の内MongoDB勉強会では事前課題では無く、毎回ハンズオン勉強会という形式にして参加条件に「ノートPCにMongoDBをインストールしてくること」としました。こちらもある程度効果があったと思います。全員のノートPCにMongoDBがあることを前提に、レプリカセットやシャーディングなどを参加者同士で実践することができました。

でも、よちよち.rbでは違った

よちよち.rbに参加してまず感じたことは、主催者であるゆかおさんのあたたかさと、ゆかおさんを中心としたコミュニティの一体感。ゆかおさん主催だから参加している人も多いんじゃないかと思います。コミュニティを作る情熱とモチベーションがなければ、週1で勉強会を25回も続ける事はできません。ゆかおさんには感服です。この人じゃないとできない勉強会、これも理想の一つなんだなと考えが変わりました。

そしてもう一つのほう。よちよち.rbでは特に事前課題は無いようです。参加条件も初心者向けミートアップという意味での、「プログラミング歴2年以内程度を想定」というもののみ。にも関わらず、参加者みんなモチベーションが高い。セミナー気分で参加している人はゼロでした。 その理由の一つをWeb上のコメントで見つけました。「前回行けなかったけど、参加者コメントを見てモチベーションが上がった。がんばろう。」という趣旨の書き込みがありました。このいっしょに勉強して、いっしょに成長することが最大のモチベーションなんですね。ミートアップのREADME.mdに書いてありました。

この勉強会のいちばんの目的は、Railsを習得することではありません。目線の高さが同じ人といっしょにひとつの活動を根気よく続けることで自信をつけていくこと、これが最大の目標です。

講師と生徒、のような形式はとらないつもりです。みんなで転んで、みんなで進んでいきます。 効率よりも経過を重視します。2時間で1ページも進まなくても、その時間で考え実行したことが宝です。

参加/不参加はお気軽にどうぞ。無理のない範囲で、たのしく技術をみがいていきましょう。

yochiyochirb/meetups

他にも工夫がいっぱい

  • ミートアップの最初は一人一人自己紹介。1時間程度使っている。

  • 自己紹介は各自Gistを用意。

  • 自己紹介時に自己診断でRailsとGitの経験(ステータス)を共有。

  • Railsチュートリアルをみんなで進めるので継続参加を推奨している。

  • 参加者は名札をつける。前回参加者は持参する。

  • 参加するとシールがもらえるラジオ体操方式。

  • 4,5人のグループにわかれて、Railsチュートリアルを音読する。

  • グループで話題に上がった事をGithubのissueで管理。後ほど全体で共有。

よちよち.rbのみなさまに感謝

よちよち.rbに参加して、コミュニティへの考え方が大きく変わりました。ゆかおさんが中心となって、参加者全員で作っているミートアップなんだな、と感じました。最後にもう一度引用します。

講師と生徒、のような形式はとらないつもりです。

みんなで転んで、みんなで進んでいきます。

効率よりも経過を重視します。2時間で1ページも進まなくても、その時間で考え実行したことが宝です。

yochiyochirb/meetups

丸の内MongoDB勉強会 #6 やりました #mongonouchi

丸の内MongoDB勉強会 #6 : ATNDをやりました。
勉強会のページはこちらです。
https://github.com/syokenz/marunouchi-mongodb/tree/master/20130123

テーマ

■GridFSハンズオン
発表者: OpenStandia @syokenz
MongoDBのドキュメントサイズは16MB制限がありますが、GridFSを使うと16MB以上のサイズのデータを扱えます。
GridFSを初めて触る人向けのチュートリアルです。
資料: GridFSハンズオン


■SnapDish 画像配信について
発表者: Vuzz @kiyotaman

大人気の料理写真共有アプリ、SnapDishを開発しているVuzzのCTO @kiyotamanさんの発表でした。
SnapDishでは200万枚の画像配信をnginx-image-filter + Mongodb(GridFS)で行っているそうです。
画像の保存先が、なぜS3ではなくGridFSか、という話題にも触れられています。S3とGridFSで迷っている人は必見のスライドです。スライドの所々にでてくる料理の写真がおいしそうです。


■MongoDB sharding C10Kとの戦い
発表者: @crumbjp

MongoDBのソースコードも多く読まれている@crumbjpさんが、実際の経験を元にsharding環境でのC10K問題に関して発表されました。mongosからmongodへのコネクションを回収タイミングを設定できるパッチを作成されています。MongoDBに関する深い知識と障害での経験がバックボーンにあり、非常に勉強になる発表でした。



感想

今回、MongoDBヘビーユーザーの貴重な事例発表とあって、40人の参加者が集まりました。
やはり、他の人がどう使っているかは気になりますね。今後も多くの事例を共有することで、MongoDBの理解と普及に勉強会が貢献できればと思います。

第7回は2/19(火)予定です。次回もMongoDBヘビーユーザーの発表が決まっております!

丸の内MongoDB勉強会 #5 やりました #mongonouchi

丸の内MongoDB勉強会 #5 : ATNDをやりました。
当日の資料はこちらにあります。
https://github.com/syokenz/marunouchi-mongodb/tree/master/20121218

テーマ

今回は「ソースコードリーディング入門」と「MongoDBをカスタムビルドしてみよう」でした。

ソースコードリーディング入門
担当: OpenStandia @syokenz
git grepを使用して、mongodの起動オプションである"noscript"オプションがtrueの場合の処理を調査する、というハンズオンを行いました。


■MongoDBをカスタムビルドしてみよう
担当: OpenStandia @syokenz
標準で用意されているMongoDBのREST APIにはfindとinsertしかありません。今回はdeleteを追加してビルドしました。

感想

今回はソースコードリーディングということで、なかなかマニアックな人が集まりました。丸の内MongoDB勉強会も5回目を迎えて、日本のMongoDBに詳しい人たちが少しずつ集まって来ていると実感しています。詳しい人の一人、楽天の窪田さんには次回の勉強会で発表してもらうことになりました!

次回のテーマ

第6回でついに外部発表者のお願いに成功しました。
楽天の窪田さん、snapdishの清田さんが発表してくれます。これは豪華!とても楽しみです。

MongoDB Configパラメータ解説

丸の内MongoDB勉強会 #4 : ATNDで@fetarodcさんが発表した「MongoDB2.2 全設定値解説」の内容をスライドにまとめました。


Configパラメータを
・ログ、情報出力
・インターフェイス
・セキュリティ
・チューニング
・その他
に分類して、解説しました。


もとになった資料はgithubにあります。一部設定の検証を行い、コマンドレベルの手順を書いています。
marunouchi-mongodb/20121106/fetarodc at master · syokenz/marunouchi-mongodb · GitHub

【TechBuzz】第3回.js系勉強会に行きました

【増員】【TechBuzz】第3回.js系開発技術勉強会 〜先行事例紹介/交流会〜 yeomanでフロントエンド開発を効率化する方法 / CoffeeScriptとTypeScriptの比較 / tmlib.js at http://www.socialtoprunners.jp/ : ATNDに行きました。


今回は3人の発表がありました。
■yeomanでフロントエンド開発を効率化する方法
 @anton0825
 資料:http://hosokawa0825.github.com/slides/IntroductionOfYeoman/#/

  • メモ

yeoman(よーまん)
 解説サイト
 http://jser.info/post/31650273373

yeomanを一番使いやすいアプリ構成
サーバ側:json APIを実装
クライアント側:backboneなどでjsonを受けて表示する

参考サイト
http://havelog.ayumusato.com/develop/others/e516-yeoman.html



■CoffeeScriptとTypeScriptの比較
 @kabochha

  • メモ

【TypeScript】
MSが作ってる
C#Delphi作った人が作ってる
静的型付け(オプション)
クラス宣言
モジュール・サポート
jsのコードがそのまま動くので、覚えなくても使える
本家サイトのSampleはだいぶ役に立つがまだまだドキュメントは少ない
開発環境
MSから各エディタの拡張を出している、EmacsVimSublime Text
Visual Studioメイン
他jsとの連携
TypeScript上で扱えるように定義ファイルを用意する必要がある
NodeやjQueryは用意されている
プロジェクトの継続性
Microsoftのなで。。

【CoffeeScript】
RubyPythonライクな構文
シンタックスシュガーやコード量の削減により、可読性が向上
jsとの互換性がないので別言語として覚える必要がある
日本語の書籍が出てる
ネットでの情報が豊富
The little book on Coffee Scriptの和訳がネットで公開されている
開発環境
Emacs, Vim, Eclipse, Webstormなど多い
他jsとの連携
HTML側で読み込ませておけばよいので問題なし
プロジェクトの継続性
Railsデフォルト

【結論】
CoffeeScriptに静的型付けがあったら最強。

発表者の会社では10万アクセスを超えるゲームでの使用を検討した
jQueryは重いので使えない
なので、TSかCS


■tmlib.jsの紹介
 @phi_jp
 資料:http://www.rvl.io/phi/tmlibjs
 公式サイト:http://tmlife.net/tmlib

  • メモ

ゲームプログラマやりながら執筆してる23歳が作っているjsライブラリ。
JavaScript をより使いやすく, より便利に, そしてより豊かに」

BGMを流しながらのライブコーディングが楽しそう。

ゲームや動く物が簡単に作れるライブラリという印象。これを使ったら楽しく開発できそう。Enjoy Programingの概念はRubyと共通しているかも。