スマートデバイス向けアプリ開発の生産性向上に有効なツールやサービスが充実してきた。HTMLやJavaScriptを使って開発し、ネイティブアプリとして動作させることができる。業務アプリのサーバー機能を提供するクラウドサービスも登場した。

 スマートデバイスの業務アプリ開発に初めて取り組むと、「従来の開発との違いが原因となって生産性が下がることが多い」(オープンストリーム ソリューション本部 テクニカルソリューション部 部長 両角(もろずみ)博之氏)という。PART3では開発プロセスの違いを取り上げたが、それだけではない。

 特に問題なのは、基本的な開発環境に起因する。Androidのネイティブアプリ開発では、言語はJavaでソフトウエア開発キットの「Android SDK」を使う。言語がJavaというと、PCやサーバーで動く一般的なJavaアプリの開発スキルをそのまま生かせると思うかもしれない。しかし実際にはアプリの作りが大きく異なり、「従来のPCやサーバーでの開発経験はあまり役立たない」(アシアル システムエンジニア 井川数志氏)。

 また、iOSのネイティブアプリ開発では、言語がObjective-Cでソフトウエア開発キットの「iOS SDK」および統合開発環境の「Xcode」を使う。Objective-Cは、これまでMac OS向けアプリを開発したことのないITエンジニアにとっては、やや特殊な言語である。例えば、Objective-Cはメモリー管理の仕組みがJavaなどとは異なり、GC(Garbage Collection)機能を持たない。そのためメモリーリークを起こさないように、プログラム中で明示的にメモリーを解放する必要がある。

 こうした違いがいくつもあることから、業務アプリ開発の生産性はなかなか高められないのが実態だ。

複数OSへの対応でコストが膨らむ

 ただでさえ開発生産性を高めるのが難しい上に、スマートデバイスの業務アプリは、AndroidやiOSなどの各プラットフォーム向けに開発しなければならない。もちろん社員に貸与する端末だけで動けばいいのなら、マルチプラットフォームに対応する必要はないかもしれない。しかし、実際には「マルチプラットフォームが求められるケースが少なくない」(アイロベックス ソリューション事業部 サービスソリューション課 課長 中村次郎氏)。

 例えばPART2で取り上げたカーセブンディベロプメントのケースのように、ユーザーが協力会社や取引先など他社の社員にも広がる場合は、必然的にマルチプラットフォーム対応が必要になる。カーセブンディベロプメントの場合、初回のプロジェクトでAndroid版、2回目のプロジェクトでiOS版を開発した。

 業務アプリを複数作るとなると、それだけ開発工数が増大し、OSのバージョンアップなどに伴う保守費用も膨れ上がる。しかも、PC向けシステムでは開発とテストのハードウエアアーキテクチャーが同じ(ともにPC)なのに対して、スマートデバイスのアプリはPC(iOS向けはx86CPUとMac OS Xを搭載したMacintosh)で開発し、最終段階ではスマートデバイスの実機でテストする必要がある。

 こうした問題が引き起こす開発生産性の低下にいかに対処するか。有効なのは、開発支援ツールやサービスの活用である。

 以下では、マルチプラットフォームのアプリ開発に役立つ「フレームワーク」、業務アプリから利用する汎用的なサーバー機能を提供してサーバー側の開発を不要にする「BaaS(Backend as a Service)」、スマートデバイスを手元に用意しなくても実機によるアプリの動作確認を可能にする「遠隔テストサービス」を取り上げる。いずれも、大幅な開発生産性の向上が見込めるツールやサービスである。

この先は日経クロステック Active会員の登録が必要です

日経クロステック Activeは、IT/製造/建設各分野にかかわる企業向け製品・サービスについて、選択や導入を支援する情報サイトです。製品・サービス情報、導入事例などのコンテンツを多数掲載しています。初めてご覧になる際には、会員登録(無料)をお願いいたします。