JavaScriptよ。文明を捨て、自然に還れ。
Posted: Updated:
Web ナチュラリスト
フィードを眺めていたら Alex Russell 氏の新作が投稿されていた。
The "Developer Experience" Bait-and-Switch | Infrequently Noted
本来の趣旨については原文を読んでもらえばいいし、下記はこれを読んだ上で普段の考えを踏まえて脳裏をよぎったポエムである。
我々は複雑性で仕事をしている
仕事をしている、もしくはそれでお金を稼いでいる。誰もが。
私は 2012 年頃から Web の、特に Web フロントエンドの複雑性に加担している自覚がある。
Web の専門性が高まることはその技術領域に深淵な価値があることを示唆し、それに携わることの価値を相対的に向上させることができる。
私の活動そのものは些細なものだが、かくして 2018 年現在の Web はかくも複雑になることに成功し、エンジニアリングの名の下にかつての HTML コーダーと比べれば専門性も単価も向上した。
これは Web 界のブランディングの勝利だ。
現実の Web は荒廃している
ところが現実の Web で得られる…いや、Web に限らないかもしれないが体験は悪化している。
実はここ数年でモバイルの体験は悪くなっているという話、結構実感伴うのは僕だけかな。統計に影響を与えてるのはインド市場が大きいけど、貧弱なCPUを搭載した安価な端末の普及や低速ネットワークって、日本だと格安simや安価なsimフリー端末の普及と読み替えられるよね。
— Shunya Shishido (@sisidovski) September 9, 2018
まさしく同じ感想と実感を持っている。格安 SIM は大手キャリアの回線を間借りしているだけであって、その実効速度は非常に限定的な水準にある。格安 SIM の現実は非常に厳しい。
端末のスペックについても この WebPagetest の Visual Comparison 結果 が分かりやすい。これは 2018年のローエンドモデルと、5年前の平均的モデルと、2年前の平均的モデル、つまり性能の低い順で並んでいる WebPagetest だ。The Cost Of JavaScript In 2018 で挙げられていた。JavaScript 500KB、回線条件は同じで端末スペックのみが違う比較である。
結果、First (Contentful?) Paint で 3 秒差、Visually Complete で 7 秒差が出ている。これらの時間を 500kb で割れば 1kb あたりどれくらいの差がつくかが分かる。2018年のローエンドモデルは2年前の平均的モデルよりもはるかに遅い。これが格安 SIM と抱き合わせで売られているような一般普及のためのモデルの現実だ。
我々は天上にいる
一般的労働現場に対する偏見に満ちた図ができてしまった...。 pic.twitter.com/8urGMZ9G61
— あほむ (•ө•) (@ahomu) September 11, 2018
我々開発者の作業環境は、少なくとも時代遅れでないデバイス、最新ブラウザ、最新の OS、そして十分に高速な通信環境によって支えられている。
我々の最新 MacBook Pro フルスペックの Chrome で快適に表示される Web ページは、圧倒的その他多数にとって地獄のように粘着質で、汚泥の中を泳ぐような速度で動作する Web ページであることは想像に難くない。
我々は文明を捨てることができるのか
否である。
トラディショナルな Web ページの開発手法は、もはや我々現代を生きる Web 開発者の欲求を満たすことはできない。異論はあるかもしれないが、すでに複雑性を後押しする専門性とサラリーのエコシステムは止められない水準にきている。
JavaScript の節制を最優先で最適化すると、現在のコンポーネントドリヴンな開発手法を大きく退行させることになる。Web Components は残念ながらまだ未来のソリューションだ。Web Comopnents でさえプリミティブな実装をラップする手厚い何かが存在する可能性が高い。もはやエコシステムが退行を受け入れることはできない。
文明を保ち、ユーザーを保護しなければならない?
元ネタである記事で JavaScript は CO2 と喩えられているとおり、まさに文明と自然の関係である。文明の叡智は、快適性の向上と同時に効率性の向上にも適用できる。効率性は CO2 の排出を抑えることができる。
が、その叡智はメジャーなライブラリ開発者の不断の努力によってもたらされる。jQuery とて、Zepto.js などの Alt jQuery が発生するような時代を超えて、レガシーブラウザのサポートを切り捨てることでダイエットを果たしている。
我々イチ開発者は、アプリケーションを築き上げている。その一里塚が jQuery プラグインの山なのか、npm 依存グラフの山なのかは人によって異なる。一里塚が膨大であればあるほど、我々の価値を認めさせる複雑性を発露させればせるほど、一般のカスタマーは不利益を被る。
叡智の富豪的な利用によって、公害を生み出しているのは間違いなくライブラリユーザーである開発者による功罪だ。
清貧を尊ばなければならない。