これは何
昨今、Kuma UIやPigment CSSなどのCSS-in-JSライブラリがどんどん出てきて、そこによくZero-runtimeという文言を見かけます。
そこでよく見かけるけど「ゼロランタイム」とはなんだろう?ということろから始まり、「これをもし新卒に聞かれたら全く説明できないな」と思ったので記事にしてまとめてみました。
まずランタイムとは
ランタイム(runtime)とは、開発したコンピュータプログラムを実行する時のこと。「実行時」と訳語を用いることも多い。対義語は「開発時」あるいは「コンパイル時」(compile-time/コンパイルが必要なプログラミング言語の場合)。
ランタイムがプログラムを実行する時という意味なら、ゼロランタイムってなんだ…?
ちょっと分からなくなってきました。
ゼロランタイムとは
ゼロランタイム(Zero-runtime)とは、特定のライブラリがプログラムの実行時に追加のオーバーヘッドを引き起こさないことを指します。これは、そのライブラリがプログラムのコンパイル時(またはビルド時)にすべての作業を完了し、実行時には追加の処理を必要としないことを意味します。
例えば、スタイルシートを扱うCSS in JSのライブラリの中には、ゼロランタイムとして設計されたものがあります。これらのライブラリは、ビルド時にJavaScriptから静的なCSSファイルを生成し、実行時にJavaScriptによるスタイルの操作を行わないため、パフォーマンスを向上させることができます。
何となくわかった…?
いや、「追加のオーバーヘッド」ってなんだ…?
オーバーヘッドとは
「オーバーヘッド」(overhead)とは、コンピューターで何らかの処理を行う際に、その処理を行うために必要となる余分な処理や手続き、システムの負荷、処理時間などを指す用語です。
本来必要のない処理や時間がかかってしまうことを指し、アプリケーションやシステムのパフォーマンス低下やエラーの原因になります。
オーバーヘッドを減らすためには、効率的なアルゴリズムの使用や、メモリやリソースの最適化、不要な処理の削除などが必要です。
ただし、完全にオーバーヘッドをなくすことはできないため、最小限に抑えることが大切です。
完全に理解した(ダニング・クルーガー効果)
つまりゼロランタイムとは、プログラムが実行された時におこるシステムの負荷を減らしページの読み込み時間の軽減など、エンドユーザーにとってもメリットがありそうだという事が分かりました。
パフォーマンスの事を詳しく知るために、Chrome for Developersの以下のページとかを読んでおく必要があるみたいですね。
参考