質問: 普段はJavaでフリーのPC向けツールを作成して配布しています。 最近Scalaという言語について触り始め、 Javaの時と同じように実行可能jarとして配布したいと考えているのですが、 Scalaでは実行可能jarにScalaのライブラリを同封しないといけないので どうしてもファイル容量が大きくなってしまいます。 Javaのみで作成した実行可能jarで大きくても1.5MBくらいだったのにたいして Scalaでためしに作ったHelloWorldレベルのGUIツールで20MB超えてしまいます。 proguardなどを利用すれば軽量化できるなどの話もあるのですが、 まだそのあたりは勉強中でよくわかっていません。 個人的にはJavaよりもScalaのほうがプログラムを書く身としては好きなのですが、 単体のツールとして配布するにはサイズが大きくなってしまうのが悩みです。 他の言語で作成することも考えたのですが、 個人的にはJavaかScalaのどちらかをこれからも使っていきたいです。 そこで質問なのですが、 フリーの便利ツールとしてネットからダウンロードする際に どれくらいのファイルサイズまでなら許容できるでしょうか? 一般のPCユーザとしての視点からみて、 ただの便利ツールのファイルサイズが20MB超えというのは やはり大きすぎるのでしょうか?
回答: 月並みな回答ですが、物の良さや使っている技術とトレードオフです。 有名モダンエディタの例としてAtomとSublimeのリンクを用意しました。 * Atom: 平均100MB * SubLime: 平均10MB 同じような動きをするこの2つのエディタはファイルサイズにして10倍もの開きがあります。 まず、Atomは元AtomShellと呼ばれるElectronの仕組み(Node,Webkitなど)がまるまる入っており、 Scalaで動作させる為に様々なライブラリを同梱している質問者さんと同じような立ち位置です。 対してネイティブでコンパイルされたSublimeは超軽いですね。 では、ユーザーはどちらを選ぶのでしょうか? 結論から言えばSublimeとAtomはほぼ互角です。 その理由は色々考えられますが、 根本的な問題としてこれらのツールのファイル重量自体はあまり重視される項目ではないからです。 HDDやSSDに保存して、何時でも使える価値があればなんでも良いですからね。 ファイルサイズが1MB以下と超軽くても、メモリをゴリゴリ使って無限ループするようなバグがいくつも混ざっているプログラム使いたくありません。 100MB超えるようなプログラムでも、不具合が少なく、こまめにバージョンアップされてすぐに不具合がなくなるようなプログラムを使いたいですね。 ハローワールドを書くのに20MB?Electronを内包したら似たような状況にすぐなります。 ハードウェアの仕組みはどんどん良くなる以上、多少のファイルサイズには目をつむる代わりに、 可読性がよく、速く良いものをリリースされるScala等の言語は台頭してくるかと思います。 それ以降の機能の盛り込みは同じペースで行われるので、 Javaで20MBのプログラムなれば、Scalaでは40MB程度と目立たなくなってくるんじゃないですかね? 質問に答えてなかったですね。 > > どれくらいのファイルサイズまでなら許容できるでしょうか? > > > HDDはテラバイト当たり前、SSDでも256GBが当たり前のご時世なので100MBや200MBでブーブー言う人は居ないでしょう。 下記、一般人としての目線でアプリを評価しました。 そこらのフリーで作った方のプログラムは100MB前後が気になるラインじゃないかと思います。 Chrome(200MB)、Vagrant(175MB)クラス級の需要がある大型ソフトなら300MB~1GB程度までは許容されると思います。 ゲームはまた特殊で、画像や音声が入るとまた飛躍的にファイルサイズが肥大化しますね。 ユーザーもまぁしゃあないと妥協しているので、ゲーム次第ですが10GB程度までなら許容されます。