オフショア開発

2019.09.24

オフショア開発

コストは安いが品質は…?オフショア開発でソースコードの品質の改善方法は?

このブログに来ている人はすでにご存知だと思いますが、オフショア開発とは、日本以外の海外企業に開発や運用・保守を外注することを言います。2000年ごろから活発になったオフィショア開発ですが、元々はインド、中国などが主なオフショア先でした。
ただ、両国とも人件費が上がってきたこともあり、オフショア先は多方面に広がることとなりました。
そのオフショア先の1つがベトナムです。
ベトナムは国民性が日本と近く、真面目で勤勉、時差も2時間、何よりコストが安いことがメリットとして挙げられます。

しかし、オフショア開発には良いことばかりではありません。
オフショア開発で成功したという企業を探すのは意外に難しく、まだまだ大きな壁があるのが実情です。
ただ、もちろん十分に実情を知って対策をとっていくことで、コストを節約しながら開発ができます。うまくいけばビジネスにとって莫大な利益をもたらすことは間違いありません。

今回は、これからオフショア開発を導入したい人に向けて、オフショア開発で失敗しやすい原因とは何か、どうすればうまくいくのかを解説していきます。

1. コミュニケーションがうまくいかない

オフショア開発の問題点として真っ先に挙げられるのが、コミュニケーションがうまくいかず、イライラしてしまう、うまく伝わらず開発が滞る、という点です。
これは言語の面と、開発の進め方の癖から来ている問題だと言えるでしょう。

1-1. 言語の問題

日本人もベトナム人も母国語が英語ではないので、コミュニケーションをとるときは間に通訳を挟むか、どちらかが片方の母国語に合わせるか、第3言語である英語などでコミュニケーションをとるかのどれかになります。

ベトナムでは通訳を「ITコミュニケーター」と呼ぶことがあります。通訳を挟む場合、このコミュニケーターの実力によってかなり差が出てしまうというのが正直なところです。
ITバックグラウンドがない通訳の場合は間違って伝わってしまうこともしばしば…。また、全ての意思疎通を通訳に通すことはその通訳に全面的に依存してしまうことになり、リスクが高いと感じます。全てその通訳を通して伝わるので、間違っていた時に修正するのが大変です。

逆に、通訳者にITのバックグラウンドがあればかなりスムーズに、ストレスなく開発を進められるでしょう。お互いに言語面で不便を感じずに済めばそれが最も効率的だと思います。ブリッジSEなど、すでに開発の経験があり、かつ通訳ができる人が一人入るとかなりスムーズにやり時を行うことができます。
この場合、なるべくやり取りはテキストで残してもらい、齟齬がないかチェックできる体制を作っておくと良いでしょう。

簡単な英語の会話ができる場合は、お互い英語で話すのもおすすめです。チャットでやり取りできるのであれば、随時コミュニケーションが取れるチャンネルを作っておいて、英語でやり取りすると認識齟齬をすぐ修正できます。

1-2. 開発の進め方の癖

日本とベトナムで開発の進め方の違いが顕著に出るのは、「顧客が実現したいことを話した時に、どのような考え方をするか」ということです。

例えば、日本人エンジニアと話しているときは、顧客が実現したいことを言った時にエンジニアやPMは「その機能の目的は?その機能でどんな問題を解決したいのか?どのような人がどのように使用することを想定しているか?」など、上段の目的などから細かい実装方法へ降りていくような話をすることが多いです。
これは、開発の方法が「顧客の目的に沿った機能を提供する為に、顧客が言ったよりもより良い方法があれば提案するのが良い」という考えから来ているように思います。

ベトナムの場合、顧客が「こういうのが欲しいんだよね」と話した時に、「どこにボタンつけますか?」「URLどうしますか?」などの最初から細かいことを話す人が多いように思います。これは、ベトナムの開発はオフショア先であることが多く、発注先の作った仕様書通り言われたことを言われたままにやることが「開発」だと思っているからだと感じます。(もちろん個人差があり、ベトナム人でも元々日本でよしとされているような開発の進め方の経験がある人は、目的から深掘りしていってくれます)

この問題に関しては、日本側が発注前に「どの程度期待しているか」を明確にすることが大切です。日本側でかなり細かく仕様に落として、タスクベースにして渡せるのであればそれほど気にすることはないですが、一緒に話しながら仕様を決めていきたいという場合は事前に期待値を伝えて、それができるエンジニアやPMをアサインしてもらうのが良いでしょう。

2. 品質が低い

オフショア開発に関して、「ある程度まではいいんだけど、痒いところに手が届かない」という感想をよく聞きます。機能はできているんだけど、デザインがちょっと崩れている、正常系以外のエラー処理ができていない…などです。

正直、やはり日本に比べるとおおらかな人が多いので細かいところまでは気が付かない人が多いです。また、日本だと気を利かせて「仕様書にないけど必要なので、ここはこうしておきますね」とやってくれるようなある種サービス精神がある人が多いですが、ベトナムでは「仕様書にないし、言われていないのでやらない」という人も多いです。
この問題点に関しては、やはり細かいことに気がつける人をPMかテスターとして入れておくのが良いと感じます。品質に厳しいPMに入ってもらって任せるか、もしくは発注側でかなり細かくチェックリストなどを作ってやってもらうかです。

また、前章でも書いたように、大前提として「何を期待しているか」という期待値のすり合わせがかなり重要になってきます。言われたことだけやればいい、というスタンスで開発をするのと、顧客の本当に達成したいことを理解して開発するのとでは雲泥の差が出ます。
できれば、顧客と開発者という関係ではなく、フラットなチームとして開発チームを構成して開発に熱中してもらえるような環境を作るようにしましょう。
また、長く開発を一緒にやると、お互いの品質ギャップがすりあってくるので、できれば同じチームで長くやるのが良いでしょう。

3. 手戻りが多い

コミュニケーションがうまく取れず、品質の期待値も伝えていなかったためによく起こるのが「手戻り」。実際に出来上がったものが、期待していたものと全然違う…という出来事です。作り直しになると納期も伸びますし、できれば避けたいところ。
大抵は「なんとなくこんな感じで作って」とぼんやり伝えて、途中の進捗の確認もせず(「まあうまくやってくれているだろう」と思い込み…)、コミュニケーションを頻繁に取らなかった場合に発生します。

対策法としては、あまり仕様がガッチリ決まっていないのであればアジャイル方式を採用し、毎日5分程度のキャッチアップMTGを行い、週1ぐらいでデモMTGを行うことをおすすめします。早い段階でミスやエンジニアが詰まっている部分に気づくためです。
毎日、毎週時間をとるのは大変なように思いますが、頻繁にコミュニケーションをとる時間を設けることで、エンジニア側でも何か疑問が出た時や問題があった時にすぐに質問・報告することができるので、長期的に見て時間をセーブすることができます。

4. まとめ

オフショア開発においては、信頼構築と密なコミュニケーションが成功の鍵です。どのくらいのものを期待しているか、このプロダクトで何を成し遂げたいか、チームとして一緒に良いものを作る、という共通認識を持つことで、成功率がグンと上がります。
また、自社の体制に合わせて適切にオフショア先とチームを構成するのも非常に大事です。自社にエンジニアリングについてマネジメントできる人がいないのであれば、オフショア先である程度実力のある人をつけておくのが良いでしょう。コストがかかるから…とチーム作りをおろそかにすると、品質が低いものができてやり直し、ということが起こり得ます。
適切なチームとコミュニケーションさえ出来れば、開発はうまくいきますよ。

5. ベトナムでオフショア開発をするならバイタリフィへ

バイタリフィバイタリフィアアジアでは、ホーチミンで2008年から10年超のオフショア開発経験と実績を活かし、優秀なベトナム人エンジニアを活用したソフトウェア開発・サービス開発/保守運営が可能です。

また、当社は、ベトナムに子会社(バイタリフィアジア・スクーティー)を設立しています。
バイタリフィアジア・スクーティーでは、当社で受けた案件の開発部分をベトナム拠点に依頼するようなオフショア開発ではなく、お客様がベトナム拠点と直接関わり、案件進行して頂く事によりコストを抑えたリソース提供を可能にしています。
お客様の専属エンジニアをベトナムにもって頂くようなイメージでの開発が可能となっていますので、「どのようなチームで、どんな風に開発を進めれば良いのかわからない...」と迷っている場合にも一度お気軽にご相談ください。
当社で受託するのがよいのか、バイタリフィアジアへお繋ぎするのがよいのか、お客様にとって適切な開発体制をご提案しています。

ベトナムオフショアならバイタリフィへ