SlideShare a Scribd company logo
Scalaで萌える
関数型プログラミング
 [エッセンシャル版]
今から話す人の
           ざっくりとした説明
●   角田裕樹(すみだゆうき)
●   Hatena / id:razon
●   Twitter / @razon
●   ×ラゾン ○レゾン ◎しゾン
●   天領倉敷Scalaの言いだしっぺ
●   本業は Excel方眼紙er Javaプログラマ
これからお話しすること
●   Scalaってなんぞ
●   関数型プログラミングってなんぞ
●   天領倉敷Scalaって何?
●   Scala勉強するのにどうすればいいのさ
●   Excel方眼紙爆発しろ
        以上をざっくりと解説します
         [エッセンシャル版]なので
Scalaってなんぞ?
Scalaってなんぞ?
●   スイス連邦工科大学(EPFL)のMartin Odersky
    が設計したプログラム言語
●   JVM上で動作する
    (コンパイルするとJavaのバイトコードになる)
    ※更新は止まっているが.NET向け実装
     (scala-msil)もあり
●   オブジェクト指向と関数型のハイブリッド
●   関数と言ってもExcel方眼紙ではない
Scalaってなんぞ?
●   JVM上で動くと何が嬉しいのん?
    →Javaとの相互利用が可能
     →Javaの資源(ライブラリ・FW・ミドル)
      がそのまま利用可能
      ・JDBCドライバ



     ・Servlet/JavaEEコンテナ



     ・などなど…
Scalaってなんぞ?
●   ちゃんとした所で使われてんの?
    →使われてます!
Scalaってなんぞ?
●   ちゃんとした所で使われてんの?
    →使われてます!
関数型プログラミング
  ってなんぞ?
関数型プログラミングってなんぞ?
●   元々はラムダ計算の概念をプログラミング言
    語として体現したもの
    →理論計算機科学や数理論理学における、
     関数の定義と実行を抽象化した計算体系
●   ご先祖様はLISP
●   関数がファーストオブジェクト
    →関数を変数に格納できる
    →関数を引数の値として指定できる
    →関数を戻り値として指定できる
●   =高階関数!
関数型プログラミングってなんぞ?
●   で、何がうれしいのん?
●   関数型言語といえば、コレクションの操作!
scala> val list = 1 :: 5 :: 2 :: 3 :: 4 :: Nil
list: List[Int] = List(1, 5, 2, 3, 4)

scala> list.filter(_ % 2 == 0)
res0: List[Int] = List(2, 4)

scala> list.sortWith(_ < _)
res1: List[Int] = List(1, 2, 3, 4, 5)

scala> list.map(_ * 2)
res2: List[Int] = List(2, 10, 4, 6, 8)

scala> list.reduceLeft(_ + _)
res3: Int = 15
関数型プログラミングってなんぞ?
●   入力に対し、関数をチェーンすることで
    出力形式に変換していく
scala> list.filter(_ % 2 == 0).map(_ * 2).reduceLeft(_ + _)
res4: Int = 12
関数型プログラミングってなんぞ?
●   入力に対し、関数をチェーンすることで
    出力形式に変換していく
scala> list.filter(_ % 2 == 0).map(_ * 2).reduceLeft(_ + _)
res4: Int = 12

●   手続き型っぽい処理と比べると…
var sum = 0
for (i <- list) {
  if (i % 2 == 0) {
    sum += i * 2
  }
}
関数型プログラミングってなんぞ?
●   その他の特徴
●   イミュータブル!
    →作成後にその状態を変えることができない
●   えっそれ不便じゃね…?
    →覚えがありませんか?
    →どこかのタイミングでここの変数の値が
     おかしくなってエラーが出る
    →その変数(状態)が変わる(ことができる)のが悪い
●   関数型らしいコードを書くことで、
    変化する状態を最小限にすることができる
    (純粋関数型言語のHaskellなどは
     そもそも再定義可能な変数がない)
関数型プログラミングってなんぞ?
●   イミュータブルの副次的な恩恵
●   テストがらくちんになる
    (状態を考慮したテストをする必要が
     なくなる)
●   並列処理がらくちんになる
    状態を持たなければ、スレッドの同期や
    ロックなどを考慮する必要がなくなる
    →Scalaでは状態を持つ場合でも比較的簡単に並列処理を
     行うためのActorライブラリというものもあります
関数型プログラミングってなんぞ?
●   その他、関数型言語ならではのステキ文化が
    山ほどある
    →カリー化、部分適用
    →クロージャ
    →パターンマッチ
    →遅延評価、無限リスト
●   時間がないので今回は割愛します
Scalaで萌える関数型プログラミング[エッセンシャル版]
天領倉敷Scala
 って何?
天領倉敷Scalaって何?
●   岡山県倉敷市周辺でScalaの勉強会を行う
    コミュニティ
●   「天領」…江戸時代における幕府の直轄領
    倉敷市民がことあるごとに持ち上げる単語
    →正直ウンザリする
    →皮肉を込めた(天領倉敷(笑))
●   ハッシュタグは「#tkscala」
    岡山県内の勉強会コミュニティでも異彩を放つTL
    として一部で悪名高い
●   次回は8/20(土)でーす
Scala勉強するのに
どうしたらいいのさ
Scala勉強するのに
         どうしたらいいのさ
    書籍
●   Scalaスケーラブルプログラミング
    [コンセプト&コーディング]
●   通称コップ本
●   聖典(Oderskyの著書)
●   キッチリ書いてある分難しい
●   あと高い(5k近くする)
●   が、買う価値はあり
Scala勉強するのに
           どうしたらいいのさ
    書籍
●
    Scalaプログラミング入門
●   Lift Frameworkの中の人
    David Pollakの著書
●   天領倉敷Scalaではこの本を
    ベースに学習しています
●   コップ本よりは読みやすい
Scala勉強するのに
          どうしたらいいのさ
    書籍
●   プログラミングScala
●   通称バク本
●   Twitter APIのリードプログラマーが
    書いてる
●   二冊目の本としてオススメの声多し
Scala勉強するのに
         どうしたらいいのさ
    書籍
●
    Scala実践プログラミング
●   日本のScala界の巨匠が結集して
    書かれた本
●   新しい(先月出ました)
●   和書なので読みやすい
●   初心者向けはコレが鉄板かと
●   上級者からは「物足りない」の声あり
●   ただし、他の本で触れられていない部分
    についての解説あり
    (デザパタ・限定継続など…)
Scala勉強するのに
         どうしたらいいのさ
    フォローするべきScalaスーパーエンジニア
●   @kmizu
    Scalaエバンジェリストといえばこの人
    ScalaDaysという世界のScala祭りで発表する
    (もち英語で)スペックの持ち主
    Scala絡みとなるとMatzにも噛み付く猛者
●   @yuroyoro
    日本Scala界のスーパースター
    が、前述の本の評判が響いてScalaから遠ざかり中…
    最近ではほむほむ言語の中の人として脚光を浴びる
●   @xuwei_k
    多分ここ最近では日本で一番Scalaについてのブログ記事を
    書いてる人
Scala勉強するのに
             どうしたらいいのさ
    フォローするべきScalaスーパーエンジニア
●   @keisuke_n
    日本のScala祭り「Scala座」第一回主催
    WebFlavorというScalaフレームワークの作者でもある
    大都会岡山クラスタ
    天領倉敷Scalaにも何度か来ていただきました
●   @a_hisame, @asami224, @bleis, @cooldaemon, @cpp_akira,
    @halcat0x15a, @hito_asa, @j5ik2o, @kaigaiengineer,
    @katzchang, @keigoi, @maeda_, @maiha, @mumoshu, @mzp,
    @NetPenguin, @nosen, @nouvellelune, @osiire, @papamitra,
    @PG_kura, @pomu0325, @rf0444, @RKTM, @ryugate,
    @ScalaTohoku, @shomah4a, @takedasoft, @terurou,
    @yasushia, @ymnk, @yoshihiro503
あと最後に
●   7/17(日)のオープンラボ備後にて、
    今回のLTの完全版やります!
●   何か1時間くらい割り当てられちゃってるん
    ですけど…
●   という訳で興味があったら来てね!
あと最後に
●   魔法少女Scalaちゃん(@scalachan)を
    今すぐフォロー!
Excel方眼紙
 爆発しろ!
あと最後に
●   間違えた


     一緒にScala
     やろうぜ!

More Related Content

PDF
Scala勉強会_2014_11_18
PDF
頑張りすぎないScala
KEY
Scalaはじめました!
PDF
【ScalaMatsuri2016】関西のScalaコミュニティ紹介
PDF
[Scalamatsuri2016]あ、社内コミュニティ
PDF
Contributing to Scala OSS from East Asia #ScalaMatsuri
PDF
こわくないScala
PDF
Scala.js触ってみた
Scala勉強会_2014_11_18
頑張りすぎないScala
Scalaはじめました!
【ScalaMatsuri2016】関西のScalaコミュニティ紹介
[Scalamatsuri2016]あ、社内コミュニティ
Contributing to Scala OSS from East Asia #ScalaMatsuri
こわくないScala
Scala.js触ってみた

What's hot (20)

PDF
Scalalr
PDF
ScalaでBacklogの通知bot作ったで
PDF
関西Java女子部とScala関西勉強会のご紹介
PDF
Dark vol4 for_slideshare
PDF
関数型もモナドも分からなくてもScalaと言う言語は便利らしい
PDF
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
PDF
日本Scalaユーザーズグループ発足
PPTX
Sql world とは
PDF
Scala基礎勉強会 懇親会LT
PDF
Scalaと過ごした5ヶ月間
PDF
PDF
リモートワークはじめたら前より良くなった!?
PPTX
Sql world とは
PDF
2010/11/16 WebプログラマのためのScala入門勉強会@渋谷
PPTX
Scala戦士を増やせ
PDF
20150207 何故scalaを選んだのか
PDF
Railsバージョンアップを 段階的に行うために Rails3/4並行稼動させる仕組み を作ってる話
PPTX
Sql world とは
PDF
なぜ、いまリレーショナルモデルなのか
PDF
20141202 jaws ug
Scalalr
ScalaでBacklogの通知bot作ったで
関西Java女子部とScala関西勉強会のご紹介
Dark vol4 for_slideshare
関数型もモナドも分からなくてもScalaと言う言語は便利らしい
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
日本Scalaユーザーズグループ発足
Sql world とは
Scala基礎勉強会 懇親会LT
Scalaと過ごした5ヶ月間
リモートワークはじめたら前より良くなった!?
Sql world とは
2010/11/16 WebプログラマのためのScala入門勉強会@渋谷
Scala戦士を増やせ
20150207 何故scalaを選んだのか
Railsバージョンアップを 段階的に行うために Rails3/4並行稼動させる仕組み を作ってる話
Sql world とは
なぜ、いまリレーショナルモデルなのか
20141202 jaws ug
Ad

Viewers also liked (17)

PDF
Presentació ICE UAB - Billy Elliot
PDF
Workshop wet braking
PPTX
Mapa sonor
PDF
Teorias de conjunto
PDF
Scalaで萌える関数型プログラミング[1.1.RC1]
PPSX
Labg social
PDF
Lbm2005 122-bab%204
PDF
Don't Turn Your Back on Bullying
PDF
Operaciones con números naturales
PDF
Dekra tread wear methodology and results
PDF
Transparent proxy
PDF
ประวัติยิมนาสติก
PDF
Scalaで萌える関数型プログラミング[完全版]
PDF
Makalah pengauditan siklus pendanaan/pembelanjaan
PDF
54414198 tutorial-pv-elite-2005 2
PPT
6 outpatient department
PDF
磯野ー!関数型言語やろうぜー!
Presentació ICE UAB - Billy Elliot
Workshop wet braking
Mapa sonor
Teorias de conjunto
Scalaで萌える関数型プログラミング[1.1.RC1]
Labg social
Lbm2005 122-bab%204
Don't Turn Your Back on Bullying
Operaciones con números naturales
Dekra tread wear methodology and results
Transparent proxy
ประวัติยิมนาสติก
Scalaで萌える関数型プログラミング[完全版]
Makalah pengauditan siklus pendanaan/pembelanjaan
54414198 tutorial-pv-elite-2005 2
6 outpatient department
磯野ー!関数型言語やろうぜー!
Ad

Similar to Scalaで萌える関数型プログラミング[エッセンシャル版] (20)

KEY
Beginners Scala in FAN 20121009
PPTX
Scala勉強会
PDF
こわくないScala
PDF
Scala is-unscared
PDF
本当に怖くないScala
PPT
Scala Daysに行ってみて
PPTX
Scala勉強会 初心者向けハンズオン前編
PPTX
ゼロから始めるScala文法 (再)
PDF
関数型言語テイスティング: Haskell, Scala, Clojure, Elixirを比べて味わう関数型プログラミングの旨さ
PDF
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
PDF
Scala超入門 - 2014/12/13 Scala関西勉強会
PDF
Scala入門
PDF
Object-Funcational Analysis and design
PDF
Scalaでのプログラム開発
PPTX
Scalaで学ぶ関数型言語超入門
PDF
プログラミング言語Scala
PPTX
Scalaで学ぶ関数型言語超入門
PDF
From Scala/Clojure to Kotlin
PPTX
Scalatronで楽しく学ぶ関数型プログラミング
PDF
Scalaを遊ぶ!会 参加者募集のおしらせ。
Beginners Scala in FAN 20121009
Scala勉強会
こわくないScala
Scala is-unscared
本当に怖くないScala
Scala Daysに行ってみて
Scala勉強会 初心者向けハンズオン前編
ゼロから始めるScala文法 (再)
関数型言語テイスティング: Haskell, Scala, Clojure, Elixirを比べて味わう関数型プログラミングの旨さ
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
Scala超入門 - 2014/12/13 Scala関西勉強会
Scala入門
Object-Funcational Analysis and design
Scalaでのプログラム開発
Scalaで学ぶ関数型言語超入門
プログラミング言語Scala
Scalaで学ぶ関数型言語超入門
From Scala/Clojure to Kotlin
Scalatronで楽しく学ぶ関数型プログラミング
Scalaを遊ぶ!会 参加者募集のおしらせ。

Scalaで萌える関数型プログラミング[エッセンシャル版]

  • 2. 今から話す人の ざっくりとした説明 ● 角田裕樹(すみだゆうき) ● Hatena / id:razon ● Twitter / @razon ● ×ラゾン ○レゾン ◎しゾン ● 天領倉敷Scalaの言いだしっぺ ● 本業は Excel方眼紙er Javaプログラマ
  • 3. これからお話しすること ● Scalaってなんぞ ● 関数型プログラミングってなんぞ ● 天領倉敷Scalaって何? ● Scala勉強するのにどうすればいいのさ ● Excel方眼紙爆発しろ 以上をざっくりと解説します [エッセンシャル版]なので
  • 5. Scalaってなんぞ? ● スイス連邦工科大学(EPFL)のMartin Odersky が設計したプログラム言語 ● JVM上で動作する (コンパイルするとJavaのバイトコードになる) ※更新は止まっているが.NET向け実装 (scala-msil)もあり ● オブジェクト指向と関数型のハイブリッド ● 関数と言ってもExcel方眼紙ではない
  • 6. Scalaってなんぞ? ● JVM上で動くと何が嬉しいのん? →Javaとの相互利用が可能 →Javaの資源(ライブラリ・FW・ミドル) がそのまま利用可能 ・JDBCドライバ ・Servlet/JavaEEコンテナ ・などなど…
  • 7. Scalaってなんぞ? ● ちゃんとした所で使われてんの? →使われてます!
  • 8. Scalaってなんぞ? ● ちゃんとした所で使われてんの? →使われてます!
  • 10. 関数型プログラミングってなんぞ? ● 元々はラムダ計算の概念をプログラミング言 語として体現したもの →理論計算機科学や数理論理学における、 関数の定義と実行を抽象化した計算体系 ● ご先祖様はLISP ● 関数がファーストオブジェクト →関数を変数に格納できる →関数を引数の値として指定できる →関数を戻り値として指定できる ● =高階関数!
  • 11. 関数型プログラミングってなんぞ? ● で、何がうれしいのん? ● 関数型言語といえば、コレクションの操作! scala> val list = 1 :: 5 :: 2 :: 3 :: 4 :: Nil list: List[Int] = List(1, 5, 2, 3, 4) scala> list.filter(_ % 2 == 0) res0: List[Int] = List(2, 4) scala> list.sortWith(_ < _) res1: List[Int] = List(1, 2, 3, 4, 5) scala> list.map(_ * 2) res2: List[Int] = List(2, 10, 4, 6, 8) scala> list.reduceLeft(_ + _) res3: Int = 15
  • 12. 関数型プログラミングってなんぞ? ● 入力に対し、関数をチェーンすることで 出力形式に変換していく scala> list.filter(_ % 2 == 0).map(_ * 2).reduceLeft(_ + _) res4: Int = 12
  • 13. 関数型プログラミングってなんぞ? ● 入力に対し、関数をチェーンすることで 出力形式に変換していく scala> list.filter(_ % 2 == 0).map(_ * 2).reduceLeft(_ + _) res4: Int = 12 ● 手続き型っぽい処理と比べると… var sum = 0 for (i <- list) { if (i % 2 == 0) { sum += i * 2 } }
  • 14. 関数型プログラミングってなんぞ? ● その他の特徴 ● イミュータブル! →作成後にその状態を変えることができない ● えっそれ不便じゃね…? →覚えがありませんか? →どこかのタイミングでここの変数の値が おかしくなってエラーが出る →その変数(状態)が変わる(ことができる)のが悪い ● 関数型らしいコードを書くことで、 変化する状態を最小限にすることができる (純粋関数型言語のHaskellなどは そもそも再定義可能な変数がない)
  • 15. 関数型プログラミングってなんぞ? ● イミュータブルの副次的な恩恵 ● テストがらくちんになる (状態を考慮したテストをする必要が なくなる) ● 並列処理がらくちんになる 状態を持たなければ、スレッドの同期や ロックなどを考慮する必要がなくなる →Scalaでは状態を持つ場合でも比較的簡単に並列処理を 行うためのActorライブラリというものもあります
  • 16. 関数型プログラミングってなんぞ? ● その他、関数型言語ならではのステキ文化が 山ほどある →カリー化、部分適用 →クロージャ →パターンマッチ →遅延評価、無限リスト ● 時間がないので今回は割愛します
  • 19. 天領倉敷Scalaって何? ● 岡山県倉敷市周辺でScalaの勉強会を行う コミュニティ ● 「天領」…江戸時代における幕府の直轄領 倉敷市民がことあるごとに持ち上げる単語 →正直ウンザリする →皮肉を込めた(天領倉敷(笑)) ● ハッシュタグは「#tkscala」 岡山県内の勉強会コミュニティでも異彩を放つTL として一部で悪名高い ● 次回は8/20(土)でーす
  • 21. Scala勉強するのに どうしたらいいのさ 書籍 ● Scalaスケーラブルプログラミング [コンセプト&コーディング] ● 通称コップ本 ● 聖典(Oderskyの著書) ● キッチリ書いてある分難しい ● あと高い(5k近くする) ● が、買う価値はあり
  • 22. Scala勉強するのに どうしたらいいのさ 書籍 ● Scalaプログラミング入門 ● Lift Frameworkの中の人 David Pollakの著書 ● 天領倉敷Scalaではこの本を ベースに学習しています ● コップ本よりは読みやすい
  • 23. Scala勉強するのに どうしたらいいのさ 書籍 ● プログラミングScala ● 通称バク本 ● Twitter APIのリードプログラマーが 書いてる ● 二冊目の本としてオススメの声多し
  • 24. Scala勉強するのに どうしたらいいのさ 書籍 ● Scala実践プログラミング ● 日本のScala界の巨匠が結集して 書かれた本 ● 新しい(先月出ました) ● 和書なので読みやすい ● 初心者向けはコレが鉄板かと ● 上級者からは「物足りない」の声あり ● ただし、他の本で触れられていない部分 についての解説あり (デザパタ・限定継続など…)
  • 25. Scala勉強するのに どうしたらいいのさ フォローするべきScalaスーパーエンジニア ● @kmizu Scalaエバンジェリストといえばこの人 ScalaDaysという世界のScala祭りで発表する (もち英語で)スペックの持ち主 Scala絡みとなるとMatzにも噛み付く猛者 ● @yuroyoro 日本Scala界のスーパースター が、前述の本の評判が響いてScalaから遠ざかり中… 最近ではほむほむ言語の中の人として脚光を浴びる ● @xuwei_k 多分ここ最近では日本で一番Scalaについてのブログ記事を 書いてる人
  • 26. Scala勉強するのに どうしたらいいのさ フォローするべきScalaスーパーエンジニア ● @keisuke_n 日本のScala祭り「Scala座」第一回主催 WebFlavorというScalaフレームワークの作者でもある 大都会岡山クラスタ 天領倉敷Scalaにも何度か来ていただきました ● @a_hisame, @asami224, @bleis, @cooldaemon, @cpp_akira, @halcat0x15a, @hito_asa, @j5ik2o, @kaigaiengineer, @katzchang, @keigoi, @maeda_, @maiha, @mumoshu, @mzp, @NetPenguin, @nosen, @nouvellelune, @osiire, @papamitra, @PG_kura, @pomu0325, @rf0444, @RKTM, @ryugate, @ScalaTohoku, @shomah4a, @takedasoft, @terurou, @yasushia, @ymnk, @yoshihiro503
  • 27. あと最後に ● 7/17(日)のオープンラボ備後にて、 今回のLTの完全版やります! ● 何か1時間くらい割り当てられちゃってるん ですけど… ● という訳で興味があったら来てね!
  • 28. あと最後に ● 魔法少女Scalaちゃん(@scalachan)を 今すぐフォロー!
  • 30. あと最後に ● 間違えた 一緒にScala やろうぜ!