ChienomiChienomi4GBの人権ことの起こり最近「会社の支給PCのメモリが4GBであることが悪行である程度」が話題になっている。これが意味するのは「会社の支給PCのメモリが4GBであることは許されざる罪である」という点に関しては異論を差し挟む者は基本的にいない。この手のことは何度か話題になっているのだけど、今回特段話題になっているのは論点が広がったためであると思う。タイミングよくサイボウズがバックオフィスにも32GBを支給していると公表おおまかにはNTTがGAFAに引き抜かれてて処遇改善を考えているよ、という話と、NTTをやめてGoogleに行った人のブログがバズったから...というところにあると思う。今回の記事の基本的なところはLinuxのメモリの本当の必要量を考える(メモ)を読んでほしい。私が使っているマシンは今かなり幅広い。RAMとかなり様々だ。RAMでがんばっていた。そもそも、Turionのサーバーはメインマシンの不調やシステムの組み直しで結構な期間(トータルで3ヶ月くらい)メインマシンを担ったことがある。Linuxなのであまり参考にならないだろう。使用マシンの経験も幅広い。JX3だし、RAMはわずか128kB(単位に注意)でしかなかった。あとのSunワークステーションはなにするにもパワー不足だったし、AptivaはOSの起動すら危うかった。ひと心地つけたのは当時ハイエンドクラスだったVAIOだけれど、メモリは64MBにすぎず、やはりなにをするにも足りなかった。今でも192MBに拡張したもののVAIOは現役だし、練習機のメモリは1GBである。一方で今の40コアXeonに代表されるように一般的なPCの次元からは逸脱したマシンの利用歴もある。現役でEPYCを使っている人にはかなわないが、それでも有り余る性能を使い切るような経験もある。積んでいる、と言えるだろう。私はメモリの利用状態を常にConkyで監視しているし、一定以上に高まったときにはメモリの利用状況をダンプする(自動で行われるものと、ワンクリックで実行できるものの2種類。-xによるもの)という運用をしている。メモリの使用量というのは一般に感覚やメーターで把握するよりはかなり厳密に把握している。適切さの話は置いておいて、「エンジニアが4GBでまともに仕事ができない」というのは、特に個人的なコンピュータが4GBで使えないというのは、私としては無能な印象を受ける。Linuxは結構「全部盛り」方向の環境なのだが、それでもブート時はそれほど重くない。Plasmaいずれでもだいたい1GB前後、せいぜい1.3GBといったところである。このまま普通に(タスク切り替えで)利用していても4GBを突破することはあまりない。私にしてみれば、制限的環境としては4GBというのはものすごく余裕がある。普通にAtomやVSCodeも使えるし、Chromiumでウェブブラウジングもできる。これが2GBになるといきなりきつい。実用的なデスクトップ環境だと1GB近くメモリを使ってしまうので、Chromiumでブラウジングするともたない。「Chromiumを諦める」でも「デスクトップを制限する」でも使い勝手に非常に大きな影響を感じる。4GBあれば普通に使える。いっても、「4GBを前提としていれば」だ。「あまりメモリを使わない使い方をする」ことによって「4GBで不足することは稀である」という状況を作り出せるという話なので、ある程度のスキルがいる。一般エンドユーザーにとっては4GBというのは難しい。事務職に4GBのPCを与えるのは率直に言って罪な無知である。エンジニアだと話は違う。4GBで作業に支障をきたす、というのは修練が足りない。4GBという枠を与えられてその枠内に抑えた進め方ができないということは、開発しているものが許容されるパフォーマンスの制限やリソースの制限に収めた最善を尽くすことができないということなので、その意味でも能力の欠如を晒すことになる。前提が変わる要素は多い言うまでもなくこれにはいくつかの観点がある。4GBで「十分でない」ことは明らかなのである。そもそもメモリの性質を考えてみよう。メモリというのは余っていることによってなにか嬉しい効果があるわけではない。使っていて余剰があればそれをさらに使うことはできるが、つかっていないのであれば余っているものは余っているだけなのだ。「足りなければ工夫する、余っていれば使い方を増やす」というのが基本になる。「工夫しなければ足りなくなる」4GBというメモリ量は「足りない」ということは揺らがない。使用するメモリというのは「何を」するかで話が大きく変わってくる。ChromiumやChromeを使っている時点で使い方としては重いわけだから、「ウェブブラウジングをする」というのを前提に話は進められない。そもそも「これが当たり前」に言っている人は想像力も経験も足りないし、可能性を追求したり工夫したり想像したりしない人はエンジニアに向いてすらいない。私がやっている中ではメモリを軽くするのが難しいのはホスト間接続テストである。多くのVMを接続する必要があることから、極限まで軽くしてもかなりのメモリが必要になる。少ないホスト数でテストする、ホストそのものを極限まで軽くする、という手段はとれるので20ホスト4GBとかで動作しているが。厳しいのは利用方法がそもそも制限されている場合である。10を使う」だと思う。最近のWindowsのリソースマネジメントは私には理解しがたい。性能を積んでもエクスペリエンスが改善しないのだ。7の頃は「リソースが有り余っているのに全然活用しない」という問題だったが、今はWindowsシステム側でリソースを食いつぶしてしまう。SSD)を以てしても「フォアグラウンドプロセスがバックグラウンドプロセスに邪魔されてスリップする」という不毛極まりない事態を起こす。「馬鹿じゃないの!?」と大声で叫びたくなる。なにをしてもとにかく無駄な処理が多いのだ。単純なプログラム起動時間も、かなり遅い部類に入るLinuxと比べても果てしなく遅い。Windowsで重い作業をすることがなく、Windowsで8GBを使い切るのをみたことは一度もないが(少なくともシステムモニター上では)、Windowsの挙動なら必要のないメモリを食いつぶしてもおかしくはない、と思う。このマシン(40コアXeon)でもメモリを使い切る以前に「プロセスの起動待ち、その間他の作業は阻害される」みたいなことが頻繁にあるので、叩き壊したくなるほどエクスペリエンスが悪いし、メモリが増えたところで作業効率が上がるとは到底思えなかった。それが気にならずメモリの容量を問題にしている人は、スマホを平気で使っているんだろうな、と思う。1もちろん、Windowsはエクスペリエンスが悪すぎるから開きっぱなしにしている、という可能性もあるが。Windows10はウィンドウスイッチングも結構遅い。(ビデオカードももちろん良いものを使っているのだが)また、メモリを食いつぶすことで有名なアプリケーションと言えばEclipseである。Eclipseを使うと一気にメモリ8GBでは怪しい、という事態になる。これは今どき使わなければいいとか、果てはそもそもJavaを使わなければいいとかいう話にもなるのだが、Eclipseを強要されるケースは普通にあるようなので、こういう場合はやはり状況が変わってくる。Gitの操作でメモリが128GBもあれば押し切ることのできる通常はできない操作というのもあったりするのだが、「メモリ8GBじゃ力押しできないから」というのはさすがに頭が悪い。それは方法を考えるべきだ。実際、メモリ8GBだと重めのソフトウェアはYaourtのデフォルト設定でAURからのビルドはできないのだが、それは普通に実ディスクを使ってもらうようにすれば解決する。潤沢なときに許される力技ができないことに文句をつけるのは筋合いではない。基本的には労働者にとっては必ずしも支給されるPCの性能というのは重要ではないと思う。個人の裁量で他のマシンが使えるとなると結果的に労働者に対して負担を強いることになるため、非常に不適正といえるけれど、皆が同じマシンを使うのであればそれは統一された前提条件である。コンピュータの性能は生産性とできることへの制限だから、業務効率やビジネス展開を制限することになるのだけど、それは労働者にとってはストレスだろうけれども、その時間でできることをすれば良いわけで、その問題に向き合う必要がない。その問題に向き合うべきは経営者だからだし、現に存在する「性能の低い(あるいは制限の厳しい)コンピュータで開発したくないから出ていく」というエンジニアのことを考えれば「人材の流出」という問題でもあり、それもまた経営者が向き合うべき問題である。どのようなコンピュータを支給するかは経営戦略への影響も大きく、労働者側から不満を言うのはもちろん自由だが、その是非を断じるのはかなり難しい。それが「本当に不足なのか」あるいは「スキルでカバーできないエンジニアの戯言」なのかという点も、どのような条件に基づいているのかわからなければなんともいえないので十把一絡げに言えるものではない。グレーディングの問題コンピュータの性能が「上下」や「優劣」に使われる、という問題は、まぁわからなくはない。いうか、実際に私が思い描いている「会社経営像」でも「何をする人か」そして「どのような方法でする人か」「どのくらいのスキルがあるか」によって(さらにいえばもっと様々細かなことまで含めて)「個別に選定する」ことを想定している。これは顔の見える範囲でしかできない方法だが、コンピュータのグレードが揃っていないことは私はそれほど問題だとは思わない。そもそも、メモリやCPUを「使う技術」と「使わない技術」はそれぞれ別にある。私が使っているようなコンピュータは一般的なパソコンとは比較にならないほどリソースがあるし、これを単に「快適」などということで終わらせず、しっかりそのリソースを活用できるようになるにはそれなりにスキルがいる。同時に、非常に性能の限られたマシンを最大限に活躍させるのにもスキルがいる。「欲しい」で最大限与えるのは不毛なのだけれど、特別な理由がなければ特別な使い方をしない限り通常は不足しないように設定するのが好ましい。その「通常の使い方におけるリソース要求量」が「なにをどうやってしてるか」によってかなり差が出るのだ。その違いによって異なる性能のコンピュータを設定するのは悪くないだろうと思う。そこに変な要素が加わるのはさすがにまずい。グレードの上下が地位の上下に比例するようにするとか。これはもう、柔軟な更新ができず、まとめて更新なんてなったらすさまじい費用と税金がかかる最悪なパターンだと言っていい。それから、「エンジニアよりもバックオフィスが下」というのもだ。Officeで、無駄に巨大なExcelシートを開くというようなことも割と珍しくないだろう。考えると、「メモリ使用量が8GBを越える普通な使い方」は事務方のほうが想定しやすいほどだ。現実的には4GBというのは相当に厳しい制約だと思う。普通に使えなくはないけれども、普通の人が普通に使える、にはならない。経営者側からみれば、そこまでケチって生産性を下げることはメリットがないだろう。従業員が優秀か否かによらず4GBメモリのマシンを採用したならば、せっかくの人員を無駄遣いすることになるのはほぼ間違いないだろう。8GBか16GBかということはやや難しい。16GBあれば安心だとは思うが、ラップトップだと簡単に16GBを選択できるモデルは少なく、ハイエンド構成を要求されることが多いのが2018年の事情だ。「無難な線」という意味ではデスクトップでは16GB、ラップトップでは8GBになると思う。デスクトップの場合8GBと16GBの金額差は割と小さいことが多く、ちゃんと選べば全体での価格差もあまりない場合が多い。(DELLとhpは大変無難な調達先として有名である。DELLはベンダー経由でも入りやすい)。ラップトップまで16GBを投入するか...ということには著しい疑問があるのだが、会社支給のPCとしてはデスクトップを主軸として16GBにして、必要な場合に限りラップトップを8GBで追加支給するというのが無難なのではないかと思う。「16GBが必要になる条件なんて限定的だから必要ない」という考え方は避けたほうがいいと思う。経営者ならば、労働者にとって争点になることを余計に作り出すべきではないように思うのだ。8GBで不足することは稀だが、それを不満に思う人が少なくないし、実際に条件によっては不足するのだから差が小さいのならそこまでケチるよりは16GBを支給するほうが良い経営判断なのではないか。サイボウズがやっているような32GBだが、私は過剰だと思う。凄腕も揃うサイボウズで統一するという意味では別に構わないだろうけど、「サイボウズがやってるんだから32GBにすべき!」みたいなのは無視して良い意見だと思う。4GBに留まっていた時代が異様に長かったが、8GBに移行してからも16GBへの進展はなかなかない。採用されているメモリ容量は増加がかなり鈍っているのだが、実際のところ16GBを越えると一般ユーザーが活用するのはとても困難なので、10GbEが普及しないのと同じような感じで普及していかないのだと思う。実際、私もデスクトップユースで16GBを超過することはかなり稀である。以前はあったのだが(使っていると20GBちょっと使っているという時期があった。Mageiaを使っている時に)、現在は8GBにも到達していないことのほうが多い。(もちろん、これは私が8GBしかメモリがないことを前提として負担をかけないようにしているからだが)。マルチディスプレイや大型高解像度ディスプレイ、さらには高速ストレージなどを採用して全体的に性能が向上するとマルチタスク性能も上がっていくためそれに伴って必要なメモリ量が増えて8GBを越える傾向がある。そのため、コンピュータの固定資産としての価値が設定された3年以内に16GBメモリが「不十分な量」になることは考えがたいし、一般的なサポート上限である5年以内でも可能性は相当低いと思う。特別な理由がなければ16GBあれば良いだろう。あればあったで快適な状況や、できることもあるのだが、それは限定的だろうから支給PCの標準とする動機としてはとても弱い。ハッカー(あるいはワナビー)が個人所有するPCであれば現状16GBしか使っていないとしてもよりメモリを必要とするテクニックを試すためにもより大きなメモリを積んでおいたほうがよかろうとは思うけれど。私のスマートフォンはSnapdragon835搭載機だが、Wi-Fi使っててもあまりにおそすぎる。私はスマートフォンを必要がなければ触らない。UXとしては、操作した結果が0.3秒以内に得られないのは失格だ、というのが私の設計方針である。これは、「遅い」と感じる平均閾値に基づく。