まず、一番重要なのはオフショア開発会社の選定です。
大前提として、オフショア開発会社自体がしっかり開発を行える会社でなければ、いくら委託側が頑張ったところで限界があります。
ベトナム・ホーチミンでのケースを含めながら、パートナー選定におけるポイントをご紹介します。
すでに信頼できるパートナーが存在する場合は、読み飛ばしていただければ幸いです。
まず、一番重要なのはオフショア開発会社の選定です。
大前提として、オフショア開発会社自体がしっかり開発を行える会社でなければ、いくら委託側が頑張ったところで限界があります。
ベトナム・ホーチミンでのケースを含めながら、パートナー選定におけるポイントをご紹介します。
すでに信頼できるパートナーが存在する場合は、読み飛ばしていただければ幸いです。
会社環境は非常に重要となります。
会社環境は社員の定着率と相関関係があり、社員の定着率が悪い場合は頻繁なスタッフの変更が発生し、習熟度が上がり、技術が向上してきたタイミングでスタッフがいなくなってしまうという負のスパイラルに陥ります。
ベトナムは転職に対して、日本より身軽ですので、より社員の満足度を追求することがオフショア開発会社として求められています。
その他、ベトナム・ホーチミンにおけるパートナー選定のチェックポイントをいくつかご紹介します。ベトナム・ホーチミンに限らず他国でもあてはまる内容も多く含まれております。
品質に対するオフショア開発会社の取り組みは成果に直結します。品質の違いはどこで発生するのか、チェックポイントとして紹介します。
パートナーの選定も終わり、実際に開発開始してみたが、上手くいかないケースもあると思います。現状、ベトナムのコストアップが進み、安価な開発だけでなく、リソースの確保目的が進んできています。外部リソースとして効率良く活用できれば、繁忙期の強力な助っ人になりますが、失敗すると悩みの種になってしまいます。以下、パートナーにも依存しますが、一般的に失敗を未然に防ぐことができるポイントを紹介します。あくまでも委託側者側からできる施策のみに絞っていますので、それぐらいオフショア開発会社側が管理すべきではと思われる内容も一部含まれていますが、ご了承ください。
※弊社では、以下問題を重々承知の上で、問題が発生しないようにオフショア開発会社側からご依頼させていただくことで、円滑に活用していただけるように努力しております。
特に継続的に開発があるシステムにおいて、事前に説明会などを実施し、情報を共有しておくと、多くのメリットがあります。以下はその際に共有しておくべきポイントを紹介します。
1. 開発計画を明確する
システムを予定通りに完成させるためには、開発計画(マイルストーンを含む)を明確する必要があります。また、開発が予定通りに進んでいるかを把握するために進捗確認のフォーマットも事前に決定しておくとベターです。
2. 作業範囲の明確化
企業によって、各作業工程の作業内容、成果物などが異なります。プロジェクト開始時に作業工程別の作業内容を明確にすれば、作業工程のずれを未然に防ぐことができます。
3. 用語辞書の共有・命名規約の明確化と共有
開発で使用する各種名称の命名規則を標準化し、要求分析/システム分析工程の成果物の仕様理解と、 以降の工程の成果物の効率的な作成が目的となります。 これは、オフショア開発会社側にとって不慣れな言語で記述された設計書の読解と、以降の設計書の作成時に有用です。さらに、オフショア開発会社側に対して、命名規約・用語を明確にしておくことで、下記をねらいます。
・委託側から受け渡した設計書の理解度向上
・オフショア開発会社側での仕様書作成の品質向上
・受け入れ時のチェックに利用 委託側にとっても、日本語の誤用や説明不足がある設計書を理解し、レビューする上でも利用可能です。
4. 共通機能の明確化
品質向上、開発効率の向上が目的となります。 具体的には、オフショア開発会社側には、一般的に次の傾向があり、それを防止する必要があります。
・提供されたサンプルや最初に作成した開発物を繰り返しコピー&ペーストし、 それを書き直して成果とする。
・コピー&ペーストにより設計や実装がなされる結果、共通コンポーネント・共通機能・汎用モジュールとして考えられる類似の機能がいくつも作成されることになる。
5. 書類の記述レベルの明確化
特にお客様にオフショア開発会社側の成果物を提出する場合には実施すべき点として、書式記述レベルの明確化があります。詳細設計書、Q&Aシートやテスト成績書(エビデンスの要不要・レベル感)など、事前に書式を指定しておくとばらつきを現象させ、工数の削減が図れます。例外処理/エラー処理についても、記述して欲しいレベルで適切にサンプルに含めておくとベターです。
6. テスト粒度の明確化
書類の記述レベルの明確化と併せて、テスト粒度についても明確化しておくと、未然にミスを防げます。
7. 仕様未決定部分の明確化
開発期間不足などの関係で、要求分析〜システム分析〜アーキテクチャ設計工程の、日本側作業での仕様未確定部分が多いまま、オフショア側に開発依頼をする場合も少なくありません。成果物の仕様未決定部分は、未決定であると明確に提示しておくと混乱を防ぐことができます。
8. 開発環境、テスト環境の明確化
OSやデータベース、プログラミング言語、フレームワーク、IDE、使用ツール、使用ブラウザ、画面解像度、バージョン情報などの開発環境、テスト環境情報を明確にすることで、オフショア開発会社側の開発環境、テスト環境に差異が生じることを防ぐことができます。
相違がある場合は、やり直しが必要になります。発見が遅くなるほど、やり直しコストが高くなります。 最悪の場合は、システムが予定期間通りに完了できないことです。
そのため、オフショア開発会社が正しく認識していることを確保するために、情報共有を徹底する必要があります。
9. 開発ルールの明確化
コーディング規約などの開発ルールがある場合は、手戻り作業が発生しないようにオフショア開発会社へ明確にすることも必要です。
新しいプロジェクトが開始される際には、かならず1本以上のサンプルプログラムをオフショア開発側に作成させて、チェックしましょう。その際は意識レベル・理解度までチェックするとベターです。
オフショア開発におけるオフショア開発会社にとっては、やはり慣れない言語でのコミュニケーションとなることから、
・(委託側からは)オフショア開発会社側の理解の度合いがわかりにくい
・(オフショア開発会社側では)誤った理解で思い込んでしまう
という事象が発生しやすいです。
関連する内容をお互いで確認することなく進めてしまい、誤解が解消されないことへの対処が目的です。オフショア側プロジェクトに任せたままにしていると、成果物が出来ていなかったり、品質が著しく悪かったりします。 それらのチェックを確実に行なっておく必要があります。 日本側で適切にチェックすることで、品質向上・開発工数低減につながります。 プロジェクトのサイズ感に合わせて、日本側にチェックのための工数と人材を確保しておくことがオフショア開発会社を利用する際のポイントとなります。
国が違えば、考え方や文化が違うため、事前の準備が肝要です。当然実施されるであろうと期待し、明確化しないでおくと、最終的な成果物にずれが発生しがちです。ただ、冒頭でも紹介した通り、パートナーの作業プロセスにより、必要性が大きく異なります。オフショア開発経験が豊富でなパートナーであれば、自己判断をせずにQ&Aを実施し、解決した上で進めます。あくまでも、オフショア開発でありがちなミスを防ぐポイントとして紹介しました。こちらの内容はオフショア開発向けUML適用ガイドラインに詳しく記載されていますので、興味があればご確認ください。