もし上司から急に、「アプリを作るから発注先の開発会社を探して」と急遽任命されたらどうしますか?あなたがアプリ開発の発注経験が無ければ、困惑しながらも、まずはネットで検索した数多くのベンダー(開発会社)に声をかけるでしょう。そして何社も何社もミーティングをし、やりたいことを説明したにも関わらず、それぞれバラバラな粒度の開発費用の見積もりをもらい、IT系の専門用語に混乱し、上司からは「なんでこんなにかかるんだ。もっと安くしてもらえ」と言われるもうまく説明できず、ベンダーからは要件を具体的にしないと見積もれないと言われ、判断材料が不明瞭なまま決断を迫られることになります。。初めてだとこうなってしまう方が多いと思います。1度や2度経験していても、まだまだ大変でしょう。そうならないため、少しでも参考になればと思い、アプリ開発会社をどう選ぶべきか、どんな観点に注意すればよいかを書いてみました。ベンダーへの発注検討前にこちらを一読いただき、ご参考になれば幸いです。コストを抑えた最速アプリ開発に興味のある方はこちら▼そもそもアプリ開発の進め方はどんな流れ?まずアプリの制作の流れを知っておく必要があります。ざっくり、以下のような流れになります。企画要件定義設計・デザイン実装(プログラミング)&テスト受入テストストア申請保守運用一つずつ解説していきますね。◆企画フェーズまずどんな感じのアプリを作りたいかの背景、ビジョン、コンセプトやビジネスモデル、ターゲットなどを明確にしていく必要があります。ベンダー(開発会社)に発注しようとしてる時点で、これらがまだ明確ではないケースは結構あります。ベンダー「どんなものを作りたいんですか?」発注担当者「メルカリみたいな感じで、こんな感じのイメージで考えてます。」ベンダー「なるほどですね! マネタイズはどんな感じですかね?」発注担当者「うーん、そうですね〜。まだ考えてないんですよね」例えばこんな粒度で相談を受けることもあります。これはまだ企画が固まっていない段階と言えるでしょう。もちろん、その企画提案のフェーズから相談にのってくれるアプリ制作会社やコンサルティング会社も沢山あります。ですがそれは「コンサルティング」の領域で、「アプリ制作」の領域ではありません。ですので、相手の得意分野を間違えると、いいモノが出来ない可能性が高いです。◆要件定義具体的に要件を決めるフェーズです。大まかにパワポの資料なので企画を資料化していても、それは要件定義のレベルには落とし込みていないことが多いです。「要件定義」という言葉の「定義」自体が曖昧ではありますが、機能一覧や画面一覧、ワイヤーフレーム(画面のイメージが描かれたもの)、非機能要件(開発言語・環境や性能、セキュリティなど機能として見えないけど決めるべきもの)などを決める必要があります。一般に、要件定義を終えていない状態で、開発の見積もりをしてもブレブレであることが多いです。後述の「見積もりが各社バラバラな理由:不確実性コーン」にて改めて書きますが、「要件」=「何を作るか」が決まっていない状態で見積もりを各社した場合、マックスで見積もるかミニマムで見積もるかで人それぞれ見ているものが違います。ですので、500万円で見積もる人がいれば、5,000万円で見積もる人もいても、おかしくは無いのです。発注担当者「じゃあ、500万円ではどこまでできて、5,000万円ではどこまで出来るか教えてよ!どう違うの!?」ってなりますよね。もちろんある程度は可能です。ただ、厳密にやるとなると、上述の「要件定義」を行うことで見えてくるものなので、それをやるために1ヶ月〜2ヶ月かかったりします。そのため、「要件定義」のみの工程として発注することもよくある手法です。要件定義を特定のベンダーに発注し、要件定義後にその要件をベースに「開発工程の見積もり」を作ってもらう、といった感じです。◆設計・デザインこちらは上記の要件定義を更に掘り下げる作業になります。要件定義だけでは、まだ具体的ではないので作れないため、エンジニアが実装できる状態まで詳細な仕様を決めていく作業になります。この工程の難しいところは、要件定義時点での見積もりとの乖離が発生しがちなところです。理由は大きく分けて2つあります。元々の要件には無い機能だけど、設計を進める内に必要なことが判明した。もしくは検討をすすめる内に他の機能も欲しくなった。元々の要件にはなんとなく書いていたが、具体的に詰めるとベンダー側の想定費用を大きく超えることが判明した。まずひとつ目の「元々の要件には無い機能だけど、設計を進める内に必要なことが判明した。もしくは検討をすすめる内に他の機能も欲しくなった。」このケースについて。これは発注側が要件定義時にその機能が必要であることを想定できなかったために発生します。ここが難しいポイントです。ベンダー側(アプリ開発会社側)としては、要件に書いてなかったので「それは追加のお金をもらわないと出来ないですよ」と主張するかも知れません。しかし発注側としては、「いやいや、そのくらい最初に提案して欲しかったよ!そっちはプロでしょ?」という気持ちになることもあるでしょう。(モノによっては発注側しか知り得ない発注側の企業の業務に即した機能のため提案の余地もないこともありますし、単にベンダー側の提案力が無いために提案出来なかったケースもあります)この辺もベンダー選定の難しいポイントです。作るだけのアプリ制作会社か、もしくは提案・コンサルティングも出来る会社なのか。もちろん前者の方が費用が安く、後者の方が断然高くなるので、難しいところです。また、2つ目の元々の要件にはなんとなく書いていたが、具体的に詰めるとベンダー側の想定費用を大きく超えることが判明した。こちらのケース。これもアプリ制作の難しいところです。要件定義の粒度にもよりますが、設計を細かく詰めていくと基本的に仕様は膨らんでいく傾向にあります。特に、発注側としては沢山機能があり便利であるほうが嬉しいので、他のサービスなどと比較し、それらにあるものは何でも取り込みたいと当然思ってしまいます。しかし、結果としてベンダー側が受けきれないほど要件が膨らんでしまうことも往々にしてあります。双方の事前の認識合わせや進め方の合意形成が非常に重要になってきます。◆実装(プログラミング)&テストいわゆる「プログラミング」を行いアプリを作っていくフェーズです。この実装工程が終わりテストフェーズに入ることでようやくアプリを目視で確認できるようになります。この時点で判明する良くある問題は、「思ってたのとなんか違う!」という問題です。要件定義フェーズからこのテスト工程まで来るのに、早くて2〜3ヶ月、長いと半年以上かかります。(一旦アジャイル開発ではなくウォーターフォール開発で話しています。アジャイル開発はそれはそれで難しさもあるので別の記事でお話します)それだけの時間をかけないと伝えたイメージが目に見えて触れる形にならないので、認識の齟齬はどうしても起きやすいです。それを防ぐために、アジャイル開発や様々な手法がありますが、それはそれで難しさもあります。◆受入テストベンダー(アプリ開発会社)が開発・テストを完了し、発注側が動作確認をするフェーズです。要件を満たしているか、業務が回るか、実際にアプリを動かしてテストを行います。しかし、往々にしてバグ(想定通りに動かない、いわゆる「不具合」)はあるものです。人間が作っているのでバグはどうしても発生するものですが、品質があまりにも低いと受入を許可できませんよね。このフェーズできっちり動作確認をし、バグを指摘しベンダーに修正してもらいましょう。◆ストア申請アプリの場合はAppleおよびGoogleへのストア申請が必要です。これにより、アプリがリリースでき、ユーザーはApp StoreやPlay Storeからアプリをインストールできるようになります。Apple/Googleストア申請は、多少難しさがあります。申請作業は発注側が自分で行うケースが多いですが、そのストア申請代行を料金次第でベンダー側が行ってくれるケースもあります。社内にエンジニア的なリソースが居ない場合は、代行を頼んだ方がいいでしょう。また、特にiOS(Apple)の場合ですが、リジェクトされる(Appleからダメって言われてストアに乗せられない)可能性があります。その場合、指摘内容によっては機能を追加しなければならなかったり、要件をかなり変更する必要も出てきます。ただ、ストア申請に通るかどうかについては、誰も「これだったら絶対大丈夫」とは言えない難しさがあります。Appleは規定を出しているものの、グレイなラインもあり、どこまでOKかは明確に言えない場合が多いです。ですので、ベンダー側に対し「Apple/Googleのストア申請にパスすること」にコミットさせるような契約を結ぶことはおそらく難しいでしょう。ただ、アプリ開発をするベンダーを選定する際に、「Appleの申請の経験が豊富な会社」を選択することは重要かも知れません。経験が豊富であれば、どんな時にリジェクトされる傾向があったか、を参考情報としておしえてくれる可能性が高くなるでしょう。そういう提案能力も、開発会社の選定の判断材料にしたいですね。▼各アプリ開発会社の見積もりがバラバラな理由:不確実性コーン数社のベンダーに見積もり依頼を行って相見積を取った場合に、それぞれの金額がバラバラ過ぎて困ったことは無いでしょうか?300万円で出してくるところも3000万円で出してくるところもあったり、「安いほうが良いけど、そんなに差があると心配・・・どう判断したら良いの??」と思うことはよくあると思います。この原因を説明するのに分かりやすいのが不確実性コーンという図です。図1 不確実性コーン(引用:プロジェクトマネージャーのための「プロセス設計術」https://xtech.nikkei.com/it/article/COLUMN/20131001/508039/)これは何を示してるかと言うと、見積もりのブレ幅です。横軸が時間、縦軸が見積もりがブレる可能性です。この図によると、例えば時間軸がまだ最初のころの「初期コンセプト」の時期では0.25倍〜4倍までのブレ幅があります。つまり、初期のコンセプトの段階ではまだ16倍の見積もり幅が出る可能性があります。例えば、「メルカリみたいなCtoCのアプリを作りたい。シンプルな感じでいいので」というレベルのオーダーしかない場合、まさにどこまで作り込むか全く決まっていないに等しいので、500万円で出してくるところもあれば8000万円で出してくるところもあるかも知れません。それでは比較のしようがありませんよね、、、ですので、それを防ぐためには、まず要望・要件をできるだけ具体的にすることが必要です。ただ、社内にエンジニアやIT経験の豊富な担当者が居ない場合、中々難しいでしょう。その場合は、要求整理や要件定義を一緒にやってくれるような、コンサルティングから行ってくれるパートナーと進めていくのが良いかも知れません。コストを抑えた最速アプリ開発に興味のある方はこちら▼アプリ開発会社の選び方さていよいよ選ぶポイントを話していきましょう。◆提案力の観点一番重要なポイントの一つです。プログラミングが得意だけど作るだけで提案はあまりしない会社と、アプリの機能やサービス立ち上げ方・進め方の提案やコンサルティングが得意な会社とでは、得意領域が全く違います。作るだけで提案はしない会社の方が、もちろんコストは安く済むでしょう。ですが、自分たちがやりたいことをエンジニアに上手く伝え、要件定義や設計を上手くまとめるスキルがない場合、意図したものが出来てこない可能性もあります。逆に提案力・コンサルティング力が高い会社ほど、やはり費用は高くなるでしょう。その代わり、発注側視点・サービス視点に立って考えてくれるので、自分たちのやりたいことの意図をくんでくれ、打ち合わせもスムーズに進むことが多いでしょう。ただ後者のコンサルティング力が高い場合の懸念点は、自分たちはコンサルティングだけして開発(プログラミング)は別の会社に丸投げしてるケースもあります。その場合、そのコンサルのマネジメント力次第では上手く行かないケースもあるかも知れません。といった具合に、自分たちのスキルと予算と照らし合わせ、どのようなタイプが良いか考える必要があります。◆スコープ(開発の委託範囲)の観点どこまでの範囲かで費用が変わってきますし、ベンダー側の得意領域も変わってきます。企画フェーズ、要件定義フェーズがまだまだ固まっていない状態では、そのへんのコンサルティングからやってくれる会社が良いでしょう。逆に要件定義、基本設計レベルは自社でほぼ固められていて、言われたとおりに作って欲しいのであれば、コストは安く提案力はそんなに高くないけれどプログラミングが得意な会社に発注するのが良いと思います。◆会社の規模の観点作るものの規模感によって、発注先の規模感も考えたほうがいいでしょう。フリーランス、中小のアプリ開発会社、大規模なアプリ開発会社など、規模感によってやはり金額や対応できる範囲も変わってきます。フリーランスの場合フリーランスの方でも優秀なエンジニアは沢山います。会社に依存せず独立してもやっていけるスキルが有るからフリーランスをやっている、という方も多いと思うので優秀な方に巡り会えるかも可能性も高いです。ですので、もし小規模なアプリでかつ予算が限られている場合、フリーランスの方に発注するほうが良いかも知れません。デメリットは、万が一作ったアプリに問題があった場合や、その方が倒れてしまった場合などが問題です。大企業であれば問題があった場合は会社として補償してくれると思いますが、フリーランスであれば問題・状況によってはそれが難しい可能性もあります。しかし、その分コストは安く済むことが多いです。そういったリスクと費用的メリットを考慮した上で発注を検討するのがいいでしょう。個人でアプリ開発をしたかったり、スタートアップで予算が少ない場合は、こういったフリーランスエンジニアに依頼し費用を抑えるのも一つの手かもしれません。小中規模のアプリ開発会社の場合上記フリーランスのケースよりはもちろん価格は上がります。ただ、個人より会社である分、当然ノウハウに幅があり、担当者だけの情報ではなく会社のノウハウをもって回答してくれるので対応も充実しているでしょう。アプリ開発に対する知見は十分にあり、開発慣れしているエンジニアが多いです。ただ、コンサルティング的な提案力まであるかは、会社や担当者によります。また、規模が大きくなると受けきれなく可能性もあります。そのへんも考慮して判断するのが良いでしょう。大規模のアプリ開発会社の場合価格はもちろん大きくなります。しかし、他との大きな違いはその信頼性です。大きい企業であれば倒産の心配も少ないので、初期開発が終わりリリースしたあとも、安心して保守運用も任せられますし、何かあったとき、例えば担当のプロジェクトマネージャが倒れるなどの問題があっても、層が厚いためなんとか補填してくれるでしょう。ただエンジニア一人ひとりの単価が高いので、上記メリットとトレードオフで価格がかなり上がってしまいます。自分たちのアプリが何を重要視するかを考えて、発注先の選定をしましょう。◆運用・保守の観点アプリは作ってリリースして終わりでは有りません。リリース後も「保守」として今のシステムを維持するためにある程度月額費用がかかります。また、売れるサービスであるほど、作ったアトも継続してブラッシュアップを繰り返します。つまり、二次開発、三次開発という風にリリース後も開発体制を維持して継続してアプリ改修することが多いです。そういう運用・保守も考慮して、アプリ開発ベンダーの選定を行う必要があります。保守費用はどのくらいか?継続して開発を依頼することが可能か?この辺を見極めましょう。◆デザインの観点見た目も重要です。やはり、優秀なデザイナーが居てデザインを作った場合と、そうでない場合とでは違いが出てきます。ただ、一口にデザイナーと言ってもピンきりでいろいろなタイプがいます。単純に指示通りにきれいな見た目を作るデザイナーもいますし、ターゲットを分析しペルソナを立て、そこに刺さるユーザー体験は何かを市場調査・競合調査も含めて行い提案したり、ブランド設計から携わってくれるデザイナーもいます。もちろん前者と後者ではコスト感が変わってきます。また、その開発会社の中にデザインチームをもっているのか、それともその開発会社はエンジニアしかいなくてデザインは外注しているのか、で違ってきます。後者の場合はやはり技術よりの提案になりがちですし、前者の場合だとUIデザイン・UXデザイン視点での提案が増えてくるでしょう。もちろん、その辺はコストや期間とのトレードオフなので、何を優先するかを整理して考えていく必要があります。◆PM(プロジェクトマネージャ)の観点ベンダー側の「プロジェクトマネージャ」とは、そのアプリ開発を取りまとめる責任者です。通常、プロジェクトマネージャ・PMが発注側とのコミュニケーションの窓口になります。ですので、この人がどんな人なのかは結構重要です。往々にしてあるのは、提案・営業時にはすごく仕事が出来そうな信頼できるプロジェクトマネージャが説明をしてくれ、安心して発注をしたところ、実際にプロジェクトが始まると違う人になり、ちょっと不安な人に変わっちゃった・・・なんてことはよくあります。どんな人がプロジェクトマネージャか、というのも一つの重要な観点かも知れません。オススメのアプリ開発の進め方アプリ開発、システム開発に正解はありません。ですが、ここまで書いてきたように難しい問題が多いアプリ開発。じゃあどうしたらいいの?と困るかたが多いと思います。正解はないですが、私の個人的な一つの結論は、「まずは小さく素早く始める」ということです。そのサービスが当たるかどうか、そのベンダーが優秀かどうか、その機能を実装する必要があるかどうか、誰も予想が出来ません。だったら、まずはリスクを抑えて「早く」「安く」始めるのが大事かと思っています。機能を必要な機能だけに絞り込み、コストを抑え、とにかく早くリリースする。以前からMVP開発と言われる手法ですね。しかし「MVP開発でやりたいです。」と言ってても実際は「全部乗せ」のアプリを求めてしまう発注者は多いです。むしろ機能は、まずは本当に必要なものだけに絞り、ノーコードのAdaloやBubbleなどを使い開発費用を抑え、最悪失敗してもその失敗したノウハウを活かしてすぐやり直せるような、そんなコスト感・スピード感で進めるのが良いと思ってます。コストを抑えた最速アプリ開発に興味のある方はこちら