統計をとって高速化するscala開発 by cyberz,inc
DESCRIPTION
http://scalamatsuri.org/TRANSCRIPT
統計をとって高速化する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