2017.10.05

ベトナム拠点との共同開発

こんにちは。次世代システム研究室のT.Kです。
2017年も、秋に差し掛かっており、現在携わっている案件は去年3月頃からですので、早1年半程経過している事に驚きを感じます。

私が参画している案件の開発はベトナムメンバー(遠隔地)と一緒に開発を進めています。
幾つかのPJをベトナムメンバーと一緒に進めてきましたが、1つのPJで1年超と言うのは今まででも一番長いPJ経験になります。

今回は、遠隔地(ベトナム国内2拠点)との共同開発時の、体制や利用ツール、工夫した事などをブログにしてみようと思います。

PJ体制

私が現在携わっているPJでは、国を跨いだり、拠点が異なる4拠点で運用されています。

  1. 【日本】サービス主体組織(グループ会社)
  2. 【日本】次世代システム研究室
  3. 【ベトナム】ベトナムラボ(グループ会社)
    • ハノイオフィス
    • ホーチミンオフィス

日本側では、主に要件企画、仕様検討、スケジュール調整、受入等を担当し、ベトナム側が開発、テストを行う体制となっています。
ベトナムとの定例MTGは毎日の朝会のみで、全体のKPTなどは行なっていせんが、問題が顕在化する前にメンバーからの率直な意見を吸い上げる機会を作る必要があるとは考えています。

利用ツール

前述の通り、私が参画しているPJでは、遠隔地とのやり取りが必須ですので、各種ツール類を利用しています。

  • ChatWork
  • 会社推奨ツール
    情報共有、連絡でメイン利用
    不具合通知メール連絡などをChatWorkへ切替えを進めており、利用用途拡大中

  • Skype
  • 朝会、個別で不明点説明時などに利用

  • Redmine
  • チケットや工数、仕様管理で利用

  • Trello
  • 作業進捗管理に利用

  • join.me
  • 画面共有。Skypeでも可能ですが、join.meの方が解像度が良いように感じます。Skypeの調子が悪い場合に利用

こうやって並べてみると、利用しているツールが数年前から変わっていないですね。
特に困る事は無いのですが、より良いツールが無いか、調査・利用して行きたいと思います。

最近、PJメンバーが対応してくれたChatWorkへのエラー通知機能を参考に、KPI通知機能の対応を行なったのですが、比較的簡易に対応出来たので用途に応じてChatWorkも活用して行こうと考えています。

    下記、ザックリですが利用手順になります。

    1. ChatWorkに通知用アカウント作成
    2. 作成したアカウントで、API利用申請(http://developer.ChatWork.com/ja/)
    3. 早ければ数時間で利用できる様になるかと思います

    4. ChatWork画面右上の自アカウントリンクをクリックし、動作設定モーダルでAPI発行をクリック
    5. アカウントのパスワードを再入力し、表示ボタン押下
    6. 表示された”token”をコピー
    7. HTTPクライアントを利用してトークン、ルームID、本文を設定しpost
    8. 			$response = $client->post("https://api.ChatWork.com/v2", [
      					'headers' => [
      						'X-ChatWorkToken' => $token,
      						'Content-Type' => 'application/x-www-form-urlencoded',
      					],
      				'body' => ['body' => $body],
      			]);
      

遠隔地とスムーズな開発を行う為の取組

コミュニケーション

開発を行うメンバーの多くが遠隔地にいるので、コミュニケーションが重要なファクターとなります。
ベトナムメンバーの技術面に関しては、日本人エンジニアと比べても見劣りする部分は殆どありませんので、『仕様誤解による手戻りを如何に低減出来るか』と言う部分が大きな課題となります。
文化の違いから、暗黙的(常識的)な事柄も、明確に記述しないと伝わらない事もあるので、注意が必要です。

    余談ですが、以前別PJで、アプリゲームの『ガチャ』が、なかなか伝わらず試行錯誤した事がありました。
    ベトナムには”ガチャ”の文化が無いとの事で、そもそも『”ガチャ”とは何か』、『”ガチャ”の何が楽しいのか』、『何故これにお金を払うのか』、『これはゲームなのか』などの質問を受けました。
    ベトナムの方にとってゲームとは、アクションゲームやスポーツゲームのイメージが強いらしく、日本で主流のアプリゲームは恐らくベトナムでは受けいれられるのは難しそうです。

現在のPJでは下記手段で要件を伝えています。

  1. 発注者からの要件資料・課題をそのまま伝達
  2. 内容がシンプルな時

  3. 発注者からの要件を、ある程度噛み砕いて仕様に落とし込んで伝達
  4. 全体の7割程度はこちらの手段を採用
    不明点や調整事項は事前に日本側で対応

  5. 日本語以外を主体とする資料を作成して、伝達
  6. 画像、SQL、ソースコード等

  7. Skypeやjoin.meなどのツールを用いて、口頭で伝達
  8. 不明点を直ぐに回答できる
    日本人メンバーが選択できる最終手段(※”ベトナムに行く”は除外)

  9. 日本側ベトナムメンバーを通して伝達
  10. 代理で説明を依頼

概ね、”2″で対応し、不明点のみ”4″の対応を行なっています。
噛み砕いた仕様の作成時には、シンプルな日本語を心がけ、『表示する表示しない』や『やるやらない』などを明示して記述する事は効果的だと感じています。

Skypeなどで直接会話する時には慣れがありますが、相手の日本語が理解出来なくても、会話の流れ話の前後似た単語などを考えて、出来るだけ理解する(察する)事を心がければ、問題無いレベルでの意思疎通が可能だと思います。
「正しい日本語を話してくれないと理解出来ません」と言う姿勢だと厳しいですね。

スケジュール管理

現在、スケジュール管理は日本側で行い、ベトナム側には期日を特に共有しない運用を行なっています。
具体的には、日本側で『Trelloに優先順に並べた作業を積み』、ベトナムメンバーは『Trelloを確認して作業に着手』し、完了すれば『Trelloのチケットを移動する』と言う流れで進めています。

PJ当初は期日を共有し進捗などをマメに確認していましたが、ある時に期日を共有しなくても、ほぼ想定通りのペースでアウトプットが出て来る事に気付き、期日共有を取りやめてみたところ、管理コストが減り、急ぎ案件時に期日を設定するとベトナム側でも理解して爆速で対応して貰えたりと、予想外に良い結果になりました。

管理方法は色々あるかとは思いますが、次世代システム研究室・ベトナムラボ間では、この様な運用方法も1つのやり方では無いかと考えています。

現地リーダー

ベトナム側2拠点には来日経験があり、次世代システム研究室の開発手法をよく理解しているメンバーが現地にいます。
次世代システム研究室では、毎年ベトナムラボのメンバー2名~3名に来日してもらい、1年間日本で研修を受けてもらう制度を取っています。
彼らがいる事で、現地での細々とした質問や問題、開発時の動作確認などが吸収される為、日本側から手取り足取りと言う対応が不要である事は非常に助かっています。

開発タスク分割

我々のPJでは、大きな開発・改修対応を一度に依頼せずに、ある程度分割して依頼する事を心掛けています。
単純な効率を考えると一度で依頼して、一度でレビューした方が効率が良いようにも感じますが、分割する事で下記メリットがあります。

  • 複数メンバーでの並列開発
  • 仕様誤解時に、最小限の手戻り
  • アウトプットをコンスタントに受取り、進捗状況を確認
  • 細かなソースレビューが可能

稀にですが、仕様を誤解して爆走してしまう事もあるので、一定ポイントでの確認は必要だと感じています。
また、日本側としても進捗状況の見える化にも繋がる為、細かなレビューのコストは必要なものと考えています。

成果

まだまだ改善の余地は多くありますが、緩める所と締める所を明確にする事で、多くの成果が出てきていると感じています。

  • 管理コスト低下
  • 開発パフォーマンス向上
  • アウトプット品質向上
  • 自主的なキャッチアップや技術取得

今後に関して

今後は、日本側で行っている仕様検討やテストケース作成などの作業もベトナム側に任せたいと考えています。
今までは、資料チェック等の関係上、日本語で記述してもらう必要があり、日本語力と効率の問題で保留にしてきましたが、直近問題が解決できる状況が出来て来ましたので、次のステップとして着手してみようと考えています。
現状でも問題なく開発体制は運用出来ていますが、各メンバーのステップアップと、より良い変化の為にも必要な事だと感じています。
また、2018年には更にベトナム側拠点が増える事が予定されていますので、新拠点も含めた運用方法を検討してきたいと思います。
個人的な目標としては、ベトナムメンバーの名前を正しい発音で呼べるよう鋭意努力中です。

次世代システム研究室では、最新技術に興味のある方を募集しています。
他にもアプリケーション開発者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ募集職種一覧からご応募をお願いします。