ナカザンドットネット

それって私の感想ですよね

Scala入学式 #NDS33 で長岡に行ってきました

f:id:Nkzn:20130929101652j:plain

ドーモ、テイトク=サン。ナカザン=デス。

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へ取り込んで利用することができるんだよー、といういい例だったと思いました。

最終的にはこんな感じに↓

まとめ

f:id:Nkzn:20130929110743j:plain

新潟県はニー型圏!

静的型付け都市、ニー型!!!!!

圏論都市、ニー型!!!!!

素晴らしいイベントでした。まる。

May the Type be with you...

Scalaはじめました

ここ数ヶ月、@muxukeikeiから「ScalaいいよScala」と洗脳され続けてきたので、そろそろ触ってみようかと思い立ち色々とやってみました。
ひとまず、会津大学の創造工房で読書会をしているというScala本を購入。


Scalaプログラミング入門

Scalaプログラミング入門


昨日届いたばかりでござる。
さて、それでは環境設定について。

導入したもの

PC環境

GNU Emacs 22.1.1 (mac-apple-darwin)
of 2009-08-01 on piqsirpoq.apple.com
Copyright (C) 2007 Free Software Foundation, Inc.

    • ↑起動画面より。
    • たぶんターミナルに最初から入ってたやつ。

Scala本体の導入

$> sudo port install scala

インストールはこんだけで完了。MacPorts素晴らしい。
インストールの成否は↓で確認。

$> scala -version
Scala code runner version 2.7.7.final -- Copyright 2002-2009, LAMP/EPFL

Scalaプログラムの実行

$> scala hoge.scala

でおk。

対話型で実行

$> scala
scala> println("hoge")

こんなこともできます。ちょっと試したいだけのときはこのほうが便利かも。

Emacsscala-modeを導入

普通にEmacsからScalaコードを書こうとすると
f:id:Nkzn:20100502112041p:image
こんな感じで、いわゆる「基本モード」で立ち上がってしまい、見辛いったらありません。
素晴らしいことに、先程MacPortsからインストールしたScalaには、最初からemacs向けのscala-modeの設定ファイルが入っています。
なので、ホームディレクトリの.emacs(あるいは.emacs.el)に以下の文面を書き込むだけでいいようです。

;;; scala                                                                       
 (setq load-path
       (append
        load-path
        (list (expand-file-name "/opt/local/share/scala/misc/scala-tool-support/emacs/"))))
 (require 'scala-mode-auto)

この設定をするだけで、
f:id:Nkzn:20100502112042p:image
こんな風に、綺麗に色分けしてくれるようになります。

まとめ

本当はEclipseで設定したかったんですけどね(台なし
まだEclipseScalaプラグインは未成熟過ぎて使いものにならないので、大学で使い慣れたEmacsを使おうということになりました。
Emacsは設定次第では下手なIDEよりも使い勝手がよくなるらしいので、色々と弄ってみようかと思います。

次回

Auto Complete Modeとやらに興味がある。
http://cx4a.org/software/auto-complete/index.ja.html