SlideShare a Scribd company logo
1 of 34
SCALA始めてみました
第6回福岡市西区プログラム勉強会
第6回福岡市西区プログラム勉強会

2013年 12月 8日

Scala
• この頃何かと話題のScala
• 採用事例
Twitter, Foursquare, LinkedIn
• ウェブ開発
Play framework
• 各地勉強会
• 本発表では
• 基本構文から特徴的機能を紹介して Scalaの魅力を伝える

• 基本情報
• 登場時期
• 設計者
• 安定バージョン
• 開発バージョン

2003年頃
Martin Odersky
2.10.3
2.11.0-M7

2
2013年 12月 8日

Scala

第6回福岡市西区プログラム勉強会

3
2013年 12月 8日

第6回福岡市西区プログラム勉強会

Scalaの特徴
• 純粋なオブジェクト指向言語
• クラスベース継承
• traitによるミックスイン合成
• 静的型付け関数型言語
• 型推論機構によって簡潔な記述ができる
• 関数型とは 関数も値と同等に扱う
• 定数・変数を扱える
• 簡潔・柔軟な記述が可能
• スケーラブル
• 拡張性を持った言語
• 並列コレクション・アクター

• Javaとの互換性
• JVM上で動く
• JavaとScalaを相互に利用可能

4
2013年 12月 8日

基本構文

第6回福岡市西区プログラム勉強会

5
第6回福岡市西区プログラム勉強会

2013年 12月 8日

変数
• Byte, Short, Int, Long, Char, String, Float, Double,

Boolean
• すべてオブジェクトとして扱われる

• 変数宣言
• val 変数名: 型名 = 初期値 val name: String = “John”
• var 変数名: 型名 = 初期値 var age: Int
= 10
• 型推論によって自動的に型が決まる
• val num = 10.0

// => num: Double = 10.0
• 型名を省略することができる
• val と var
• val – 変数の値を変更できない(定数)
• var – 変数の値を変更できる

(変数)

6
第6回福岡市西区プログラム勉強会

2013年 12月 8日

制御文
• 条件分岐
• if (条件) { // code } else { // code }
• ループ
• あまり使わない
• while
val atoz = 'a' to 'z'
var i = 0
while(i < atoz.length) {
println(atoz(i))
i += 1
}

・for
for (num <- 1 until 10)
println(num)

7
第6回福岡市西区プログラム勉強会

2013年 12月 8日

制御文
• ループ
atoz.foreach((c: String) => {
println(c)
})

型推論

atoz.foreach(c => println(c))
プレースホルダー
args.foreach(println(_))
省略可能
args.foreach(println)

8
第6回福岡市西区プログラム勉強会

2013年 12月 8日

関数
関数の宣言

関数名

戻り値の型

def add(a: Int, b: Int): Int = {
a + b
引数
}
最後の行が戻り値

デフォルト引数
def add(a: Int, b: Int = 10) = a + b

部分適用
def add(a: Int)(b: Int): Int = a + b
val twoAdd = add(2)_
println(twoAdd(5))
// 7

9
第6回福岡市西区プログラム勉強会

2013年 12月 8日

10

クラス
• フィールドとメソッドを持つ
• コンストラクタ
• クラス内に記述
• 補助コンストラクタ
• Javaより簡潔に書ける

Scala

Java

class
val
val
def
}

public class Person {
private String name;
private int age;

Person(p: String, n: Int) {
name = p
age = n
this(p: String) = this(p, 20)

public Person(String name, int age) {
this.name = name;
this.age = age;
}

public Person(String name) {
this(name, 10);
}
}
2013年 12月 8日

第6回福岡市西区プログラム勉強会

いくつかの機能・構文

11
2013年 12月 8日

第6回福岡市西区プログラム勉強会

例えばこんなコード
package jp.samples
object HelloScala {
def main(args: Array[String]): Unit = {
import model.{ Person => CasePerson }
val p1 = CasePerson("John", 20)
p1.grow
println(p1.hello)
println(p1)
}
}
package model {
case class Person(val name: String, private var age: Int = 20) {
require(name != "")
require(age > 0)
def hello(): String = s"Hello, $name"
def grow: Int = {
age += 1
age
}
}
}

12
2013年 12月 8日

第6回福岡市西区プログラム勉強会

13

例えばこんなコード
package jp.samples
object HelloScala {
def main(args: Array[String]): Unit = {
import model.{ Person => CasePerson }
val p1 = CasePerson("John", 20)
p1.grow
println(p1.hello)
println(p1)
}
}

Object
import文
caseクラス

package model {
case class Person(val name: String, private var age: Int = 20) {
require(name != "")
require(age > 0)

require文

def hello(): String = s"Hello, $name"
def grow: Int = {
age += 1
age
}
}
}

加工文字列リテラル
2013年 12月 8日

第6回福岡市西区プログラム勉強会

Object
• 単一オブジェクト
• 言語レベルでのシングルトンサポート
• main関数はObjectに書く
object HelloScala {
def main(args: Array[String]): Unit = {
// code
}
}

14
2013年 12月 8日

第6回福岡市西区プログラム勉強会

caseクラス
• newキーワードが不要
• toString, hashCode, equalsの自動実装
case class Person(val name: String, val age: Int)
scala> val p1 = Person("John", 20)
p1: Person = Person(John,20)

class Person(val name: String, val age: Int)
scala> val p1 = new Person("John", 20)
p1: Person = Person@32076ee4

15
2013年 12月 8日

第6回福岡市西区プログラム勉強会

16

require文
• インスタンス生成時に引数チェックが可能
• 条件を満たさないと”IllegalArgumentException”を出す
case class Person(val name: String, private var age: Int = 20) {
require(name != "")
require(age > 0)
}
2013年 12月 8日

第6回福岡市西区プログラム勉強会

import文
• 柔軟なインポート
import java.math._
import java.util.{ List, ArrayList }
import model.{ Person => CasePerson }

• 指定したパッケージの全クラス
• 指定したクラスのみ
• インポートクラスに別名を与える

• 任意の場所に書ける
• 入れ子構造
package jp.samples
package model {
case class Person(val name: String, val age: Int) {
require(name != "")
require(age > 0)
}
}

17
第6回福岡市西区プログラム勉強会

2013年 12月 8日

18

加工文字リテラル (processed string literal)
• 文字列の前にリテラルをつけることでコンパイラが

追加処理をしてくれる
• 補間子
• s 補間子

- 変数を直接扱える

• 例:val value = “fuga”

s”hoge $value”
• f 補間子

// hoge fuga

- 書式付き文字列

• 例:f”$name%s $height%2.2f meters” // James is 1.90 meters

• raw 補間子 - エスケープなし
• 例:raw”abnc” // abnc

• 独自補間子も定義可能
2013年 12月 8日

パターンマッチ

第6回福岡市西区プログラム勉強会

19
2013年 12月 8日

第6回福岡市西区プログラム勉強会

パターンマッチ
• 非常に強力なマッチング
• 複数の選択肢から一つを選択
• _(アンダースコア)でdefaultの働き
• 値を返す
• 定数マッチ
val str = readLine
val msg = str match {
case "hello" => str + " world"
case "welcome" => str + " to scala"
case _ => "wrong"
}
println(msg)

20
2013年 12月 8日

第6回福岡市西区プログラム勉強会

パターンマッチ
• コンストラクターパターン
• クラスメンバーまでチェック
object MatchSample {
def main(args: Array[String]): Unit = {
val p1: Any = Person(“John”, 20)
p1 match {
case Person(“John”, _) => println(“He is John”)
case Person => println(“Person”)
}
}
}
case class Person(name: String, age: Int)

21
2013年 12月 8日

第6回福岡市西区プログラム勉強会

22

パターンマッチ
• 型付きパターン
• case 変数名: 型名 => { }
• キャストの代用
object MatchSample {
def main(args: Array[String]): Unit = {
val p1: Any = Person("John", 20)
p1 match {
case person: Person => println("Person " + person.name)
case animal: Animal => println("Animal is" + animal.aType)
}
}
}
case class Person(name: String, age: Int)
case class Animal(name: String, aType: String)
2013年 12月 8日

第6回福岡市西区プログラム勉強会

23

パターンマッチ
• パターンガード
• マッチした後にさらに条件を加える
object MatchSample {
def main(args: Array[String]): Unit = {
val p1: Any = Person("John", 20)
p1 match {
case person: Person if person.name == "John" => {
println("John " + person.age)
}
case person: Person => println("Person " + person.name)
case animal: Animal => println("Animal is" + animal.aType)
}
}
}
case class Person(name: String, age: Int)
case class Animal(name: String, aType: String)
2013年 12月 8日

リスト操作

第6回福岡市西区プログラム勉強会

24
第6回福岡市西区プログラム勉強会

2013年 12月 8日

25

リスト操作
• アクセス
• head
• tail
• init
• last

scala> val alpha = ('a' to 'e').toList

リストの先頭の要素
alpha: List[Char] = List(a, b, c, d, e)
先頭以外の要素
scala> alpha.head
最後以外の要素
res1: Char = a
リストの最後の要素
scala> alpha.tail
res2: List[Char] = List(b, c, d, e)
scala> alpha.init
res3: List[Char] = List(a, b, c, d)
scala> alpha.last
res4: Char = e
2013年 12月 8日

第6回福岡市西区プログラム勉強会

26

リスト操作
• 例えば
• 名前のリストから頭文字がJの名前を抽出して小文字にして返す
Java
List<String> nameList =
Arrays.asList("Alice", "John", "Jack", "Paul");
for (String name : nameList) {
List<String> jList = new ArrayList<>();
if (name.startsWith("J")) {
jList.add(name.toLowerCase());
}
}

Scala
val nameList = Array("Alice", "John", "Jack", "Paul")
val jList = nameList
.filter(_.startsWith("J"))
.map(_.toLowerCase())
第6回福岡市西区プログラム勉強会

2013年 12月 8日

リスト操作
• filter

リストから条件に合う要素を抽出

scala> (1 to 10).filter(_ > 5).toList
res1: List[Int] = List(6, 7, 8, 9, 10)

• map

要素を変換する

scala> (1 to 10).map(_ * 10).toList
res2: List[Int] = List(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)

27
第6回福岡市西区プログラム勉強会

2013年 12月 8日

リスト操作
• toListリストに変換する
• toSet

Setに変換

scala> List(1, 1, 2, 3, 5, 5).toSet.toList
res3: List[Int] = List(1, 2, 3, 5)

• mkString

要素を文字列に

scala> (1 to 5).mkString("num(", ", ", ")")
res4: String = num(1, 2, 3, 4, 5)
scala> (1 to 5).mkString(", ")
res5: String = 1, 2, 3, 4, 5

28
第6回福岡市西区プログラム勉強会

2013年 12月 8日

リスト操作
• sum

要素の合計

scala> (1 to 10).sum
res1: Int = 55

• product

要素の積

scala> (1 to 10).product
res2: Int = 3628800

• min

最小要素

scala> (1 to 10).min
res3: Int = 1

• max

最大

scala> (1 to 10).max
res4: Int = 10

29
2013年 12月 8日

第6回福岡市西区プログラム勉強会

並列・並行処理
• 並列コレクション
• 手軽に並列処理を行える
• 逐次処理 (1 to 100000).sum
• 並列処理 (1 to 100000).par.sum

• Actor
• 各アクターがメッセージパッシングで処理を行う

30
2013年 12月 8日

並列・並行処理
• アクター
object ActorSample {
def main(args: Array[String]): Unit = {
myActor ! 10
}
import scala.actors.Actor
import scala.actors.Actor._
val myActor = actor {
loop {
react {
case i: Int => println("loop react = " + i)
}
}
}
}

第6回福岡市西区プログラム勉強会

31
2013年 12月 8日

第6回福岡市西区プログラム勉強会

もっとScalaを学習したいなら

Scalaスケーラブルプログラミング第2版
http://amzn.to/1bOKPBN

32
2013年 12月 8日

第6回福岡市西区プログラム勉強会

もっとScalaを学習したいなら
http://www.scala-lang.org/documentation/

33
2013年 12月 8日

第6回福岡市西区プログラム勉強会

もっとScalaを学習したいなら
http://docs.scala-lang.org/ja/overviews/index.html

34

More Related Content

What's hot

Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Naoki Aoyama
 
徹底攻略!PHP5.4
徹底攻略!PHP5.4徹底攻略!PHP5.4
徹底攻略!PHP5.4Takuya Sato
 
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装__nakamichi__
 
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第1回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第1回SPARQLから入門するLinked Open Data(LOD)ハンズオン 第1回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第1回yamahige
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門SatoYu1ro
 
SparqlEPCUが提供するlod開発プラットフォーム
SparqlEPCUが提供するlod開発プラットフォームSparqlEPCUが提供するlod開発プラットフォーム
SparqlEPCUが提供するlod開発プラットフォームChubu University
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
SPARQL作成ツール SPARQL Creator
SPARQL作成ツール SPARQL CreatorSPARQL作成ツール SPARQL Creator
SPARQL作成ツール SPARQL CreatorRyouya Fujimoto
 
サーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよサーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよkoji lin
 

What's hot (13)

ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術
 
第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo
 
徹底攻略!PHP5.4
徹底攻略!PHP5.4徹底攻略!PHP5.4
徹底攻略!PHP5.4
 
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装
 
Scala東北紹介
Scala東北紹介Scala東北紹介
Scala東北紹介
 
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第1回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第1回SPARQLから入門するLinked Open Data(LOD)ハンズオン 第1回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第1回
 
HaskellDB
HaskellDBHaskellDB
HaskellDB
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
 
SparqlEPCUが提供するlod開発プラットフォーム
SparqlEPCUが提供するlod開発プラットフォームSparqlEPCUが提供するlod開発プラットフォーム
SparqlEPCUが提供するlod開発プラットフォーム
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
SPARQL作成ツール SPARQL Creator
SPARQL作成ツール SPARQL CreatorSPARQL作成ツール SPARQL Creator
SPARQL作成ツール SPARQL Creator
 
サーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよサーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよ
 

Viewers also liked

SECCON@福岡ハッカソン直前勉強会「今どきのWeb技術でスコアサーバーを改良してみよう」
SECCON@福岡ハッカソン直前勉強会「今どきのWeb技術でスコアサーバーを改良してみよう」SECCON@福岡ハッカソン直前勉強会「今どきのWeb技術でスコアサーバーを改良してみよう」
SECCON@福岡ハッカソン直前勉強会「今どきのWeb技術でスコアサーバーを改良してみよう」Takatoshi Murakami
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecYukihiko SAWANOBORI
 
VMware的インフラ仮想化の世界
VMware的インフラ仮想化の世界VMware的インフラ仮想化の世界
VMware的インフラ仮想化の世界Takahiro HAGIWARA
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerLuminary Labs
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
 

Viewers also liked (6)

SECCON@福岡ハッカソン直前勉強会「今どきのWeb技術でスコアサーバーを改良してみよう」
SECCON@福岡ハッカソン直前勉強会「今どきのWeb技術でスコアサーバーを改良してみよう」SECCON@福岡ハッカソン直前勉強会「今どきのWeb技術でスコアサーバーを改良してみよう」
SECCON@福岡ハッカソン直前勉強会「今どきのWeb技術でスコアサーバーを改良してみよう」
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
 
Cent7@zabbix2.4を試す
Cent7@zabbix2.4を試すCent7@zabbix2.4を試す
Cent7@zabbix2.4を試す
 
VMware的インフラ仮想化の世界
VMware的インフラ仮想化の世界VMware的インフラ仮想化の世界
VMware的インフラ仮想化の世界
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

Similar to 2013-12-08 西区プログラム勉強会

第2回関数型言語勉強会 大阪
第2回関数型言語勉強会 大阪第2回関数型言語勉強会 大阪
第2回関数型言語勉強会 大阪Naoki Kitora
 
Asakusa FrameworkとScalaの密かな関係
Asakusa FrameworkとScalaの密かな関係Asakusa FrameworkとScalaの密かな関係
Asakusa FrameworkとScalaの密かな関係hishidama
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Shuya Tsukamoto
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Ra Zon
 
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Hiroshi Ito
 
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Taisuke Shiratori
 
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Ra Zon
 
Integral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common LispIntegral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common Lispfukamachi
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックスTomoharu ASAMI
 
ScalaプログラマのためのHaskell入門
ScalaプログラマのためのHaskell入門ScalaプログラマのためのHaskell入門
ScalaプログラマのためのHaskell入門Yasuaki Takebe
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-Kazunari Hara
 
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaめんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaKazuhiro Sera
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
Scalamacrosについて
ScalamacrosについてScalamacrosについて
Scalamacrosについてdekosuke
 

Similar to 2013-12-08 西区プログラム勉強会 (20)

第2回関数型言語勉強会 大阪
第2回関数型言語勉強会 大阪第2回関数型言語勉強会 大阪
第2回関数型言語勉強会 大阪
 
Asakusa FrameworkとScalaの密かな関係
Asakusa FrameworkとScalaの密かな関係Asakusa FrameworkとScalaの密かな関係
Asakusa FrameworkとScalaの密かな関係
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
 
Dartをはじめよう
DartをはじめようDartをはじめよう
Dartをはじめよう
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
 
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
 
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
 
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
Integral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common LispIntegral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common Lisp
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
ScalaプログラマのためのHaskell入門
ScalaプログラマのためのHaskell入門ScalaプログラマのためのHaskell入門
ScalaプログラマのためのHaskell入門
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
Aizu lt tokyo_luxion
Aizu lt tokyo_luxionAizu lt tokyo_luxion
Aizu lt tokyo_luxion
 
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaめんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scala
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
Scalamacrosについて
ScalamacrosについてScalamacrosについて
Scalamacrosについて
 
Rake
RakeRake
Rake
 

Recently uploaded

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
 
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
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 

Recently uploaded (8)

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
 
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
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 

2013-12-08 西区プログラム勉強会