prismatixでのオフショア開発について

2020.08.03

はじめに

2011年ごろ、諸事情により都内から地方へ引っ越し、
それと同時にリモートワークを開始したのでリモートワーク歴も9年くらいになります。
その後、いくつかのプロジェクトを経てprismatix(後述)のプロジェクトに開発者として参加しました。
※gitのログみたら2016/1が最初のコミットだった

prismatixのversion1をリリース後、開発メンバーも増加し、
オフショア開発も行われるようになりました。
私は1年ほど前からオフショア会社とクラスメソッドのブリッジとして動くようになったのですが、
prismatixプロジェクトでは、どのようにオフショア開発をおこなっているのかお話したいと思います。

prismatixとは

まずは簡単にprismatixについての説明です。
prismatixは、クラスメソッドの自社サービスとして開発している、
EC(電子商取引) / CRM(顧客管理)に特化したAPIプラットフォームです。
各機能はマイクロサービスとして開発され、
AWSの機能を活用したクラウドネイティブな実装となっています。
詳細については、弊社塩谷の記事をご確認ください。

オフショア先の開発会社

ベトナムにある開発会社で、prismatixでいっしょに開発する以前に、
クラスメソッドの他部署で実績のあった会社です。
※基本的に言語は日本語でやりとり
いままで大きな問題なく開発できているのは、
この開発会社が優秀であるというのも大きいです。

開発体制・ワークフロー

開発の体制

クラスメソッドとオフショア開発会社の体制は、下の図のようになってます。(かなり簡略化)
オフショア開発会社に窓口となるBridge SEがいて、
各チームごとにそのSEとやりとりする担当がいます。
それぞれのBridge SE同士で仕様や問題を共有し、作業を進めていきます。

ワークフロー

本プロジェクトにおいて、オフショア開発会社は主に実装とテストを担当しています。
実際には以下のように、作業をすすめています。

  1. バグ修正・機能実装などのタスクが発生
  2. クラスメソッド担当者がGitHubでissue作成
  3. クラスメソッド担当者が仕様の詳細を決定
  4. オフショア開発会社が実装・テスト
  5. オフショア開発会社が内部レビュー
  6. 内部レビューで問題なければPull Request(PR)作成
  7. クラスメソッド担当者がPR内容をレビュー
  8. PR内容が問題なければラスメソッド担当者がマージ

使っているツール・サービスなど

オフショア開発会社と情報共有や打ち合わせをするときに使用している
ツール・サービスについて紹介します。

GitHub ・ Slack

ソース管理はGitHub、開発に関するやりとりはGitHubのissueコメントかSlackで行います。
テキストでのやりとりに関しては、なるべく詳細に用件を記述すること、
認識の齟齬がおこらないことを意識しています。

Google Meet

定例ミーティングや各種報告会、新しい機能実装前の説明などは
Google Meetをつかって直接会話をして情報共有を行います。

Cacoo

フローチャートやネットワーク構成図などを作成・共有するためのサービスです。
図(ER図とかユースケース図とかシーケンス図など)を共有するときは
このサービスを使っています。

esa

markdown形式でドキュメントを簡単に共有出来るサービスです。
要件をまとめるドキュメント用につかったり、
メモ書きにつかったりといろいろな用途でつかってます。
ここの情報はmarkdownなので、必要があればmarkdown形式のファイルを渡して共有します。

これらのツール・サービスを使ってオフショア開発会社とコミュニケーションをとりながら、
開発をおこなっています。

開発時に意識している点

セキュリティ

GitHubへのアクセス権限や、サーバへのアクセス権限、ログの閲覧権限など
各種情報へのアクセスについては限定的にしています。
作業を限定すれば、その分クラスメソッド側の作業が増えますが、
情報の内容と作業のバランスで考えて、許可すべき権限を細かく決めています。

権限にせよ作業内容にせよ、基本的には最初は厳しめに制御して少しづつ許可していく方針です。

コミュニケーションに関して

相手は日本語ネイティブではないため、Google Meetで話をしたときに
会話が噛み合わないことや意図を理解しきれないことも多少あります。
そういった場合には後日テキストであらためてやり取りをして、
しっかりと認識をあわせておくようにしてます。

まとめ

本稿では、prismatixにおけるオフショア開発方法について簡単に紹介しました。
オフショアに限った話ではありませんが、
なにかあればすぐコミュニケーションをとり、
その場で課題や情報を共有していくのが大事ですね。