日本にiPhoneが登場し発売されたのが2008年7月で、そこから急速なスマホブームが訪れて2021年総務省のデータによると、世帯におけるスマホの保有割合は約8割となっています。
当たり前のように、ほとんどの人がスマホを所有している時代になりました。
その一方で、昨今のプログラミングブームではWeb系の言語(Ruby や PHP,Python など)ばかりフォーカスされており、 スマホアプリ用のプログラミング言語から学習しようと考えるプログラミング初学者の方は少数派だと思います。
もちろん、筆者もプログラミング言語の一つである Pythonを中心にブログ記事を執筆しておりますが、決して他言語を利用しない訳ではありません。
やはり必要に応じて学習すべき言語は存在し、ケースバイケースで使い分けられるようになると適切な対処を計画・設計・実装・運用の中で行えるようになり、エンジニアとしても重宝されるようになります。
今回の記事では、実はwebアプリよりも多くの人に利用してもらう可能性があるスマホアプリについて、Webアプリとスマホアプリの比較を行いながら解説していき、プログラミングにおける開発のポイントも合わせてご紹介していきたいと思います。
目次
スマホアプリとwebアプリの違い
本題に入る前に、スマホアプリの特徴とwebアプリの特徴を比較しながら解説していきます。
分かりやすく以下のように、スマホアプリとWebアプリの違いをまとめています。
スマホアプリ
・パフォーマンスは端末に依存する
・インターネット接続が必ず必要という訳ではない
・一度インストールすればOK
・インストールが必要なのでユーザーを獲得しにくい
webアプリ
・パフォーマンスはインターネットやサーバーに依存する
・必ずインターネット接続が必要
・インストールはしないため適時読み込み
・インストールが必要ないのでユーザーを獲得しやすい
やはりスマホアプリとWebアプリの大きな違いは、端末上で動作するか・インターネット上で動作するかということになります。
この違いをもとにそれぞれの特徴を解説していきます。
スマホアプリの特徴
スマホアプリの特徴は、端末上で動作するため、アプリの性能が使用する端末の性能に大きく依存する点です。
つまり、優れた性能である端末でアプリを使用することができれば、必然的に高いパフォーマンスを発揮してくれます。
逆に性能の低い端末で使用してしまうと、本来開発者が想定していたパフォーマンスが出せない可能性があります。場合によってはアプリが起動しなかったりフリーズしたりします。
良くも悪くもパフォーマンスや処理については端末に依存してしまうのが特徴の1つです。
また、スマホアプリは各OSのストア(AppStore、GooglePlayStore)からアプリが持つ機能全てを端末にインストールしてから使用するので、インターネット接続が必ずしも必要ではない点も特徴です。 (もちろんアプリのインストール自体はインターネット接続がないとできません。)
つまり、一度利用しているスマートフォンにインストールしてしまえば、あとは通信量をそれほど使用せずともアプリが使用できてしまうということになります。
例えば電波が届かない場所(山やトンネル、飛行機の中)でも使用できるという事なので、 いつでもどこでも安定した動作をしてくれる点で使いやすいメリットがあります。 その反面、ユーザーに使ってもらうにはスマートフォンにアプリをインストールをしてもらう必要があるため、手間の観点からユーザー数は獲得しにくいと言えると思います。
逆に、利用するメリットを感じたアプリケーションであれば、ユーザーに対するアプリケーションの依存性が高まるため、長期的に利用してもらうことが想定されます。
Webアプリの特徴
webアプリは、 スマホアプリとは違って端末上でアプリが動作するわけではなく、 インターネット上(ブラウザ上)で動作するのが特徴です。
インターネット上で動作するということは、ブラウザ表示する端末に関しては依存しないため、 パソコン・タブレット・スマホといった様々な端末で動作させることが可能になります。
アプリケーション自体の性能は、端末ではなくインターネットの回線やサーバーに依存するため、 使用しているwifiなどの通信状況でパフォーマンスは変動することになります。
つまりwebアプリを利用している間は、常にインターネットに接続しておく必要があり、 電波が届かない場所では基本的には使えないということです。
またスマホアプリと違い、webアプリはアプリストアからインストールするのではなく、 ブラウザで検索、またはURLを踏んでそのページに遷移して利用するということになります。
そのため、ユーザーにアプリを利用してもらうことはスマホアプリよりもハードルが低く、手軽にスマホアプリよりもユーザー数を獲得しやすいと言えると思います。
スマホアプリの種類
上記の説明で、webアプリと比較してスマホアプリの特徴をなんとなく理解してもらえたかと思います。
これらの特徴から、現在スマホアプリといえば大きく2つの種類に分けられます。
1つ目がiOSアプリ、2つ目がAndroidアプリです。
おそらくほとんどの方はこのどちらかのOSを使っていると思います。
iOアプリ開発とAndroidアプリ開発の特徴と動向について解説していきます。
iOSアプリ開発における特徴と動向
iOSアプリは、日本人ほとんどが利用しており大好きなiPhoneシリーズで動作するアプリです。
世界的に見るとAndroidスマホの方がシェアが多いのですが、 日本に限っては何故か世界と逆を行く結果になっていて、2019年の統計データではスマホ利用者の約60%の人がiOS(つまりiPhoneユーザー)を使っています。
そのため、日本ではスマホアプリを作るとなったらとりあえずiOSアプリを作るという人が多い印象です。
ただ、開発するPCはMacOSを搭載していないとならないという決まりがあったり、 アプリストアに公開する時に開発者の登録と費用が必要であるため、年間11800円(税別)で毎年更新料が発生するという点は要注意です。
またiOSアプリ開発には、Swiftというをプログラミング言語を習得する必要があります。
iPhoneを開発しているAppleがこれまで開発言語として利用していたobjectice-Cの代替として2014年に発表した言語です。開発者にとっても記述しやすく、読みやすいといった特徴がある言語です。
Androidアプリ
Androidアプリは、AndroidOSが搭載されているスマホで動作するアプリです。
AndroidはiOSと違い、オープンソースのOSなので様々な企業がこのOSを搭載したスマホを発売しています。
国産で有名なのはSONYのXperia、あとは最近海外資本になってしまいましたが、昔は国産だったSHARPのAQUOSが有名です。 海外企業だとGoogleのPexelやSumsungのGalaxyなどが有名です。
iPhoneと違い、アプリの開発にPC環境のOSに制限はありませんし、 ストアに公開する時の初回のみ開発者の登録に25ドル支払うだけでリリースができるので開発のハードルiOSアプリ開発に比べて低いです。
Androidアプリを開発するにはJavaかKotlinという言語を習得する必要があります。
最近だとJavaよりもモダンな言語であるKotlinで開発しましょうとGoogleが推奨しているのでそちらで開発するのが主流です。
クロスプラットフォーム
上述した各OSによるアプリ開発ごとの違いを解説してきましたが、 どっちかなんて選べないという人は1つのコードでiOS、Androidのアプリ両方を開発することができるクロスプラットフォーム型フレームワークを利用するという選択肢もありだと思います。
例えば、iOSアプリ・Androidアプリとして両OSで開発したい時にクロスプラットフォームでアプリ開発することによって、開発手順にかかる作業コストを効率化することができるため、開発にかける時間を大幅に短縮できます。
また、これまでOS単位やデバイス単位でプログラムをそれぞれ別々に実装しなければならなかった点を省くことができ、効率的にコードを一元管理することができます。その結果、保守運用や品質の管理が行いやすいなどのメリットがあります。
開発言語はフレームワークによって様々なのでこの言語を学習すればいいというものはないです。
代表的なフレームワークと開発に必要な言語を列挙すると、 Googleが開発しているFlutter(開発言語はDart)、Facebookが開発しているReactNative(開発言語はReact)あとはUnity Technologies社が開発したUnity(開発言語はC#)が有名です。
まとめ
多くのプログラミング初心者は、まずHTML,CSSから学習をする傾向があるからか、 ネット上の記事を見るとweb制作や、webアプリ開発を解説する記事が多いなと感じます。
今回の記事では、選択肢の1つとしてのスマホアプリ開発について解説してみました。
PCを主体とする業務や環境が整備されているため、Webアプリ開発に注力するプログラミング初心者の気持ちも分かりますが、端末の移り変わりはスマホ世代であれば体験として実感していることだと思います。
そのため、端末による違いでアプリも様変わりしたり、開発環境が変化するため、様々な開発環境やそれらに関連する知識・技術を習得しておかなければ、エンジニアとして今後の業界の躍進に追従することはできません。
現在でも新しい技術を内包した様々な端末が開発されており、VR技術で開発された端末やAR技術で開発された端末も存在しており、端末自体の在り方も刻一刻と変化しています。
もちろん、現在利用されているスマホに関する普及も全世界に広がり続けることは間違いありません。今の時代ではPCは持っておらず、スマホだけ持っているという人も少なくありません。
だからこそ、そんなwebアプリ開発では行き届かなかったユーザーに対して価値を提供できるのは、スマホアプリの可能性の1つだと考えます。
プログラミング=web制作・webアプリ開発という固定観念は非常にもったいないですし、その考えを崩すきっかけにこの記事がなってくれれば幸いです。