はじめに
2022年ももうすぐ終わろうというこの時節にこんな基本的な話を書くのは自分としてもいささか遺憾なのですが、具体的に書かないとわからない人というのが世の中にはいらっしゃるようなので、記します。
開発環境のメモリサイズを削減すると何が起きるか
開発PCで作業中に搭載されているメモリが足りないと不足分をディスク上に作成した仮想メモリで補おうとします。必要なメモリサイズに対して搭載メモリが足りないとスラッシングを起こしてディスクアクセスが始まり、アクセスランプがチカチカしたまま処理がいっこうに終わらないといった現象が発生します。この現象は、動作が遅いけれどもエラーにはならないというのがクセモノで、極端に遅いのを我慢すればどうにか作業はできてしまいます。しかし、こういう現象が起きるようになったら普通に考えてメモリ増設を検討すべきです。
特に大量の資材を使って開発を行うような現場でメモリが不足するPCを使っていると、劇的に生産性が下がることになります。とある大規模システムの開発現場では、Eclipce上で一回のビルド時に扱うソースファイル類が2万ファイルくらいあり、クリーンビルドをすると30分や1時間平気でかかっていました。ところがこれほどの大規模システムにもかかわらず(あるいは、大規模だからこそちょっとでも経費節減しようとしてか?)開発機にはメモリがたったの8GBしか搭載されておらず、何かというとPCの動作が不安定になって開発メンバーは四苦八苦していました。
Eclipseを使ったJava開発のプロジェクトではよくあることですが、IDEだけでなくJavaEE用のアプリケーションコンテナやDBMSも開発PC内で動かす必要があります。使っているテストツールやビルドツールもできるだけ安くあげようとしてOSSを使うため品質が悪く何かというとクリーンビルドからのやり直しが必要になることがあり、生産性を著しく落としていました。ビルドだけでなく、ソースの表示動作も遅くなり、少しでもマシにするためパンくずリストやサジェスチョンなどの便利な機能もオフにして作業したりしていました。「せめてメモリを16GBにしてくれたら…」と開発者みんなが思っていました。
試算してみます
- メモリ増設:仮に8GB(6,000円)追加すると生産性が1.2倍になるものとする。
いまどきメモリ8GBどころか16GBのモジュールでも数千円で買えます。数千円のメモリをケチって生産性が激落ちしているような現場、例えば上に書いたような劣悪な環境の現場で各PCに8GBのメモリを増設すれば、生産性は2倍に上がってもおかしくないですが、ここでは控えめに、生産性が1.2倍に上がると仮定します。 メモリ購入にかかるコストはたぶん3~4,000円くらいだと思いますが、調達やセットアップにかかる手間も含めPC1台につき 6,000円としてみましょう。 - 人件費:仮に総勢 100名 x 平均単価60万/月 = 6,000万/月とする。
最近は人手不足で人件費も高騰してきていますのでもっとかかるのではないかと思いますが、控えめに平均単価60万としておきます。
人数は案件によりますが、大規模案件なら開発者の人数は数百人規模になることは普通にあります。ここでは計算を簡単にするために100人としました。 - この100人のPCに8GB増設をすれば、メモリ増設にかかる費用は6,000 x 100 = 600,000円(1人月)です。
- 一方、生産性が1.2倍になることで、単純計算で100人月 x 0.2 = 20人月分の工数が実質的に増えることになります。
- つまり、たった1人月分(1%)の出費で、差し引き19人月分=19%もの効率アップが見込めるわけです。
- 上に書いたように、控えめな数字で見積っています。費用を1人月追加して開発者を一名増員しても、スキルによってはまったく戦力にならないこともあり、場合によっては足手まといになることもありますが、メモリ増設はそのような心配もなく、入れた瞬間から確実にプロジェクトの生産性を上げてくれるのです。この増えた20人月は、新たに教育する必要もなく、入退場管理をする必要もなく、机もフロアスペースも用意する必要がありません。そして初期費用として最初に費用がかかるだけで、次の月も、その次の月も無料で効果が持続するのです。素晴らしくないですか?
- 開発PCのメモリを減らすということは、この逆をやるということです。 プロジェクト施策の最悪手という意味がおわかりでしょうか。メモリの不足は、PCを使ったすべての作業の生産性に影響します。開発において、特に製造以降のほとんどの作業にブレーキがかかるということです。このことの重要さがもっと認識されるべきではないかと思います。PMBOKだとか、スクラムだとか、心理的安全性だとかいった高尚な話をする前にこういう基本的な問題をクリアすべきでしょう。
【余談】協力会社はこのことを指摘してくれません。
- もしあなたが発注側プライムベンダーのPMだったとして、開発に使うPCのメモリが足りないことが原因でプロジェクトの効率が激落ちしていたとしても、あなたのプロジェクトに開発者を派遣している協力会社の営業マンはそのことを教えてくれたりはしません。彼らはあなたのプロジェクトに人をたくさん入れさせるのが仕事なので、効率の悪い施策は大歓迎だからです。
- 逆にそのような場合に「PCのメモリを増設した方がよいのでは?」と言ってくれるような業者さんであれば、本当にプロジェクトのことを考えてくれている良心的な業者さんである可能性があるので、大事に長くつきあうべきでしょう。
あとがき
-
この記事で言いたいことは、ケチケチするなという話ではありません。ケチケチするなら合理的にやりませんか? という話です。
開発経費をできるだけ削減するのもプロジェクトマネジメントの一環でしょう。それはわかります。しかし、削減すべきところはそこではありません。他の何を削ってもそこだけは削ってはいけません。わずかな費用を浮かすために開発PCのメモリ容量を減らすのは自分で自分の首を絞める行為であり、最悪手なのです。この施策によってプロジェクトが遅延し、その結果最大の被害をこうむるのは、ほかならぬこれを決めたプロジェクトオーナーの皆さんなのです。
最低限の装備を用意しないで戦に勝つことはできません。何卒ご考慮ください。 -
以上です。どなたかのお役に立てば幸いです。