SlideShare ist ein Scribd-Unternehmen logo
1 von 48
関数型もモナドも分からなくても
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、始めてみようかな?
まとめ
始めましょう!
まとめ
で、僕に教えて下さい
まとめ
おわり

Weitere ähnliche Inhalte

Was ist angesagt?

元インフラエンジニアが
Scalaを触ってつまづいたところ。
元インフラエンジニアが
Scalaを触ってつまづいたところ。元インフラエンジニアが
Scalaを触ってつまづいたところ。
元インフラエンジニアが
Scalaを触ってつまづいたところ。
takako onoue
 

Was ist angesagt? (20)

Dark vol4 for_slideshare
Dark vol4 for_slideshareDark vol4 for_slideshare
Dark vol4 for_slideshare
 
ScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったでScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったで
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
 
Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
 
Scala is-unscared
Scala is-unscaredScala is-unscared
Scala is-unscared
 
こわくないScala
こわくないScalaこわくないScala
こわくないScala
 
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
 
Akka と Typeの話
Akka と Typeの話Akka と Typeの話
Akka と Typeの話
 
Developing an Akka Edge6
Developing an Akka Edge6Developing an Akka Edge6
Developing an Akka Edge6
 
Scala入門
Scala入門Scala入門
Scala入門
 
元インフラエンジニアが
Scalaを触ってつまづいたところ。
元インフラエンジニアが
Scalaを触ってつまづいたところ。元インフラエンジニアが
Scalaを触ってつまづいたところ。
元インフラエンジニアが
Scalaを触ってつまづいたところ。
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
 
Elixirでslackのbotを作った話
Elixirでslackのbotを作った話Elixirでslackのbotを作った話
Elixirでslackのbotを作った話
 
とりあえず使えるSBT
とりあえず使えるSBTとりあえず使えるSBT
とりあえず使えるSBT
 
Rxjavaとoptionalで関数型androidしよう
Rxjavaとoptionalで関数型androidしようRxjavaとoptionalで関数型androidしよう
Rxjavaとoptionalで関数型androidしよう
 
Developing an Akka Edge4-5
Developing an Akka Edge4-5Developing an Akka Edge4-5
Developing an Akka Edge4-5
 
Developing an Akka Edge1-3
Developing an Akka Edge1-3Developing an Akka Edge1-3
Developing an Akka Edge1-3
 
iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門
 
Contributing to Scala OSS from East Asia #ScalaMatsuri
 Contributing to Scala OSS from East Asia #ScalaMatsuri Contributing to Scala OSS from East Asia #ScalaMatsuri
Contributing to Scala OSS from East Asia #ScalaMatsuri
 

Andere mochten auch

Cしゃーぷができるまで
CしゃーぷができるまでCしゃーぷができるまで
Cしゃーぷができるまで
信之 岩永
 
オブジェクト指向やめましょう
オブジェクト指向やめましょうオブジェクト指向やめましょう
オブジェクト指向やめましょう
なおき きしだ
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
 

Andere mochten auch (9)

C#アプリの作り方入門
C#アプリの作り方入門C#アプリの作り方入門
C#アプリの作り方入門
 
設計してますか?
設計してますか?設計してますか?
設計してますか?
 
コードレビューのススメ
コードレビューのススメコードレビューのススメ
コードレビューのススメ
 
Cしゃーぷができるまで
CしゃーぷができるまでCしゃーぷができるまで
Cしゃーぷができるまで
 
オブジェクト指向やめましょう
オブジェクト指向やめましょうオブジェクト指向やめましょう
オブジェクト指向やめましょう
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 

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

Play frameworkについて
Play frameworkについてPlay frameworkについて
Play frameworkについて
Shinobu Okano
 
Scala界隈の近況
Scala界隈の近況Scala界隈の近況
Scala界隈の近況
takezoe
 
第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料
tantack
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]
Ra Zon
 
Scala.jsはじめました!
Scala.jsはじめました!Scala.jsはじめました!
Scala.jsはじめました!
K Kinzal
 
JVMの中身を可視化してみた
JVMの中身を可視化してみたJVMの中身を可視化してみた
JVMの中身を可視化してみた
Kengo Toda
 

Ähnlich wie 関数型もモナドも分からなくてもScalaと言う言語は便利らしい (20)

Scalaノススメ
ScalaノススメScalaノススメ
Scalaノススメ
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみて
 
Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning Tips
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
 
Play frameworkについて
Play frameworkについてPlay frameworkについて
Play frameworkについて
 
Scala界隈の近況
Scala界隈の近況Scala界隈の近況
Scala界隈の近況
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
 
第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]
 
Ruby使いのためのScalaのススメ
Ruby使いのためのScalaのススメRuby使いのためのScalaのススメ
Ruby使いのためのScalaのススメ
 
JavaWorld Day 2009 Scala
JavaWorld Day 2009 ScalaJavaWorld Day 2009 Scala
JavaWorld Day 2009 Scala
 
Scala.jsはじめました!
Scala.jsはじめました!Scala.jsはじめました!
Scala.jsはじめました!
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scala
 
Next Language Scala
Next Language ScalaNext Language Scala
Next Language Scala
 
JVMの中身を可視化してみた
JVMの中身を可視化してみたJVMの中身を可視化してみた
JVMの中身を可視化してみた
 
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -
 
Groovyコンファレンス
GroovyコンファレンスGroovyコンファレンス
Groovyコンファレンス
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
名古屋Scala勉強会のご紹介@OSC2010名古屋
名古屋Scala勉強会のご紹介@OSC2010名古屋名古屋Scala勉強会のご紹介@OSC2010名古屋
名古屋Scala勉強会のご紹介@OSC2010名古屋
 
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
 

Mehr von ke-m kamekoopa (15)

Kvwatcher
KvwatcherKvwatcher
Kvwatcher
 
PyKon JP 2014
PyKon JP 2014PyKon JP 2014
PyKon JP 2014
 
Scala.js
Scala.jsScala.js
Scala.js
 
SQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーSQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリー
 
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークSQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォーク
 
Interlli jとplayとjavaとscala
Interlli jとplayとjavaとscalaInterlli jとplayとjavaとscala
Interlli jとplayとjavaとscala
 
デプロイツールFabric
デプロイツールFabricデプロイツールFabric
デプロイツールFabric
 
Playで作るwebsocketサーバ
Playで作るwebsocketサーバPlayで作るwebsocketサーバ
Playで作るwebsocketサーバ
 
ぎっとの「ぎ」
ぎっとの「ぎ」ぎっとの「ぎ」
ぎっとの「ぎ」
 
# Rabbitサンプル
# Rabbitサンプル# Rabbitサンプル
# Rabbitサンプル
 
デプロイメントパイプラインって何?
デプロイメントパイプラインって何?デプロイメントパイプラインって何?
デプロイメントパイプラインって何?
 
継続的にデリバリーって何?
継続的にデリバリーって何?継続的にデリバリーって何?
継続的にデリバリーって何?
 
Play frameworkをエヴァンジェる
Play frameworkをエヴァンジェるPlay frameworkをエヴァンジェる
Play frameworkをエヴァンジェる
 
Php5.4
Php5.4Php5.4
Php5.4
 
Test
TestTest
Test
 

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