アプリ開発を発注する前に知っておくと役立つこと

以下の記事もご参考ください。
アプリ開発を発注する前に知っておきたい5つのこと(2016/01)

弊社へアプリ開発のお問い合わせくださる方々は、広告代理店様、デザイン会社様、(アプリ開発の経験がない、または開発リソースが足りない)開発会社様、まれに自社でアプリ開発を企画されているという方もいらっしゃいます。開発会社様以外の方へのお問い合わせにご回答、またはお見積させていただくとき、前もってお伝えしておけばよかったことや、ちゃんとご理解いただけるような説明をしておけばよかったと後悔することもあります。そういったことを少し文章にしてみました。

どうしても技術的なことの説明が避けられないこともありますが、できるだけ簡単に(少しずつ…)まとめてみたいと思います。

自社でアプリ開発してみたいと思っても、開発について知識がないと、わからないことだらけで、何から始めてよいものかわかららないでしょう。社内に開発体制がない場合、開発会社へ発注することになりますが、日頃取引がない知らない会社(または人)と初めての取引となることも多くなり、お互い不安が大きくなります。

基本的なことを少しだけでも押さえておけば、開発会社の技術者との会話もスムーズになり、お互いの信頼関係も築けます。見積を依頼するにも、何を伝えればよいのかがわかれば、コストダウンにつながりますし、費用面のトラブルも少なくなります。

お問い合わせの中には、まれに急ぎの件(いまトラブってます状態)があります。残念ながら、その状態だと対応できないとご回答する場合もあります。もっと早めにお知らせいただければと思うことや、事前にご理解していただいていたら、こうならなかったのにと思うことがあります。

もっとも、そういう機会が我々からするとチャンスとなる場合もあります。困っていて、まわりに対応できるところがないから、インターネットで検索して、弊社へもお問い合わせいただけているのですから。

開発の進み方や開発に関するトラブルも事前に知っておくと、アプリの品質向上にも役立ちます。アプリ開発の見積依頼する前に、知っておきたいこと、決めておきたいことをまとみてみます。これは弊社に依頼する場合だけでなく、一般的に開発会社へ見積依頼・発注する場合にもいえることではないかと思います。

アプリ開発に関するトラブル

アプリ開発には以下のようなトラブルが発生する場合があります。

  • 見積金額をみても、これが高いのか、安いのかわからない。他社と比べてみても、開きが大きすぎる。
  • 納期が迫っているが想定した機能がない。品質が悪くて、アプリがよく落ちる。
  • 開発したアプリが、新機種で動作しなくなった。または表示がおかしくなった。

アプリ開発にはどんな方法があるの?

アプリ開発には大きく分けて3つの方法があります。それぞれ特徴がありますが、開発したいアプリの機能や性質、開発コストにより適切なものを選択することが必要です。まず、簡単にそれぞれの特徴を説明します。

  • ネイティブアプリ
  • ハイブリッドアプリ
  • HTML5アプリ

ネイティブアプリ

iOS(iphone,ipad)なら、MacOSX上でxcodeを使って開発します。言語はObjective-Cを利用します。Objective-C言語の技術者は比較的少なく、いざというときに技術者、開発会社を探すのが難しいです。しかし、iOSの最新の機能が利用できたり、実行速度も期待できます。

Androidなら、Java言語で、MacOSX,Windowsで開発可能です。多くのエンジニアはEclipseなどの統合開発環境で開発します。Java言語の技術者は多いので技術者の確保は比較的容易ですが、Javaのスキルがあっても、AndroidOSの知識と経験がない場合、品質が上がらない場合もあります。AndroidのネイティブアプリもAndroidOSの最新の機能が利用できて、速度も期待できます。

Androidは機種が非常に多くなるため、全ての機種に対応するアプリ開発は難しく、コストが上昇します。iPhoneもiPhone6の発売で、今後は同様の問題があります。機種が多くても同じ解像度と同じ画面サイズであればいいのですが、新しい機種が発売されるときは、解像度も画面サイズも大きくなる傾向があるため、それぞれの画面で正しく表示できるようにしなければならないのです。

ハイブリッドアプリ

アンドロイド端末、アイフォン端末でも動作させたいアプリの場合は、ハイブリッドアプリの開発が向いています。アンドロイドとアイフォンのネイティブアプリを二つ開発するより、やや低コストになります。残念ながら、半分になるということはありません。共通化出来る部分はありますが、それぞれ特有コーディングも必要です。またテスト工数は単純に言えば、ひとつの機種のテストに掛かる工数の機種倍掛かります。

ハイブリッドアプリの開発には、TitaniumやPhoneGapといった開発ツールを利用しますが、どちらもJavascript言語で開発します。ネイティブアプリの開発言語と比べれば、技術者の確保はしやすいです。また開発はWindows,OSXどちらでも可能です。

PhoneGapは従来のWebアプリと呼ばれるHTML/Javascriptでの開発スキルがあれば、開発ができます。TitaniumはAPIの学習コストがやや高く、本格的な開発手法を用いる必要があります。

HTML5アプリ

HTML5/CSS3で作成するWebアプリです。アプリのようにオフラインでも利用したい場合は、難しいです。また、アプリアイコンをタップして起動させたい場合も向いていません。しかし、アプリ審査の煩雑な作業もありませんし、アプリの改修後も、再インストールさせることはありません。開発言語は、HTML5/Javascriptを利用するので、Webアプリの開発経験がある技術者・開発会社なら問題ありませんが、できればモバイルウェブアプリの経験があった方がいいです。テスト工数は、対応するブラウザの数に依存します。場合によっては機種毎での確認も必要でしょう。

弊社ではアプリだけでなくサーバサイドも開発可能

開発したいアプリがユーザ登録が必要だったり、管理者の設定によりアプリのコンテンツを変更したいようなものの場合、サーバ側にもプログラムが必要になる場合があります。そういった場合でも、弊社では開発をお受けすることができます。CakePHP,FulePHP,LaravelといったPHPフレームワークの開発、Ruby On Railsでの開発などを得意としています。アプリ開発とあわせて、サーバアプリ開発・運用のご相談もお待ちしております。

問い合わせはこちらから

開発方法って、どうやって選ぶの?

公開アプリか非公開アプリか

ゲームや色々なユーティリティのように一般的なユーザーが利用するアプリは、AppStoreやGoolgePlayに登録することで、自由にユーザーがダウンロードできるようになります。しかし、企業内、または少人数でしか利用しないアプリの場合、配布方法が難しくなります。

AppStoreやGooglePlayに登録するアプリは誰にとっても価値がなければなりません。そこに企業向けの少人数で利用するアプリを登録することは適切ではありませんし、アプリ審査が通りません。まず、開発したいアプリは公開して多くの人で利用すべきものか、非公開で限定した人たちで利用したいのか検討すべきです。

iOS,AndroidOSアプリをAppStoreやGooglePlayで配布するには、それぞれデベロッパープログラムに加入しなければなりません。面倒だから開発会社にまかせたいとしても、アプリの所有者は発注元ですので、アカウントは発注元が管理する必要があります。

AppStore,GooglePlayへの登録は、開発会社に代行してもらえることがありますが、別途費用が発生します。また一回で審査が通らないこともあり、そういった場合は不備を修正して、改めて審査申請することになります。その場合、別途費用がかかる場合があります。

非公開アプリとした場合、iOSアプリに関しては配布がややむずかしいです。企業向けで配布したい場合はエンタープライズプログラムに加入すれば、可能になります。アンドロイドアプリの場合は、比較的自由に配布手段があります。apkファイルと呼ばれるファイルをWebサイトに配置して、ブラウザからダウンロードして配布することができます。もちろん、企業内のセキュリティのあるWebサイトに置く必要があります。

HTML5アプリで実現できないか

アプリにこだわる理由は何かをよく考えてみましょう。「スマートフォンの中にアイコンを置いて起動したい」という単純な理由の場合もあるでしょう。HTML5アプリでも、デスクトップにアイコンを配置することはできますが、ユーザー自身に行ってもらう必要があります。

「インターネットがつながってなくても、機能が動作するようにしたい」という場合は、HTML5アプリでは難しいですが、ローカルストレージを使うことで、利用中に接続が切れても、動作できる場合もあります。「機能的にOS独自のAPIを利用する必要ある」という場合は、HTML5アプリでは難しくなります。

HTML5アプリの利点としては、アプリの不具合修正や機能向上した場合、すぐにその修正が反映できることです。アプリの場合は、プログラムを修正し、再度AppStoreやGooglePlayに修正申請しなければなりません。

実装機能で検討

ゲームのように2D,3D描画や速度が求められるものは、ネイティブアプリがおすすめですが、ゲーム開発ならUnity,Cocos2dといった開発ツール(ゲームエンジン、フレームワーク)がよく利用されます。このようなゲーム開発ツールは、アイフォン、アンドロイドアプリともで利用できるものもあります。他の用途のアプリなら、どの方法でも開発は可能です。

ハイブリッドアプリの場合、OSの機能が全て利用できない場合がありますが、プラグインを作成すれば解決出来る場合もあります。しかし、プラグイン開発はネイティブアプリ開発と同等のスキルが必要になります。既存の有償・無償のプラグインを探すという手段もあります。

それほど難しい機能が想定されないなら、まずはネイティブアプリ、次にハイブリッドアプリで検討すればよいと思います。

動作プラットフォームで検討

「アンドロイドだけで動作すればいい」、「アイフォンだけで動作すればいい」という場合は、まずはネイティブアプリを検討するのがよいでしょう。その後、機能が決まれば、ハイブリッドアプリで開発する場合を検討し、コストの比較検討すればよいでしょう。

アプリの寿命で検討

何か特別なキャンペーン用で期間限定アプリなら、ハイブリッドアプリで検討し、その後、必要ならネイティブアプリで検討すればよいと思います。

開発コスト優先で検討

どの開発手法が低コストかというのは、少し難しい問題です。どのアプローチで行っても、機能が多かったり、要求が高いと高コストになってしまいます。また、開発会社の得意な開発言語・環境によりコストが変わってきます。また前述しましたように対応機種の要求が多いとどうしてもコストが上がってしまいます。プログラミングとしての作業は増えなくても、テストの作業は減りません。

アプリ開発のお見積のご依頼、ご相談ください

弊社では、お客様のご要望から、一番最適なものを選択し、ご提案しますが、ご希望に応じて、3種類(ネイティブ、ハイブリッド、HTML5)の見積もご提示できます。

問い合わせはこちらから

見積や開発には何を伝えたらいい?

まずはアプリの企画書を作成する必要があります。文章だけでなく図や絵で表現されているのがよいです。企画書が作成できなければ、まずは既存のアプリで似たような機能を持つ物を提示して、「○○アプリ」のような機能とか、デザインでと説明するだけでも、最初はよいでしょう。その後、企画書、仕様書に落とし込んでいく必要があります。仕様書に関しては、開発会社が担当することは可能です。

デザイン上の注意

機能的な説明も必要ですが、やはり、そのアプリのデザインが一番重要でしょう。もし、社内にデザイン出来る方、おつきあいのあるデザイナーがいる場合は、そのような方に企画書作成からアプリデザインまで、依頼されるのもよいでしょう。

できればアプリデザインを勉強されている方、経験されている方が好ましいです。たとえば、Webデザインされている方だから、アプリデザインも可能かというと、そうでない場合があります。ラフスケッチなら、そういった方でも問題ありませんが、本格的なアプリデザインは経験者や知識のある方におまかせするのがベストです。アプリにはアプリのデザインガイドラインや、既存のUI部品が存在します。アプリデザインに知識がないと、使いにくいものになってしまう場合があります。

アプリのデザインガイドラインを無視してしまったために、コスト増、品質低下まで引き起こす場合があります。基本的に、縦と横の大きさを固定してデザインすることはできません。横幅も数種類あるため、要素の横方向マージンなどもピクセル単位で指定することはむずかしくなります。基本的、全て比率で考えることが必要です。特にアンドロイドでは様々な解像度を持つデバイスが存在するため(iPhoneも今後は同様)、それぞれのデバイスにあわせることは不可能です。

その他にスマートフォン、タブレットには縦にした場合と横にした場合があるので、それぞれ別々のデザインとするか、アプリをどちらかの向きで固定してしまうという方法があります。HTML5アプリの場合、ブラウザで縦、横を固定することができないので、横にした場合は、「縦にしてご利用ください」といったアラートメッセージを表示している場合もあります。

動作させたい機種が限定されているなら、その機種の画面サイズ、解像度にのみ対応なら、比較的自由なデザインを適用することができます。

ウェブデザインで進めるなら

ウェブデザインで進めたい場合は、ハイブリッドアプリのPhoneGapを使う方法を検討した方がよいです。PhoneGapアプリは、基本的にHTML/CSS+Javascriptで開発するので、ウェブデザインと親和性がよいです。できれば、モバイルのウェブデザインに精通しているデザイナーがベストです。

デザインをコーディング(HTML/CSS)する場合も、モバイルの場合は色々な考慮が必要です。モバイルではできるだけ通信量を減らす工夫が必要です。HTML5/CSS3を利用し、画像はできるだけ少なくし、複数の画像をスプライト化するテクニックなどが必要です。

デザインデータに関して

デザイナーはイラストレーターやフォトショップを使って制作されることが多いと思います。これらのファイルに関しても、各パーツごとレイヤーできれいに分離しておくと、開発がやりやすくなります。イラストレーターに関しては、ピクセル単位に整合した座標が利用できるようになっていると扱いやすいです。

アプリの開発者は、イラストレーターもフォトショップも使います。そのほどんどの作業はアイコンや画像の切り出しです。そういったとき、アイコンのサイズが微妙に違っていたり、レイヤーが重なっていると、簡単に切り出せなくなります。また、利用されいるフォントがない場合もあります。
まずは、サンプルとしてアプリの画面の一枚だけでも、デザインデータを作成し、それを開発会社へ渡して、データ内容を確認しておくと、その後作業がスムーズに運びます。

HTML5/CSS3のコーディングのご依頼、ご相談ください

デザイナー様が作成したデザインをHTML5/CSS3形式に手打ちでコーディングできます。モバイルに最適化したコーディングを仕上げます。Sass(Scss),Less,StylusといったCSSプリプロセッサ形式で納品できます。ご希望によりCSSはMindBEMdingの命名ルールで、シングルクラス、マルチクラスでの対応も可能です。SMACSSの対応も可能です。

問い合わせはこちらから

開発完了後の保守って、なにしてくれるの?

通常、アプリ開発完了後の瑕疵担保期間中は、無償対応で対応いたします。この期間が過ぎた場合は瑕疵であっても、有償となることが多いです。また、お客様が「不具合」と考えても、開発会社からすると「仕様変更」ととられる場合があります。こういうところも、トラブルになりやすいところです。瑕疵担保期間に担保するのは、最初に決められた機能の担保なので、仕様変更となると対象外となります。

仮に仕様変更だったとし、修正箇所も小さく済む場合でも、アプリの場合、動作確認に非常に手が掛かる場合があります。ですから、簡単に無償でやりますとも言えない事情があります。AppStore,GooglePlayマーケットへの再登録作業も、必要になってきます。これらの代行費用は含まれていなので、有償となります。

瑕疵担保期間を過ぎた後、絶対に無償対応しないかというと、簡単だったら、対応している場合もあります。その場合でも、特定の機種で確認だけにしてもらうなどしています。ちょっと作業が大きくなると、お見積して、費用を算出させていただきます。

こういった追加の見積では、少々割高になりことがあり、初回の開発費用と比べて大きすぎるのではと感じられるときもあります。多くの量を購入すれば、安くなり、すくない量だと割高になるという理屈です。

新機種(新OS)対応

新しい機種が発売されたけど、このアプリ動作するのだろうか?または新機種では不具合が発生するといった場合は、有償で検査・修正を依頼いただくことになります。

保守契約

大規模なソフトウェアでは、年間単位で保守契約を交わして、ソフトウェアを保守していくことがあります。しかし、比較的小規模なものでは、スポット契約が多くなると思います。何かあったときに、費用をお見積して、発注いただくということになります。

以前に開発したアプリを修正したいんだけど、可能ですかというお問い合わせもあります。開発していたところへは、依頼できない事情があったり、開発元で見積もってもらったら、あまりに費用が大きすぎてという場合もあります。
開発元が一番よく知っているので、工数は小さくなるはずですが、そのアプリの開発者が退職していて、他のものではわからないとか、人手が足らず開発元も外注しないといけないという事情もまれにあります。

そんな修正作業を引き受ける場合で困ることが「ソースコードがない」とか「最新のソースコードが、どれかわからない」といったことです。Javaで開発されたアンドロイドアプリなら、中間コードからソースコードへ変換して、修正できなくもないですが、どうしてもコストも工期もかさみますし、あまり、やりたくはありません。

つぎに困るのが、仕様書、ドキュメントがまったくない場合です。細かな物は必要ないのですが、概要がわかるものがあると助かります。

アプリ開発に限りませんが、開発を外注した場合、納品物の精査と管理はしっかりやっておいた方がいいと思います。開発しているときは、まさか他社へ修正依頼することなど考えることはあまりないでしょう。

開発中はソースコード、ドキュメントは履歴管理されていることが多いです。開発中の全ての修正は、記録されています。だれが、いつ、どのような修正したかが、わかるようになっています。

SCM(Source Code Management)システム

よく使われているSCMには、subversion,gitなどがあります。弊社ではgitを利用することが多いです。

開発会社から納品されたソースコード・ドキュメント一式は、可能ならこの履歴全て含んだ状態で、引き継いでいくことが好ましいです。しかし、ある程度開発経験のある方がいないと「ソースコードを管理」していくことは難しいです。しかし、この引き継ぎをしっかりやっておけば、今後のアプリの保守を他社へ依頼する際もスムーズに行うことができます。開発会社から納品物を受領する際は、このようなことにも気をくばっておくべきでしょう。

弊社のソースコード保守サービス

弊社では、瑕疵担保期間中はソースコードを無償でお預かりしております。瑕疵担保期間を過ぎた間も、有償でお預かりするサービスがあります。また、他社へ開発を引き継ぐ際も、その開発会社様への引き継ぎ作業もさせていただきます。以前他社様で開発されたソースコードをお預かりするサービスもあります。

問い合わせはこちらから