ものすごく門外漢的な質問かと思いますが、
iOSとandroidの両プラットフォームを跨いでアプリケーションの製作ができるjsを使わずに、SwiftやKotlinを使うメリットは具体的にどれくらいあるのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
実は,一般的にOS固有のアプリが多いのは,技術的というより経営的な問題だと思います.
通知機能やアプリストアという販売経路などの存在は,技術としては地味でも経営的に重要なので,これまで重視されてきました.
(もちろん3Dゲームなど性能の面の場合も一部ありますが)
しかし今後iOSもブラウザ通知機能が対応する見通しが立ちましたし(Androidは既にある),js自体もある程度の成熟の兆しが見えてきた印象がある(Vue.js, Angular, Reactやnpmなど)ので,今後はウェブアプリに徐々にシフトしてくるのではないでしょうか.
(性能に関してはもう少しではあるが,やはりWebAssemblyなど技術の成長は見られている)
個人で作るならば,今からウェブアプリで問題ないと思います.
投稿2017/11/14 15:12
編集2017/11/14 15:13総合スコア1159
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Webブラウザ上のJavaScript
メリット
- 仕組みが簡単
- Webでの技術がそのまま使える
- ファイルを差し替えるだけで更新可能
デメリット
- スクリプト言語であるため、プログラムを解析しながら実行する
- JavaScriptが動作し、ブラウザがそれを受け取り、ブラウザがOSへ伝えるという、間に一つ無駄な層がある
- 使えない端末の機能がある(最近は軽減されてきたが、昔はカメラを使ったりできなかった)
- 動作がもっさり(最近は軽減されてきた)
Swift等のOS公式言語
メリット
- コンパイル言語であるため、解析は先に済ませてある
- OSへ直接命令が飛ぶので無駄がない
- ほとんどフルに端末の機能が使える
- とにかく速い
デメリット
- いちいちコンパイル、更新インストールが要る
- 言語ごとに専門的知識が要る
- OSごとに覚えなければいけない
Kotlin、Xamarin等のマルチプラットフォーム向け言語
メリット
- コンパイル言語であるため、公式言語と同様のメリットがある
- 一つのコードから対応しているOS全てに出力できる
デメリット
- 最新のOSが出たとき、アップデートされるまで新機能が使えない、動かなくなる等がありうる
- 端末のニッチな機能は対応していない場合がある(赤外線等)
投稿2017/11/15 00:53
編集2017/11/15 08:09総合スコア9206
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/15 04:48 編集
2017/11/15 07:38
2017/11/15 08:01
0
###スマホの利用時間は、ネイティブアプリ: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アプリを書いた方が早い。
だから、ハイブリッドアプリという第三勢力が、どれだけ発展するかは、
ハイブリッドの開発ツールの進化と、ブラウザのネイティブ化と、
どちらが早いかという、開発競争に掛かっていると思います。
投稿2017/11/15 04:25
総合スコア5592
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
スマホ開発のジャンルでは最初はハイブリッドアプリなどありませんでしたからね。
OnsenUI等のハイブリッドアプリが認知されたのは最近の話です。
元からスマホアプリを開発していた企業は、
ハイブリッドアプリは遅いから、ノウハウ溜まってるネイティブ開発すればでいいじゃん
…とネイティブの言語で構築するでしょう。
これが「JSでスマホアプリが開発されない」現場の選択でしょう。
因みに初期のAndroidのネイティブアプリは文字通り地獄で、
幾多の開発者が「人間のやる仕事じゃない」と逃げ出した程です。
ハイブリッドアプリは実際に使われているかはさておき、多くの開発者や企業がお試しアプリを作成し検証したはずです。
個人やスタートアップ企業はハイブリッドアプリを選択することが多いでしょうね。
今後スマホの性能が向上にする従ってこの流れが加速すると思われます。
投稿2017/11/15 02:13
編集2017/11/15 02:21総合スコア21158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/15 02:23
2017/11/15 02:31
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。