こんにちわ、みけです。
表題の通り、勉強会を開催してきました。
このページでは勉強会開催の経緯とか、ハンズオン開催する場合の難しさ、フォローについて書いておきたいと思います。
開催の経緯とかタイトルとか
僕はJava8以降、Javaばっかり書いていて、
ラムダを書いていたりすると、
いろいろと不満に思うことがあったりするわけです。
interface SomeResource<T> { public Optional<T> findByCondition(String cond); } interface Producer<R> { public R produce() throws IOException; } class SomeProcessor<R> { private SomeResource<Producer<R>> resource; public SomeProcessor(SomeResource<Producer<R>> resource) { this.resource = resource; } public Optional<R> process(String cond) { return resource.findByCondition(cond) .map(Producer::produce); } }
たとえば、上記のようなコードがあったときに、
14行目の.map(Producer::produce)
はコンパイルエラーになります。
というのも、ハンドリングされないIOException
があるからです。
しかたないので、この場合は次のように書くことになります。
public Optional<R> process(String cond) { return resource.findByCondition(cond) .map(p -> { try { return p.produce(); } catch(IOException e) { return null; } }); }
例外を透過的に扱えないので、
せっかくラムダで記述量が少なくなるのに、
なんだかもったいない感がいっぱいになります。
じゃ、Scalaじゃね?となり、Scala全く知らないので、
だれかScalaハンズオンやってくれないかな。レベルは低くて良い
— もちだって人らしい (@mike_neck) 2014, 9月 1
とツイートしてたら、
@yusuke @mike_neck 入門を優しく教えることに定評のある @gakuzzzz 先生を召喚するとよいです。
— Kazuhiro Sera (@seratch_ja) 2014, 9月 1
となり、╭( ・ㅂ・)و ̑̑ グッ !なんてしてたら、
@garbagetown @seratch_ja @yusuke @mike_neck セッティングおながいします╭( ・ㅂ・)و ̑̑ グッ !
— がくぞ (@gakuzzzz) 2014, 9月 2
こんなことになり、
@garbagetown @seratch_ja @yusuke @mike_neck 会場に強い人を巻き込みましょう╭( ・ㅂ・)و ̑̑ グッ !
— がくぞ (@gakuzzzz) 2014, 9月 2
こうなって、まあ後戻りするのも興が醒めるので、
@mike_neck @gakuzzzz @garbagetown @seratch_ja @yusuke レス遅くてすみません。仕事忙しいふりしてました。確認しまーす。
— Itsuki KURODA (@i2key) 2014, 9月 2
と、巻き込みました。
(Eitherとかを勉強すると、例外に関して銀の弾丸などないと思い至っているのは内緒です)
ハンズオン開催する場合の難しさ
ハンズオンを開催する場合の難しいところですが、
- インストール大会になる
- 参加者の理解度・進捗の確認が難しい
という二つのポイントがあげられると思います。
インストール大会になる
必要なartifactをダウンロードするのに
会場のwifiの帯域を使いきってしまって、
アプリもろくに作れなくて、
なんのための勉強会だったのかわからなくなってしまう
ということが想定されました。
こちらは何回か事前準備してきてねと参加意志確認をあわせておこないました。
ただ、季節柄、僕の欝状態がひどくなりつつあって、
参加者へのメッセージ送信が2回と少なかったのが、残念な点でした。
次回(やるかどうかは不明)以降はもうちょっとメッセージ送信の頻度をあげたいと
思っています。
今回は参加者の皆さんが非常に協力的で、
事前準備をしてこなかった人がほとんどいなかったので、
参加者の皆さんには大変感謝しております。
参加者の理解度・進捗の確認が難しい
「ここまで終わった人?」と聞くと、
他の国の人は知りませんが、
日本人はわりと挙手してくれないことが多いかと思います。
無反応なのは、
(学校教育のあれがそれで云々と言うつもりはないのですが、)
ハンズオンを実施していく身としては、
なかなかつらいところがあります。
今回勉強会の運営で一番お世話になった@yusukeは、
以前にIntelliJ IDEAのハンズオンをやったときに、
google docを使って、参加者の進捗確認をしたと
アドバイスをくれたので、それに習うことにしました。
とはいえ、アドリブでやってたので、
カリキュラムと番号が違ってわかりづらかったり、なんだりで
グダグダになってしまった感じも否めないです。
また、テキパキと司会進行をおこなえず、
用意したカリキュラムが終わらなかったあたりも、
参加者の皆さんには大変ご迷惑をおかけしました。
このあたりは改善しないといけない点であると認識しております。
(何に向けて?)
フォロー
今回のScala勉強会の学習内容はgithubから入手することができます。
自習する際には、下記のwikiページを参照ください。
また、ここでの内容を終えた後、さらに学習したい方は、
などがよいかと思います。
また、当日のツイートについてはtogetterにまとめられています。あわせてご参照ください。
謝辞
謝辞というのは本来は最初に持ってくるものなのですが、
最後になってしまいました(´・ω・`)
今回、会場を提供してくださったリクルートメディアテクノロジーラボさん、および、会場の手続きをしていただいた@i2keyさんには、無茶なお願いを聞いて頂き、大変感謝しております。
チューター役を引き受けてくださった
- @gakuzzzzさん
- @daiksyさん
- @kara_dさん
- @shunjikonishiさん
- @grimroseさん
には大変お世話になりました。この勉強会はチューターの皆さんがいなければ成立していなかったと思っています。
特に@gakuzzzzさんには、カリキュラムの作成からアドバイスをいただき、なおかつ説明もお願いしてしまい、非常にありがたく感じております。
今回は裏方としてサポートしてくれたイケメンのひげのおじさんこと@yusuke、およびサムライズム社には、会場受付・ケイタリングで大変お世話になりました。
そして、今回、俺得な勉強会に参加していただいた参加者の皆様に本当に感謝しております。「よかった」「勉強になった」といったお言葉を頂いて、怖くないScala勉強会(仮題)に一番恐怖感を感じて参加していた僕にとって、大変うれしい感想でした。
皆さん、本当にありがとうございました。
以上