ディレクションシェアこんにちは。LIGフィリピン支社代表のせいと(@seito_horiguchi)です。フィリピン・セブ島に来て1年半が経ちました。なんだかあっという間です......。これまでセブ島でエンジニアさんを雇い、教育し、日本との仕事を受ける体制を作ることに注力してきました。初めは、急にエンジニアがいなくなったり、クオリティが低かったりと、失敗が続き大変でしたが、最近はいい感じに回るようになってきたと思います。そこで今回はオフショア開発でアジア圏のエンジニアとプロジェクトを成功させるため、普段僕らが取り組んでいる開発フローについてご紹介します。他の地域でも使えると思うので参考になれば幸いです。コミュニケーション指示書はなるべくシンプルな英単語+記号を用いるLIGのサイト制作では、とくにアニメーションの実装がよくありますが、これを説明するのはなかなか難しかったりします。加えて、日本の社員は全員が英語で喋れるわけでもないため、英語で指示内容を書くとなるとさらに大変です。そこでアニメーションの指示書には、なるべくシンプルな英単語と記号を使って表記しています。ソースコードへのレビューやコーディングルールを指示する場合は、NG例、OK例を用いています。しておくと、ある程度コーディングができるエンジニアなら説明文がなくとも理解してもらえるようになるんです。translateなどで翻訳した際に変換されやすくなるよう、きっちりした文章でかつコピペ可能な状態にしておく(画像にしたりしない)といいでしょう。チケット管理はマストでそのプロジェクトにおいて、エンジニアが行うべきタスクは洗い出してチケットで管理します。○○機能の実装、バグ修正対応、デザイン調整、デバッグなど、タスクになりうるものすべてを管理します。しておくとToDoリスト代わりにもなるので、タスクの抜け漏れを防ぎやすくもできます。ちなみにLIGでは、チケット管理はRedmineをカスタマイズして使うか、Bitbucketで行っています。※フィリピン支社でのプロジェクトでは公にお見せできるものがなかったため、上の画像は日本本社での実際の仕様例です。作業内容は口頭で依頼+チャット上で記録ある程度まとまったタスクを依頼する場合はチケット管理が有効ですが、ちょっとした作業を依頼するのにチケットをいちいち発行するのは面倒です。その場合は口頭で依頼した上で、必ずチャット上で作業内容を送ります。依頼内容が記録に残っていることに加え、合計2回も言われたら記憶にも残りやすいですし、言った言わない論争に発展することもないので平和にことが進みやすいです。僕らは毎日2回MTGを行っています。朝に全員出社したら「その日取り組むタスクとどこまで進めるかの目標」を確認しあいます。優先すべきタスクがわからないなどあれば、このタイミングでそれらの問題は解消します。夜には「その日取り組んだタスクとどこまで進んだかの進捗」の確認です。ここでもし進捗が悪い場合には残業の必要性があるかも判断します。報連相を行うため、進捗確認のため、コミュニケーションをとるためなど色々理由はありますが、MTGを頻繁に行う一番の理由はメリハリをつけるためです。各々のタスクをはっきりさせ、ダラダラと仕事しないようにしています。Inc.では納品前に必ずクリアにしておくべき項目を洗い出し、リスト化しています。エンジニアは、納品前にリストを必ず埋めてもらうことで、タスクの抜け漏れ回避&クオリティ向上に努めてもらっています。リストには以下のような項目があります。etcプルリクチェックエンジニアがコーディングを行う際、Git及びGit-flowを用いています。ブランチを終了させるときは自分でマージはせず、必ずリーダーを含む他のエンジニアにプルリクエストを送り、2票獲得するまでマージできないというルールで進めています。他のエンジニアがレビューを行い、もしソースコードや実装方法に問題が合った場合は都度コメントしてチェックしてあげる体制です。しておくことで、ソースコードの品質を担保しています。デザインチェックLIGではデザインをこだわって作っているため、再現性を重要視しています。そのため、デバッグに加えその部分も細かくチェックを行います。perfect」です。最終的にはデザイナーによるクオリティチェックが入ります。その前になるべくissueは潰せるよう、エンジニアにはプルリク送信時にPSDとHTMLのキャプチャを重ねた画像も同時に送信してもらい、デザインの再現性を確認しています。コーディングデータをサーバーにアップしてもらってもいいですが、それだけでは第三者の確認の手間が増える&セルフチェックを怠ってしまう可能性があるため、このようにしています。※ちなみに上のキャプチャ画像はちょっと揃え方が甘いダメな例です。開発環境テンプレートLIGでは日本、フィリピン問わずフロントの開発環境にはfrontplate-cliというツールを使っています。元CTOの林が開発したもので、SassやBabelによるコンパイル、バリデーション、Webpackなど盛り沢山な内容になっております。オープンソースなのでご興味ある方はぜひ。frontplate-cliまた、LIGではWordPressを用いた案件が多いため、バックエンドエンジニアによって開発されているWordPress用のテンプレートも用意して使っています。Inc.では大体のプロジェクトで汎用的に使えるよう、社内フレームワークを用いてます。いわゆるBootstrapのようなものですが、一般的なそれと違う点は、社内のコーディングルールや開発環境に則した作りになっている点です。受託案件では、主に「メディアサイト」「コーポレートサイト」をよく作るので、それに合わせてよくありがちなコンポーネントや機能を取り込んでいます。これによって開発効率の向上、また新入社員にはこれのコードを熟読してもらうことで社内のコーディングルールや設計思想に慣れてもらっています。コーディングルールコーディングルールも独自に用意しています。いっても、大体「Googleのコーディングルール」と「SMACSS」をかけ合わせたような内容です。独特なルールを足しても覚えきれない&共有が大変なので、プロジェクト特有のオーダーがない限りは、シンプルに済ませています。ここでもやはり、NG例、OK例を用いて表記することで、言語の壁を超えて理解しやすくできるよう心がけています。まとめ僕は始めた当初、国や文化が違う人間同士で開発するのはなかなか大変なことだと思っていたのですが、きちんとした環境と土台が用意できたので今は何とかなっています。笑また、弊社では現在、通常の「受託開発」と「ラボ型開発」の2パターンでお仕事のご依頼をお待ちしております。何かあれば、下記より気軽にご連絡ください!お問い合わせはこちらエンジニア不足を解決するLIGのサービス「ギルド開発」って?そのメリットと中身をご紹介します。ANALYZE」を導入後、CVR改善に成功した品川美容外科のWeb担当者に話を聞いてきた。POSTLIGへの自由なメッセージお待ちしています頂いたご意見への回答は行っておりません。