スマホアプリ開発の基本

さんこんにちは!㈱スクラムソフトウェアの製造業DX担当.Aです。今回は月2回の当社で実施している「製造業DX勉強会」で触れた「製造業におけるDX」についてお伝えしたいと思います。
㈱スクラムソフトウェアの製造業DX担当。エンジニアとしてから製造業のシステム開発をメインに幅広く業務に従事。C言語、C++言語を使った組み込み開発やPHPやJavascriptを使ったWEB周りの開発が得意。社内の事例を他のエンジニアからヒアリングし、社外向けにシステム開発と製造業DXや工場管理についての情報発信を実施中
スマホアプリ開発の特徴
スマホアプリは、一般的にはAndroidアプリとiOSアプリの総称として使われます。ここで、はまず、スマホアプリの特徴を他のデスクトップアプリやWEBアプリと比較し、解説してみますね。
モバイル端末に特化した画面
スマホアプリは、スマートフォンやタブレットでの使用を前提としています。パソコンに比べ小さな画面で利用されなければなりません。そのため、単に美しいとかかっこいいといったデザイン性だけを追求するのではなく、シンプルで使いやすいデザインを心がけなければなりません。デザインのガイドラインとして、AndroidアプリについてはGoogleから「material design」が、iOSアプリについてはAppleから「Human Interface Guidelines」というものが公開されています。設計段階からこのようなガイドラインに沿って作成していくことが、スマホアプリ開発においての特徴といえます。
オフラインでも利用可能
WEBアプリと異なり、スマホアプリはインターネットの繋がらないオフラインの状態でも利用可能なアプリがあります。この点は、デスクトップアプリとも共通する部分です。設計段階で、どの機能についてはオンラインで、どの機能についてはオフラインでというように、明確に切り分けつつ開発を進める必要があります。
デバイス機能の活用
スマホアプリについては、デバイス特有の機能を利用することが可能です。例えばカメラの機能を使いQRコードを読み取るアプリや、位置情報を利用した通知機能や、加速度センサーを利用した歩数計などがこれにあたります。この点は、他のアプリに比べ、開発面でハードとの連携が特に重要となるため、実装するための技術や知識についても十分に習得しておく必要があります。
プラットフォームへの対応
AndroidアプリはAndroid端末に、iOSアプリはiOS端末に依存した開発を進めなければなりません。例えば、iOSアプリを開発する場合、一般的にはMacが必要になります※。一方WEBアプリの場合、基本的にはどのようなPCやブラウザでも動くため、特定のプラットフォームを意識して開発する必要はありません。この点はデスクトップアプリと共通しています。
※ただし、最近ではクロスプラットフォーム開発というものが普及しています。クロスプラットフォームについては下記参照
スマホアプリを利用するための開発環境
Androidアプリの開発に特化したAndroid Studio:
Android StudioはGoogleが提供しているAndroidアプリの開発を進めるための統合開発環境(IDE)です。Android Studioは誰でも無料で利用でき、かつ、ソースコードも公開されているオープンソースとなっています。開発者はAndroid Studioを使うことで、プログラミング、テスト、デバッグが可能です。
また、Android Studioにはエミュレータと呼ばれる仮想デバイスが内蔵されています。これにより、作成中のアプリをエミュレータでどのように動くのかをテストすることができます。
また、Android Studioにはユーザーインターフェースをビジュアルに作り込むツールがあるため、デザインがあまり得意でないプログラマーでもサクッとユーザーインターフェースをドラッグ&ドロップで作ることが可能です。
iOSアプリの開発に特化したXcode:
Xcode(エックスコード)は、iOSアプリとmacOSアプリを開発するための統合開発環境(IDE)です。機能的にはAndroid Studioと似ています。統合開発環境の機能としてプログラミング、テスト、デバッグが可能であり、ユーザーインターフェースに必要なボタンやボックスをドラッグ&ドロップで配置でき、エミュレータによる稼動テストも可能です。
第3の選択肢クロスプラットフォーム
AndroidStudioやXcodeはそれぞれのプラットフォームで稼動するアプリに特化した開発環境でした。そのため、両プラットフォームでアプリを開発したい場合は、それぞれの開発環境で別々に作成しなければなりませんでした。
それが、クロスプラットフォームの代等により、両プラットフォームの開発を一つの環境で作ることが可能となりました。スマホアプリの開発で利用できるクロスプラットフォームの代表的なフレームワークは以下になります。
- React Native: Facebookによって開発されたReactベースのフレームワークです。JavaScriptとReactを使って、iOSとAndroidの2つのアプリを開発できます。特にWEB系フロントエンドエンジニアはJavaScriptやReactを使っている方も多いため、習得期間の短縮が可能となります。
- Flutter: Googleが開発したフレームワークで、Dartというプログラミング言語を使用します。
- Xamarin: Microsoftが提供するクロスプラットフォーム開発ツールです。C#というプログラミング言語を使用します。ただし、Microsoftは2025年5月にサポートを終了すると発表していることから、これから新たに習得する場合は、ReactNativeかFlutterがいいでしょう。
アプリ開発のためのプログラミング言語
Java(Androidアプリ):
長らくAndroidアプリ開発において、標準的なプログラミング言語でした。また、JavaはAndroidアプリ以外にもサーバサイドでの開発やデスクトップアプリの開発など、非常に多岐に渡り利用されてきた言語であり、多くの開発者にとって馴染み深い言語といえます。ちなみに僕も新入社員の時から使っていた言語です。
Kotlin(Androidアプリ):
KotlinはJetBrains社によって開発され、GoogleがAndroidアプリ開発向けの公式言語として採用しました。KotlinはJavaに比べてコードが簡潔で読みやすいのが特徴です。現在新たにAndroidアプリを作る際は、JavaよりもKotlinの利用が多いようです。
Objective-C(iOSアプリ):
Objective-Cは長らく存在しているiOSアプリ開発のためのプログラミング言語です。現在では後述のSwiftに押されており、AndroidアプリにおけるJavaの立ち位置と似ています。
Swift(iOSアプリ):
SwiftはAppleによって開発された、iOSとmacOSアプリを開発するための公式プログラミング言語です。SwiftはObjective-Cに比べて簡潔で読みやすく、パフォーマンスも向上しています。現在では、新たにiOSアプリを作る際には、Objective-CよりもSwiftの利用が多いようです。
Javascript /React(クロスプラットフォーム)
ReactNativeというJavaScript/Reactベースのフレームワークで、AndroidとiOSの2つのアプリを開発することが可能です。JavaScriptはWEB開発では必須の言語であり、ReactはモダンなJava Script開発を行う上でともて人気の高いフレームワークのため、WEB開発エンジニアにとってはとても馴染みのある言語だといえます。
Dart(クロスプラットフォーム)
Flutterというクロスプラットフォーム用の言語で、AndroidとiOSの2つのアプリを開発することが可能です。比較的新しい言語ということもあり、可読性が高く習得期間も比較的短く、ここ最近のGitHubでの人気(スター数)もReactNativeを上回っています。そのため、これからプログラミングの勉強をされる方には、私の個人的な意見としては一押しの言語です!
アプリ開発での当社の体験談
以前行った当社のアプリ開発の事例です。
ユーザーからはタブレットで配達用の順路検索をするためのアプリ開発の依頼をお受けしました。この際、開発時に発覚したのですが、ユーザーの保有するタブレットが古いため、非常にスペックが低く、データ処理が思うように進まなかった、非常に困りました。通常のタブレットでは十分に処理ができていたにもかかわらず、ユーザーのタブレットではその処理が満足にできない状況でした。
ユーザーにはタブレットのスペックを上げてもらうようにお願いしました。この点について、ユーザーとも話し合ったのですが、ユーザーの配達員はたくさんおり、かつタブレットの数も多かったため、ユーザーのタブレットのスペックを上げることは許されませんでした。そのため、低スペックなタブレットでも処理できるように、プログラムを改善し、どうにか処理ができるようになりました。
このようなこともあるため、テストするデバイスは開発の早い段階でユーザーと同等のデバイスで実施することが重要だと、再認識させられた事例でした。
また、当社でも無料のIT相談もお受けし、開発のご依頼も全国にてお受けしております。お気軽に、ご相談ください。
