🌐

アプリとウェブサイトと比較する時に

2021/10/21に公開

こちらのアプリとは、iOS もしくは Android などの native app と指しています。

よく考えてみれば「なぜバンドサイズが大きいになるのか」というタイトルの方がいいかな

現代ウェブサイトでよく指摘されるのは、バンドルサイズが大き過ぎることろだ。
ユーザー体験のために SPA にしてしまって、大量の JavaScript を入れてしまうと逆に抵抗になる人がいるでしょう。

しかし、よく考えてみればそれは結構不公平じゃないかなと思っています。HTML/JavaScriptは、Android/iOS のように標準ライブラリもないし、UIKit みたいなフレームワークもない。開発者が0から作るか、OSSライブラリを導入しなければならない。

ブラウザ自体が提供されているUIが機能的によく限られているので、JavaScript で足すしかないことが多いと思います。
ブログみたいな簡単なコンテンツをレンダリングするのはとにかく、Facebook/Gmail/Netflixのようなアプリを作る場合、バンドルサイズが当然増えると思われる。

あとよく無視されるのは、ウェブの自由性だと思う。どんなユーザでも、ブラウザでも、deviceでも、HTMLさえあればコンテンツを見ることができます。誰でもサーバーやドメインがあればウェブを公開することができる、誰でも HTML/CSS/JavaScript の内容を見れる。

iOS/Android などのアプリでは、審査が必要になって、ユーザーも使う前に何MB/何百MBまでダウンロード必要があり、ウェブは百 KB ぐらいなので、どちらかというと少ない方じゃないですかね。

SSR をちゃんとすれば、HTML が stream されるので、全ての内容をローディングしなくてもブラウザがレンダリングできる。

JavaScript をいろんなブラウザ上で実行させるには、標準仕様を決めないといけない。ただブラウザが実装するまで時間がかかるので、babel のような JavaScript compiler が出た。

アプリはコンパイラされるので、バイナリしかない。事前コンパイルなので、使うプログラミング言語(Swiftか、Kotlinか、Javaか、Objective-Cか)選べることができるし、アップグレードすることもできる。

アプリやウェブの違いを比較するのはとてもいいことだと思いますが、まず両方根本的の違いを理解してもらわないと間違い比較出てなんの意味のない議論になるので個人的には残念かなと思う。バンドルサイズはもちろん小さい方がいいが、ウェブの品質はバンドルサイズだけで判断すべきじゃないと思う。

ただ、今のウェブ開発よくあるのは何でもかんでもまずフレームワークを使うという傾向が受けている。それは確かにそうだなと思っている、単純にコンテンツを読みたいのに必要のない JavaScript 入れてしまって迷惑になったことがあるので、もうはや JavaScript 恐怖症になるかもしれない。

Discussion