オフショア開発とは
オフショア開発という言葉自体を、聞いたことがあるという人は多いのではないでしょうか。
海外へソフトウェア開発を外注することを、オフショア(=海外)開発といいます。
RubyとRuby on Railsをメインの開発言語としてシステム開発支援サービスを展開しているVarealは、ベトナムに開発拠点を持っています。
オフショア開発の委託先としてベトナムが向いていることについては以下の記事で詳しく解説しています。
関連記事:日本の深刻なエンジニア不足とその対策:海外人材の活用について
今回は、ベトナムのオフショア開発でプロジェクトを成功させるためのポイントについて、
実際にベトナムで案件を受託して成功に導いた経験をもつ開発会社の視点から解説していきます。
ニアショア開発とは ▼
日本国内の地方に開発拠点を置いたり、地方の企業へ委託したりする方法です。
オフショア開発よりも、「優秀な人材を見つけづらい」「削減できるコストは少ない」というデメリットがあります。
一方で、日本人スタッフを登用でき、コミュニケーション面で難易度が低くなるというメリットがあります。
オフショア開発が必要とされている背景・目的
国内エンジニアではなく、海外エンジニアに依頼するオフショア開発が必要とされている背景には、国内のエンジニアコストの高騰やリソース不足などがあります。
ここでは、オフショア開発白書(2022)を参考に、オフショア開発が必要とされている背景・目的を詳しく解説します。
開発コストを削減できる
オフショア開発を活用すれば、開発コストを削減できます。システム開発にかかるコストの大半は人件費です。そのため、エンジニアの人件費をいかに下げられるかが、コストダウンの鍵を握ります。国内のエンジニアは人材不足という背景もあり、人件費が高くなりがちです。オフショア開発で人件費の安い海外エンジニアを使えば、それだけ全体の開発コストを下げられます。
オフショア開発白書によると、国内開発と比較したコストダウンの比率は28.4%でした。
つまり、オフショア開発は、国内で開発するよりも平均して約3割のコストダウンが見込めるといえます。また、大規模プロジェクトであるほどエンジニアの単価を下げられ、オフショア開発の恩恵を受けられるでしょう。
優秀な人材を確保できる
東南アジアには、国を挙げてIT産業の発展に力を入れている国々があります。そこでは、人材を育成するためのさまざまな施策が行われており、若くて優秀なエンジニアが生まれる土壌ができているといえます。
オフショア開発の依頼先として、ベトナムは人気が高い国です。単価が比較的安く、国家としてIT人材の育成に力を入れているため、選択肢が豊富です。また、日本向けのオフショア開発が盛んなことも特徴です。
ベトナムに相談が集中する理由は、選択肢の多さにあります。現在は日本企業のニーズに合わせてベトナムのオフショア開発企業が増えてきている状況です。そこで、それぞれの企業が自社を差別化するために、多様なニーズに応えられるようになっています。そのため、豊富な選択肢から、ニーズに合ったオフショア先を見つけられることでしょう。
(現状)オフショア開発のノウハウが成熟している企業を選ぶ流れに
オフショア開発は、ノウハウが成熟している企業を選ぶ流れが主流です。オフショア開発の活用が進む昨今、オフショア開発を行う企業の技術力は日々向上しています。これは、インターネットの発達により、世界のどの場所にいても必要な情報を入手できることが一因です。国内外にかかわらず、エンジニア間の情報格差が起こりにくい状況といえます。
またもう一つの理由として、オフショア開発の需要が高まり試行回数が増えて、ノウハウが蓄積されることも挙げられます。
オフショア開発は難しい?
オフショア開発について調べていると、よく目にするものが、「コミュニケーションが難しい」という声です。
仮に日本人だけで開発したとしても、以下のようにうまくいかないことがあります。
- 開発に関してそもそも前提の考え方が間違っている
- 発注者と開発会社でコミュニケーションがしっかりと取れていない
- 優先順位をあいまいにしたまま開発を進める
たしかに、オフショア開発の場合、言語の壁や国民性の違いはあります。しかし、オフショア開発はコミュニケーションの仕方を含めたいくつかのポイントを押さえてしまえば、リスクなく品質の良いシステムを手に入れられる可能性は高まるでしょう。
オフショア開発のメリット
メリットとしては大きく3つが挙げられます。
1) 大規模プロジェクト、長期のラボ型プロジェクトにおいて必要な数の開発者を確保しやすい。
2) 英語ベースでやり取りができる。
3) 開発はエンジニア、テストはQAで役割分担するため、高品質を担保できる。
それぞれで詳しく見ていきましょう。
1) 大規模プロジェクト、長期のラボ型プロジェクトにおいて必要な数の開発者を確保しやすい
人口が減少し高齢化している日本では、若くて優秀なエンジニアは非常に確保しにくい状況です。それに比べて、若年層の人口が増加しているベトナムでは、エンジニアをたくさん確保しやすいのです。そのため、大規模開発でエンジニアが多数必要な場合にメリットを発揮します。
ラボ型開発では「優秀な人材をどれだけ集められるか」が重要な鍵を握ります。優秀なエンジニアを集めやすいベトナムオフショア開発は、大規模プロジェクトや、長期のラボ型プロジェクトに最適な選択肢といえるでしょう。
ラボ型開発(ラボ契約やODC(オフショア開発センター)とは) ▼
成果物ごとに契約する「請負契約」とは異なり、「準委任契約」という社外の開発人材を自社専用に一定期間確保する契約形態です。海外に自社専用の開発チームを持つイメージです。
ラボ型開発は、定期的な案件が複数発生するプロジェクトや、スピード重視で仕様が固まっていない案件に向いています。逆に、一定量の仕事がない小規模なプロジェクトでは、開発人材が手空きとなるため不向きといえます。
2) 英語ベースでやり取りができる
発注者側に英語ができる人がいれば、ベトナム語ではなく英語でのやり取りが可能です。ベトナムでエンジニアになる人の多くは大学で英語も学んでいます。日本語でのコミュニケーションだと、「言わなくても分かるでしょ」「空気を読んでよ」といった具合にあえて言葉にしないことがありますが、英語にはそのような曖昧さがありません。さらに、開発言語は世界共通なので、英語ができればプロジェクトにおいて認識齟齬が起きにくくなります。
また、英語の堪能な人が自社にいないからといって、オフショア開発ができないわけではありません。前述したブリッジSEを間に入れることで、オフショア開発のメリットを受けつつ、デメリットを回避することが可能です。
3) 開発はエンジニア、テストはQAで役割分担するため、高品質を担保できる
システム開発を行う際には、作ったシステムが要件通りに動作するかを確認するため必ずテストを行います。ベトナムの場合であれば、開発者は開発だけを、QAはテストだけを集中しておこなうため、効率よく開発とテストができて品質のよい成果物になる可能性が高まるでしょう。
オフショア開発のデメリット(注意点)
オフショア開発の魅力は、コストを抑えた大規模開発を可能にするところです。
ただし、そのメリットを享受するには押さえるべきポイントがあります。
1) コミュニケーションが難しい
過去にオフショア開発をやってみてうまくいかなかったという人は、「コミュニケーションの問題」が大きいといえるでしょう。
確かに、ベトナム人開発者とは直接日本語でのやり取りができない場合が多いため、「日本語での意思疎通は完全には難しい」と感じるケースは多いかもしれません。また、コミュニケーションの問題が生じることで、以下の問題につながります。
コミュニケーションが難しい。
→そのため、細かい部分で意図が通じない場合がある。
→その結果、発注者が想定していたものと違うものができあがる場合がある。
→スタンスの違いで、進捗状況が実際とはかけ離れてしまう場合がある。
コミュニケーションの対策をして問題解決ができれば、オフショア開発は難しくありません。
詳しい対策は後述します。
2) 小規模なプロジェクトではコストの削減が難しい
メリットでもお伝えしたように、オフショア開発は大規模プロジェクトに向いた開発形態です。その反面、小規模なプロジェクトでは思ったようなコスト削減につながらない可能性があります。
なぜなら、小規模なプロジェクトでは安い人材を多く投入できるオフショア開発の強みが発揮できないためです。
海外チームと直接やり取りをしない場合、間にブリッジSEを置くことになります。以下のとおり、1人あたりに換算したときのコストは、小規模チームの方が高くなります。
- 10人の大規模チームにブリッジSEを置く場合
- 3人の小規模チームにブリッジSEを置く場合
以上の理由から、小規模プロジェクトでのコスト削減は難しい可能性があるといえます。
ベトナムでオフショア開発を成功させるために押さえるべきポイント5つ
それでは、実際にオフショア開発を検討し始めたときに、押さえておくべきポイントについて5つご紹介します。
これを念頭に置いてオフショア開発を進めていくことにより、プロジェクトで躓くことが少なくなり、より理想に近いプロダクトを作れるでしょう。
1) 目標やゴールだけでなく背景をできるだけ明確に共有しておく
以下の2点を意識して、開発に至った背景まで明確に共有すると認識齟齬が少なくなります。
- 業界では当たり前のことを明確に言語化し伝える。
- 口頭ではなくテキストや図で伝える。
発注側では常識のことであっても、開発側にとっては常識でないことのほうが多くあります。そこで、業界では当たり前のことをあえて明確に言語化して開発側に伝えることが重要です。
たとえば、赤字伝票という存在やその目的は、経理や小売では当たり前のものですが、開発者の多くはその概念を知らないことが多く、処理のプロセスもわかりません。
一例として、「なぜその伝票が必要なのか」という背景をエンジニアが理解せずに開発したとしましょう。その際、仕様書に必要な情報が記載されていないと、エンジニアは常識とは異なる処理を内部に組み込む可能性があります。
また、口頭で伝えるよりもテキストや図で伝えたほうが伝わりやすいでしょう。口頭で伝える相手はプロジェクトリーダーやブリッジSE、ITコミュニケーターになりますが、実際に、開発・テストなどで手を動かす担当者は、口頭で話を聞いていない開発者やQAです。
ブリッジSEとは ▼
オフショア開発でデメリットとされている「海外事業所との連携不足」をフォローする役職です。具体的には、海外の事業所と国内の事業所との橋渡しとなり、プロジェクトの推進・管理を担います。そのためブリッジSEは、言語理解はもちろん日本と海外の言語や文化、商習慣の違いを熟知し、その溝を埋める役割を果たします。
▽具体的なブリッジSEの業務内容
• 要件定義書を元に、発注企業の意向を海外のエンジニアに指示
• 国の違いによる認識のずれを正す
• 発注者の希望通りの成果物を完成させるために、間に入って内容を確認
• スケジュールに対する考え方のずれを踏まえて、遅滞なくプロジェクトを推進(途中経過のチェックや納品日の確認)
QA(Quality Assurance)とは ▼
システム開発においては、開発したシステムが必要とされる品質を満たしているのかを確認・証明する役職です。なお、オフショア開発においては、国の違いによる認識のずれが起きていないかをチェックする役割も担っています。
▽具体的なQAの業務内容
• 「要件定義書通りの仕様か」「ユーザーにとって使いにくい操作はないか」などをテストを通じてチェック
• チェックに問題があれば、開発者にフィードバックして修正を指示
• 海外特有の問題点を洗い出しておき、品質に問題が発生しないように管理
- 製品
- プロジェクトの目標
- ゴール
- 背景
開発者やQAにも分かるように、上記の情報をテキストや図で記載しておきましょう。そうすれば、要件や仕様書には記述されていない部分に関しても方向性のずれが少なくなり、細かな軌道修正にかかる時間を減らせます。システム開発を外部委託する際は、初期段階の相互理解・要件定義が非常に重要です。
プロジェクトがスタートして最初のうちは時間がかかっても、業務経験のない新入社員に教えるつもりで丁寧に伝えるように心がけましょう。そうすれば、発注側は時間・金額のコストをトータルで下げられます。
2) 密なコミュニケーションをとる
密なコミュニケーションは、開発を外部へ依頼する際に心得ておきたいことです。発注側が不明点をそのままにしていると、開発側から意図と異なる仕様で提出されてきた際、進捗の遅れにつながりかねません。
また、レスポンスが遅いと開発スピードも遅くなり、全体のパフォーマンスが落ちる傾向にあります。
• テキストチャットやオンラインで共有できるQ&Aリストを導入する
• プロジェクトチームで朝礼を開く
• 毎日2回、Q&Aの返答時間を設ける など
以上のようなルールを決めて運用することがおすすめです。
そうすればエンジニア側もそれを見越して複数のタスクを準備し、回答を待っている間に他のタスクを進めるなど、無駄なく業務を進められます。開発を進めていくうちに、意思疎通のレベル感やタスク完了の見通し精度など、開発側の特性が見えてきます。発注側が開発側へうまく適応すれば、作業がスムーズになりプロジェクトの効率を高められるでしょう。
ほかにも、進捗や課題を確認するための定期的なミーティングが必須です。ミーティングでは「スケジュールの遅延や困っていることはないか」「仕様にずれはないか」などを確認しましょう。たとえば、できるだけ途中段階のデモを確認し、注意深く機能やUIを見るようにしましょう。
また、少なくとも週1回はミーティングを行うことがおすすめです。万が一想定と違うものが開発されていた場合、ミーティングの期間が空いた分だけ時間を無駄にしてしまうことになりかねません。
ミーティングを定期的に開くことで、以下のようなメリットがあります。
・開発側から質問をする時間を与えられる
・テキストチャットや報告書には出てこない、細かい仕様のすり合わせができる
3) スケジュールと納期にバッファを積んでおく
開発プロジェクトは規模が小さなものでない限り、どうしても遅延しやすいです。規模が大きくなるほど、想定していた工数と、実際の工数にずれが生じやすくなります。
発注側が最初から完璧な仕様書を準備していることは少なく、開発側が想定していなかった機能や要件を後から追加されることもよく起こります。また、お互い十分に理解したつもりでも、仕様や要件の解釈が異なることもあります。別の会社同士でひとつのプロジェクトを進めていくため、認識の齟齬が出ることは当たり前です。
そのような前提を頭に入れた上で、発注側の担当者はスケジュールと納期には必ずバッファを積んでおき、そういった事態に備えるようにするとよいでしょう。想定よりも早く開発が終わる分には支障が出ることがありませんが、余裕のないスケジュールを組んでしまうと、ほとんどの場合遅延が起こります。
4) 早めに、念入りに受け入れテストを行う
大規模なプロジェクトでない限り、受け入れテストを発注側が念入りに行うことはほとんどありません。しかし、オフショア開発では必ず念入りに受け入れテストを行うことをおすすめします。
なぜなら、仕様書通りにはできているものの、発注側の想定と異なることが頻繁に発生するためです。
また、開発側は、受け入れテスト期間の早い段階から修正を行うように依頼しましょう。
たとえば、発注側の担当者が忙しくてなかなかテスト環境でのチェックができない状況が起こったとします。その際、もしも受け入れ期間の後半に修正したい箇所が見つかったとしても、受入テスト期間中での修正が間に合わない場合があるためです。
そのような場合は、致命的なものを除いて優先順位を落とし、一旦リリースしてから落ち着いたタイミングで修正するといった対応を取ります。そういった事態を避けるために、早い段階で受け入れテストを念入りに行い、開発側へフィードバックを返すようにするように設計しておくとよいでしょう。
5) 可能であれば英語で直接やりとりをする
発注側が日本語しか話せない場合、翻訳・通訳を行うブリッジSEもしくはITコミュニケーターを入れたチームを構成する必要があります。
Varealでは、そのようなケースでは日本人SEを入れた体制をご提案していますが、その分、全体的にコストは上がってしまいます。
オフショア開発が初めてで、なおかつ英語でのやり取りが難しい場合は、
• 日本人:SE
• ベトナム人:エンジニア・QA
といった体制で、日本人を窓口にして言語理解の点で安心して開発を進めていただくことも可能です。
一方で、英語ができる人が発注側にいる場合は、英語ベースでベトナム人SEやエンジニアとやりとりを直接するとよいでしょう。オフショア開発のメリットでも触れたとおり、英語には日本語のような曖昧さがないため、コミュニケーションロスの発生を減らせます。
また、英語ならばエンジニアとQAのみのチーム構成で済み、投入工数を削減できる可能性が高くなります。可能であれば英語でベトナム人のSE・エンジニア・QAと直接やりとりすることをおすすめします。
【弊社事例】オフショア開発の事例をご紹介
弊社開発実績より、オフショア開発の事例をご紹介します。
学研ホールディングス様|幼児・小学生向けのイベントサイトをオフショア開発
株式会社学研ホールディングス様の企画による、幼児・小学生向けのイベントサイトをオフショア開発でお手伝いいたしました。
開発チーム構成は、日本側が窓口となりベトナムチームをサポートする形で行っています。2020年11月から開発が始まり、12/19から始まるイベントに間に合わせるべくスピード感をもって開発にあたりました。
イベントサイトには、毎日のクエストやスタンプを押す機能、オンラインイベントへの参加申し込み機能などが盛り込まれています。ワクワクするようなデザインを採用し、子どもの興味を引くサイトに仕上げました。納品後のアンケートでは、総合評価で「想像以上にすばらしいサイトになった」と嬉しいお言葉をいただいております。
さらに詳しい内容はこちら ▼
ドワンゴ様|オンライン予備校サービスのシステムエンジニアリング部門をオフショア開発
株式会社ドワンゴ様による、オンライン予備校サービス「N予備校」の開発に参画しました。
ドワンゴ様にて企画・設計・実装までを行うなかで、Varealのオフショア開発チームをエンジニアリソースとしてご提供しています。
バックエンドには
• 日本:プロジェクトマネージャー1名・エンジニア1名
• ベトナム:ブリッジSE1名
• ベトナム:エンジニア・QAを各1名
の計5名を配置しました。そして、フロントエンドのベトナム人エンジニアを1名加えた、計6名体制のチームでご支援いたしました。
Ruby on Railsのバックエンド構築にあたっては、機能作成やパフォーマンス調査の向上提案などを行いました。
N予備校は、生授業配信や教材の配信、質問掲示板がひとつになったeラーニングサービスです。
学習効果を高めるさまざまな工夫を盛り込むにあたり、Varealのオフショア開発チームにてサポートいたしました。
さらに詳しい内容はこちら▼
まとめ
以上、オフショア開発を失敗させないためのポイントについて解説しました。
ここにあげた5つのポイントを押さえておけば、より効果的にオフショア開発会社を使って、作りたい理想のシステム開発を実現できるのではないでしょうか。
これからオフショア開発を検討している人はぜひ参考にしてみて下さい。
ラボ型のオフショア開発なら、ぜひVAREALにお問い合わせください。
Varealのオフショア開発サービス内容はこちら
オフショア開発
Varealのオフショア開発サービスの実績はこちら
WORKS オフショア開発サービス