こんにちは。
ビズリーチ インキュベーションカンパニーで新規事業のエンジニアをしている藤村です。

幾つかのメディアに取り上げて頂きましたが、現在開発マシンとして全エンジニア、デザイナーの希望者に、iMac Proと標準スペックのMacBook Proを支給しています。
※ ノート派の方は高スペックのMacBook Proを選択できます。

一方で、iMac Proって普通のサーバーサイド、Web開発程度で効果あるの? と疑問を持つ方もいるかもしれません。
実際に私達も計測する前はそうでした。

結論からいうと、クリーンビルドで2.13倍〜 6.67倍、インクリメンタルビルドで1.33倍〜 7.00倍という効果がありました。

今回は、ビルド速度と金の弾丸の相関に興味がある方々に向けて、導入背景の小話と、iMac Pro導入後のリアルなベンチマーク結果を共有したいと思います。

CPUが仕事している間、エンジニアがアイドリングしている現実

cpu

今社内では、既存事業のグロースに加え、更なる事業の柱を作るべく、いくつかの新規事業のチームが立ち上がっています。

既存事業は成長に合わせてコードベースが大きくなっていき、新規事業は少人数でマルチスタックに作業をすることが多いという状況があります。そして、技術スタック的には、最近ではサーバーサイドは Scala/Kotlin、Webフロントは TypeScript/Angular/Flow/Vue、アプリは Swift/KotlinReact Native の採用が多く、これらは比較的ビルドに時間がかかります。

そうすると、現場では以下の様な状況が発生していました。

いわゆるビルド時間にツイッター見てしまい何しようとしていたかを忘れる現象だったり、並行して作業したいけどもラグがあるためストレスがたまる…など、そんなことが発生していました。

CPUが仕事している間、逆にエンジニアがアイドリングしていた訳です。

そんな時やってきた1台のiMac Pro

時を同じくして、その様な状況を目にしていたのか弊社取締役CTO/CPOの竹内が、満面の笑みで何やら重そうなものを抱えてやってきました。

それが最初のiMac Proです。

現場から提案した訳でもないのですが、聞くと自腹でApple Store表参道からお持ち帰りしてきた様です。
エンジニアだけでなく、おそらく今後を想像した経理の方も含めて、オフィスがザワつきました。

実際開発していたScala/Kotlin/Angular/Vueプロジェクトでの検証

そこで、この1台のiMac Proを使って、現状の技術スタックでどれ位速くなるのか検証してみようとなりました。 以下が、その時に計測した結果の一部です。
※ 比較検討として、MacBook Pro 15インチや、iMac 5Kを先行して使っていた為、その結果も含めてみました。

Scala クリーンビルド

標準機比でScala/Kotlinは約1.4 〜 2.7倍、Webは2.4 〜 9.3倍というレンジ

Scalaが圧倒的に遅く、効果がでそうというイメージがありましたが、意外にも効果が顕著だったのはWebでした。

まだまだ最適化が進められていないwebpackビルドであったり、yarn clean / install によってIOされるファイル数が多い為、アンチウィルスソフトの挙動により顕著に出てしまっている疑惑はありますが、それも含めても実際数値や体感としても大きな差がありました。

単純ビルド時間だけでなく、コンテキストスイッチの時間やラグによるストレス等も含めると、エンジニアが集中できる環境づくりという観点で、予想以上に効果はありそうという話になりました。

2週間で決まった全社導入

結果を見ると分かりますが、コストパフォーマンスでいうと圧倒的にiMac 5Kが優れてはいます。
そして、今であれば2018年モデルのMacBook Proはそこそこのパフォーマンスを叩き出すとも思います。

とはいえ、パフォーマンスが1.xでも変わること、それを年タームで考えた時に、インクリメンタルビルドや、UI確認は数百回、下手したら数千回行うことになります。 上記のiMac 5KとiMac Proの値段の差は30万しかなく、それで最高の環境が選択できるなら、iMac Proにしようという判断だと思っています。

そして、ベンチマーク結果や試算を経営陣に共有後、だいたい1 〜 2週間後くらいには経営会議での承認が下り、全社導入が決まっていました。はやい。

各プロダクトでのリアルベンチマーク結果

さて、実際に導入された結果、各プロダクトでどの程度効果があったのかです。

一部の事業部に協力を仰ぎ、実際に従来のMacBook ProとiMac Proのクリーンビルド、インクリメンタルビルドの時間を計測してもらいました。

クリーンビルド

クリーンビルド結果

2.13倍〜 6.67倍という結果です。
Scala, Kotlin, Swiftなどはだいたい2.xから3.xに落ち着き、webpackで複数サイトなどの複雑なビルドをしている様な環境だと、より大きな効果が出ている様です。

インクリメンタルビルド

インクリメンタルビルド結果

1.33倍〜 7.00倍という結果です。
1.x倍というと効果が薄い様に思えますが、UIの更新などでは何度も試行するため、5秒程度短くなるだけでも、年間で考えると大きな効果があります。 こちらもwebpackのプロジェクトで7倍と最も改善効果が大きいですが、ビルドの分割化などの最適化をするともう少し効果は限定的にはなると思います。

iMac Pro利用者の声

ベンチマーク結果以外にも、導入当時に聞いた社員の声を一部を紹介します。

社員の声 サーバーサイドエンジニア

社内で1,2を争う大きなScalaプロダクトなので1/3は大きいですね。

社員の声 アプリエンジニア

サーバー起動しつつ、アプリのビルドはどうしても遅いんですよね。
IDEやプロセスを並行で起動しても重くならないのは個人的にも非常に助かってます。

社員の声 インフラエンジニア

Docker Buildはネットワーク処理も多いですが、その他の部分でも速くなるんですね。

社員の声 フロントエンジニア

webpackビルドがまま時間かかりますし、
UI確認の試行回数が多いので、実はフロントエンジニアが一番恩恵を受けている気がします。
すごく改善された感が伝わってきました。

社員の声 サーバーサイドエンジニア

ビルドだけでなく、起動やジョブなど色々なことが速くなるのいいですよね。

社員の声 セキュリティ担当

ちょっと何の為にしているか分からないですが、速くなった様です。
※ 補足: セキュリティ室の方です

最後に

ベンチマーク結果や、社員の声を紹介させて頂きました。
感覚的にはビルド時間そのものの短縮ももちろんですが、複数プロセス、複数アプリを起動していても余裕で作業ができ、集中が途切れにくい体験の変化が大きいと感じます。

最初に言っていた様な課題に対しては、以下の様な変化がありました。

もちろん絶対的に待ち時間はあるのですが、なんとなくボトルネックがマシンからまた人間側に移った感覚です。

今回はたまたまiMac Proという投資手段でしたが、目指しているのはエンジニアが集中できる最高の環境づくりです。

AMD Threadripper 2なども出ましたし、まだまだマシン性能は伸びるでしょう。
数年後はまたより良い環境が生まれるかとは思いますが、その時はまたその時なりの最高な環境を追い求められる様な、新しい事業の創出と、それを支えるエンジニア組織を作っていければと思います。

藤村 拓也
藤村 拓也

HRMOS 事業部のプログラマ兼プロダクトオーナー。お酒の誘いは断りません🍺🍷