Scalaのはなし。
はじめての関数型言語
- Common Lisp(Lispを関数型言語と呼ぶのかはおいておく)
- Beating the Averages

- 作者: ポールグレアム,Paul Graham,川合史朗
- 出版社/メーカー: オーム社
- 発売日: 2005/01
- メディア: 単行本
- 購入: 109人 クリック: 4,884回
- この商品を含むブログ (583件) を見る
- Lispを使っていたから素早く開発できた
- 素早さこそが競合に対する最大の武器だった
- Lispだから成功できた
Lispをやればお金持ちになれるに違いない(若気の至り)
読みまくった
- 作者: ポールグレアム,Paul Graham,久野雅樹,須賀哲夫
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2002/08
- メディア: 単行本
- 購入: 1人 クリック: 102回
- この商品を含むブログ (68件) を見る
Lispを学んで得たもの
- 関数型言語の基本的な考え方
- マクロすごい
- (((((((()))))))) 括弧のお化け
→Lispをやってもお金持ちに慣れなそうなことに気付き始める
2006 Haskellがちょっと流行る
きっかけはMonadius
Monadius - a scientist's toy box
- 純粋関数型言語
- モナド
- コンパイルが通ればバグはない(と言われるが、そんなことはない)
- でも仕事で使うのはちょっと厳しそうだ
2010 Clojureと出会う
- 2007くらいには出ていたのに、Clojureはマークしていなかった

- 作者: Stuart Halloway and Aaron Bedra,川合史朗
- 出版社/メーカー: オーム社
- 発売日: 2013/04/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (9件) を見る
- JVM上で動くLisp!!ついにLispの時代がきた
- Lispなのに左から右へ書ける(Javaと同じ)
- Lispの時代がきた、と思ったら来なかった
2011 Scalaと出会う
オブジェクト指向+関数型
- 動的型付け言語の簡潔さと静的型付け言語の安全さを両立
- 手続き型の書き方も出来、敷居が低い(モナドのことは知らなくていい)
- JVM上で動作し、Javaと高い相互運用性を備える
- Haskellはきびしい
- Scalaは学術的な言語ではなく実用的な言語
- プログラマが普通に使える言語(そういうポリシーをいろいろ感じる)
Haskell vs Scala
- Scalaは継承とか出来てオブジェクト指向ぽくて読みやすい
- 関数型にこだわりすぎない
- 手続き型でも書ける
- 必要であれば自由に状態や副作用を持てる
- メソッドの外側からみて参照透過であれば、メソッド内では状態を持ってもよい
- Scala使いにもいろいろ属性があって、better Java的な使い方をしている人もいればより関数型的な使いかたをする人もいる(聖戦)
- でもまあおだすきー先生の思想から、バランスの取れた書き方が出来る
- 一つの式に詰め込み過ぎない(Haskellとかは、やろうと思えば数行に渡るプログラムを1行にまとめることが出来る)
- Scalaは分かりやすい名前をつけて意味的にどうにかすることが出来る
hascalator
サンフランシスコのScalaDaysで言及されたことば
- IOや例外といった副作用のよりよい扱い方はないか
- モナドは素晴らしいけどよりScalaらしい方法はないか
- Scalaの一番よいところはバランス感覚
JVM言語なのでJavaの資産も活かせるのがメリット(better Javaなのでお客に説明しやすい。Haskellとかだと結構説明が難しいことがある)
これなら仕事に使えるかも知れない
当時の背景(2011-2012)
- 少人数のチームで生産性を高めることで利益率を向上させることを追求
- Seasar2 Apache Click S2JDBCなどのフレームワークとアジャイル開発プロセスを採用
- でもJavaでは限界
- 次どうしようってはまっていた時期
Scala実戦投入
- 社内のテストツールをLiftやScalatraで作ってみる
- 実践的な書籍がないので本を書いた
代表作

- 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
- 出版社/メーカー: インプレスジャパン
- 発売日: 2011/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 235回
- この商品を含むブログ (45件) を見る
本を書いた

Scala逆引きレシピ (PROGRAMMER’S RECiPE)
- 作者: 竹添直樹,島本多可子
- 出版社/メーカー: 翔泳社
- 発売日: 2012/07/03
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 54回
- この商品を含むブログ (13件) を見る
- Seasar2の開発が止まっていたので、Play2をやってみる
つらいことも多い
- コンパイルが猛烈に遅い(あまりに有名なやつ)
- IDEが猛烈に重い(Eclipseのプラグイン ScalaIDE)
- Play2が猛烈にバグっている(2からScalaで書きなおされていて、1では出来たことが2では出来ないみたいなことがあって自分で作らないといけない)
- sbt(名前と違って全然シンプルじゃないので名前が変わった)
- 突然シャットダウンでビルドできないからセントラルにデプロイ
- いろいろな混乱があった(政治的な問題でTomcatの上から動かさないといけない)
- でもJavaに失われていた熱気があった
- マクロもある
Macros - def マクロ - Scala Documentation
2013 GitBucket開発開始
- Scalaで開発されたOSSのGitHubクローン
- ScalatraやSlickなどに加えて、趣味で作っていたのでJGit Apache MINA Jetty H2など既存のJava技術を活用
- コンパクトなコードで、少人数で開発を継続
- インフラよりの実装がJavaで多いのはよいこと
2014 Scalaで大規模開発
- Scalaの状況として、Play2も安定してきたし、その他のフレームワークやツール、ライブラリも揃ってきた
- IntelliJ IDEAが無償で使えるようになった
- 非同期処理分散処理が注目されはじめた
これからのScala
- コンパイル速度
- バイナリ互換性(Javaだとバージョンが上がってもコンパイルしたものが使える異常なやつだけど、Scalaだとバージョンアップするとバイナリ互換性が保証されない。ソースコードの互換性は保証されるが)
- 解決するために新しいコンパイラを開発している(おだすきー先生がプライベートで)
- TASTYで中間ファイルを作り、バイトコードやJSを生成する(Scala.jsとかもあつい)
- でもこういうことすると余計にコンパイルが遅くなりそうな気がするので実用化されるかどうかは不明。6月7月あたりでアムステルダムでScalaDaysがあるのでそこでアルファリリースがあるのかしら
- 言語仕様の整理
- 行けてない昨日やシンタックスを廃止したり別機能で代替したり
- よりシンプルな記述が可能になるような機能やシンタックスシュガーとか(UnionTypeとか)
- 実行環境
今後の方向性
- 関数型へシフトしていくわけではない
- オブジェクト指向と関数型の融合
- 強力な静的型付
- Scalaの特徴を活かしたよりいsンプルで直感的な記述