アプリ開発(アプリケーション開発)を行うにあたって必要なものは何だと思いますか?「プログラミング言語の習得」、これは必須事項ですが、プログラミング言語を習得するだけではアプリ開発が行えません。「役立つアプリのアイディア」、確かにアイディアも大切ですが、アプリ開発ではもっと大切はことがたくさんあります。
本稿では、これからアプリ開発を始めようと考えている方に向けて、アプリ開発とは?という「基本のキ」を紹介します。
アプリ開発とは?
アプリ(アプリケーション)とは、使用者の目的に応じて動作するように作られたプログラムの集合体です。ちなみにプログラムとは、コンピューターに実行してもらいたい処理を指示するための、命令文をまとめたものになります。つまり、アプリとは掘り下げて考えると大量の命令文を羅列させたものであり、実体は持ちません。スマートフォンやパソコン、Webの中に存在し、いろいろな機能を使用者に提供しています。
このアプリを開発するとはどういうことなのか?まずは、どんなアプリが作りたいのかを考え、そのアプリを動かしたいプラットフォーム(スマートフォン、パソコン、Webなど)を決めます。これらの基本コンセプトに応じてプログラミング言語を用いて、アプリを作っていく作業をアプリ開発と呼びます。実際の開発プロセスはもっと複雑ですし、前述のようにプログラミング言語だけ習得すれば開発できるものではありません。
ちなみに、スマートフォンで動作するものをスマートフォンアプリ、パソコンで動作するものをデスクトップアプリ、Webで動作するものをWebアプリと呼び、社内の業務プロセスをシステム化するためのものは業務アプリケーションと呼んだりします。
アプリ開発の学習のポイント
アプリ開発のためにはプログラミング言語さえ習得すれば開発できると考えている方も多いでしょう。確かに、理論的にはプログラミング言語を習得すればアプリ開発は可能です。しかし現代において、プログラミング言語の習得よりも大切なポイントが3つあります。それが「ライブラリ」「フレームワーク」「API」です。
ライブラリ
ライブラリとは他人が作成したプログラムを活用するための仕組みであり、アプリ開発でこれを利用しないプログラマはほぼ存在しません。一般的に使われているアプリは、全体
膨大量のプログラムになります。従って、自分だけですべてのプログラムを作成することは大変ですし、非効率的です。
ライブラリでは自分が作成しているプログラムに他人のプログラムを組み込むことで、複雑なプログラムの作成を簡単にしてくれます。ライブラリは日本語で「図書館」という意味なので、自分にとって必要なプログラムを書棚から探しだして活用するというイメージです。
また、チームでアプリ開発に取り組む場合は、チーム内で共通使用する処理をライブラリとしてまとめておくことで、何度も同じプログラムを作る必要がなく、開発効率のアップとプログラムの一貫性を保つことができます。
フレームワーク
フレームワークはアプリ開発を行う上で土台になるものです。アプリ開発の世界以外にも、フレームワークはよく使われています。たとえばマーケティングでは「SWOT分析」などの分析フレームワーク、物語を作るのに欠かせない「起・承・転・結」も一種のフレームワークだと言えます。「枠(フレーム)に合わせて仕事(ワーク)をする」からフレームワークです。
アプリ開発のフレームワークとは「よく使われるライブラリを集めたもの」であり、Rubyなら「Ruby on Rails」、PHPなら「CakePHP」、JavaScriptなら「AngularJS」というフレームワークが提供されています。
フレームワークを利用するメリットは開発工数を大幅に減少し、かつ整合性の取れたプログラムが作れることです。フレームワークという土台の上でアプリ開発を行っていくので、1からプログラムを作るよりも少ない工数で済みますし、新しい機能を追加する際には共通ルールを使用するため、整合性が取れバグが少ないプログラムにすることができます。
特に大規模なアプリ開発においてフレームワークは絶対的に必要なものであり、アプリ開発を学習するにあたって、プログラミング言語を習得することよりもフレームワークを学習することに比重を置く方が良いとされています。
API(Application Programming Interface)
APIはプログラミングによって「外部のアプリを動かす仕組み」です。つまり、外部のアプリで提供されている一部の機能を呼び出し、自分のアプリにその機能を組み込むことができます。ライブラリと異なる点は、プログラムに他人のプログラムを組み込むのではなく、すでに提供されているアプリの機能を呼び出す点にあります。
たとえばGoogleマップのAPIを利用すれば、最寄りのスポット情報を瞬時に取得したり、目的地までの経路表示を行ったりといった、Googleマップですでに提供されている機能を自分のアプリに組み込むことができます。
簡単なアプリならAPIを組み合わせるだけで開発できてしまうほどAPIは便利な仕組みであり、アプリ開発の可能性を広げてくれます。
以上3つのポイントは、すでに存在するものを利活用する「アプリ開発のシェアリングエコノミー」とも言えるほど重要なものであり、プログラミング言語の学習だけではなくライブラリ、フレームワーク、APIの使い方等について学習することも大切です。
アプリ開発のためのプログラミング言語
これからアプリ開発に取り組む方の悩みどころといえば、学習すべきプログラミング言語でしょう。現在、世界には200種以上のプログラミング言語が存在しており、主要なプログラミング言語も多数存在するため、どのプログラミング言語を学習すればよいのか悩んでしまいますね。
プログラミング言語学習のポイントを1つ紹介しますと、まずは「スクリプト言語を選ぶこと」です。スクリプト言語とは命令文の実行と機械語への翻訳作業(コンパイラ)が同時に行われるプログラミング言語であり、プログラムを作ったそばから命令文を実行して結果を確認することができます。
一方、コンパイラ言語と呼ばれるプログラミング言語は、アプリの動作が快適になるというメリットはあるものの、事前のコンパイラが必要になるため初心者には学習難易度が少し高くなっています。
日本人が開発して日本人が学習しやすいRubyや、Webサイトに動きを持たせる他アプリ開発も可能なJavaScriptは、スクリプト言語として最初に学習すると良いとされているプログラミング言語です。
アプリ開発におけるGitHubの役割
アプリ開発にあたって、ぜひとも活用していただきたいサービスがGitHub(ギットハブ)です。GitHubは世界中の開発者が自分のプログラムを公開したり、他人のプログラムを参照したり、開発者同士が繋がるためのプラットフォームを提供するライブラリサービスです。
ただし、GitHubの特長はそれだけではありません。バージョン管理システムであるGit(ギット)をベースにしたサービスなので、アプリ開発においてプログラムのバージョン管理を行ったり、オリジナルのプログラムから開発環境を分岐させたり、それらを元のプログラムに統合したり、有料版ならばプライベートリポジトリを作成して閉じられたネットワークの中でチーム開発を進めることも可能です。
アプリ開発を行うにあたって開発効率を大幅にアップしてくれるので、アプリ開発学習と同時にGitHubを利用してみましょう。
Azure DevOpsでGitHubを連携させる!
ソースコードの組織的管理やフィードバックの迅速化を行えるGitHubなら、適切なアジャイル開発を実現します。アジャイル開発ではメンバー同士のソースコード共有や、組織的なバージョン管理が欠かせません。これを如何に適切に行うかによってアジャイル開発の成否が分かれます。
GitHubアカウントを使用してAzure DevOps にサインインできます。これにより、GitHubアカウントだけでリポジトリからデプロイすることが可能となります。便利な機能なので、ぜひお試しください。