オフショア開発になくてはならないモノ

# はじめに
私は株式会社テンダのジーワナと申します。22年以上にわたるオフショアソフトウェア開発経験の中から最も重要なポイントについてお話しをさせていただきます。
まず私の背景から始めさせていただきたいと思います。私はスリランカ（南インド洋にある島国、昔紅茶の国セイロンとも言いました）出身で、新卒として現地の日系IT法人（売上の9割以上日本からのオフショア開発）に入社し、日本で8年間とその後スリランカ現地で14年間仕事しました。、最初の日本での8年間はプログラマー～PM、現地での14年間はPM～現地責任者‐取締役までの立場を経験することができました。 
# １．オフショアソフトウェア開発とは
オフショアソフトウェア開発とは、パソコンやモバイル端末用のソフトウェアアプリやウェブシステムなどのインフラ構築、ソフトウェア開発や運用保守など業務を海外のIT企業、子会社、現地法人などに委託するソフトウェア開発手法のことです。
業務やオフショアソフトウェア開発先によってはオフショアする業務工程が異なってきますが要件定義や設計などが現地日本で行い実装とテストは海外にオフショアするケースが多いと思われます。
# ２．なぜオフショアソフトウェア開発が必要なのか？
世界中に、はやっているグローバル化や最近のAIブームにより日本では2030年までにITエンジニア40万人が必要とのことが現状です。
ニ、三年前まではオフショアソフトウェア開発のメリットとしてはコスト削減がトップでしたが今になっては日本のIT人材不足により優秀なIT人材保有が第1のメリットとなっております。
それと共に以下がオフショアソフトウェア開発の主なメリットとして挙げられます。
　　１．優秀なIT人材を保有：基本オフショアソフトウェア開発先となる国はアジア、アフリカ系の発展途上国であり教育熱心の社会でもあります。そして大学教育や政府の支援もIT産業に注目されており毎年多数の優秀なIT人材が卒業しますので現地でのIT人材保有が簡単です。
　　２．コスト削減：上記に記載した通りオフショアソフトウェア開発先の国の物価が日本と比較すればまだまだ安いので人経費も日本と比較すると半分以下です。
　　３．開発期間の短縮：オフショアソフトウェア開発ならではの開発期間短縮選択肢が二つあります。
　　　　　・リソース増加による開発期間の短縮：単純ではありますが、ある一定工数を賄うため利用するリソースの数を増やすことです。
　　　　　・稼働時間の延長：オフショア先との時差を上手く利用することにより日本に対しての一日当たりの稼働時間を延長。例えば日本で定時までにできた実装のテストを、時差で約半日遅れているインド又はスリランカ側のオフショア先に出せばその日の稼働時間は約16時間以上になります。
     
![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3725055/c056cb40-5c6e-2eb8-e77f-958d9a28bece.png) 
### オフショア開発の委託先として人気の国ランキング

# ３．日本でオフショアソフトウェア開発が失敗する一番の理由
日本でオフショアソフトウェア開発を行っている企業の中で、成功している企業も数多くありますが失敗する企業もそれなりにあります。
そこで失敗する原因を分析するためには現状どのような体制でオフショアソフトウェア開発を行っているのかを見てみましょう。

![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3725055/3c4bce3a-d99e-bd0f-6f80-ea2b4164c0f5.png)

オフショアソフトウェア開発事例の中で最も重要な部分はチーム間の正しいコミュニケーションになります。
コミュニケーション関係課題は大きく2つに分けられます、
　　1. 話す言語が違うので言いたいことが正しく伝わらない：オフショア先側で日本語が分かる読み書きと話すことができるブリッジSEを使うことで本課題はほぼ解決できています。
　　2. ブリッジSEの日本語レベルが最高であっても国間の文化・風習、国民性、商習慣、や社会的な違いから生まれるお互い理解関係のギャップを埋めることができず失敗することは現状オフショア開発が失敗する一番の理由となります。
例えば：日本では当たり前のことでもオフショア先の国によってはそうでない場合があります。
　　→休日が多く残業もせずに定時に退勤するのが普通
　　→納期についての考え方が緩い．．少し遅れても仕方がないよねってこと

  # ４．オフショア開発を成功させるため必要となる開発体制
現状の図１の開発体制ですとブリッジSEが言語の壁を乗り越えても国間の文化や社会的な壁を一人で乗り越えるのは無理があります。その課題を解決するには以下のような開発体制を作る必要があることは現状の成功事例を分析すればよく分かります。

![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3725055/cd23378f-f7d1-d01e-501a-fb7fdaa4b24a.png)

ここでは核となる日本現地のブリッジSEの役割と責任が重要で、以下の通りとなります
　　・日本側から伝えたことを100%正しく、十分にオフショア先のブリッジSEに伝わっているかどうかを日々チェックする。
　　・スケジュールに関しても十分バッファーをもってきちんと意識合わせを行う。
　　・納品物の品質に関しては定期的に確認＆指摘し品質レベルを改選する。
　　・オフショア先のチームから必要なアウトプットを得られるためには継続的な人材育成活動も重要である。
最終的には本体制を成功させる責任は日本現地のブリッジSEであり、その次はオフショア先のブリッジSEになります。
こういったことを加味することで日本現地のPMはリソースの問題も解決しやすくなり、コスト的にも日本より安く、日本との同等な品質レベルの納品物がスケジュール通りに納品することも可能となります。

# ５．成功事例
日本からオフショア開発先としてスリランカにあるIT企業にウェブ開発をオフショアし成功した事例を簡単に説明いたします。
　　・業務内容は既存ウェブアプリへ機能追加と機能変更
　　・日本側で設計を行い実装、単体テスト、モジュールレベルテストオフショア先側
　　・チーム体制→日本側チーム＋ブリッジSE（日本語）、スリランカ側ブリッジSE（日本語＆英語）＋チームリーダーと開発者5名、契約形態は月単価のラボ契約
　　・Redmineにてタスク管理、Teamsにてチャットと通話で作業期間中常に接続＆コミュニケーション
　　・毎朝朝会実施、メンバーは両側のブリッジSE＋スリランカ側のチームメンバ全員、内容は進捗確認と当日の作業内容確認、期間最大30分、その後各自のタスに関して課題点確認＆解決
　　・そこで日本側のブリッジSEが自分に必要なアウトプットが取れるまでPDCA回しながら改善を図る
　　・最終的に必要なレベルを達成したら日本側のチームへ納品
各タスクに対して上記の処理を実施することで日本側の開発チームにはオフショアしていることを意識せずに作業進めることはできた。本プロジェクトは1年以上継続した一つの成功事例となりました。

# ６．まとめ
結論としてはオフショアソフトウェア開発を成功させるにはなくてはならないのは、
　　・日本現地側での優秀なブリッジSEとオフショア先側での優秀なブリッジSEの組み合わせ、
　　・その2名が中心となってお互いコミュニケーションギャップをなくすために行う活動となります。
ですので、これから日本のIT企業は上記のような能力を持った優秀なブリッジSEを育てるために力を入れながらオフショア規模も増やしていけばIT人材不足も解決されIT業界の拡大と成長を迎えることができると思っております。