entry-header-eye-catch.html
entry-title-container.html

entry-header-author-info.html
Article by

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

お初です。2017年10月入社の @kobaken です。iOSアプリ開発を生業にしております。 最近はすっかりスタァライトされてしまい、舞台創造科の一員になってしまいました。 普段は声優のことを考える傍ら、pixivやpixiv SketchのiOSアプリの開発をしています。

ところで、iOSアプリ開発をされている皆さんの中に、このような現象に頭を悩まされている方はいるでしょうか?

なかなか終わらないビルド……侵食されるCPUリソース……固まるIDE……

わかります。自分も以前までは上記の症例に頭を悩まされ、【精神破壊(メンタルブレイク)】される寸前でした。

どうにかして作業効率を上げないと僕が病んじゃう!そうすると開発の手が止まって、新しい価値をユーザに届けられなくなっちゃう!私これからどうすればいいの〜〜〜!……そんなとき僕たちの目の前に現れたのが「iMac Pro」でした。

f:id:pxv:20191113161042j:plain
iMac Proの美しいスクリーンをご堪能ください

他社さんでも同様の問題を解決するべくiMac Pro導入の流れがきています。ピクシブでもエンジニアの開発体験の向上に惜しむことなく投資しています。

この記事では、会社にiMac Proが来た経緯、実際にiMac Proを利用してみて変化があったこと、今後の展望を連ねていきます。

終わらないビルド

まず、以前までメインで利用していたMacbook Proのスペックを見てみましょう。

MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports)
CPU: 3.5 GHz Intel Core i7(2 Cores)
MEMORY: 16 GB 2133 MHz LPDDR3

そしてビルド対象となるpixivのiOSアプリの規模はこちら。

f:id:pxv:20191227132425p:plain
コード行数計測ツール「cloc」で解析した結果

Swiftファイルは914、コードベースでいうと60,000行を超えています。
大きいですね。この規模のプロジェクトを上記スペックのマシンでビルドしてみるとどうなるでしょうか?
ビルド中はコードを触ることはままならず、他の重めのタスクを走らせることも困難になります。そして僕は声優のことを考え、上の空になりながら待ちぼうけるのでした……

ビルド時間を計測してみた

声優のことを考えるのは楽しいですが、仕事が終わらないのは困ります。たまらなくなった自分は、@FromAtomさんの一声で動き出すのでした。

自分はXcodeの機能でビルド開始/終了時に音を鳴らす設定をしていたということを思い出しました。 今回はその設定を利用して計測をすることにしました。

なお、単純に一回のビルド時間がどのくらいなのか?というのを知りたい場合は、ターミナルで以下のコマンドを叩けばXcode上に時間が表示されます。

$ defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

今回はデイリーとマンスリーで計測していきたかったので、自前でサクッと測定&計測スクリプトを書いてみました。
ビルド時間の測定はシェルスクリプト、ある期間のビルド時間の計測はRubyで書きました。

このスクリプトをXcodeのビルド開始/成功/失敗時に走らせていきます。

f:id:pxv:20191227132435p:plain
ビルド開始/成功/失敗時に任意の音声を鳴らすこともできるので便利

あとは何も考えずにいつものように開発を進めていくだけです。
結果を見たくなったら、サマリーを計算してくれるスクリプトを叩きます。
ある一ヶ月分の計測結果から抜粋したものがこちらになります。

$ ruby summary.rb

【今月のビルド】 ビルド回数: 744回 ビルド時間: 560s 23s 14s 16s 10s 24s 164s ~中略~ 1044s 47s 48s 68s 45s 6s 994s 48s 56s 5s 998s ビルド総時間: 74040s 1234.0min 20.57h 2.6day

※1day=1人日=8時間換算です

ご覧の通り、クリーンビルドが走るたびに500~1000sの時間が溶けていきます。
そしてビルド時間だけで1ヶ月に約2人日が消費されていることも分かります。これは由々しき問題。これでは僕が声優のことを考えてるだけで2人日が終わってしまいます。

ついに弊社にもiMac Proが!

そこで現れたのがこのiMac Proでした!

iMac Pro (2017)
CPU: 3 GHz Intel Xeon W(10 Cores)
MEMORY: 64 GB 2666 MHz DDR4

検証用で一台を自席に配備して頂き、1~2ヶ月仕事で利用しました。

f:id:pxv:20191113161038j:plain
iMac Proで仕事をしている様子

そこでiMac Proでも同様の手法でビルド時間の計測を試してみました。

ビルド時間比較

結果がこちら。

$ ruby summary.rb

【今月のビルド】 ビルド回数: 654回 ビルド時間: 14 12 12 11 12 14 137 11 19 ~中略~ 20 7 23 10 9 9 10 10 ビルド総時間: 12590 209.83min 3.5h 0.4day

※ 1day=1人日=8時間換算です

両者を比較してみた図がこちら。

f:id:pxv:20191227132441p:plain
クリーンビルドの様子

f:id:pxv:20191227132445p:plain
インクリメントビルドの様子

結果として、クリーンビルドが4.79~7.35倍、インクリメントビルドが2.09~2.25倍早くなりました!すごい。

まとめ

iMac Proと出会って、仕事の効率がグンッと上がりました!

  • ビルド時間が短いのでTrial and Errorが捗る
  • UIチェックのサイクルが短くなる
  • 同時に複数個の重いタスクをこなすことができる
  • 頻繁にIDEが固まるということがなくなった

個人的には、XcodeとAndroid Studioを起動しつつ作業が快適に進められるので大変重宝しています。サンキュー!!iMac Pro!!!

さいごに

iOSアプリ開発はWebサービスの開発と比較すると、ビルド時間がどうしてもかかってしまいます。デザイナとUIについて相談し合ったりするケースで、その度にビルドを走らせ、待ちぼうけになるのは避けたいですね。長いビルド時間の手持ち無沙汰で何十分もTwitterを眺めてしまったり、その待ち時間でついコーヒーの飲み過ぎでカフェイン依存症になってしまったりするかもしれません。

そんなときは、iMac Pro導入を検討してみるのはどうでしょうか。最初の導入コストはかかりますが、将来的にみれば 毎日何度も走らせるビルドを高速化させ時間短縮、それによりエンジニアの精神衛生が向上し集中力が増し、より多くの価値を提供できるようになり、実質コスト削減につながるでしょう。

ピクシブでは声優好きなビルド時間をさらに爆速にしたいiOSエンジニアを募集しています。

20191219012714
kobaken
2017年10月新卒入社。声優案件やpixivコミックのAndroidアプリ開発を担当しています。チームのムードメーカー的存在。ハヤテのごとく!が人生のバイブル。最近はポケカに夢中。座右の銘は「常にユーザであれ」