Movatterモバイル変換
[0]
ホーム
URL:
画像なし
夜間モード
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Hajime Yanagawa
PPT, PDF
958 views
Rpscala2011 0601
scala勉強会 渋谷Scaalでプログラム作ってみたのでScalaの作法を教えてください
Entertainment & Humor
◦
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 32
2
/ 32
3
/ 32
4
/ 32
5
/ 32
6
/ 32
7
/ 32
8
/ 32
9
/ 32
10
/ 32
11
/ 32
12
/ 32
13
/ 32
14
/ 32
15
/ 32
16
/ 32
17
/ 32
18
/ 32
19
/ 32
20
/ 32
21
/ 32
22
/ 32
23
/ 32
24
/ 32
25
/ 32
26
/ 32
27
/ 32
28
/ 32
29
/ 32
30
/ 32
31
/ 32
32
/ 32
Recommended
PPTX
Sns suite presentation
by
Jason Namkung
PDF
rpscala35-scala2.9.0
by
Kenji Yoshida
PDF
Scala2.8への移行
by
guest5f4320
PDF
Phantom Type in Scala
by
Yasuyuki Maeda
PDF
Scala の関数型プログラミングを支える技術
by
Naoki Aoyama
PDF
はてなブックマーク in Scala
by
Lintaro Ina
PDF
Scalaで型クラス入門
by
Makoto Fukuhara
PDF
Frege, What a Non-strict Language
by
y_taka_23
PDF
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
by
Lintaro Ina
PDF
ScalaMatsuri 2016
by
Yoshitaka Fujii
PDF
Why Reactive Matters #ScalaMatsuri
by
Yuta Okamoto
PDF
Scalaノススメ
by
Yasuyuki Maeda
PDF
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
by
なおき きしだ
PDF
Thinking in Cats
by
Eugene Yokota
PDF
Hokuriku Scala 1
by
NISHIMOTO Keisuke
PDF
Scalaで萌える関数型プログラミング[1.1.RC1]
by
Ra Zon
PDF
Scalaで萌える関数型プログラミング[完全版]
by
Ra Zon
PPTX
Scala勉強会 初心者向けハンズオン前編
by
takeuchi-tk
PDF
BOF1-Scala02.pdf
by
Hiroshi Ono
PDF
磯野ー!関数型言語やろうぜー!
by
Ra Zon
PDF
たのしい関数型
by
Shinichi Kozake
PDF
これからのJavaScriptー関数型プログラミングとECMAScript6
by
TanUkkii
PPTX
Reladomo in Scala #scala_ks
by
Hiroshi Ito
PDF
Material
by
_TUNE_
PDF
15分でざっくり分かるScala入門
by
SatoYu1ro
PDF
なぜリアクティブは重要か #ScalaMatsuri
by
Yuta Okamoto
PDF
あなたのScalaを爆速にする7つの方法(日本語版)
by
x1 ichi
PDF
Scala lang evolution
by
Akira Takahashi
ODP
20120718 scalaで転職
by
大翼 福田
PPT
Lifthub (#rpscala 26)
by
k4200
More Related Content
PPTX
Sns suite presentation
by
Jason Namkung
PDF
rpscala35-scala2.9.0
by
Kenji Yoshida
PDF
Scala2.8への移行
by
guest5f4320
PDF
Phantom Type in Scala
by
Yasuyuki Maeda
PDF
Scala の関数型プログラミングを支える技術
by
Naoki Aoyama
PDF
はてなブックマーク in Scala
by
Lintaro Ina
PDF
Scalaで型クラス入門
by
Makoto Fukuhara
PDF
Frege, What a Non-strict Language
by
y_taka_23
Sns suite presentation
by
Jason Namkung
rpscala35-scala2.9.0
by
Kenji Yoshida
Scala2.8への移行
by
guest5f4320
Phantom Type in Scala
by
Yasuyuki Maeda
Scala の関数型プログラミングを支える技術
by
Naoki Aoyama
はてなブックマーク in Scala
by
Lintaro Ina
Scalaで型クラス入門
by
Makoto Fukuhara
Frege, What a Non-strict Language
by
y_taka_23
What's hot
PDF
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
by
Lintaro Ina
PDF
ScalaMatsuri 2016
by
Yoshitaka Fujii
PDF
Why Reactive Matters #ScalaMatsuri
by
Yuta Okamoto
PDF
Scalaノススメ
by
Yasuyuki Maeda
PDF
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
by
なおき きしだ
PDF
Thinking in Cats
by
Eugene Yokota
PDF
Hokuriku Scala 1
by
NISHIMOTO Keisuke
PDF
Scalaで萌える関数型プログラミング[1.1.RC1]
by
Ra Zon
PDF
Scalaで萌える関数型プログラミング[完全版]
by
Ra Zon
PPTX
Scala勉強会 初心者向けハンズオン前編
by
takeuchi-tk
PDF
BOF1-Scala02.pdf
by
Hiroshi Ono
PDF
磯野ー!関数型言語やろうぜー!
by
Ra Zon
PDF
たのしい関数型
by
Shinichi Kozake
PDF
これからのJavaScriptー関数型プログラミングとECMAScript6
by
TanUkkii
PPTX
Reladomo in Scala #scala_ks
by
Hiroshi Ito
PDF
Material
by
_TUNE_
PDF
15分でざっくり分かるScala入門
by
SatoYu1ro
PDF
なぜリアクティブは重要か #ScalaMatsuri
by
Yuta Okamoto
PDF
あなたのScalaを爆速にする7つの方法(日本語版)
by
x1 ichi
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
by
Lintaro Ina
ScalaMatsuri 2016
by
Yoshitaka Fujii
Why Reactive Matters #ScalaMatsuri
by
Yuta Okamoto
Scalaノススメ
by
Yasuyuki Maeda
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
by
なおき きしだ
Thinking in Cats
by
Eugene Yokota
Hokuriku Scala 1
by
NISHIMOTO Keisuke
Scalaで萌える関数型プログラミング[1.1.RC1]
by
Ra Zon
Scalaで萌える関数型プログラミング[完全版]
by
Ra Zon
Scala勉強会 初心者向けハンズオン前編
by
takeuchi-tk
BOF1-Scala02.pdf
by
Hiroshi Ono
磯野ー!関数型言語やろうぜー!
by
Ra Zon
たのしい関数型
by
Shinichi Kozake
これからのJavaScriptー関数型プログラミングとECMAScript6
by
TanUkkii
Reladomo in Scala #scala_ks
by
Hiroshi Ito
Material
by
_TUNE_
15分でざっくり分かるScala入門
by
SatoYu1ro
なぜリアクティブは重要か #ScalaMatsuri
by
Yuta Okamoto
あなたのScalaを爆速にする7つの方法(日本語版)
by
x1 ichi
Viewers also liked
PDF
Scala lang evolution
by
Akira Takahashi
ODP
20120718 scalaで転職
by
大翼 福田
PPT
Lifthub (#rpscala 26)
by
k4200
PPT
Scala勉強会 in 渋谷 2010→2011(鹿島)
by
k4200
PPT
Lifthub (rpscala #31)
by
k4200
PDF
私とScalaと2010 @hito_asa
by
Hitoshi Asai
ODP
Rpscala18th
by
nanjakkun
PPT
sbt 0.10 for beginners?
by
k4200
PDF
Real-Time 3D Programming in Scala
by
Hideyuki Takeuchi
PDF
Scala repl
by
Kenji Yoshida
PDF
Scala design pattern
by
Kenji Yoshida
PDF
scala-kaigi1-sbt
by
Kenji Yoshida
PDF
Grass
by
k4200
PDF
Strata SC 2014: Apache Mesos as an SDK for Building Distributed Frameworks
by
Paco Nathan
Scala lang evolution
by
Akira Takahashi
20120718 scalaで転職
by
大翼 福田
Lifthub (#rpscala 26)
by
k4200
Scala勉強会 in 渋谷 2010→2011(鹿島)
by
k4200
Lifthub (rpscala #31)
by
k4200
私とScalaと2010 @hito_asa
by
Hitoshi Asai
Rpscala18th
by
nanjakkun
sbt 0.10 for beginners?
by
k4200
Real-Time 3D Programming in Scala
by
Hideyuki Takeuchi
Scala repl
by
Kenji Yoshida
Scala design pattern
by
Kenji Yoshida
scala-kaigi1-sbt
by
Kenji Yoshida
Grass
by
k4200
Strata SC 2014: Apache Mesos as an SDK for Building Distributed Frameworks
by
Paco Nathan
Similar to Rpscala2011 0601
PDF
BOF1-Scala02.pdf
by
Hiroshi Ono
PDF
BOF1-Scala02.pdf
by
Hiroshi Ono
PPTX
明日から業務で使うScala
by
martin_lover_ca
PDF
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
by
Tomoharu ASAMI
PDF
プログラミング言語Scala
by
TanUkkii
PDF
第3回勉強会 オブジェクト指向
by
hakoika-itwg
PDF
Scalaプログラミング・マニアックス
by
Tomoharu ASAMI
PDF
ATN No.2 Scala事始め
by
AdvancedTechNight
PDF
Oocon2020 presentation slide @kozukorio
by
Hirokazu Kobayashi
PDF
What Dotty fixes @ Scala関西サミット
by
Taisuke Oe
PDF
実務者のためのかんたんScalaz
by
Tomoharu ASAMI
PPTX
Prelude to Halide
by
Akira Maruoka
PDF
JavaWorld Day 2009 Scala
by
Tomoharu ASAMI
PDF
DevLOVE発表資料
by
Zenji Kanzaki
PDF
Object-Funcational Analysis and design
by
Tomoharu ASAMI
PDF
Scala with DDD
by
潤一 加藤
PPTX
高速な暗号実装のためにしてきたこと
by
MITSUNARI Shigeo
PPTX
Play2 scalaを2年やって学んだこと
by
dcubeio
PDF
BNN CAMP vol.3 インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 2
by
Atsushi Tadokoro
PPTX
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
by
Shin-ya Koga
BOF1-Scala02.pdf
by
Hiroshi Ono
BOF1-Scala02.pdf
by
Hiroshi Ono
明日から業務で使うScala
by
martin_lover_ca
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
by
Tomoharu ASAMI
プログラミング言語Scala
by
TanUkkii
第3回勉強会 オブジェクト指向
by
hakoika-itwg
Scalaプログラミング・マニアックス
by
Tomoharu ASAMI
ATN No.2 Scala事始め
by
AdvancedTechNight
Oocon2020 presentation slide @kozukorio
by
Hirokazu Kobayashi
What Dotty fixes @ Scala関西サミット
by
Taisuke Oe
実務者のためのかんたんScalaz
by
Tomoharu ASAMI
Prelude to Halide
by
Akira Maruoka
JavaWorld Day 2009 Scala
by
Tomoharu ASAMI
DevLOVE発表資料
by
Zenji Kanzaki
Object-Funcational Analysis and design
by
Tomoharu ASAMI
Scala with DDD
by
潤一 加藤
高速な暗号実装のためにしてきたこと
by
MITSUNARI Shigeo
Play2 scalaを2年やって学んだこと
by
dcubeio
BNN CAMP vol.3 インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 2
by
Atsushi Tadokoro
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
by
Shin-ya Koga
Rpscala2011 0601
1.
Scala でプログラム作ってみたので Scala
の 作法を教えてください
2.
自己紹介 ( 株
) オープンストリーム 所属 twitter yangiYa COBOL -> Java (-> Scala になれたら。。 ) 会社ではあまりプログラム作る 機会がなくなってきた。欲求不満 Scala は去年の秋ぐらいからはじめた Scala の書籍で読んだもの Scala プログラミング入門 デイビッド・ポラック ( 日経 BP 社 ) プログラミング Scala Dean Wamloer/Alex Payne ( オライリー )
3.
作ってみたもの の 説明
4.
行列モデルを Scala で実装
5.
利用用途 行列で表現できる概念に汎用的に利用 「物体」
( ゲームのキャラクタなど ) の座標 「物体」の速度 「物体」の大きさ 将棋、囲碁、チェス、オセロ、などの駒の位置
6.
要求仕様(モデルの値) 座標は、x,y,z x,y,z
のデフォルトは Double 平面上のオブジェクト表現の場合は、 x,y だけで管理したい x,y,z を整数で管理したい場合もある。 ( 整数同士の計算結果が少数点以下の数字にならないようにしたい)
7.
要求仕様(モデルのサービス) 行列の加算 (
2,1 ) + (3,1) = (5,1)
8.
要求仕様(モデルのサービス) 行列の k
倍 ( 2,1 ) × 3 = (6, 3 )
9.
インタフェース設計 trait Matrix
{ /**[[scala.Int]] 型の x 座標 */ def xByInt: Int /**[[scala.Int]] 型の y 座標 */ def yByInt: Int /**[[scala.Int]] 型の z 座標 */ def zByInt: Int /**x 座標 */ def x: Double /**y 座標 */ def y: Double /**z 座標 */ def z: Double }
10.
インタフェース設計 /**
この行列と引数の行列の和を返却する */ def add(matrix: Matrix): Matrix def +(matrix: Matrix): Matrix = add(matrix)
11.
インタフェース設計 /**
この行列の実数倍 ( 引数 ) を返却する */ def product(scalarValue: Long): Matrix /** この行列の実数倍 ( 引数 ) を返却する */ def product(scalarValue: Int): Matrix /** この行列の実数倍 ( 引数 ) を返却する */ def product(scalarValue: Double): Matrix
12.
インタフェース設計 /**
この行列に実数倍 ( 引数 ) した行列と、この行列との和を返却する */ def productValueAndAdd(scalarValue: Long): Matrix /** この行列に実数倍 ( 引数 ) した行列と、この行列との和を返却する */ def productValueAndAdd(scalarValue: Int): Matrix /** この行列に実数倍 ( 引数 ) した行列と、この行列との和を返却する */ def productValueAndAdd(scalarValue: Double): Matrix
13.
要求仕様(非機能) 低いオブジェクト生成コスト 頻繁に利用されるバリューオブジェクトを想定
スレッドセーフ 複数のスレッドから利用されることを想定 利用者インタフェースのみに縛られる 利用者は具象クラスや内部実装に縛られたくない インタフェースを守る範囲で内部実装は自由に変えたい
14.
非機能要求からの方針 オブジェクト生成コストは小さいほうがいい オブジェクトが使うメモリは小さく
オブジェクト生成時の処理ロジックは少なく イミュ ー タブル 複数スレッドからも安全に使用できる インターフェースを維持し、かつ、利用局面に応じた具象クラスを使えるようにする オブジェクト生成は、 java の static ファクトリーメソッドのようなイメージで (Java の例 ) java.util.Calendar#getInstance() ==>Scala では、 object の apply メソッドがよさそう
15.
モデル設計
( 一部抜粋 ) MatrixWithDouble x:Double y:Double z:Double MatrixWithInt xByInt:Int yByInt:Int zByInt:Int MatrixWithInt2D xByInt:Int yByInt:Int zByInt:Int = 0 MatrixWithDouble2D x:Double y:Double z:Double = 0.0 Matrix x:Double y:Double z:Double xByInt:Int yByInt:Int zByInt:Int << インタフェース >>
16.
オブジェクト生成 object Matrix
{ // ・・・コンパニオンオブジェクトと呼ばれる? def apply(x: Int, y: Int, z: Int): MatrixWithInt = MatrixWithInt(x, y, z) def apply(x: Int, y: Int): MatrixWithInt2D = MatrixWithInt2D(x, y) def apply(x:Double,y:Double,z:Double): MatrixWithDouble = MatrixWithDouble(x, y, z) def apply(x: Double, y: Double): MatrixWithDouble2D = MatrixWithDouble2D(x, y) }
17.
機能仕様(=テスト仕様)抜粋 assert(Matrix(1, 2,
3) === MatrixWithInt(1, 2, 3)) val mtx10_20_30Double = MatrixWithDouble(1.0, 2.0, 3.0) assert(Matrix(1.0, 2.0, 3.0) === mtx10_20_30Double) assert(Matrix(1.0, 2, 3) === mtx10_20_30Double) assert(Matrix(1, 2) === MatrixWithInt2D(1, 2)) assert(Matrix(1.1, 2.2) === MatrixWithDouble2D(1.1, 2.2))
18.
機能仕様(=テスト仕様)抜粋 val mtx21_32_0
= MatrixWithInt2D(21, 32) assert((Matrix(1, 2) + Matrix(20, 30)) === mtx21_32_0) assert(Matrix(20, 30) + (Matrix(1, 2)) === mtx21_32_0) val mtx111_222_333 = MatrixWithDouble(11.1, 22.2, 33.3) assert(Matrix(10, 20) + Matrix(1.1, 2.2, 33.3) === mtx111_222_333) assert(Matrix(1.1, 2.2, 33.3).add(Matrix(10.0, 20.0)) === mtx111_222_333)
19.
機能仕様(=テスト仕様)抜粋 var m1:
Matrix = Matrix(1, 2) var m2: Matrix = Matrix(10, 20) assert(m1 + m2 === MatrixWithInt2D(11, 22))
20.
実装:オーバーロードとオーバーライド sealed trait
Matrix { /** この行列と引数の行列の和を返却する */ def add(matrix: Matrix): Matrix = Matrix(x + matrix.x, y + matrix.y, z + matrix.z) } private[core] abstract trait MatrixWithIntBase extends Matrix { def add(point: MatrixWithInt): MatrixWithInt = MatrixWithInt(xByInt + point.xByInt, yByInt + point.yByInt, zByInt + point.zByInt) def add(point: MatrixWithIntBase): MatrixWithIntBase = MatrixWithInt(xByInt + point.xByInt, yByInt + point.yByInt, zByInt + point.zByInt) }
21.
実装:オーバーロードとオーバーライド final case
class MatrixWithInt2D private[core](xByInt: Int, yByInt: Int) extends MatrixWithIntBase with Matrix2D { def add(matrix: MatrixWithInt2D): MatrixWithInt2D = MatrixWithInt2D(xByInt + matrix.xByInt, yByInt + matrix.yByInt) def +(matrix: MatrixWithInt2D): MatrixWithInt2D = add(matrix) override def add(matrix: MatrixWithIntBase): MatrixWithIntBase = matrix match { case pointWithInt2D: MatrixWithInt2D => add(pointWithInt2D) case pointWithInt: MatrixWithInt => add(pointWithInt) case other => super.add(other) } }
22.
機能と実装の 説明おわり
23.
もっとやるとしたら (今回やってません)
機能要求 行列の回転 非機能要求 Flyweight パターン オブジェクトキャッシュ
24.
感想 と 知りたいこと
25.
感想 -
Scaladoc class と object が横並び コンストラクタを private に したら表示されない リンクはもっと柔軟にかけたらいいのに
26.
Scaladoc
リンクはもっと柔軟にかけたらいいのに [[ クラス名フル修飾 ]] でリンクになる パッケージ名を書くの面倒。 import されているのは、シンプルなクラス名だったらいいのに メソッドへのリンクつくれないの? なんか方法ないですか。おしえてください Scaladoc 文法を書いてあったページが なくなっているような。。。 (Scaladoc 2 Documentation for Authors)
27.
Scaladoc
コンストラクタを private にしたら表示 されない private コンストラクタが表示されないことは うれしい 利用者に、どうやってインスタンス化するかは、ドキュメントに書くしかないか? 誰もが迷うことなくインスタンス化する方法を 把握できればいいのに。 いい方法ないでしょうか。
28.
Scaladoc
class と object が横並び コンパイルした結果の "class Hoge" と "object Hoge" は 型の関係はなにもないはず コンパイル後のクラスファイル名ってホントはちがう Hoge 、 Hoge$ のようなかんじ。。。 設計上、暗黙の守るべきルールがあるのかではなかろうか? 教えてください
29.
object と
apply メソッド 今回作ったものの中では。。。 コード再掲 sealed trait Matrix object Matrix { def apply(x: Int, y: Int, z: Int): MatrixWithInt = MatrixWithInt(x, y, z) def apply(x: Int, y: Int): MatrixWithInt2D = MatrixWithInt2D(x, y) def apply(x: Double, y: Double, z: Double): MatrixWithDouble = MatrixWithDouble(x, y, z) def apply(x: Double, y: Double): MatrixWithDouble2D = MatrixWithDouble2D(x, y) } ファクトリ役として使った
30.
object と
apply メソッド コンストラクタより、 apply メソッドのほうが、 柔軟にインスタンス生成できる 生成する型を柔軟に切り替えられる シングルトンを返却したり、こっそりインスタンスをキャッシュすることもできる 利用者のコードを変更せず、内部実装を切り替えられる こっそり、非パブリックなインスタンスを返却する用変更なんてことも可能 使用者が意図的に生成するインスタンスの型を決めたいなら、 apply メソッドで作らず、 "createHoge" みたいなメソッドのほうがいい コンストラクタより劣ること めんどくさい
31.
object と
apply メソッド コンパニオンオブジェクト 使命はなに? おしえてください class と同名の object をこうよぶのか? case class Foo() 、 object Foo val foo :Foo = Foo 後ろの Foo はオブジェクトなのかクラスなのかややこしい class と object が関係あるよとの意思表示として object Foo extends Foo とかしたほうがいいとかあるのかな。。
32.
おわり ありがとう ございました
Download
[8]
ページ先頭
©2009-2025
Movatter.jp