関数型もモナドも分からなくても
Scalaと言う言語は便利らしい。
頭悪いマンだけどScala触ってみたよという話
注意
 あんまりちゃんとしたこと言えないのでマ
サカられると泣きます
 いろいろ大目に見てください。
What is Scala
Scala is 何
Scala is 何
 JVMで動く系言語
Scala is 何
 JVMで動く系言語
 強い静的型付き言語
Scala is 何
 JVMで動く系言語
 強い静的型付き言語
 型推論
Scala is 何
 JVMで動く系言語
 強い静的型付き言語
 型推論
 オブジェクト指向言語(だと個人的には思う)
Scala is 何
 JVMで動く系言語
 強い静的型付き言語
 型推論
 オブジェクト指向言語(だと個人的には思う)
 ただし関数型プログラミングスタイルを実施し
やすいように作ってある
Scala is 何
 JVMで動く系言語
 強い静的型付き言語
 型推論
 オブジェクト指向言語(だと個人的には思う)
 ただし関数型プログラミングスタイルを実施し
やすいように作ってある
 javaの資産を使える
Scala is 何
OS
Java
コンパイラ
Scala
コンパイラ
コンパイル コンパイル
実行
ネイティブコード
Scala is 何
OS
Java
コンパイラ
Scala
コンパイラ
コンパイル コンパイル
実行
ネイティブコード
これ
Try to use
使ってみよう
使ってみよう
 Scalaが動く環境を作るには
Play Frameworkをインスコするのが楽
使ってみよう
 Scalaが動く環境を作るには
Play Frameworkをインスコするのが楽
 Scalaが動く環境を作るには
“Play Framework”をインスコ
使ってみよう
 Scalaが動く環境を作るには
Play Frameworkをインスコするのが楽
 Scalaが動く環境を作るには
“Play Framework”をインスコ
 大事なことなので2回
使ってみよう
 Scalaが動く環境を作るには
Play Frameworkをインスコするのが楽
 Scalaが動く環境を作るには
“Play Framework”をインスコ
 大事なことなので2回
 インスコしてプロジェクト作ってREPL起動
使ってみよう
 Scalaが動く環境を作るには
Play Frameworkをインスコするのが楽
 Scalaが動く環境を作るには
“Play Framework”をインスコ
 大事なことなので2回
 インスコしてプロジェクト作ってREPL起動
 参考ページ
 Scalaの壁をぶち壊せ!"壁パン1発目”~導入編
使ってみよう
実際にインスコしてみる
使ってみよう
 型推論
 静的型付き言語の型宣言のだるさ
使ってみよう
 型推論
 静的型付き言語の型宣言のだるさ
 Scalaには型推論があります
使ってみよう
 型推論
 静的型付き言語の型宣言のだるさ
 Scalaには型推論があります
 変数の型宣言は必須ではありません
使ってみよう
 型推論
 静的型付き言語の型宣言のだるさ
 Scalaには型推論があります
 変数の型宣言は必須ではありません
 が、型はコンパイル時に静的に決定されます
使ってみよう
 型推論
 静的型付き言語の型宣言のだるさ
 Scalaには型推論があります
 変数の型宣言は必須ではありません
 が、型はコンパイル時に静的に決定されます
 コンパイラが型を推論してくれます
使ってみよう
 型推論
 静的型付き言語の型宣言のだるさ
 Scalaには型推論があります
 変数の型宣言は必須ではありません
 が、型はコンパイル時に静的に決定されます
 コンパイラが型を推論してくれます
 だるさを克服しつつ型システムによる強力なサポー
トを受けられる!
使ってみよう
 型推論
 静的型付き言語の型宣言のだるさ
 Scalaには型推論があります
 変数の型宣言は必須ではありません
 が、型はコンパイル時に静的に決定されます
 コンパイラが型を推論してくれます
 だるさを克服しつつ型システムによる強力なサポー
トを受けられる!
 やってみます
使ってみよう
 パターンマッチ
 if文とswitch文の超すごい版みたいなの
使ってみよう
 パターンマッチ
 if文とswitch文の超すごい版みたいなの
 値、型、ifによる条件指定でマッチングできる
使ってみよう
 パターンマッチ
 if文とswitch文の超すごい版みたいなの
 値、型、ifによる条件指定でマッチングできる
 一時変数への束縛
使ってみよう
 パターンマッチ
 if文とswitch文の超すごい版みたいなの
 値、型、ifによる条件指定でマッチングできる
 一時変数への束縛
 Caseクラスで使うと型マッチとプロパティの変数へ
の束縛が両方使えて鼻血出るレベルで便利
使ってみよう
 パターンマッチ
 if文とswitch文の超すごい版みたいなの
 値、型、ifによる条件指定でマッチングできる
 一時変数への束縛
 Caseクラスで使うと型マッチとプロパティの変数へ
の束縛が両方使えて鼻血出るレベルで便利
 ちなみに文じゃなくて式なので値を返します
使ってみよう
 パターンマッチ
 if文とswitch文の超すごい版みたいなの
 値、型、ifによる条件指定でマッチングできる
 一時変数への束縛
 Caseクラスで使うと型マッチとプロパティの変数へ
の束縛が両方使えて鼻血出るレベルで便利
 ちなみに文じゃなくて式なので値を返します
 返される値の型もちゃんと推論されます
使ってみよう
 パターンマッチ
 if文とswitch文の超すごい版みたいなの
 値、型、ifによる条件指定でマッチングできる
 一時変数への束縛
 Caseクラスで使うと型マッチとプロパティの変数へ
の束縛が両方使えて鼻血出るレベルで便利
 ちなみに文じゃなくて式なので値を返します
 返される値の型もちゃんと推論されます
 やってみます
使ってみよう
 Option[A]
 それは、ぬるぽを殺すシステム
使ってみよう
 Option[A]
 それは、ぬるぽを殺すシステム
 ■━⊂( ・∀・) 彡 ガッ☆`Д´)ノ
使ってみよう
 Option[A]
 それは、ぬるぽを殺すシステム
 ■━⊂( ・∀・) 彡 ガッ☆`Д´)ノ
 「存在しないかもしれない値」を表す型
使ってみよう
 Option[A]
 それは、ぬるぽを殺すシステム
 ■━⊂( ・∀・) 彡 ガッ☆`Д´)ノ
 「存在しないかもしれない値」を表す型
 サブクラスはNoneとSome[A]のみ存在
 None: 「値がない」を表す型
 Some[A]: 「A型の値がある」を表す型
使ってみよう
 Option[A]
 それは、ぬるぽを殺すシステム
 ■━⊂( ・∀・) 彡 ガッ☆`Д´)ノ
 「存在しないかもしれない値」を表す型
 サブクラスはNoneとSome[A]のみ存在
 None: 「値がない」を表す型
 Some[A]: 「A型の値がある」を表す型
 パターンマッチを使うとぬるぽを華麗に回避できる
 map()やflatMap()を使うと更に華麗に回避できるけど割愛
使ってみよう
 Option[A]
 それは、ぬるぽを殺すシステム
 ■━⊂( ・∀・) 彡 ガッ☆`Д´)ノ
 「存在しないかもしれない値」を表す型
 サブクラスはNoneとSome[A]のみ存在
 None: 「値がない」を表す型
 Some[A]: 「A型の値がある」を表す型
 パターンマッチを使うとぬるぽを華麗に回避できる
 map()やflatMap()を使うと更に華麗に回避できるけど割愛
 やってみます
使ってみよう
 Option[A]
 それは、ぬるぽを殺すシステム
 ■━⊂( ・∀・) 彡 ガッ☆`Д´)ノ
 「存在しないかもしれない値」を表す型
 サブクラスはNoneとSome[A]のみ存在
 None: 「値がない」を表す型
 Some[A]: 「A型の値がある」を表す型
 パターンマッチを使うとぬるぽを華麗に回避できる
 map()やflatMap()を使うと更に華麗に回避できるけど割愛
 やってみます
Conclusion
まとめ
まとめ
 関数型プログラミングとか
まとめ
 モナドとか
まとめ
_人人人人人人人人_
> 全然分からん <
 ̄Y^Y^Y^Y^Y^Y^Y ̄
まとめ
けど、分からんでも使えるらしいし
便利な機能ついてるっぽいし
javaの資産(ライブラリとか)も使えるし
※手続き型でも普通に書けます
まとめ
…Scala、始めてみようかな?
まとめ
始めましょう!
まとめ
で、僕に教えて下さい
まとめ
おわり

関数型もモナドも分からなくてもScalaと言う言語は便利らしい