• Top
  • > Blog
  • > 今の企業向けアプリ開発に欠けていると思うこと
2014/10/11 Enterprise BaaS製品“AppPot”, iOS関連, スマートデバイス x 企業システム, 企業システム

今の企業向けアプリ開発に欠けていると思うこと

金成哲です。

私は仕事の都合上、複数の会社によって作成されたアプリを見ています。多くの場合はアプリを作る過程で、UXやUIのデザインの視点で見る・関わることになりますが、既に作られたアプリを見る仕事が最近増えています。アプリが作られた後に見ることになる場合は、そのアプリに何かの問題があるからです。使いづらい、難しい等、UXやUIデザインの課題がある場合もあれば、遅い、落ちる、やメンテナンス性、拡張性等、技術的な課題を持っている場合もあります。後者の場合はアプリをコードレベルで詳しく見ることになります。

私はエンジニアやITコンサルタントの経歴がそれなりに長いので、多数のソフトウェア、システムをレビューしたり、改善したりした経験があります。課題を持っているソフトウェアはその規模は様々なものの、課題の原因はほとんど同じで、いくつかのパターンに分類することができます。そして最近のアプリのレビューや改修の経験から、アプリの開発においてもパターンが見えて来ています。NCDCの仕事柄、ビジネスで使われるアプリにその対象は限定されますが、今まで私が見て来た多数のアプリによく見える課題を列挙してみます。(*以下はiOS、ネイティブアプリの例です。)

– コーディング規約が守られてない
– アプリ内でレイヤーがきちんと定義されておらず、MVCの各クラスの役割が正しく守られていない
– アプリ内で利用できるデータ保持場所の特徴を理解して適切な場所が使えていない
– エラー処理の作法が正しく定義されておらず、エラーの処理が適切に実装されてない
– UIの制御と処理に時間がかかる処理とのスレッドの分離が適切に行われておらず、ユーザーを待たせることが多い
– テストの方針が定義されておらず、テストコードが書かれていない
– 最新技術の変化についていけていない。(xibファイルの使用、AutoLayoutの未採用、deprecated APIの使用等)
– デリゲートやノーティフィケーションの多用によってアプリの処理フローの把握が難しい
– 再利用が考えられておらず、コードをコピペして使うことが多い
– 外部ライブラリの仕様を適切に把握できていない状態で使用する
– 開発環境(Objective-CやUIKit, CoreFoundation, CoreData等のアップルが提供するライブラリ)を正しく理解できておらず、JavaやPHP等、他の開発環境の作法を使っている

上記は言ってみれば実はどの開発環境でもあり得る話であり、アプリ開発だからこそある特殊な状況でもありません。上記の課題の多くは突き詰めるとエンジニアの経験不足や参考にできるベストプラクティスの欠落によるものです。

考えてみましょう。Java等、既存の業務系やある程度の規模システムを作る場合は当たり前のようにフレームワークがあり、定番の汎用ライブラリがあります。プログラムの書き方も具体的に定義され、コミュニティの中で共有されています。フレームワークや汎用のライブラリを使うことは単純に開発の生産性を上げてくれるだけでなく、フレームワークやライブラリの使用による特定の作法を強要することで、ソフトウェアの全般的な品質の向上にも貢献します。しかし、まだ歴史が浅くビジネスの現場で使われ始めたばかりのスマートデバイス向けアプリの開発ではデファクトスタンダードといえるフレームワークも、ライブラリも揃っていません。従って、個々のアプリが独自の作法で作成され、様々な品質を持つのも当然のことです。

しかし、振り返ると、Java等、他の開発環境も最初は今のアプリ開発と同じ状態でした。今は当たり前のように皆さんが使っているStruts, Spring, Seasar等のフレームワークがJavaの世界に紹介され、普及し始めたのはちょうど十数年前です。それまでには、フレームワークがまったくなく、各自が自由にスクラッチから開発していた時代がJavaにも数年間続いていました。

対応策は簡単です。スマートデバイス向けのアプリ開発における開発用のフレームワーク、汎用的なライブラリを作ってしまえばいいです。今までアプリ開発は比較的小規模で行われ、Xcodeやアップルのライブラリを使って行われてきました。簡単なゲームや一回きりの宣伝のためのアプリだったらそれでも十分でしたが、ビジネスで使うアプリとなればセキュリティ、データの整合性の確保、パフォーマンス、生産性、運用性等、考慮すべき点は増えます。今までのようなスクラッチからの開発ではビジネスが要求する品質や生産性を満足するには無理があります。だからこそ、業務用アプリの開発と運用を前提にしたスマートデバイス向けアプリ開発用のフレームワークと再利用可能なライブラリが必要となります。

ビジネス向けアプリを開発する各社が上述したフレームワークやライブラリを各自作るのは効率的とは言えませんし、ビジネスの目的とも異なります。そして、そこがNCDCのような会社が価値を提供することができるところです。

以下はNCDCが社内で持っているネイティブアプリ開発用フレームワークのアーキテクチャ図の一部です。これは多くの企業向けアプリ開発及び評価の経験から構築されてきたものです。またNCDCの提供するAppPotという製品もこのアーキテクチャによって作成されています。


上図はアプリの内部だけのアーキテクチャの概要となりますが、アプリを囲んだ、既存システムとの連携や住み分けを定義したアーキテクチャや設計のベストプラクティス、そしてその実装も揃えてあります。

これらはまだNCDCの社内でしか使われていませんが、近いうちに公開することを計画しております。そうするとネイティブアプリ開発の壁も下がるし、全般的は品質向上にも貢献できると思います。なるべく早く公開できるよう、頑張らせて頂きます。

記事一覧へ