SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
Scalaのすゝめ
2012.9.25 前⽥田康⾏行行 (@maeda_)
株式会社Phantom Type設⽴立立記念念
⾃自⼰己紹介
¤  前⽥田康⾏行行 (@maeda_)
¤  名古屋在住のフリーランス(http://www.illi-ichi.com)
¤  好きな⾔言語
¤  Scala
¤  Smalltalk
¤  DyNagoya
¤  Dynamic Language + Nagoya
¤  http://dynagoya.info/
アジェンダ
¤  静的型付け関数型プログラミングのすばらしさ
¤  Scalaのすばらしさ
¤  Scalaを始める
静的型付け関数型プログラミングの
すばらしさ
関数型
と⾔言っても、何かよく分かりませんが、
⼀一番根底にあるのは「式指向」
と考えています。
式指向(Expression Oriented)
¤  式とは
¤  値は式
¤  関数の引数に式を渡して評価すると値になる  →  式
¤  式指向とは
¤  式を組み合わせてプログラムを作る
¤  ⼿手続き型は⽂文を順次実⾏行行する
式指向(具体例例)
¤  ⼿手続き型の場合
¤  式指向の場合
式指向(具体例例)
¤  式指向の場合
式 式 式 式
式
式
式
もうひとつ具体例例
¤  式指向でWeb Serverを考える
¤  Web Server は HTTPリクエストをHTTPレスポンスに変換する
関数
¤  関数の組み合わせ(値の変換)で、プログラムを記述する
リクエスト  →  タスク  →  結果  → レスポンス
「レガシーコード改善ガイド」から抜粋
¤  例例えば、無駄に⻑⾧長い⼿手続き型のメソッドにはseamがない
¤  式指向ならば、いろんな場所がseamになる!
¤  ⾃自然にテスタビリティ・再利利⽤用性・拡張性の優れたプログラ
ムになる
接合部
接合部  (seam)とは、その場所を直接編集しなくても、プログラ
ムの振る舞いを変えることのできる場所である  。
P.36 より
さらに型をつけると・・・
¤  型チェックされるのは、関数の引数と戻り値に対してのみ
¤  ⼿手続き型における⽂文の羅羅列列は型チェックがない
¤  式指向なら、何がそこに書けるかは型によって決まる
¤  あらゆる場所で整合性のチェックがされる
¤  コンパイルが通った時の安⼼心感が違う
型を作る
¤  例例えば、タスクは以下のものがあるとして
¤  ユーザーの登録(パラメータ:ユーザー名・年年齢)
¤  ユーザーの更更新(パラメータ:ユーザー名・年年齢)
¤  ユーザー⼀一覧の取得(パラメータなし)
¤  代数データ型(Scalaならcase class)で簡単に型が作れる
¤  残念念すぎるコードの例例
¤  flagの値の範囲や使ってはいけない変数など、規約ができている
¤  規約を守るようにプログラマが気をつける
型を分解する
¤  型はパターンマッチで分解
¤  型によって、取り出せるものが限定される
¤  ケースの網羅羅性のチェックも可能
¤  例例:case ShowAllUsers => ...の⾏行行がないとワーニングが出る
もっと型を!
¤  できるかぎり情報は型に持たせたい
¤  例例:変数の値があるか、ないか  
    値レベルで → 値がない場合は変数にnullを代⼊入
    型レベルで → Option[T]型を使う
Option[T]型を使う
¤  nullを返す場合(Option型を使わない場合)
¤  nullが返ることがあるという規約ができてしまっている
¤  nullチェックを忘れたら、実⾏行行時にヌルポ
Option[T]型を使う
¤  Option[T]を使う場合
¤  値がないかもしれないことは型をみれば分かる
¤  ヌルポはありえない!(型が合わずにコンパイルエラーになる)
Option[T]型を使う
¤  Option[T]を使う場合(パターンマッチを使わない)
¤  Option型には便便利利なメソッドがいろいろある
型はドキュメント
¤  ⾃自然⾔言語では抽象的な概念念を表すことが難しい
¤  抽象的な概念念は⼈人間にはあいまいになりがち
¤  コンピュータはあいまいでは動かない
¤  型は形式的な記述。⽭矛盾はコンパイルエラー
¤  型があれば、安⼼心して抽象的な概念念を扱える
型はドキュメント(具体例例)
¤  お題  下記の関数を書け
引数:
・キーのコレクション
・キーに対応する値に変換する関数
※ただし、キーに対応する値は⾼高々1つ
戻り値:
渡されたキーに対応する値のコレクション
¤  型を書かないで、変数名でがんばってみる
¤  型があれば、変数名は適当でも分かる
静的型付け関数型⾔言語  まとめ
¤  ここまでは静的型付け関数型の共通の話
(もちろん、⽂文法は異異なります。)
¤  基本パーツは、これだけ
¤  式
¤  型
¤  パターンマッチ
¤  柔軟 + 明瞭 + 型安全
Scalaのすばらしさ
Scala
¤  静的型付け関数型
¤  代数データ型/パターンマッチ
¤  型推論論
¤  オブジェクト指向
¤  前衛的な機能
¤  暗黙のパラメータ / 暗黙の型変換  など
¤  JVM上で動く
¤  コンパイルするとclassファイルができる
¤  ScalaからJavaのclassを使うことも、その逆も可能
充実のコレクション
- immutableとmutable -
¤  immutable(不不変)
¤  List
¤  Map
¤  Set
¤  mutable(変更更可能)
¤  ArrayBuffer
¤  ListBuffer
¤  Map
¤  Set
充実のコレクション
- 便便利利メソッドもいっぱい -
¤  お題
¤  コレクションxsの中の2要素の組み合わせ全て列列挙せよ
¤  前のページのどのコレクションでもcombinationsメソッドが
実装されている
¤  コレクションの種別ごとに実装していたら、メンテナンスが
⼤大変
充実のコレクション
- そこで継承ですよ -
¤  combinationsメソッドの実装は⼀一カ所のみ。他のメソッドも
重複する実装は最⼩小限にとどまっている
¤  コレクションの親クラスで実装されているため、⼦子クラスご
とに個別に実装する必要はない
¤  特定コレクションについて、適切切なアルゴリズムがある場合
は、オーバーライドして、個別に最適な実装をしている
¤  Traitにより、モジュールの分割や組み合わせが容易易にできる
ため、きめ細やかな階層構造が作れる
充実のコレクション
- (いい意味で)やばい多相性 -
¤  異異なる種類のコレクションの結合(++メソッド)が可能
¤  しかも、型が維持される(アップキャストされない)
¤  Option型も要素数が0か1のコレクションとして扱える。
充実のコレクション
- この多相性はOOだけでは無理理 -
¤  コレクションまわりの多相性は、暗黙のパラメータ(implicit
parameter)も活⽤用している
¤  Haskellの型クラスに対応する
¤  ⾒見見えないところで、型によってそれっぽい組み⽴立立て⽅方を選ぶ
省省略略について
- Scalaの省省略略っぷりはすごい -
¤  Scalaは省省略略のテクニックがいっぱいある
¤  暗黙のパラメータ/暗黙の型変換
¤  型推論論
¤  import
¤  その他、シンタックスシュガーなど
省省略略について
- やりすぎ注意 -
¤  省省略略しすぎると、逆に分からなくなる
¤  でも、コンテキストによって「⾔言わずもがな」は省省略略したい
¤  省省略略するには、
¤  コンテキストが明確であることが⼤大事
¤  そのコンテキストが有効なスコープが分かりやすいことが⼤大事
¤  スコープのコントロールしやすいことが⼤大事
¤  暗黙のパラメータ/暗黙の型変換はスコープの中から使える
ものを探す。これらの機能は特に強⼒力力なので、よりスコープ
の扱いが重要となる
省省略略について
- ⾔言わずもがなの例例 -
¤  Nodeクラスってなんだ?
¤  このクラスでは「⾔言わずもがな」
¤  importしたから「⾔言わずもがな」
importがすばらしい
¤  importで名前空間の省省略略が可能
¤  Scalaのimportはどこにでも書ける
¤  importがスコープを持っている
(ファイル全体/クラス内/関数内/ブロック内)
さらにimportがすばらしい
¤  オブジェクトをimportできる
¤  コンテキストを外部から注⼊入する例例
¤  モジュールとしてのオブジェクトを使う
¤  お⼿手軽 & 強⼒力力
¤  オブジェクトの⽴立立ち位置がJavaとは異異なる
¤  さらに、ScalaにはTraitがあって・・・
¤  Traitのすばらしさはこちら参照
「Javascript as an Embedded DSL – ScalaにおけるExpression
Problem の解法 -」
http://www.slideshare.net/maedaunderscore/scala-javascript-
as-an-embedded-dsl-scalaexpression-problem
Scalaについてまとめ
¤  関数型 + (クラスベースの)オブジェクト指向の世界
¤  複雑。。。
¤  頑張るのはライブラリ実装者
¤  使う側は簡単(なことが多い)
¤  話してないけど、ScalaのTraitはすごい
Scalaを始める
Scalaの学びやすさ
  = プログラミングの始めやすさ
¤  書いてみないと、使えるようにはならない
¤  Javaっぽくも書けるし、とりあえず始めれる
¤  JVMが動けば、どこでも動く
¤  Linux / Mac / Windows
¤  Google App Engine / CloudBees / Heroku
¤  Android
ライブラリも充実
¤  標準ライブラリ
¤  豊富なコレクション
¤  XML
¤  Actor
¤  Parser Combinator
¤  ツール
¤  sbt
¤  各種IDEのプラグイン
¤  オープンソースライブラリ
¤  Dispatch
¤  Scalaz
¤  shapeless
¤  Webフレームワーク
¤  Lift
¤  Play!
¤  Unfiltered
¤  Scalatra
¤  spray
¤  blueeyes
¤  finagle
¤  分散フレームワーク
¤  akka
¤  Scalaのライブラリがなくても、Javaのライブラリも使える
Scalaの企業での導⼊入実績
¤  Scalaは企業での導⼊入実績も多数あります
¤  Twitter
¤  FourSquare
¤  LinkedIn
¤  Tumblr
¤  Électricité de France Trading
¤  Novell
¤  Sony
¤  などなど...
http://www.scala-lang.org/node/1658  より抜粋
初⼼心者がScalaを学ぶ上での問題
- Scalaの開発が活発すぎる -
¤  もちろん、いいことだし、これからもそうあってほしい
¤  下記の点は注意
¤  ⾔言語仕様も発展途上(すでに実⽤用レベルだけど、進化は続く)
¤  標準ライブラリも新しいものがどんどん出てくる
¤  その他のライブラリ・フレームワークもどんどん変わる
¤  標準のビルドツールsbtもどんどん変わる
¤  マイナーバージョン変わったら、ビルドできなくなったとか当た
り前(最近、落落ち着いてきた気がする)
¤  プラグインが最新バージョンに追従してないとか当たり前
¤  ドキュメントはない
¤  ドキュメントがあっても、チュートリアル/ファーストステップ
程度度
¤  ドキュメントはあっという間に陳腐化
¤  ソースコードを読め
¤  テストコードを読め
初⼼心者がScalaを学ぶ上での問題
- 機能が多すぎる -
¤  関数型プログラミングを学ぶ上では、理理解の⾜足枷になるかも
¤  HaskellやOcamlなどで概念念を学んで、Scalaで書くのがオススメ
¤  機能が多ければ、不不具合の可能性も⾼高くなる
勉強会に⾏行行こう
¤  分かっていれば、簡単なことでも、⾃自⼒力力で調べることが難しいこ
とは、いっぱいある
¤  いわゆる関数脳の感覚的なところは本などからは習得しにくい
¤  分かっている⼈人に聞くのが⼀一番の早道
¤  名古屋の関数型勉強会
¤  なごやかScala 毎⽉月第1⾦金金曜⽇日
¤  SML#読書会  毎⽉月第2⼟土曜⽇日
¤  TAPL-nagoya 毎⽉月第3⼟土曜⽇日
¤  ProofCafe 毎⽉月第4⼟土曜⽇日
¤  その他、随時
結び
¤  Scalaはすばらしい⾔言語です。
¤  そのすばらしさを完全に享受するのは⼤大変ですが、
その苦労以上の価値があります
¤  とりあえず、できるところから始めてみましょう。

Más contenido relacionado

La actualidad más candente

Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriWhy Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriYuta Okamoto
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalazTomoharu ASAMI
 
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!Ra Zon
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化Lintaro Ina
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜Hiromi Ishii
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りましたTomoharu ASAMI
 
プログラミングHaskell(第1章)
プログラミングHaskell(第1章)プログラミングHaskell(第1章)
プログラミングHaskell(第1章)yaju88
 
はてなブックマーク in Scala
はてなブックマーク in Scalaはてなブックマーク in Scala
はてなブックマーク in ScalaLintaro Ina
 
Sns suite presentation
Sns suite presentationSns suite presentation
Sns suite presentationJason Namkung
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional ProgrammingTomoharu ASAMI
 
なぜリアクティブは重要か #ScalaMatsuri
なぜリアクティブは重要か #ScalaMatsuriなぜリアクティブは重要か #ScalaMatsuri
なぜリアクティブは重要か #ScalaMatsuriYuta Okamoto
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタートShumpei Shiraishi
 
Java8 lambdas chapter1_2
Java8 lambdas chapter1_2Java8 lambdas chapter1_2
Java8 lambdas chapter1_2yo0824
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)x1 ichi
 
Introduction to Spray at Kansai Functional Programming
Introduction to Spray at Kansai Functional ProgrammingIntroduction to Spray at Kansai Functional Programming
Introduction to Spray at Kansai Functional ProgrammingSuguru Hamazaki
 

La actualidad más candente (20)

Scala東北紹介
Scala東北紹介Scala東北紹介
Scala東北紹介
 
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriWhy Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuri
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
 
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
 
Thinking in Cats
Thinking in CatsThinking in Cats
Thinking in Cats
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りました
 
プログラミングHaskell(第1章)
プログラミングHaskell(第1章)プログラミングHaskell(第1章)
プログラミングHaskell(第1章)
 
はてなブックマーク in Scala
はてなブックマーク in Scalaはてなブックマーク in Scala
はてなブックマーク in Scala
 
Sns suite presentation
Sns suite presentationSns suite presentation
Sns suite presentation
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
 
Haskell超入門 Part.1
Haskell超入門 Part.1Haskell超入門 Part.1
Haskell超入門 Part.1
 
なぜリアクティブは重要か #ScalaMatsuri
なぜリアクティブは重要か #ScalaMatsuriなぜリアクティブは重要か #ScalaMatsuri
なぜリアクティブは重要か #ScalaMatsuri
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 
Java8 lambdas chapter1_2
Java8 lambdas chapter1_2Java8 lambdas chapter1_2
Java8 lambdas chapter1_2
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)
 
Introduction to Spray at Kansai Functional Programming
Introduction to Spray at Kansai Functional ProgrammingIntroduction to Spray at Kansai Functional Programming
Introduction to Spray at Kansai Functional Programming
 

Destacado

Scala でつくる〇〇
Scala でつくる〇〇 Scala でつくる〇〇
Scala でつくる〇〇 今森 大地
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミングOuka Yuka
 
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでHideaki Miyake
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
Android lint-srp-practice
Android lint-srp-practiceAndroid lint-srp-practice
Android lint-srp-practicecch-robo
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring増田 亨
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことKeisuke Nishitani
 

Destacado (8)

Scala でつくる〇〇
Scala でつくる〇〇 Scala でつくる〇〇
Scala でつくる〇〇
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
 
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
Why Scala?
Why Scala?Why Scala?
Why Scala?
 
Android lint-srp-practice
Android lint-srp-practiceAndroid lint-srp-practice
Android lint-srp-practice
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 

Similar a Scalaノススメ

Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Taisuke Shiratori
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみてKota Mizushima
 
こわくないScala
こわくないScalaこわくないScala
こわくないScalaFScoward
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめtakezoe
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Ra Zon
 
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChiselScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChiselKei Nakazawa
 
Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)Hideaki Tarumi
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScalatakezoe
 
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful librariesScala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful librariesKota Mizushima
 
Spark MLlib code reading ~optimization~
Spark MLlib code reading ~optimization~Spark MLlib code reading ~optimization~
Spark MLlib code reading ~optimization~Kai Sasaki
 
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けーTanUkkii
 
Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning TipsKota Mizushima
 
JavaWorld Day 2009 Scala
JavaWorld Day 2009 ScalaJavaWorld Day 2009 Scala
JavaWorld Day 2009 ScalaTomoharu ASAMI
 
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Asami Abe
 
Scalaはじめました!
Scalaはじめました!Scalaはじめました!
Scalaはじめました!Asami Abe
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Shuya Tsukamoto
 
関数型もモナドも分からなくてもScalaと言う言語は便利らしい
関数型もモナドも分からなくてもScalaと言う言語は便利らしい関数型もモナドも分からなくてもScalaと言う言語は便利らしい
関数型もモナドも分からなくてもScalaと言う言語は便利らしいke-m kamekoopa
 
第一回社内 Scala 勉強会(一部抜粋)
第一回社内 Scala 勉強会(一部抜粋)第一回社内 Scala 勉強会(一部抜粋)
第一回社内 Scala 勉強会(一部抜粋)lyrical_logical
 

Similar a Scalaノススメ (20)

Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみて
 
こわくないScala
こわくないScalaこわくないScala
こわくないScala
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]
 
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChiselScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChisel
 
Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScala
 
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful librariesScala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
 
Spark MLlib code reading ~optimization~
Spark MLlib code reading ~optimization~Spark MLlib code reading ~optimization~
Spark MLlib code reading ~optimization~
 
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
 
Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning Tips
 
JavaWorld Day 2009 Scala
JavaWorld Day 2009 ScalaJavaWorld Day 2009 Scala
JavaWorld Day 2009 Scala
 
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
 
Scalaはじめました!
Scalaはじめました!Scalaはじめました!
Scalaはじめました!
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
 
関数型もモナドも分からなくてもScalaと言う言語は便利らしい
関数型もモナドも分からなくてもScalaと言う言語は便利らしい関数型もモナドも分からなくてもScalaと言う言語は便利らしい
関数型もモナドも分からなくてもScalaと言う言語は便利らしい
 
こわくないScala
こわくないScalaこわくないScala
こわくないScala
 
Scala is-unscared
Scala is-unscaredScala is-unscared
Scala is-unscared
 
第一回社内 Scala 勉強会(一部抜粋)
第一回社内 Scala 勉強会(一部抜粋)第一回社内 Scala 勉強会(一部抜粋)
第一回社内 Scala 勉強会(一部抜粋)
 

Último

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 

Último (7)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 

Scalaノススメ