ドーモ、テイトク=サン。ナカザン=デス。
9/28に新潟県長岡市で行われた、第33回長岡IT開発者勉強会に行ってきました。
今回は「Scala入学式」と銘打って、 id:nkgt_chkonk さんプロデュースによるハンズオンイベントでした。
僕も2ヶ月前くらいからちょこちょことScalaをやっていたので、これは参加せにゃならんということで行ってきました。
結論から言うと大満足なイベントでした。今回は、その報告を書こうと思います。
※他の人の記事はこちらから→ http://nekogata.hatenablog.com/entry/2013/09/28/185217
やったこと
内容と感想を並べていきます。
入学試験(事前準備)
資料→ https://gist.github.com/Shinpeim/db00b073f7acd6d5b918
まずは環境作りから。
IntelliJ IDEAとSBTを利用する形の、スケールしやすい形の開発環境を揃えてくれていました。
HelloWorldまでしかやらない分には、実はIntelliJ IDEAだけあればできてしまうので、「なんでわざわざSBT依存の実行環境にすんねん!いちいちrun叩くの面倒やろ!」とは思ったものの、Java文化圏最大のライブラリアーカイブ・Maven Central Repositoryからデータを引っ張ってこれるというのはかなりの強みなので、まあ覚えておいて損はないのだろうと思いました。
テスト実行とかもコマンドラインからできるので、Jenkinsに載せてCIする場合にもSBTが便利なんでしょうね。
第1部 Better JavaとしてのScala
資料→ https://gist.github.com/Shinpeim/6740436#file-00-md
スーパー写経タイム。
とりあえずclassとかobjectとかtraitとかを自分の手を動かして作りながら、初期化の仕方や構文などを学びました。
printlnで表示する内容がドラクエじみていたというか、テーブルトークRPGじみていた点が分かりやすくて面白かったです。Weaponトレイトとかテンション上がりましたわー。
第2部 もっとScala!
資料→ https://gist.github.com/Shinpeim/6740436#file-01-md
- 基本的なデータ構造の1つであるリストの扱い方
- パターンマッチ
- Option型
- 関数型としてのScala
- foreach
- map(flatMap)
- filter
- 実は↑はfor-yieldに書き換えられるよ的な話とか
みたいな感じでモリモリとScalaの便利な仕組みについてお話ししてもらってました。ハンズオンちょっと少なめ。
資料の方には書いてあったけど、リストのimmutableとmutableの違いについては言及されなかった気がする。
immutableなリストをfilterやmapで加工したときに出てくるリストは、元々のリストオブジェクトを変更したわけではなくて、新しいオブジェクトが生成されてる、という認識でよかっただろか。
第3部 ぬるぽガッbotを作ろう
資料→ https://gist.github.com/Shinpeim/6740436#file-02-md
Twitter4Jを使って、タイムライン上に現れた「ぬるぽ」に対して「ガッ」をリプライするプログラムを作る時間。
初期設定をしている間に、作者のヒゲメンが反応してくるという一幕も。
Javaのライブラリを普通にScalaへ取り込んで利用することができるんだよー、といういい例だったと思いました。
最終的にはこんな感じに↓
@Nkzn ガッ!
2013-09-28 17:41:39 via nds33_basic_scala to @Nkzn
@Nkzn ガッ!
2013-09-28 17:41:39 via scala ga bot to @Nkzn
@Nkzn ガッ!
2013-09-28 17:41:39 via nds33_scala to @Nkzn