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

Preview:

DESCRIPTION

http://scalamatsuri.org/

Citation preview

統計をとって高速化する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%

グラフにしてみた

出現順位

出現率

0%

2.5%

5%

7.5%

10%

200 400 600 800

グラフにしてみた

出現順位

出現率

0%

2.5%

5%

7.5%

10%

200 400 600 800

一部の単語だけが頻出する

グラフにしてみた

出現順位

出現率

0%

2.5%

5%

7.5%

10%

200 400 600 800

上位24件で61%

両対数グラフにしてみると……

0

0.01

1 10 100

両対数グラフ

直線!

(あまり出てこない単語)

(頻出単語)

出現順位

出現率

ジップの法則

英語でも成り立つ法則出現順位

出現率

TheAnd

QualityReality

引用:pha.jhu.edu/~rittner/fractal.html

(あまり出てこない単語)

(頻出単語)

話を戻して…

出現順位

出現率

0%

2.5%

5%

7.5%

10%

200 400 600 800

上位24件で61%

まずは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 { 1.88% 22 * 0.51%

11 } 1.88% 23 Option 0.50%

12 def 1.24% 24 get 0.46%

def, valをスニペット化

一文字に割り当てる

同時にカッコや = も補完

“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 def 1.24% 24 get 0.46%いくつかの型はよく入力される

よく使う型のLive Templateを登録

“S”

“L”

“O”

“I”

よく使う型のLive Templateを登録

“S”

“L”

“O”

“I”

- 67%

- 33%

- 50%

- 75%

ここまでで

なんと……!

約8%を省略理論上は100時間開発したら8時間短縮できる

Groovy Scriptを使うとこんなことも

メソッドのログ出力

メソッドのログ出力

メソッドのログ出力

ッターン!

SQLの生成

SQLの生成

SQLの生成

ッターン!

まとめ

IntelliJのLive Templateを使いこなそう!

ソースもあるよ!https://github.com/yamitzky/scala-intellij

Recommended