SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
統計をとって高速化する 
Scala開発 
引用:jigokuno.com
自己紹介 
名前小笠原みつき @yamitzky 
会社株式会社CyberZ 
スマホ広告のアドテク企業です! 
Scala歴2ヶ月 
Ruby歴4年
去年のScala Conference、覚えていますか?
James Roperさんのライブコーディング 
引用:vimeo.com/65556263 
掲示板をその場で開発
James Roperさんのライブコーディング 
smff 
スニペットを入力して……
James Roperさんのライブコーディング 
ッターン! 引用:jigokuno.com
こんなふうに開発できたら 
気持ちいい……!
IntelliJのLive Template
IntelliJのLive Template 
スニペットを入力して……
IntelliJのLive Template 
ッターン!
IntelliJのLive Template 
変数も補完!
何のスニペット作ろう……?
そうだ、データをとろう!
ソースコードのワードカウント 
ワードカウント 
単語出現数出現率 
( 2 6% 
) 2 6% 
String 1 3% 
def 1 3% 
… … …
社内で集計してみました
CyberZでの集計 
順位単語出現率順位 単語出現率 
1 . 9.96% 13 -> 1.22% 
2 ( 8.67% 14 Long 1.04% 
3 ) 8.67% 15 => 1.04% 
4 , 6.85% 16 val 1.03% 
5 : 3.82% 17 rs 0.92% 
6 = 2.58% 18 id 0.81% 
7 " 2.08% 19 c 0.80% 
8 [ 1.90% 20 rn 0.76% 
9 ] 1.90% 21 String 0.63% 
10 { 1.88% 22 * 0.51% 
11 } 1.88% 23 Option 0.50% 
12 def 1.24% 24 get 0.46%
グラフにしてみた 
出現順位 
出現率 
10% 
7.5% 
5% 
2.5% 
0% 
200 400 600 800
グラフにしてみた 
一部の単語だけが頻出する 
出現順位 
出現率 
10% 
7.5% 
5% 
2.5% 
0% 
200 400 600 800
グラフにしてみた 
上位24件で61% 
出現順位 
出現率 
10% 
7.5% 
5% 
2.5% 
0% 
200 400 600 800
両対数グラフにしてみると……
両対数グラフ 
0.01 
0 
1 10 100 
直線! 
(あまり出てこない単語) 
(頻出単語) 
出現順位 
出現率
ジップの法則 
引用:pha.jhu.edu/~rittner/fractal.html 
出現順位 
Reality 
英語でも成り立つ法則 
出現率 
The 
And 
Quality 
(あまり出てこない単語) 
(頻出単語)
話を戻して… 
上位24件で61% 
出現順位 
出現率 
10% 
7.5% 
5% 
2.5% 
0% 
200 400 600 800
まずは61%を省略する戦略で 
Live Templateを作ってみる
CyberZでの集計 
順位単語出現率順位 単語出現率 
1 . 9.96% 13 -> 1.22% 
2 ( 8.67% 14 Long 1.04% 
3 ) 8.67% 15 => 1.04% 
4 , 6.85% 16 val 1.03% 
5 : 3.82% 17 rs 0.92% 
6 = 2.58% 18 id 0.81% 
7 " 2.08% 19 c 0.80% 
8 [ 1.90% 20 rn 0.76% 
9 ] 1.90% 21 String 0.63% 
10 def, { val1.88% をスニ22 ペット* 化 
0.51% 
11 } 1.88% 23 Option 0.50% 
12 def 1.24% 24 get 0.46%
一文字に割り当てる 
同時にカッコや = も補完 
“d” 
“v”
例
例 
vだけ入れて…
例 
ッターン!
例
例
結果 
val <変数名> = <値> 
v<タブ> 
7文字 
2文字 
- 71%
CyberZでの集計 
順位単語出現率順位 単語出現率 
1 . 9.96% 13 -> 1.22% 
2 ( 8.67% 14 Long 1.04% 
3 ) 8.67% 15 => 1.04% 
4 , 6.85% 16 val 1.03% 
5 : 3.82% 17 rs 0.92% 
6 = 2.58% 18 id 0.81% 
7 " 2.08% 19 c 0.80% 
8 [ 1.90% 20 rn 0.76% 
9 ] 1.90% 21 String 0.63% 
10 { 1.88% 22 * 0.51% 
11 } 1.88% 23 Option 0.50% 
12いくdつef かの1.2型4%はよく24 入力gさet れる0.46%
よく使う型のLive Templateを登録 
“S” 
“I” 
“L” 
“O”
よく使う型のLive Templateを登録 
“S” 
“I” 
“L” 
“O” 
- 67% 
- 33% 
- 50% 
- 75%
ここまでで
なんと……!
約8%を省略 
理論上は100時間開発したら8時間短縮できる
Groovy Scriptを使うと 
こんなことも
メソッドのログ出力
メソッドのログ出力
メソッドのログ出力 
ッターン!
SQLの生成
SQLの生成
SQLの生成 
ッターン!
まとめ 
IntelliJのLive Templateを使いこなそう! 
ソースもあるよ! 
https://github.com/yamitzky/scala-intellij

Weitere ähnliche Inhalte

Ähnlich wie 統計をとって高速化する
Scala開発 by CyberZ,Inc.

ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
Masatoshi Tada
 
Interactive Music II - SuperCollider入門
Interactive Music II - SuperCollider入門Interactive Music II - SuperCollider入門
Interactive Music II - SuperCollider入門
Atsushi Tadokoro
 
入門機械学習1,2章
入門機械学習1,2章入門機械学習1,2章
入門機械学習1,2章
Kazufumi Ohkawa
 
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Uehara Junji
 

Ähnlich wie 統計をとって高速化する
Scala開発 by CyberZ,Inc. (16)

ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
 
Salmon cycle
Salmon cycleSalmon cycle
Salmon cycle
 
難易度ボラタリティグラフという分析手法
難易度ボラタリティグラフという分析手法難易度ボラタリティグラフという分析手法
難易度ボラタリティグラフという分析手法
 
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
 
文献紹介:Length-Controllable Image Captioning
文献紹介:Length-Controllable Image Captioning文献紹介:Length-Controllable Image Captioning
文献紹介:Length-Controllable Image Captioning
 
OCamlのアセンブラを読む話
OCamlのアセンブラを読む話OCamlのアセンブラを読む話
OCamlのアセンブラを読む話
 
Tokyo r33 beginner
Tokyo r33 beginnerTokyo r33 beginner
Tokyo r33 beginner
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Interactive Music II - SuperCollider入門
Interactive Music II - SuperCollider入門Interactive Music II - SuperCollider入門
Interactive Music II - SuperCollider入門
 
文献紹介:SlowFast Networks for Video Recognition
文献紹介:SlowFast Networks for Video Recognition文献紹介:SlowFast Networks for Video Recognition
文献紹介:SlowFast Networks for Video Recognition
 
入門機械学習1,2章
入門機械学習1,2章入門機械学習1,2章
入門機械学習1,2章
 
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920 10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920
 
㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2
 
リテラルと型の続きの話 #__swift__
リテラルと型の続きの話 #__swift__リテラルと型の続きの話 #__swift__
リテラルと型の続きの話 #__swift__
 
⑰jQueryをおぼえよう!その3
⑰jQueryをおぼえよう!その3⑰jQueryをおぼえよう!その3
⑰jQueryをおぼえよう!その3
 
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
 

Mehr von scalaconfjp

Scalaに対して意識の低いエンジニアがScalaで何したかの話, by 芸者東京エンターテインメント
Scalaに対して意識の低いエンジニアがScalaで何したかの話, by 芸者東京エンターテインメントScalaに対して意識の低いエンジニアがScalaで何したかの話, by 芸者東京エンターテインメント
Scalaに対して意識の低いエンジニアがScalaで何したかの話, by 芸者東京エンターテインメント
scalaconfjp
 

Mehr von scalaconfjp (20)

脆弱性対策のためのClean Architecture ~脆弱性に対するレジリエンスを確保せよ~
脆弱性対策のためのClean Architecture ~脆弱性に対するレジリエンスを確保せよ~脆弱性対策のためのClean Architecture ~脆弱性に対するレジリエンスを確保せよ~
脆弱性対策のためのClean Architecture ~脆弱性に対するレジリエンスを確保せよ~
 
Alp x BizReach SaaS事業を営む2社がお互い気になることをゆるゆる聞いてみる会
Alp x BizReach SaaS事業を営む2社がお互い気になることをゆるゆる聞いてみる会Alp x BizReach SaaS事業を営む2社がお互い気になることをゆるゆる聞いてみる会
Alp x BizReach SaaS事業を営む2社がお互い気になることをゆるゆる聞いてみる会
 
GraalVM Overview Compact version
GraalVM Overview Compact versionGraalVM Overview Compact version
GraalVM Overview Compact version
 
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
 
Monitoring Reactive Architecture Like Never Before / 今までになかったリアクティブアーキテクチャの監視...
Monitoring Reactive Architecture Like Never Before / 今までになかったリアクティブアーキテクチャの監視...Monitoring Reactive Architecture Like Never Before / 今までになかったリアクティブアーキテクチャの監視...
Monitoring Reactive Architecture Like Never Before / 今までになかったリアクティブアーキテクチャの監視...
 
Scala 3, what does it means for me? / Scala 3って、私にはどんな影響があるの? by Joan Goyeau
Scala 3, what does it means for me? / Scala 3って、私にはどんな影響があるの? by Joan GoyeauScala 3, what does it means for me? / Scala 3って、私にはどんな影響があるの? by Joan Goyeau
Scala 3, what does it means for me? / Scala 3って、私にはどんな影響があるの? by Joan Goyeau
 
Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...
Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...
Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...
 
Scala ♥ Graal by Flavio Brasil
Scala ♥ Graal by Flavio BrasilScala ♥ Graal by Flavio Brasil
Scala ♥ Graal by Flavio Brasil
 
Introduction to GraphQL in Scala
Introduction to GraphQL in ScalaIntroduction to GraphQL in Scala
Introduction to GraphQL in Scala
 
Safety Beyond Types
Safety Beyond TypesSafety Beyond Types
Safety Beyond Types
 
Reactive Kafka with Akka Streams
Reactive Kafka with Akka StreamsReactive Kafka with Akka Streams
Reactive Kafka with Akka Streams
 
Reactive microservices with play and akka
Reactive microservices with play and akkaReactive microservices with play and akka
Reactive microservices with play and akka
 
Scalaに対して意識の低いエンジニアがScalaで何したかの話, by 芸者東京エンターテインメント
Scalaに対して意識の低いエンジニアがScalaで何したかの話, by 芸者東京エンターテインメントScalaに対して意識の低いエンジニアがScalaで何したかの話, by 芸者東京エンターテインメント
Scalaに対して意識の低いエンジニアがScalaで何したかの話, by 芸者東京エンターテインメント
 
DWANGO by ドワンゴ
DWANGO by ドワンゴDWANGO by ドワンゴ
DWANGO by ドワンゴ
 
OCTOPARTS by M3, Inc.
OCTOPARTS by M3, Inc.OCTOPARTS by M3, Inc.
OCTOPARTS by M3, Inc.
 
Try using Aeromock by Marverick, Inc.
Try using Aeromock by Marverick, Inc.Try using Aeromock by Marverick, Inc.
Try using Aeromock by Marverick, Inc.
 
Short Introduction of Implicit Conversion by TIS, Inc.
Short Introduction of Implicit Conversion by TIS, Inc.Short Introduction of Implicit Conversion by TIS, Inc.
Short Introduction of Implicit Conversion by TIS, Inc.
 
ビズリーチ x ScalaMatsuri by BIZREACH, Inc.
ビズリーチ x ScalaMatsuri  by BIZREACH, Inc.ビズリーチ x ScalaMatsuri  by BIZREACH, Inc.
ビズリーチ x ScalaMatsuri by BIZREACH, Inc.
 
sbt, past and future / sbt, 傾向と対策
sbt, past and future / sbt, 傾向と対策sbt, past and future / sbt, 傾向と対策
sbt, past and future / sbt, 傾向と対策
 
The Evolution of Scala / Scala進化論
The Evolution of Scala / Scala進化論The Evolution of Scala / Scala進化論
The Evolution of Scala / Scala進化論
 

統計をとって高速化する
Scala開発 by CyberZ,Inc.