SlideShare una empresa de Scribd logo
1 de 12
第2回
            初心者Scala




Scalaの初歩



              2012/10/09
              @shitai246_
自己紹介
❖   シラトリタイスケ

    ๏ Twitter:   @shitai246_

    ๏ Blog: http://a4p.me/

❖   エンジニア

    ๏ Java歴8年・Scala歴1年・JoJo歴18年

    ๏ Webサービスとかアドテクノロジーとか

❖   マネージャー

    ๏ 管理しないこともひとつの管理手法です

❖   ㈱ファンコミュニケーションズではエンジニアを募集しています

    ๏ 成果報酬型のアフィリエイト、A8.net/Moba8.netを開発・運用・保守するお仕事。

    ๏ Javaがメイン、ところによりPerl、稀にC。もれなくレガシー。Scalaは積極採用中。
前回までのあらすじ
❖   Scalaのインストール

❖   REPLでFizzBuzz

❖   Scalaの基本動作

    ๏ valとvarの違い

    ๏ Scalaのメソッド定義

    ๏ カリー化

    ๏ Listの関数いろいろ
今日話すこと
❖   ScalaはScalableな言語

❖   Scalaでバッチを書いてみよう

❖   質疑応答
ScalaはScalableな言語
❖   Scalaは完全なオブジェクト指向!

    ๏ Javaみたいにプリミティブ型(intとかcharとか)がないよ!




❖   REPLで確認してみよう!

     scala> 1
     res0: Int = 1

     scala> res0.toString
     res1: java.lang.String = 1

     scala>
ScalaはScalableな言語
❖   演算子に見えるものは全て関数です。

    ๏ + も - も == も < も関数です。




❖   REPLで確認してみよう!

     scala> 1
     res0: Int = 1

     scala> res0.+(2)
     res1: Int = 3

     scala> res1.==(4)
     res2: Boolean = false
ScalaはScalableな言語
❖   これらの関数名は自分で作ったクラスでも利用できます。

    ๏ 加算をしたいとき、def add() じゃなくて def +() が作れるから直感的にわかりやすい。

    ๏ 以下はわかりにくいJavaのメソッドの例

     // BigDecimal の引き算
     BigDecimal decimal1 = ∼
     BigDecimal decimal2 = ∼
     // decimal1 - decimal2
     decimal1.subtract(decimal2);


     // Dateの比較
     Date date1 = ∼
     Date date2 = ∼
     if (date1.after(date2)) {
     
 ...
     }
ScalaはScalableな言語
❖   何が嬉しいの?

    ๏ 複素数や三角関数などを独自に実装した場合でも、ネイティブサポートされている型と同じ使用感で使える。

    ๏ 演算子(っぽく見えるもの)以外でもこういう書き方ができる。




❖   REPLで確認してみよう!

     scala> 1 to 5
     res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)

     scala> res0 foreach println
     1
     2
     3
     4
     5

     scala>
ScalaはScalableな言語
❖   おまけ

    ๏ Scaladocを読むと「+」や「==」などの関数がちゃんと載ってます。

    ๏ http://www.scala-lang.org/api/current/index.html#package

    ๏ たいがいのクラスにソースコードへのリンクがついてるので
       ちょっと英語が?なときでも大丈夫。
Scalaでバッチを書いてみよう
❖   Scalaでバッチを書いてみよう!

    ๏ Main.scala ファイルを作ってコードを書く。

      // main関数を書く場合にはobjectにしないといけない
      object Main {
        // 関数はdefで始める
          // main関数は main(args : Array[String]) : Unit
          def main(args : Array[String]) : Unit = {
            // 引数argsを表示する
              args.foreach(println)
          }
      }
Scalaでバッチを書いてみよう
❖   Scalaでバッチを書いてみよう!

    ๏ scala Main.scala 引数1 引数2 ... で実行できる。



     $ scala Main.scala 1 10 100 a "b c"
     1
     10
     100
     a
     bc
     $
Scalaでバッチを書いてみよう
❖   実践!

    ๏ Scalaで引数をソートして標準出力するバッチを書いてみよう。

Más contenido relacionado

La actualidad más candente

Scala.jsはじめました!
Scala.jsはじめました!Scala.jsはじめました!
Scala.jsはじめました!
K Kinzal
 
JSフレームワークのシンタックスを比べてみる
JSフレームワークのシンタックスを比べてみるJSフレームワークのシンタックスを比べてみる
JSフレームワークのシンタックスを比べてみる
yumi_chappy
 

La actualidad más candente (16)

Scala.jsはじめました!
Scala.jsはじめました!Scala.jsはじめました!
Scala.jsはじめました!
 
ScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったでScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったで
 
Scalaノススメ
ScalaノススメScalaノススメ
Scalaノススメ
 
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
 
Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
 
Phantom Type in Scala
Phantom Type in ScalaPhantom Type in Scala
Phantom Type in Scala
 
Scalalr
ScalalrScalalr
Scalalr
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りました
 
第二回tento.tech定例会
第二回tento.tech定例会第二回tento.tech定例会
第二回tento.tech定例会
 
JSフレームワークのシンタックスを比べてみる
JSフレームワークのシンタックスを比べてみるJSフレームワークのシンタックスを比べてみる
JSフレームワークのシンタックスを比べてみる
 
[Scalamatsuri2016]あ、社内コミュニティ
[Scalamatsuri2016]あ、社内コミュニティ[Scalamatsuri2016]あ、社内コミュニティ
[Scalamatsuri2016]あ、社内コミュニティ
 
Comapre adoniswithlaravel
Comapre adoniswithlaravelComapre adoniswithlaravel
Comapre adoniswithlaravel
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
Lets scala
Lets scalaLets scala
Lets scala
 

Similar a Beginners Scala in FAN 20121009

Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
Ra Zon
 
Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行
guest5f4320
 
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
papamitra
 

Similar a Beginners Scala in FAN 20121009 (20)

Beginners scala 20121113
Beginners scala 20121113Beginners scala 20121113
Beginners scala 20121113
 
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみて
 
Dev love関西 forslideshare
Dev love関西 forslideshareDev love関西 forslideshare
Dev love関西 forslideshare
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
 
1周遅れのScala入学 #nds41
1周遅れのScala入学 #nds411周遅れのScala入学 #nds41
1周遅れのScala入学 #nds41
 
Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行
 
Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行
 
第一回社内 Scala 勉強会(一部抜粋)
第一回社内 Scala 勉強会(一部抜粋)第一回社内 Scala 勉強会(一部抜粋)
第一回社内 Scala 勉強会(一部抜粋)
 
MoteMote Compiler Plugin
MoteMote Compiler PluginMoteMote Compiler Plugin
MoteMote Compiler Plugin
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
 
Trait in scala
Trait in scalaTrait in scala
Trait in scala
 
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
 
[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
 
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka docAkkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentials
 
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChiselScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChisel
 

Beginners Scala in FAN 20121009

  • 1. 第2回 初心者Scala Scalaの初歩 2012/10/09 @shitai246_
  • 2. 自己紹介 ❖ シラトリタイスケ ๏ Twitter: @shitai246_ ๏ Blog: http://a4p.me/ ❖ エンジニア ๏ Java歴8年・Scala歴1年・JoJo歴18年 ๏ Webサービスとかアドテクノロジーとか ❖ マネージャー ๏ 管理しないこともひとつの管理手法です ❖ ㈱ファンコミュニケーションズではエンジニアを募集しています ๏ 成果報酬型のアフィリエイト、A8.net/Moba8.netを開発・運用・保守するお仕事。 ๏ Javaがメイン、ところによりPerl、稀にC。もれなくレガシー。Scalaは積極採用中。
  • 3. 前回までのあらすじ ❖ Scalaのインストール ❖ REPLでFizzBuzz ❖ Scalaの基本動作 ๏ valとvarの違い ๏ Scalaのメソッド定義 ๏ カリー化 ๏ Listの関数いろいろ
  • 4. 今日話すこと ❖ ScalaはScalableな言語 ❖ Scalaでバッチを書いてみよう ❖ 質疑応答
  • 5. ScalaはScalableな言語 ❖ Scalaは完全なオブジェクト指向! ๏ Javaみたいにプリミティブ型(intとかcharとか)がないよ! ❖ REPLで確認してみよう! scala> 1 res0: Int = 1 scala> res0.toString res1: java.lang.String = 1 scala>
  • 6. ScalaはScalableな言語 ❖ 演算子に見えるものは全て関数です。 ๏ + も - も == も < も関数です。 ❖ REPLで確認してみよう! scala> 1 res0: Int = 1 scala> res0.+(2) res1: Int = 3 scala> res1.==(4) res2: Boolean = false
  • 7. ScalaはScalableな言語 ❖ これらの関数名は自分で作ったクラスでも利用できます。 ๏ 加算をしたいとき、def add() じゃなくて def +() が作れるから直感的にわかりやすい。 ๏ 以下はわかりにくいJavaのメソッドの例 // BigDecimal の引き算 BigDecimal decimal1 = ∼ BigDecimal decimal2 = ∼ // decimal1 - decimal2 decimal1.subtract(decimal2); // Dateの比較 Date date1 = ∼ Date date2 = ∼ if (date1.after(date2)) { ... }
  • 8. ScalaはScalableな言語 ❖ 何が嬉しいの? ๏ 複素数や三角関数などを独自に実装した場合でも、ネイティブサポートされている型と同じ使用感で使える。 ๏ 演算子(っぽく見えるもの)以外でもこういう書き方ができる。 ❖ REPLで確認してみよう! scala> 1 to 5 res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5) scala> res0 foreach println 1 2 3 4 5 scala>
  • 9. ScalaはScalableな言語 ❖ おまけ ๏ Scaladocを読むと「+」や「==」などの関数がちゃんと載ってます。 ๏ http://www.scala-lang.org/api/current/index.html#package ๏ たいがいのクラスにソースコードへのリンクがついてるので ちょっと英語が?なときでも大丈夫。
  • 10. Scalaでバッチを書いてみよう ❖ Scalaでバッチを書いてみよう! ๏ Main.scala ファイルを作ってコードを書く。 // main関数を書く場合にはobjectにしないといけない object Main { // 関数はdefで始める // main関数は main(args : Array[String]) : Unit def main(args : Array[String]) : Unit = { // 引数argsを表示する args.foreach(println) } }
  • 11. Scalaでバッチを書いてみよう ❖ Scalaでバッチを書いてみよう! ๏ scala Main.scala 引数1 引数2 ... で実行できる。 $ scala Main.scala 1 10 100 a "b c" 1 10 100 a bc $
  • 12. Scalaでバッチを書いてみよう ❖ 実践! ๏ Scalaで引数をソートして標準出力するバッチを書いてみよう。

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n