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

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

ただいまの
回答率

90.46%

  • JavaScript

    21076questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Java

    16227questions

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

  • Swift

    8993questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • Kotlin

    628questions

    Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

jsでスマホアプリを作らない理由

解決済

回答 4

投稿

  • 評価
  • クリップ 1
  • VIEW 2,889

kento_makino

score 2

ものすごく門外漢的な質問かと思いますが、

iOSとandroidの両プラットフォームを跨いでアプリケーションの製作ができるjsを使わずに、SwiftやKotlinを使うメリットは具体的にどれくらいあるのでしょうか。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • asahina1979

    2017/11/14 23:53 編集

    議論はここでは推奨されません

    キャンセル

  • 退会済みユーザー

    2018/01/14 22:08

    複数のユーザーから「プログラミングに関係のない質問」という意見がありました
    teratailでは、プログラミングに関して困っていることがないと思われる質問を推奨していません。
    「質問を編集する」ボタンから編集を行い、具体的に困っている理由や解決したいことを明確に記入していただくと、回答が得られやすくなります。

回答 4

+7

実は,一般的にOS固有のアプリが多いのは,技術的というより経営的な問題だと思います.
通知機能アプリストアという販売経路などの存在は,技術としては地味でも経営的に重要なので,これまで重視されてきました.
(もちろん3Dゲームなど性能の面の場合も一部ありますが)

しかし今後iOSもブラウザ通知機能が対応する見通しが立ちましたし(Androidは既にある),js自体もある程度の成熟の兆しが見えてきた印象がある(Vue.js, Angular, Reactやnpmなど)ので,今後はウェブアプリに徐々にシフトしてくるのではないでしょうか.
(性能に関してはもう少しではあるが,やはりWebAssemblyなど技術の成長は見られている)

個人で作るならば,今からウェブアプリで問題ないと思います.

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+4

 Webブラウザ上のJavaScript

 メリット

  • 仕組みが簡単
  • Webでの技術がそのまま使える
  • ファイルを差し替えるだけで更新可能

 デメリット

  • スクリプト言語であるため、プログラムを解析しながら実行する
  • JavaScriptが動作し、ブラウザがそれを受け取り、ブラウザがOSへ伝えるという、間に一つ無駄な層がある
  • 使えない端末の機能がある(最近は軽減されてきたが、昔はカメラを使ったりできなかった)
  • 動作がもっさり(最近は軽減されてきた)

 Swift等のOS公式言語

 メリット

  • コンパイル言語であるため、解析は先に済ませてある
  • OSへ直接命令が飛ぶので無駄がない
  • ほとんどフルに端末の機能が使える
  • とにかく速い

 デメリット

  • いちいちコンパイル、更新インストールが要る
  • 言語ごとに専門的知識が要る
  • OSごとに覚えなければいけない

 Kotlin、Xamarin等のマルチプラットフォーム向け言語

 メリット

  • コンパイル言語であるため、公式言語と同様のメリットがある
  • 一つのコードから対応しているOS全てに出力できる

 デメリット

  • 最新のOSが出たとき、アップデートされるまで新機能が使えない、動かなくなる等がありうる
  • 端末のニッチな機能は対応していない場合がある(赤外線等)

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/11/15 13:48 編集

    「Swift等の言語」とありますが、公式言語(Swift)と非公式言語(Kotlin)の間に壁は存在しないのでしょうか。
    Kotlinが次のメリットを持っていなければ、Swiftと同等とはいえない気がします。
    - Swiftで利用可能な全てのAPIを使える
    - iOSで後方互換性を切った更新をされても、前方互換性が保証される
    - 最新のAPIをリリース直後に使える

    キャンセル

  • 2017/11/15 16:38

    確かにマルチプラットフォーム用の言語は一度公式言語にコンバートしたりするので壁はありますね。追記しておきましょう。

    キャンセル

  • 2017/11/15 17:01

    Kotlinは既に公式です.
    https://developer.android.com/kotlin/index.html
    > Kotlin is now an official language on Android.

    キャンセル

+2

スマホの利用時間は、ネイティブアプリ:86%、Webアプリ:14%

Apps Solidify Leadership Six Years into the Mobile...

上記記事(英語)のデータによると、
スマホユーザの利用時間は、ネイティブアプリが86%
Webアプリが14%という割合になります。

ネイティブアプリが強い! なぜなのか?

想定できる理由のひとつに、
ネイティブ(ハイブリッド含む)アプリは、
インストールして使う点があります。

ネイティブアプリは、画面上のアイコンから起動できるのに対して、
Webアプリはブラウザから検索などしないと利用できないので、
ユーザーは便利なネイティブを好むのではないか? そのような見方があります。

teratallやQiita、はてブとか、技術系サイトだけ見ていると、
「ネイティブはオワコン」みたいな印象を持つかもしれませんが、
どっこい現実的には、ネイティブの方が圧倒的に強いんです。

じつはWebサイトの8割がPHPで作られている、という話と似ていますね。
要するに、ユーザ不在のまま、開発者が内輪で盛り上がっている。

それに数年前、Facebookが「HTML5に賭けたのは失敗」といって、
ネイティブで書き直した、というニュースもあったわけです。

なお、注意点として、2014年のアメリカのデータなので、
現在の日本市場とは異なっているかもしれないことと、
ここでのハイブリッドアプリは、ネイティブアプリと同じ扱いなことを断っておきます。
(ユーザ視点で見て、インストールする点で変わらないから)


Googleが推進するPWAは、Webアプリからの反逆ののろし

さてこうした状況は、Androidの開発元である
Googleはとうぜん認識していることでしょう。

また、GoogleとOracleが、Javaをめぐる裁判で、険悪なムードになったことも、
ネイティブアプリの存在基盤を揺るがしかねない。

もちろん、Kotlinのような代替言語へ移行する可能性は、
Googleが公式言語に宣言することで、大いに高まったはずです。

しかし、Googleの収益はWebの広告がメインなので、そうした状況を抜きにしても、
もともとWebをAndroidにより取り込んでいくことは既定路線でしょう。

そういう背景の下、GoogleはPWA(Progressive Web Apps)を推進しています。
このPWAを簡単に言うと、Webアプリをネイティブアプリに近づける仕組みです。

具体的にはたとえば、アイコンを画面に置けるようになります。
それだけならブックマークのショートカットを置くとかでもできましたが、
通知機能などが使えるようになり、より深くAndroidに統合されるのです。

さらに最近では、iOSもPWAに対応する動きが見られます。
Appleは独自技術に囲い込むことが多いですが、これは開放するようです。

ですから、現状ではまだまだネイティブアプリが強いものの、
Webアプリには大きな将来性があると思います。

とくに、WebAssemblyが成熟してくる頃には、
ネイティブとのパフォーマンスの差が僅差になってそうなので、
ネイティブからWebへ移行する流れは確実そうです。

第三勢力のハイブリッドアプリ、その可能性と難しさ

ところで、ここまでネイティブアプリ VS Webアプリという構図でしたが、
両者の中間的なハイブリッドアプリはどうなるのでしょうか?

ハイブリッドアプリには、マルチプラットフォームで利用できて、
一石二鳥みたいなお得感があり、可能性を感じるところがあります。

それでは、VSに登場したときに話題になった、Xamarinはどうでしょうか。
ネイティブにコンパイルするので、パフォーマンスが高いのがメリットです。

しかしその一方、非常に扱いが難しい
Windows、Android、iOS、それぞれのOSや言語やフレームワークなど、
三者三様の開発環境の知識が必要になるためです。

Xamarinの場合、Webアプリどころか、
(単独の)ネイティブアプリより難しくなってしまいます。

マルチプラットフォームで、しかもネイティブアプリと同等、
というのは魅力的ですが、その欲ばりな仕様のため、難しくなった。

ただ、ハイブリッドアプリを作るソフトには、
Xamarinに知名度では及ばないかもしれませんが、
Monacaもあるし、Delphiもあるわけです。

Monacaはクラウド環境と、日本語ドキュメントが豊富なことがメリットで、
Xamarinほどパフォーマンスが高くない代わりに、難易度は低いと思います。

Delphiなどというと、今はもうマニアックに感じるかと思いますが、
GUIのドラッグドロップでコンポーネントを組み立てられるのはメリットです。

このように、ハイブリッドアプリのツールはいろいろありますが、
先述のPWAなどで、Webとネイティブの差が消えてしまうなら、Webアプリを書いた方が早い。

だから、ハイブリッドアプリという第三勢力が、どれだけ発展するかは、
ハイブリッドの開発ツールの進化と、ブラウザのネイティブ化と、
どちらが早いかという、開発競争に掛かっていると思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

checkベストアンサー

+1

スマホ開発のジャンルでは最初はハイブリッドアプリなどありませんでしたからね。
OnsenUI等のハイブリッドアプリが認知されたのは最近の話です。

元からスマホアプリを開発していた企業は、
ハイブリッドアプリは遅いから、ノウハウ溜まってるネイティブ開発すればでいいじゃん
…とネイティブの言語で構築するでしょう。

これが「JSでスマホアプリが開発されない」現場の選択でしょう。

因みに初期のAndroidのネイティブアプリは文字通り地獄で、
幾多の開発者が「人間のやる仕事じゃない」と逃げ出した程です。
ハイブリッドアプリは実際に使われているかはさておき、多くの開発者や企業がお試しアプリを作成し検証したはずです。

個人やスタートアップ企業はハイブリッドアプリを選択することが多いでしょうね。
今後スマホの性能が向上にする従ってこの流れが加速すると思われます。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/11/15 11:23

    「なぜ誰もjsで作らないのですか?」ではなく、「なぜjsで作らない人がいるのですか?」という
    意味では。jsで作らない人に対して理由を聞いているのだと思います。

    キャンセル

  • 2017/11/15 11:31

    失礼しました。
    質問文と解答文を見返し私も同じ判断に至り、編集して回答文を作り直してます。

    キャンセル

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

  • ただいまの回答率 90.46%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

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

  • JavaScript

    21076questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Java

    16227questions

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

  • Swift

    8993questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • Kotlin

    628questions

    Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

閲覧数の多いJavaの質問