Scalaで萌える関数型プログラミング [エッセンシャル版]
今から話す人の           ざっくりとした説明●   角田裕樹(すみだゆうき)●   Hatena / id:razon●   Twitter / @razon●   ×ラゾン ○レゾン ◎しゾン●   天領倉敷Scalaの言いだしっぺ...
これからお話しすること●   Scalaってなんぞ●   関数型プログラミングってなんぞ●   天領倉敷Scalaって何?●   Scala勉強するのにどうすればいいのさ●   Excel方眼紙爆発しろ        以上をざっくりと解説します...
Scalaってなんぞ?
Scalaってなんぞ?●   スイス連邦工科大学(EPFL)のMartin Odersky    が設計したプログラム言語●   JVM上で動作する    (コンパイルするとJavaのバイトコードになる)    ※更新は止まっているが.NET向...
Scalaってなんぞ?●   JVM上で動くと何が嬉しいのん?    →Javaとの相互利用が可能     →Javaの資源(ライブラリ・FW・ミドル)      がそのまま利用可能      ・JDBCドライバ     ・Servlet/Ja...
Scalaってなんぞ?●   ちゃんとした所で使われてんの?    →使われてます!
Scalaってなんぞ?●   ちゃんとした所で使われてんの?    →使われてます!
関数型プログラミング  ってなんぞ?
関数型プログラミングってなんぞ?●   元々はラムダ計算の概念をプログラミング言    語として体現したもの    →理論計算機科学や数理論理学における、     関数の定義と実行を抽象化した計算体系●   ご先祖様はLISP●   関数がファ...
関数型プログラミングってなんぞ?●   で、何がうれしいのん?●   関数型言語といえば、コレクションの操作!scala> val list = 1 :: 5 :: 2 :: 3 :: 4 :: Nillist: List[Int] = Lis...
関数型プログラミングってなんぞ?●   入力に対し、関数をチェーンすることで    出力形式に変換していくscala> list.filter(_ % 2 == 0).map(_ * 2).reduceLeft(_ + _)res4: Int ...
関数型プログラミングってなんぞ?●   入力に対し、関数をチェーンすることで    出力形式に変換していくscala> list.filter(_ % 2 == 0).map(_ * 2).reduceLeft(_ + _)res4: Int ...
関数型プログラミングってなんぞ?●   その他の特徴●   イミュータブル!    →作成後にその状態を変えることができない●   えっそれ不便じゃね…?    →覚えがありませんか?    →どこかのタイミングでここの変数の値が     おか...
関数型プログラミングってなんぞ?●   イミュータブルの副次的な恩恵●   テストがらくちんになる    (状態を考慮したテストをする必要が     なくなる)●   並列処理がらくちんになる    状態を持たなければ、スレッドの同期や    ...
関数型プログラミングってなんぞ?●   その他、関数型言語ならではのステキ文化が    山ほどある    →カリー化、部分適用    →クロージャ    →パターンマッチ    →遅延評価、無限リスト●   時間がないので今回は割愛します
天領倉敷Scala って何?
天領倉敷Scalaって何?●   岡山県倉敷市周辺でScalaの勉強会を行う    コミュニティ●   「天領」…江戸時代における幕府の直轄領    倉敷市民がことあるごとに持ち上げる単語    →正直ウンザリする    →皮肉を込めた(天領倉...
Scala勉強するのにどうしたらいいのさ
Scala勉強するのに         どうしたらいいのさ    書籍●   Scalaスケーラブルプログラミング    [コンセプト&コーディング]●   通称コップ本●   聖典(Oderskyの著書)●   キッチリ書いてある分難しい● ...
Scala勉強するのに           どうしたらいいのさ    書籍●    Scalaプログラミング入門●   Lift Frameworkの中の人    David Pollakの著書●   天領倉敷Scalaではこの本を    ベー...
Scala勉強するのに          どうしたらいいのさ    書籍●   プログラミングScala●   通称バク本●   Twitter APIのリードプログラマーが    書いてる●   二冊目の本としてオススメの声多し
Scala勉強するのに         どうしたらいいのさ    書籍●    Scala実践プログラミング●   日本のScala界の巨匠が結集して    書かれた本●   新しい(先月出ました)●   和書なので読みやすい●   初心者向け...
Scala勉強するのに         どうしたらいいのさ    フォローするべきScalaスーパーエンジニア●   @kmizu    Scalaエバンジェリストといえばこの人    ScalaDaysという世界のScala祭りで発表する  ...
Scala勉強するのに             どうしたらいいのさ    フォローするべきScalaスーパーエンジニア●   @keisuke_n    日本のScala祭り「Scala座」第一回主催    WebFlavorというScalaフ...
あと最後に●   7/17(日)のオープンラボ備後にて、    今回のLTの完全版やります!●   何か1時間くらい割り当てられちゃってるん    ですけど…●   という訳で興味があったら来てね!
あと最後に●   魔法少女Scalaちゃん(@scalachan)を    今すぐフォロー!
Excel方眼紙 爆発しろ!
あと最後に●   間違えた     一緒にScala     やろうぜ!
Scalaで萌える関数型プログラミング[エッセンシャル版]
Upcoming SlideShare
Loading in …5
×

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

4,064 views

Published on

Excel方眼紙爆発しろ!

Published in: Technology, News & Politics
  • Be the first to comment

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

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

×