LoginSignup
4
1

More than 5 years have passed since last update.

Androidでビルドにどれくらい時間をかけているというのか。

Last updated at Posted at 2018-09-17

目的

失われた2人日をiMac Proで取り戻し、開発体験を向上するまでの軌跡 | Pixiv inside

に触発された。件の記事にはMacbookで500~1000sを一回のビルドあたり溶かしているとある。自分の場合は更にオンボロPC使っているので、より悪い結果になるはず。これを上司につきつけて新しいPCを手に入れるのだ!
僕はAndroid開発なので、Gradleスクリプトを組み、ビルドにどの程度時間がかかっているかトラッキングしてみる。

トラッキング用コード

トラッキングするコードは以下にようになる。
これをプロジェクトルート側の build.gradleに追加すると、build.logにビルド時間が吐き出される。

long startTime
gradle.beforeProject {
    startTime = System.nanoTime()
}

gradle.buildFinished {
    println "build finished!"
    long execution = (System.nanoTime() - startTime) / 1000000
    println "TIME: ${execution} ms"
    new File("build.log").text += "${Calendar.getInstance().getTime()} : ${execution} ms \n"
}

環境・条件

PCのスペックは以下のとおり。

OS Ubuntu 16.04
CPU Core i5-660 3.33GHz
Memory 4GB

確か2011年製だったはず。かなりボロい。メモリはいつもパンパン。

計測するのはAndroidアプリ。ちょっとしたチャットアプリでサンプル程度の規模感です。
clocの結果は以下(ちょっとはしょってる)。

-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
JSON                           119              0              0           8766
Java                            21             22          12462           7636
XML                             88            478              2           6088
Kotlin                          11             57             12            307
Gradle                           3              9              6             70
-------------------------------------------------------------------------------
SUM:                           245            613          12524          23055
-------------------------------------------------------------------------------

結果

一日計測してみた。生ログは以下のようになる。

Tue Sep 11 09:37:49 JST 2018 : 64257 ms
Tue Sep 11 09:39:09 JST 2018 : 7430 ms
Tue Sep 11 09:39:19 JST 2018 : 8168 ms
Tue Sep 11 09:54:01 JST 2018 : 35668 ms
Tue Sep 11 10:07:39 JST 2018 : 9058 ms 
 :

これを合計すると

$ cat build.log | cut -c 32- | sed "s/ ms//g" | awk '{sum=sum+$1}END{print sum}'
3247781

3247718ms‥ おもったより少ないな。
結果としては、54.1分である。ほぼ0.9時間だな。

人月換算

一日0.9時間なので、ビルドにかかる人月は

0.9 x 20 = 18 H = 2.25 D

というわけで、2人日ちょいのビルド時間を溶かしていることになる‥
あれ?元記事とかわらない‥
もっと時間とかしてる印象なのに‥

考察

これを上司につきつけても、「まあ、根性でしばらくがんばれや」と言われかねない。

実は計測するまでもなく、Android StudioのUIのレスポンスはガックガクだし、エミュレータは全く動かない(というか、そういうものだと思っていたら、自宅MacbookでAndroid Studioを動かしてみると、UIがサクサクで、エミュレータも快適だったことに驚愕した記憶がある)くらいにはPCは明らかにオンボロだったのである。

その割にビルド時間が案外短かった要因としては、ビルド後必ずスワッピングするため、UIにコントロールが戻ってくるまで10分程度かかってしまい、単純にビルド回数が少なくなったことが挙げられる。

また、計測したのが、本格的なアプリでなく、ちょっとしたサンプルアプリだということも勘案しなければならない。複雑な市場アプリとはビルド時間はかなり変わってきてしまうだろう。

所感

というわけで、あまりに低スペックPCだとビルド時間で上司と戦うのはやめたほうが良さそうだ‥ UIがもさもさした時点でもうこのPCでは開発が不可能ですと言い切ってもいいかもしれない。

ポエム

というか、IDEを諦めたり、UIのコントロールが戻るまでに10分待ったりするような、オンボロ環境と戦っている時間は、人生の無駄でしかない。オートコンプリートを切るだとか軽量エディタを使うだとかのスキルもPCを買えば済む話なので、何の役にも立たないだろう。竹槍で爆撃機は落とせないのだ。

開発会社は現場にこのような悩みを抱えさせず、エンジニアに最良の環境を与えてやるべきだと感じた‥

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1