やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

ソフトウェアの実装方法はどうするか(ネイティブ/HTML)

 ネイティブアプリかHTMLのいずれかに大別される。

ソフトウェアの実装方法

 どの実装方法にするか。それはUXとDXのトレードオフでもある。

 ネイティブアプリは最高のパフォーマンスを誇る。OSがもつ能力を自由かつ最速で引き出す。ただし各OSのAPIに依存しており、ほかのOSで動作させるためには各OSのAPIで実装しなおさねばならず、とてつもない工数を要する。また、CPUアーキテクチャにも依存しているため、動作させるマシンに一致したバイナリファイルを用意する必要がある。

 HTMLはクロスプラットフォームに閲覧できる。各OSにはブラウザがあり、標準規格であるHTML, CSS, JSで実装しているため、どのOSでも同じコードで同じような挙動ができる。これによりOSなど環境による再現性が高まり、開発コストもさがる。ただしパフォーマンスは低い。

 HTMLをネイティブアプリにコンパイルするツールもある。HTML,CSS,JSで開発しつつ、ネイティブアプリとしてインストールできる。HTMLレンダリングエンジンを内包しているため、単独で実行できる。ただし、ネイティブアプリに比べてストレージとメモリに巨大なオーバーヘッドがある。ファイル容量が必要であり、動作も遅くなる。

 HTMLの一部をキャッシュするPWAがある。オフラインでも動作するよう設計できる。パフォーマンスにおけるボトルネックにはネットワーク通信速度が挙げられるが、それを解消することができる。ただしその分だけストレージ容量がいる。マニフェストを用意すればホーム、デスクトップにインストールしてネイティブアプリのように起動させることもできる。

 XHTML+CSSをZIP圧縮して電子本にするEPubがある。専用のビューアアプリが必要だが、オフラインで完全に動作する。ファイル容量も小さくなる。

所感

 3Dなど高負荷なものについてはネイティブのほうがいい。また、ネイティブAPIにしかない機能を使いたいなら、ネイティブしかない。

 デバイスやOSが多様化してきた。おなじコードでおなじように動作してくれないと、開発コストがどんどん跳ね上がる。なので事実上、HTMLで実装できるならそれが望ましい。というか、もはやHTML,CSS,JSの学習は避けられない。

対象環境