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

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