iOSエンジニアが抱える「160秒間」の苦悩
FOLIOというオンライン証券会社でCDO(Chief Design Officer)をしている広野です。
弊社ではiOSアプリを開発中で、毎日あーでもないこーでもないと最高のユーザー体験を提供するための議論を重ねています。
そんな中、iOSエンジニアの近藤が年末あたりから
「開発が進めば進むほど、ビルド時間が鬼長くて仕事にならないです…」
と嘆くことが多くなります。
僕も近藤とランチを一緒に食べている際にそのことを相談され、(そんなに…?)と気になって、帰社してから実際にビルドの様子を見せてもらいました。
すると、やはりお金を扱うサービスということもあって、堅牢なシステム構築を実現するためステップ数(コードの行数)も多く、クリーンビルド(フルコンパイル)の時間はたしかにその時点で 160秒 くらいかかっていました。
広野「この 160秒 待ってる間なにしてるんですか?」
近藤「モンハンのこと考えてますね」
広野「モンハン好きですもんね…」
(モンハンのこと考えてるらしい)
モンハンに罪はありませんが、一日の大半モンハンのことばっかり考えられても困るし、なんとかしてあげたいと思い、生産性向上のために「iMac Pro」を導入しました。
「iMac Pro」は言わずとしれた、2017年末に販売開始された超ハイスペックPCですね。
今回購入した仕様はこちらです。
- プロセッサ :2.3GHz Intel Xeon W
- コア :18コア(!!)
- メモリ :64GB 2555 MHz DDR4
- グラフィック:Radeon Pro Vega 56(8GB)
- ストレージ :1TB SSD
今回は、どういう経緯で購入に至ったのか、そして実際使ってみてどうなのかというのをご紹介したいと思います。
課題発見から購入決定までの「2週間」の流れ
1. 開発現場のヒアリング
当時は MacBook Pro の15インチを使っており、スペックは以下。
- プロセッサ :2.5GHz Intel Core i7
- コア :4コア
- メモリ :16GB 1600 MHz DDR3
- グラフィック:Intel Iris Pro 1536MB
- ストレージ :256GB SSD
これを使っている現場の声を深掘りするため、iOSエンジニアたちに本格的にヒアリングをおこないます。
すると、やはりビルド時間が長かったり、CPUもメモリも食うのでその間何もできない(からモンハンのことを考える)ことが一番の悩みであると、彼らは口を揃えました。
開発をお手伝いいただいている杉上さんからも、
「前職ではMacBook Proを2台使っていて、1台でビルドをし、その隙にもう1台でコードを書いていた」
という話をきいて、弊社に限らず世のiOSエンジニアにとって大変クリティカルな問題であると改めて認識しました。
その解決方法を皆でランチしながら話していたところ、年末だったこともあって、当時発売されたばかりの「iMac Pro」なら解決できそうか、という話題になってきます。
2. 性能の調査
「iMac Pro」は個人的にもボディの美しさに惹かれており、かなり高額だけれども導入できたらいいなという思いで、実際ビルド時間にどれくらい貢献してくれるのか調査しました。
調べていると、とあるOSSの「Xcodeでビルドした時間」をMac別にまとめた表がGitHubで公開されているのを見つけます。
これによると「iMac Pro」とその他のMacではざっくり以下のように差があるということです。
(↑ どちらも https://github.com/ashfurrow/xcode-hardware-performance を一部を指標化)
このシミュレーションによると、「iMac Pro」は当時使っていた「MacBook Pro(Mid 2015)」と比べると、
クリーンビルドは 約190%、
差分ビルドは 約170%、
それぞれ速くなることが判明します!
3. 稟議書の提出
思っていた以上の差(2倍くらいはやくなる!)に驚いた僕たちは、「iMac Pro」を導入すれば確実に生産性があがると判断し、早速CTOと社内システム担当に相談してみました。
ただし、そうは言っても「iMac Pro」は現状Appleの中でもハイエンドのPCであり、スペックを抑えたとしてもかなりの高額です。
購入するかどうか判断するにあたっても、費用対効果が気になることでしょう。
ということで、欲しいスペックとその値段(98万3664円)を記載しつつ、調査した性能の差を参考として添付し、
- これを導入することでどれくらい効率があがるのか
- 効率があがることによって、会社にどのような影響を及ぼすのか
- 他の開発ではなく、なぜiOS開発においてのみ緊急で必要なのか
- 弊社にとってiOS開発はどれくらいの重要度を持つのか
などを整理した上で、さらに近藤の開発に対する熱い想いを添えて、稟議書を提出しました。
ヒアリングからここまで2週間弱。
数日後、取締役陣や社内システム担当との話し合いを経て無事承認され、1ヶ月後に念願の「iMac Pro」が弊社に導入されることとなりました。
実際のビルド速度は……なんと「2.5倍」に!
せっかくなので実際に、従来の「MacBook Pro」と、新しく導入された「iMac Pro」とのビルド時間を比較してみました。
両方の実機で、開発中の「FOLIO」のiOSアプリをビルドしてみます。
ちなみに現在、iOSプロジェクトのコードは
「View 2.6万行、Redux 0.9万行、API 0.5万行」
となっています。
まず従来の「MacBook Pro(Mid 2015)」でのクリーンビルドです。
本記事の冒頭で 160秒 と記載しましたが、もう一度測定してみても……
結果は、「155.6秒」でした……。
かなり長いですね…。
ふと目をやると近藤は……
やはりモンハンのこと考えてました。
一方で、新しく導入された「iMac Pro」におけるクリーンビルドを試してみます。
⌘+Rを押して、しばらく待つと……
なんと 「 6 2 . 0 秒 」 !!!!
はやい!
「155.6秒」と比べると、「2.5倍」のスピードです。
モンハンのことを考える暇もありませんね。
(めちゃめちゃ嬉しそう)
差分ビルドについても、従来の「MacBook Pro」においては一行変えるだけでも差分検知だけで手一杯。
加えて、差分検知そのものに失敗し、結局フルにビルドする状態になってしまうことも少なくありませんでした。
一方でiMac Proの差分ビルドは、差分の検出もめちゃめちゃ速く、ちょっとしたスタイリングの修正もさくっとシミュレーターで確認できます!
そもそもシミュレーションの起動も比較にならないほどサクサクです。
前職で2つのPCを使って作業していた杉上さんも、「ビルド中でも開発できる」と嬉しそう。
このふたりの笑顔が見られただけで、買った価値があると思ってしまいます。
ベンチャーが「98万円」のPCを買うという決断
いまだサービスもβ版公開中であり、まだまだ順調に売り上げているとはとても言えないベンチャー企業が98万円のPCを買うなんて、お金の無駄遣いだと思われるかもしれません。
正直にいうと弊社は、今年資金調達をおこなった(創業2年で91億円の資金調達、LINE社と提携、研究機関創設!!次世代金融を創るFOLIOの加速、第二期創業メンバー募集へ!<代表インタビュー>)とはいえ無駄遣いできるほどのお金の余裕はもちろんなく、ひとつひとつの決済や備品の購入に対してもかなり気を配って経営しています。
しかしこの「iMac Pro」導入という決断は、
- 弊社の戦略上におけるiOSアプリの重要度
- iOSエンジニアが明確に抱えていた重い課題感
- それを解消できる手段の存在とタイミング
を総合的に考え、慎重に検討し、ここでその設備に「投資」することは長期的に必ずこの会社のためになる、と最終的に判断した上でのものです。
実はiOSアプリの開発速度をあげるためだけでなく、「筋が通っていて費用対効果が高ければ、必要だと思ったものはどんなに高額でも用意する」という弊社のスタンスを社内で明確にし、エンジニアのモチベーションをあげたい、という想いからの決断でもありました。
弊社には僕を筆頭にApple好きのミーハーも多いので、「iMac Pro」が届いたときにはみんなでワーワー盛り上がりました。その際に職種を超えて、かつ古株のメンバーと新入社員のメンバーとの間で会話が生まれたりして、その様子さえ「買ってよかった」と思わせるものでした。
従来使っていた「MacBook Pro」に比べて「iMac Pro」は 約5倍 の値段。
この決断が成功だったのか否かはまだ分かりませんが、FOLIOは今後もクリエーターへの生産性向上のための「投資」を怠りません。
あなたの会社でも、自分の作業に最適な環境で、効率的な開発ができますように!
FOLIOのiOSアプリをゼロから共につくってくれるエンジニア、募集してます。