質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Java

    15528questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Scala

    209questions

    ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

フリーツールとしてダウンロードするファイルの容量はどれくらいまで許容できる?

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 770

普段はJavaでフリーのPC向けツールを作成して配布しています。
最近Scalaという言語について触り始め、
Javaの時と同じように実行可能jarとして配布したいと考えているのですが、
Scalaでは実行可能jarにScalaのライブラリを同封しないといけないので
どうしてもファイル容量が大きくなってしまいます。

Javaのみで作成した実行可能jarで大きくても1.5MBくらいだったのにたいして
Scalaでためしに作ったHelloWorldレベルのGUIツールで20MB超えてしまいます。
proguardなどを利用すれば軽量化できるなどの話もあるのですが、
まだそのあたりは勉強中でよくわかっていません。

個人的にはJavaよりもScalaのほうがプログラムを書く身としては好きなのですが、
単体のツールとして配布するにはサイズが大きくなってしまうのが悩みです。
他の言語で作成することも考えたのですが、
個人的にはJavaかScalaのどちらかをこれからも使っていきたいです。

そこで質問なのですが、
フリーの便利ツールとしてネットからダウンロードする際に
どれくらいのファイルサイズまでなら許容できるでしょうか?
一般のPCユーザとしての視点からみて、
ただの便利ツールのファイルサイズが20MB超えというのは
やはり大きすぎるのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

月並みな回答ですが、物の良さや使っている技術とトレードオフです。
有名モダンエディタの例としてAtomとSublimeのリンクを用意しました。

同じような動きをするこの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程度までなら許容されます。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/29 17:02

    回答ありがとうございます。
    技術とトレードオフ、というのは意識していませんでしたが
    確かにjavaよりもscalaのほうがメンテはしやすいですし、開発速度も速いと思います。
    より品質の良いものが提供できるなら、容量の増加はたいした問題ではないような気がしてきました。
    メンテのしやすいscalaをこれからも勉強しつつ趣味に使っていきたいと思います。
    容量についても回答いただけて、とても参考になりました。
    ありがとうございます。

    キャンセル

+1

(どうしてもOS非依存にしたいとか、あるいはAndroidアプリを作るのなら全く別ですが)Java系の言語をクライアントアプリに使うこと自体、今の時代には向いていないのではないかと思います。

Javaアプレットも事実上終息していて、JREのインストール率も減っていますので、そういう状況でも入れたければ、数十MBあるJREを入れなければならなくなってしまいます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/29 15:03

    回答ありがとうございます。
    マルチプラットフォームで且つ言語としてそれなりに使い慣れている、ということで
    javaを使っているのですが、やはりクライアントアプリ向きではないですよね・・・。

    jreのインストール率が減っているというのは全然知りませんでした。
    最近のpcは標準でjavaがインストールされてるとばかり思ってたのですが、
    もしインストールされてないとなると、実行可能jar + jre で
    余計ユーザの負担になってしまいそうですね。
    やはり各プラットフォームに向いている言語ないしGUIツールキットを使って
    クロスコンパイルして配布する以外ファイルサイズの軽量化は難しいのでしょうか。

    キャンセル

同じタグがついた質問を見る

  • Java

    15528questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Scala

    209questions

    ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。