カテゴリー
理解系脳を鍛える 趣味

アプリ開発とは何?それで稼ぐビジネスモデルとは?

はじめに

デジタルメディスン(Digital medicine;デジタルメディシン/デジタル薬)とは、デジタルデバイスが組み込まれた医薬品のことを指す。私は、このデジタルメディスンが登場して来た頃からアプリ開発に興味を抱くようになった。

アプリ開発とは、特定の目的やニーズに応じたソフトウェアアプリケーションを設計、作成、テスト、デプロイするプロセスを指す。アプリ開発はクリエイティブな作業であり、多くのスキルや知識が求められる。多くのユーザーに喜ばれるようなアプリの開発者に憧れてしまう。

このようにアプリ自体の開発に興味が湧き、アプリ開発で収益を得るビジネスモデルについても興味がある。そこで、本稿ではアプリ開発における代表的なビジネスモデルについて調べてみた。

目次
はじめに
アプリ開発とは
開発したいアプリの企画
設計
開発
アプリのテスト
アプリのリリース
初心者でもアプリ開発は可能か?
Webアプリの仕組みを知る
プログラミング言語を理解し、選択する
Webアプリでよく利用される言語
アプリ開発に必要な知識とスキル
フレームワークの学習
プログラミング言語の習得
書籍(専門書)による学習
Webサイトの活用
オンライン講座の活用
プログラミングのトレーニング
用語の説明
代表的なビジネスモデル
広告モデル
アプリ内課金モデル
有料ダウンロードモデル
アプリ開発の方法を教える
成功のためのポイント
あとがき

アプリ開発とは

アプリ開発とは、特定の目的やニーズに応じたソフトウェアアプリケーションを設計、作成、テスト、デプロイするプロセスを指す。アプリ開発には、以下のような基本的な流れとポイントがある。

アプリ開発の基本的な流れ

  1. アイデアの発案と企画:
    • 解決したい問題や提供したいサービスを明確にし、アプリのコンセプトを考える
    • ターゲットユーザーや競合アプリの調査も重要
  2. 設計:
    • アプリの機能や画面レイアウト、ユーザーインターフェース(UI)を設計する
    • ワイヤーフレームやプロトタイプを作成して、全体の流れを可視化する
  3. 開発:
    • プログラミング言語(Java, Swift, Kotlinなど)や開発環境(Xcode, Android Studioなど)を使用して、実際にアプリをコーディングする
  4. テスト:
    • アプリが正常に動作するかどうかを確認するために、テストを行う
    • バグを修正し、ユーザーエクスペリエンスを向上させるための改善を行う
  5. デプロイと公開:
    • アプリが完成したら、App StoreやGoogle Playなどのプラットフォームに公開する
    • その後、ユーザーからのフィードバックを基に、定期的なアップデートやメンテナンスを行う

アプリ開発のポイント

  1. ユーザーフレンドリーな設計:
    • 使いやすさを重視し、直感的な操作ができるUIを設計する
  2. パフォーマンスの最適化:
    • アプリの動作速度や安定性を確保するために、パフォーマンスを最適化する
  3. セキュリティ対策:
    • ユーザーデータの保護や不正アクセス防止のために、セキュリティ対策を講じる

アプリ開発はクリエイティブな作業であり、多くのスキルや知識が求められる。そして、完成したアプリがユーザーに喜ばれる瞬間に立ち会えたなら、とても達成感があることだろう。


開発したいアプリの企画

最初にすべきことは、開発したいアプリケーションを決めることである。その理由は、作りたいアプリケーション(以下、アプリと略す)によって学習すべきプログラミング言語が大きく異なるからである。アウトプットから考えてインプットを考えないと効率が悪くなるので、これは重要なポイントとなる。

アプリを大別するとWebアプリネイティブアプリハイブリッドアプリ及びPWAProgressive Web Apps)の4種類があり(「用語の説明」を参照)、これらのアプリにはそれぞれ長所と短所がある(下表を参照)。

種類長所短所
Webアプリ・ダウンロード(アプリインストール)が不要
・検索エンジンからの集客可能
・リリースやアップデート時にストアによる審査がないので自由度が高い
・ネット環境があれば利用可能
・マルチプラットフォームのため、どのOSでも動作できる
・利用機能が限定的
・ネイティブアプリに比べ動作が遅い
・スマホのホーム画面に置けない
・インターネット環境が必要
・ネット接続のため、ウイルス感染や情報流出のリスクがある
ネイティブアプリ・プッシュ通知可能
・GPSの利用可能
・動作が早い
・継続的な利用を促せる
・アプリ内課金機能を使える
・インターネット環境が不要
・デバイスと連動した機能的バリエーションが豊富
・ストアを介するため、ユーザーの目にふれやすい
・ホーム画面にアイコンが作成されるためアクセスが容易
・OS毎に開発環境が異なる
・検索エンジンからの集客が見込めない
・リリース・アップデート時にストアによる審査がある
ハイブリッドアプリ・一つのコードでiPhoneアプリとAndroidアプリの開発が可能
・開発コストを抑えられる
・ネイティブアプリに近い細かい操作ができる
・マルチプラットフォームのため、どのOSでも動作できる
・デバイスの機能が利用可能
・ネイティブアプリに比べると動作が遅い
・OSの機能全てが使える訳ではない(一部使用できない機能がある)
・リリース・アップデート時にストアによる審査がある
・Web開発に関するスキルが必要
PWA・URLからアプリを起動可能なため、インストールの手間がない
・読み込みが速い
・検索エンジンからの集客可能
・ストアの審査がなく自由度が高い

・制作コストがかかる
・非対応のブラウザがある
アプリケーションの種類とそれぞれの長所と短所

したがって、自分が開発したいアプリがどの種類のアプリに該当するかを企画の段階から考えておく必要がある。

例えば、ネイティブアプリを選択した場合、iPhoneで使えるiOSアプリと、Andoroidで使えるAndroidアプリの2種類がある。iPhoneではSwiftというプログラミング言語で開発されるのに対して、Androidアプリは、Javaという言語で開発されるといったように互いに異なる言語が必要となる。したがって、どちらのアプリを作りたいのか、両方とも作りたいのかで学習すべきプログラミング言語が大きく異なってくる。

開発したいアプリを明確に決定することはアウトプットから考えて必要最小限のインプットを特定する上で非常に重要なことである。何事も目的を明確にした上で、その目的達成に必要なアプローチを選択しなければならない。

アプリ開発において必須あるいは必要となる言語は、具体的には、下記の12言語である。アプリ開発のスキルを身に付けるには、まずはこれらの言語から必要な言語を適宜選択し、学習を進めることにしよう。各言語の説明は、用語の説明を参照してほしい。

  1. HTML
  2. CSS
  3. JavaScript
  4. Ruby
  5. PHP
  6. Python
  7. Swift
    • MacOSやiOS用アプリの開発に必要な言語
  8. Objective-C
    • MacOSやiOS用アプリの開発に必要な言語
  9. C#
    • Windowsアプリの開発に必要な言語
  10. VisualBasic
    • Windowsアプリの開発に必要な言語
  11. Java
    • Androidアプリを開発するために必要な言語
  12. Kotlin
    • Androidアプリを開発するために必要な言語

私の場合は、「服薬アドヒアランス(Medication Adherence)支援用アプリ」を自分と家族用にはiPhone用で、親族用にはAndroidスマホ用で開発したいという目的があった。そのため本来ならば、両方のプログラミング言語を学習すべきであるが、それらの言語習得をスキップすべくPWAでの開発に必須な言語だけを習得しようという結論になった。

PWAProgressive Web Apps)とは、WebサイトとWebアプリをネイティブアプリのように端末にインストールすることができるアプリのため、「新しいWebアプリのスタイル」といえる。アプリの安定性や体感速度、ユーザーの満足度を高め、最高のパフォーマンスをユーザーに提供することを目的としている。

2015年にGoogleがリリースしたもので、Webアプリでありながら、ネイティブアプリと似た機能が搭載できるというメリットがある。ネイティブアプリとWebアプリの「良いとこどり」ができるため、アプリ開発の形式に迷っている場合は、PWAを検討しているケースも多くなってきている。

また、PWAは、App StoreやGoogle Playなどの「仲介者」が存在しないので、大手アプリケーションストアのルールやガイドラインに縛られることなく開発が進められる。準備次第すぐにアプリをリリースできる点が大きな強みである。そして、ユーザーはURLからアプリを起動できるため、時間や手間をかけることなく即座に利用開始できるのもメリットである。

さらに、共有手段も豊富で、ソーシャルメディア、メール、テキストメッセージ、オンライン広告、QRコードなどで共有することができる。


設計

設計段階に入ったら、企画を具体的な仕様に落とし込んでいく。ポイントとなるのは、具体的なアルゴリズムを考え盛り込んだフローチャートを作成することである。開発に必要となる設計書になるイメージと捉えると分かりやすい。

フローチャートを作るとプログラム構造を整理することができるので、開発スピードの向上につながる。フローチャートは基本的に線やブロックを用いて作成していく。作成のポイントとしては、処理の流れを視覚化したものを作り論理的に破綻させないことやスムーズに開発を進められるような流れを意識して作成することが大切である。このフローチャートがうまくできていないと、開発をしながら試行錯誤することになるため、スピード感をもった開発を行えなくなる可能性もでてくる。

設計は、外部設計と内部設計に分かれる。

  • 外部設計
    • ユーザーの目に触れる箇所の設計
    • アプリの構成やデザイン
    • 各画面のレイアウトや操作方法など
  • 内部設計
    • 外部設計の内容をプログラムに組み込み、実装する
    • データ、モジュール、プログラムなど

開発

開発段階に入ったら、先述の設計どおりにコーディングを行うフェーズに入る。

  • プロトタイプを作るフェーズ
    • プロトタイプ(完成アプリを模したもの)を作る
    • 本格的なコーディングを始める前にプロトタイプを作ることでバグ混入の可能性を下げる狙いがある
    • アプリ開発の進め方として押さえておくべきである
    • プロトタイプを作る際は、基盤となるコードを作ったうえで、少しずつテストを繰り返し開発を進めるようにする
  • 実装されたコードをテストするフェーズ
    • コーディングが終わると、実装されたコードをテストするフェーズに入る
    • 単体テスト
      • 予想通りにコードが動作するのかをテスト
      • モジュールや画面毎に指示通りの動きを確認
    • 結合テスト
      • 単体テストで確認したモジュールを繋げ合わせる
      • モジュール間の結合状態は問題ないかを確認
      • 単独ではうまく動いても、他のコードと合わせることで不都合が生じるケースは往々にしてある
    • 総合テスト
      • 一連の流れを確認する作業
      • 本番を想定したテスト

アプリのテスト

アプリの制作が完了したら、次はテストを行う。テストとは、簡単にいえばアプリが設計通りに作られているかを確認する作業である。画面のレイアウトは正しいか、画面タップ時に設計通りの動作をするか、といったことを確認するとともに、使いやすさや処理速度などについても確認していく。

スマホアプリの場合、利用中にスマホバッテリーが切れる、ネットワークが切断される、といったエラーケースの確認を行っておくことも大切である。

アプリが設計通りに動作しない状態をバグ(不具合)があるという。バグが見つかった場合は、原因を調査して正しい状態に修正する。

不具合のあるアプリをリリースすればユーザからクレームが入るし、アプリの不具合が原因で利用者に損害を与えるような事態が発生すれば、損害賠償問題にまで発展する恐れもある。可能な限りの手間と時間をかけて、念入りにテストを行う。


アプリのリリース

開発段階が終わると、実際にアプリをリリースするフェーズに入る。アプリ開発を行ううえで、アプリリリースは一種の節目となるが、ここで終わりではない。

アプリをリリースした後は、機能改善・アップデートできる体制整備が必要になってくる。この理由としては、実際に利用したユーザーからバグの報告を受けることがあるからである。

アプリを利用するユーザーの中には、開発側が想定していない使い方をするユーザーが出てくることもあるため、バグの報告やアプリのUIUXに関する様々な意見がくる可能性がある。

企画から開発段階で事前に把握できていることが望ましいが、実際に触ってみて気付くことも多いため、アプリをリリースした後もアプリをグロースさせる体制を構築しておく点を押さえておくと良い。


初心者でもアプリ開発は可能か?

この問いは、私のような初心者にとっては非常に関心が高い質問である。

結論からいうと、初心者でもWebアプリケーションの開発は初心者でも可能であるという。開発の難度としては、WebアプリケーションであればWebサイトの構築に+αの知識を加えることで開発に着手できるからである。

もちろん、実現したいアプリケーションの機能によって必要とされる知識・スキルのレベルは大きく変わってくる。しかし、最低限の骨組みを構築する方法を学び、自分が実現したい機能を肉付けしていくことで開発は可能であるということである。これを知って、少しは安心した。


Webアプリの仕組みを知る

 Webアプリは、大きく分けてフロントエンド(クライアントサイド)とバックエンド(サーバーサイド)の2つの要素で構成されている。

フロントエンドとはユーザーから見える部分のことで、全体の見た目やユーザーが直接操作する範囲を指す。ユーザーが体感する操作性や機能性を大きく左右する重要な要素であり、デザインも含めてユーザー目線で設計・構築することが大切である。

バックエンドとは、ユーザーの操作にもとづいてデータを処理したり保存したりする部分を指す。ユーザーが入力したキーワードに合致する商品をECサイト上に表示したり、会員登録時に入力した情報をデータベースに保存したりするには、バックエンドの仕組みが欠かせない。バックエンドで行われた処理がフロントエンドに反映され、ユーザーの目にわかる形で表示されることで、アプリが正常に動作したと認識してもらうことができる。


プログラミング言語を理解し、選択する

 Webアプリの開発には、プログラミング言語を用いる。フロントエンドとバックエンドで必要な言語が異なるため、開発に使用するプログラミング言語は最初に決めておかなくてはならない。


Webアプリでよく利用される言語

Webアプリで多く利用されているプログラミング言語は、下記のとおりである。

  • フロントエンド
    • HTML
      • マークアップ言語
      • Webサイトを構築する際に使用
    • CSS
      • スタイルシート言語
      • Webサイトを構築する際に使用
      • JavaScriptなど
  • バックエンド
    • HTML、CSS、JavaScriptのいずれか1つ
    • PHP
      • 一般的に初心者にとって学びやすい
      • Web用途に特化されている

アプリ開発に必要な知識とスキル

フレームワークの学習

プログラミングをIT未経験者が基礎から学ぼうとすると実に幅広い知識が必要となり、短期間で習得することは容易ではない。 プログラミング言語は様々なテクノロジーの集積体であるため、 プログラミングを深く理解するためにはその基礎知識についても深く理解する必要があるからである。

そこで、アプリを短期間で開発したい場合には、様々なフレームワークを利用することになる。

プログラミングにおけるフレームワーク(ソフトウェアフレームワーク)とは、アプリやシステムの開発に必要な機能や制御構造が予め用意された枠組みや骨組みのことで、文書作成における「ひな形(テンプレート)」に相当するものだと考えれば良い。

フレームワークを利用する理由は、アプリ開発を効率よく進められるからである。フレームワークは、実用的な機能(ライブラリやAPIと呼ばれるもの)を包括したプログラムの集合体であるため、フレームワークを活用すれば高度な処理を少ないコードで実現できる。

文書作成における「ひな形(テンプレート)」と同様に、必要な機能が予め用意されているため、ゼロから開発を行う必要がなくなり、作成のために費やす時間やコストを削減できる。実績のあるフレームワークを利用すれば、開発時のバグも減らすことができる、つまり一定の品質を担保できる。

現在のアプリ開発においては、フレームワークの知識は必須であり、プログラミング言語と合わせてフレームワークの学習を行う必要がある。

フレームワークにはそれぞれ機能や特徴がある。プログラミング言語ごとに、さまざまな種類・名称のあるフレームワークが存在する。そのすべてを学ぼうとすれば、相当の学習コストが必要となるのは当然である。

したがって、プログラミング言語と同様、目的とするアプリ開発に必要なフレームワークを選択して学習することが重要である。これもアウトプットから考えたインプットの特定で学習の効率化を目指そう。

代表的なフレームワークには、下記のものがある。

プログラミング言語代表的なフレームワーク
CSSBootstrap
RubyRubyOnRails
Sinatra
PHPCakePHP
Laravel
Symgony
JavaScriptReact
Spring

アプリ開発を効率よく行うには、フレームワークを使いこなす必要がある。


プログラミング言語の習得

アプリ開発に必要なプログラミング言語を習得するための具体的な方法としては、速習性を期待するのであれば、「プログラミングスクールに通学する」という選択肢が有効かも知れない。

確かにプログラミングスクールに通う長所は、未経験者でもスキルを身に付けやすいと期待できる。しかも疑問点があれば、すぐに講師に質問できるので理解が早く、かつ、深まることだろう。

しかし、プログラミングスクールの受講料は一般的に高額であり、通学となると時間が束縛されてしまう。したがって、独学を志す私としては、下記の3つの方法を採用することにした。

  1. 書籍(専門書)による学習
  2. Webサイトの活用
  3. オンライン講座の活用

書籍(専門書)による学習

プログラミング言語を学習する方法としては、言語ごとに内容がまとまっている書籍(専門書)から学ぶという方法がある。

本のメリットは、体系的にスキルを学べることである。そのため、私のようなアプリ開発の知識がない人におすすめである。

学習したい内容によってどの本を読むかは変わってくる。そのため、勉強したい内容目的をはっきりさせる必要がある。

アプリの開発に必要な知識を学べる本は豊富に出版されている。独学を目指す者にとっては有難いことである。しかし、出版されている書籍が多いとどの本を購入すべきか迷ってしまう。私は下記の3点に気をつけて必要な書籍を購入することを心がけた。

  1. 自分が学習したい内容に合致しているかを確認する
  2. 理解しやすい図解の有無を確認する
  3. できるだけ出版日が新しいものを選ぶ
基本スキルを習得するために役立つ書籍

基礎スキルを身に付けるために役立つ書籍は、下記3冊である。

  • 1冊ですべて身につくHTML & CSSとWebデザイン入門講座
  •  確かな力が身につくJavaScript「超」入門 第2版
  • アプリケーションエンジニアのためのApache Spark入門
書名 1冊ですべて身につくHTML & CSSとWebデザイン入門講座
特徴Webサイトを構築・設計するために必要なHTMLとCSSのスキルが学べる。コードが学べるのは勿論だが、デザインスキルも学べるのが嬉しい。体系的に必要な知識を学べるので、初心者に向いていると思う。
出版SBクリエイティブ
価格2,486円

書名 確かな力が身につくJavaScript「超」入門 第2版
特徴Webサイトに動きを付けるために用いられるJavaScriptを学習できる1冊である。そもそもJavaScriptとは何かといった基礎的な知識から解説しているので、入門書としてもおすすめである。
図解がイラストが豊富で、初心者でも理解しやすくなっている。
出版SBクリエイティブ
価格2,728円
Webアプリの開発スキル習得に役立つ書籍

Webアプリの開発には、RubyとPHP、Pythonの知識が必要である。Webアプリ開発に必要な3つのプログラミング言語が学べる書籍としては、下記の3冊が推奨できる。

  • プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus
  • 気づけばプロ並みPHP 改訂版–ゼロから作れる人になる!
  • Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ
書名 プロを目指す人のためのRuby入門 言語仕様からテスト
駆動開発・デバッグ技法まで Software Design plus
特徴Rubyの文法をサンプルコードで学べることが特徴。実際にコードを書きながら学習できるため、スキルが身に付きやすくなっている。プログラミング未経験者には若干難しい内容だが、Rubyを勉強したい方にはぴったりの1冊である。
出版技術評論社
価格3,278円

書名 Python 1年生 体験してわかる!会話でまなべる!
プログラミングのしくみ
特徴Pythonについてまったくの知識がない人向けに書かれた1冊。
イラストを交えながら会話形式で解説が進むため、理解しやすい。オールカラーなので、読みやすくなっている。
出版翔泳社
価格2,178円

Webサイトの活用

Webサイトを活用するころで、ノウハウを学習できる。検索ワードによっては、自分の知りたいことをピンポイントで調べやすいというメリットがある。お金をかけずに学べるので、費用をかけたくない人にはおすすめである。

一方、プログラミングの知識がない人は「なにから検索していいか分からない」という場合がある。疑問が出てきたとしても、質問ができずに解決できないケースも考えられるのが欠点である。


オンライン講座の活用

動画教材がメインなので、場所を選ばずに学べるのが大きなメリットである。PCかスマホがあればどこでも勉強可能である。

また、レベルや科目ごとに動画が分かれているので、自分のペースで学ぶことができる。

デメリットは、質問できないことである。講座を選ぶ際は、気になることを質問できる教材を選びたい。

受講費用を抑えたいなら、オンライン講座がおすすめである。プログラミングスクールよりも安価なので、受講しやすいことが特徴である。

加えて、オンライン講座はどこかの教室に通う必要がない。自宅やカフェなど好きな場所でプログラミングスキルを習得できる。

ただし、オンライン講座では質問できる回数や期限が決まっているものがある。受講する前に確認しておくと安心である。


プログラミングのトレーニング

プログラミングを学習する際には、実際にコードを書いて練習した方が良いと言われている。参考書などの説明を読むだけでは、知識は身に付かないからである。

コードを書いてみると不明点がでてくるものである。出てきた疑問を解決することで、スキルが自分のものになっていく。だからプログラミングを習得したいなら、実際にコードを書いて練習していきたい。


用語の説明

Webアプリ
Webアプリとは、インターネット上で利用できるアプリのこと。ChromeやSafariなどのWebブラウザで使うことができる。
例)ECサイト(楽天市場、Amazon)、SNS(X、Facebook)
ネイティブアプリ
ネイティブアプリとは、アプリがスマートフォンやタブレットなどの端末上でのみ作動するもの。デバイスにアプリをインストールことが特徴である。ネイティブアプリは、主として次の4点に分類される。
(1) MacOS、(2) iOSアプリ、(3) Androidアプリ、(4) Windowsアプリ
例)LINE、PayPayなど
ハイブリッドアプリ
ハイブリッドアプリとは、ブラウザ上とインストールするタイプどちらも利用できるアプリ。つまり、Webアプリとネイティブアプリの両者の特徴の利点を生かしたもの。
例)楽天市場(スマホアプリもあるが、ブラウザでの利用も可能)、X、YouTube、食べログ
PWAProgressive Web Application; プログレッシブウェブアプリ)
PWAは、WebサイトとWebアプリをネイティブアプリのように端末にインストールすることができるアプリ。2015年にGoogleがリリースした比較的新しいアプリである。Webアプリでありながら、ネイティブアプリと似た機能が搭載できる、つまりWebアプリとネイティブアプリの良いとこどりができるため、新しいWebアプリのスタイルといえる。
HTMLHyper Text Markup Language;エイチティーエムエル)
HTMLとは、Webページを作るためのマークアップ言語。スマホやPCで閲覧するWebサイトには、HTMLが用いられていることが大半である。つまり、HTMLWebサイトの骨組みだと言える。
CSSCascading Style Sheets;シーエスエス)
CSSとは、Webサイトの文字の色や大きさ、背景の色や配置などを指定する言語。HTMLがWebサイトの骨組みだとすると、CSS装飾を施す役割を担っている。HTMLとはセットで用いられることが多い。
JavaScript(ジャバスクリプト)
JavaScriptは、Webサイトに動きをつける目的で使用される。アプリ開発でも良く利用される言語で、JavaScriptを使用することで、パズルゲームなどを開発することが可能となる。ゲーム系のアプリの作成を考えるなら、是非、学習する必要がある。
Ruby(ルビー)
Rubyとは、1995年に一般公開されたプログラミング言語。最大の特徴は、Ruby on RailsというWebアプリフレームワークが使える点である。Ruby on Railsを利用することで、Webサイトやアプリの開発を効率よく行うことができる。コードが短く簡潔という利点もあるので、プログラミング初心者でも学習しやすい言語といえる。
PHP(ピーエイチピー)
PHPは、Webアプリの開発に適している言語。PHPは、日本で一番使われているCMSのWordpressでも用いられている。開発者が多く、ネット上での情報も多いので、困ったときに調べやすいのがメリットである。
PHPを習得することで、ECサイトの開発も可能となる。
Python(パイソン)
Pythonは、理解しやすい文法が特徴的な言語。そのため、プログラミング未経験でも始めやすい。Pythonは、統計処理や数値計算が得意なので、人工知能や機械学習の分野でも用いられている。大規模なWebアプリで使われるケースが多い。身近なサービスでは、GoogleやYouTubeにもPythonが用いられている。
Swift(スウィフト)
Swiftは、Apple社によって開発されたプログラミング言語。Objective-Cと比較すると、習得しやすい。処理も早く、C言語やObjective-Cとの連携も簡単で、メンテナンスも容易である。MacOSやiOSのアプリを開発するには、Swiftは必須の言語となる。
Objective-C(オブジェクトシー)
Objective-Cは、C言語と呼ばれるプログラミング言語をApple社向けにしたもの。Swiftが使用されるようになる前は、この言語が一般的であった。C言語をベースにしているので汎用的であるが、独特な表現が多いので難易度は高い。MacOSやiOSにはSwiftを使うのが主流となった現在では必要性は低下しているが、アプリ開発の理解を深めるために学習しておいてもよいかも知れない。Nice-to-haveである。
C#(シーシャープ)
C#は、Microsoft社が開発したプログラミング言語。Windows向けのアプリを作成するには、相性のよい言語となっている。プログラミング言語としての歴史が長いため、汎用性が高いのも特徴である。Microsoft社の検索エンジン「Being」にはC#が使用されている。
VisualBasic(ヴィジュアルベーシック)
VisualBasicは、学びやすく、コードが書きやすいことが特徴の言語。C#と同様にMicrosoft社が開発した。使いやすい反面、高度な処理が求められる分野には適さないが、簡単な処理の繰り返しであればVisualBasicが便利である。
Java(ジャバ)
Javaとは、世界中の重要なシステムで使われているプログラミング言語である。汎用的であり、 OSに依存しないことが特徴でもある。大きめのシステムに向いていて、拡張性が高い反面、習得の難易度は高い。
有名なゲームソフト「Minecraft」にもJavaが使用されているらしい。
Kotlin(コトリン)
Kotlinは、2011年に発表された比較的新しい言語であり、2017年にはAndroid公式開発言語として認定された。「Javaを簡潔にした言語」と言われ、シンプルなのが特徴である。学習コストが低いが、日本語の情報はあまり多くないため、教材を手に入れるのが難しいとも言える。
なお、JavaのコードはKotlinで呼び出すことができ、その逆も可能である。
ライブラリ
誰かが過去に作った関数の集合体で、外部サービスの機能が利用できる仕組みである。別途、ライブラリとしてインストールしていき、利用できる関数を増やすことができる。プログラムが複雑化した現在、ライブラリ無しで一からプログラムを記述することは、いくら時間があっても足りない。ライブラリの中でも、特にOSや他のソフトウェアが提供している機能を呼び出すもののことをAPIと呼ぶ。
APIApplication Programming Interface)
APIは、アプリにおける2つの異なる要素(コンポーネント)を橋渡しし、情報をやりとりするためのツールやプロトコルをまとめたもの。さまざまな役割のサーバが連携する分散アプリの構築や、アプリ間の連携を支援する。つまり、APIは、複数の異なるアプリを連携させ、エンドユーザーにシームレスな体験を提供することに役立つものである。開発者が一から作業することなく、アプリに新しい機能を追加する手助けとなる。使い方は標準的な関数と同じ。例)「画像ファイルの読み書き」「ネットワーク通信をする」「グラフが描ける」など
SDKSoftwear Development Kit)
SDKは、少ない労力でアプリを開発できるようにするために、プログラム、API、サンプルコードなどをパッケージにしたものである。開発者はSDKを使えば、機能を実現する技術の詳しい仕組みを理解していなくても、アプリに新機能を実装できる。さまざまなソフトウェアベンダーが独自のSDKを提供し、自社製品と、サードパーティー製を含む他のアプリを簡単に連携できるよう支援している。
Webアプリケーション
Webブラウザ上で動作するアプリケーション(Gmail、YouTubeなど)
ユーザー自身が操作できる高度な機能を備えているものを指す
Webサービス
Webアプリの開発に用いられるツール(APIなど)
Webサイト
Webページの集合体(コーポレートサイト、ブログなど)
文字や画像を中心としたコンテンツの閲覧を目的としており、ユーザーが日常的に目にする機会が多い
Webシステム
Webアプリ・Webサービス・Webサイトを提供するための仕組み(Webサーバー、APサーバー、DBサーバー など)

代表的なビジネスモデル

  1. 広告モデル
    • アプリ内に広告を表示し、その表示回数やクリック数に応じて収益を得る方法
    • 無料アプリに多く採用される
  2. アプリ内課金モデル
    • 基本無料でアプリを提供し、ユーザーが追加機能やコンテンツを購入することで収益を得る方法
    • ゲームアプリなどでよく見られる
  3. 有料ダウンロードモデル
    • アプリそのものを有料で販売する方法
    • ダウンロードごとに収益を得ることができる
    • サブスクリプションモデル
      • 月額や年額でユーザーに利用料を支払ってもらう方法
      • 定期的な収益が見込める
  4. アプリ開発の方法を教える
    • 情報商材やYouTubeなどでアプリ開発の方法を教える

広告モデル

アプリ内で広告を表示することでも稼ぐことができる。アプリ内に表示できる広告は次の3種類である。

  1. インプレッション型広告
    • 表示するだけで収益が発生
  2. クリック型
    • 表示後にクリックされることで稼げる仕組み
  3. 成果報酬型
    • クリック後の遷移先画面で商品などが購入された場合にのみ収益が得られる仕組み

無料アプリでも収益化できるのが広告のメリットである。しかし、デメリットはインプレッション型やクリック型の広告単価は非常に低いことである。

また、稼ごうと思って広告をつけ過ぎると使いにくいアプリになってしまい、レビュー評価が下がってしまうことがある。


アプリ内課金モデル

アプリ内でユーザーに課金してもらうことでも収益が上がる仕組みである。

無料アプリをダウンロードした後に、課金してゲーム内コインが購入されたり、有料のコンテンツを利用してもらったりすることで稼げる仕組みとなっている。

無料なのでダウンロードされやすく利用者が増えやすいが、課金してもらえるかどうか不明瞭な部分がネックである。


有料ダウンロードモデル

有料のアプリを販売することで収益を上げられる。有料アプリはダウンロードする際にお金を払うというモデルである。このビジネスモデルには、次の2種類がある。

  • 買い切り型
    • ダウンロードされればすぐに収益が上がる
  • サブスクリプション型
    • 使い続ける限り料金が発生する

無料のアプリが非常に多いので、ダウンロードするのにお金を払うことに抵抗感がある人が多いのがデメリットである。口コミやレビューの評価が高くないと、あまりダウンロードされない可能性も高い。

iPhoneのアプリをダウンロードできるAppStoreの有料アプリランキングでは、写真のレタッチアプリや広告をブロックするアプリなどの、実用性が高いものが上位にランクインしている。


アプリ開発の方法を教える

情報商材やYouTubeでアプリ開発の方法を教えることで稼ぐことも可能である。以下のコンテンツでアプリ開発の方法などを発信することで収益化を狙える。

  • 有料note
  • ブログ
  • YouTube

特に分かりやすく学べるYouTubeで教えるのがおすすめである。YouTubeならば、実際にコーディング画面を用いながら解説することで、そのまま真似して学べる。また、文章や画像に比べて動画であればエラーの原因も突き止めやすく、挫折しづらいのもメリットである。

ただし、教材を提供して稼ぐためには、高いレベルのアプリ開発のスキルだけでなく、分かりやすく解説する力が必要である。動画や文章で伝える力も重要な要素の一つとなる。初心者にとっては、結構、ハードルが高いビジネスモデルである。


成功のためのポイント

  1. ユーザーニーズに応える
    • ユーザーが求める機能やサービスを提供することが重要
  2. 収益化戦略の見直し
    • ユーザーの利用状況を分析し、適宜収益化戦略を見直すことが大切
  3. マーケティング戦略
    • アプリのダウンロード数を増やすためのマーケティング活動も重要

あとがき

私は、服薬アドヒアランス支援用アプリのアイデアを持っているので、それを独学で開発したいという夢がある。その夢を実現させるためには、かなりの時間を要しそうである。

しかしながら、Webアプリの開発方法を学び、必要なスキルを習得し、ビジネスモデルを理解することは、リベラルアーツの学習に大いに繋がると言える。その理由としては、次のようなポイントが考えられる。

リベラルアーツとの関係

  • 論理的思考と問題解決能力の向上
    • Webアプリの開発では、コードを書くだけでなく、問題解決のプロセスや効率的なシステム設計が求められる
    • これにより、論理的思考力が養われる
  • 創造力の活用
    • アプリ開発では、ユーザー体験を考えながらデザインや機能を構築する必要がある
    • これには創造力と美的感覚が重要である
  • コミュニケーション能力の向上
    • チーム開発やクライアントとのやり取りを通じて、技術的な内容をわかりやすく伝えるスキルが求められる
    • コミュニケーション力も強化される
  • 経済やビジネスの理解
    • アプリ開発で稼ぐビジネスモデルを学ぶことは、経済学やマーケティングの知識を応用する良い機会となる
    • リベラルアーツの枠組みで、こうした社会科学の知識を統合的に活用できる

具体的に繋がる学問分野

  • 哲学
    • 論理的思考や倫理的なアプリ設計に関連する
  • 心理学
    • ユーザーの行動や思考を理解することで、より使いやすいアプリを設計できる
  • 経済学
    • サブスクリプションモデルや広告収益モデルの設計に役立つ
  • デザイン学
    • 視覚的に魅力的で使いやすいUI/UX設計を行うための創造的視点が養われる
  • コミュニケーション学
    • チーム内での連携やクライアントへの提案に必要

リベラルアーツの力を最大化するための方法

  • 幅広い知識を活用する
    • 技術スキル(プログラミングなど)を基盤として、人文科学や社会科学の知識を応用する
  • 人間中心設計を意識する
    • アプリが社会や人々にどう貢献できるかを考え設計する
  • 継続的な学習
    • 技術だけでなく、哲学や社会学など、リベラルアーツの視点を日常的に取り入れる

このように、Webアプリの開発はリベラルアーツの学びと非常によく結びつく。Webアプリの開発を通じて、幅広い視点を持ったクリエイターの一人としての素養が身につくことを期待したい。


【関連記事】
WordPressを自由自在に活用してブログ作成を効率化
リベラルアーツとは何か?リベラルアーツ=教養か?
平安時代の大天才であった弘法大師空海の生涯と功績
かつての常識が常識でなくなった時代の柔軟な思考法
ビジネスや処世術に役立つ孫子の兵法で賢く生きる!
三国志に登場する魅力的な武将たちの人柄と生きざま
司馬遼太郎の小説が我が国の歴史の解釈に与えた影響
日本神話の神々の言動から古代日本人の世界観を推察
日本の仏教における代表的な宗派とその教義について
廃仏毀釈の原因となった神仏分離令の発布は罪深い!
源氏物語に登場する貴族たちが恋愛対象とする女性像
紫式部らが生きた平安時代中期はどんな時代だったか
日本人画家の絵画の魅力と私の「推し活」画家たち
日本の野生動物の生息分布から分かる自然破壊の現状
クマゼミとアブラゼミの勢力分布で知る日本の温暖化