Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHPerが再利用可能な情報提供でオフショア先とコード品質向上に取り組む / PHPer tr...

Y-KANOH
September 25, 2022

PHPerが再利用可能な情報提供でオフショア先とコード品質向上に取り組む / PHPer try improve the code quality

~ オフショア先のコード品質向上は難しい ~

オフショアの場合、遠隔地であることだけでなく言語や文化、環境が違うため、お互いに意図を理解できているかや共通の認識を持てているかどうかが怪しくなってしまいます。
特に、コード品質向上のために行ったコードレビューのフィードバックについては、

・正しく内容を理解してもらえているか
・フィードバック内容を次回のコーディングに活かしてもらえるか

など、オフショア先との意思疎通が障壁となって、改善が行えない場合が多くあります。

そこで、私のチームではコードレビュー時に「再利用可能な」情報を提供することで、サービス全体のコード品質向上に取り組んでいます。
このセッションでは、

・どのようにしてオフショア先のコード品質向上に取り組めばいいのか
・オフショア先のモチベーションを保ちながらどのように改善を行っていくのか

などを、PHPのコードを紹介しながらお話しします。

Y-KANOH

September 25, 2022
Tweet

More Decks by Y-KANOH

Other Decks in Technology

Transcript

  1. 加納 悠史
 レガシーシステムの開発
 @Ykanoh65
 株式会社 ラクス
 所 属
 お仕事
 その他
  

    Twitter
 PHPer ダイビング 観葉植物 
 カノウユウジ
 オフショア窓口 / イベント登壇

  2. オフショアチームの
 タスク範囲
 ▰ 要件定義後の設計
 ▰ バグの調査 / 修正方針検討
 ▰ 実装

    〜 単体テスト
 ▰ 受入テスト作成 / 実施
 ▰ 結合テスト作成 / 実施
 ▰ 脆弱性診断 etc...
 6
  3. オフショアチームの
 タスク範囲
 ▰ 要件定義後の設計
 ▰ バグの調査 / 修正方針検討
 ▰ 実装

    〜 単体テスト
 ▰ 受入テスト作成 / 実施
 ▰ 結合テスト作成 / 実施
 ▰ 脆弱性診断 etc...
 7 仕様理解がすごい たまに仕様の矛盾を指摘される ... 不明点はバンバン質問くれる バグの数は多くない 全くないわけではない ブラックボックステストはしっかりやってくれる
  4. コード品質が悪い例 
 ▰ 何重ものif文
 ▰ 参照渡しの引数
 ▰ せっかくのクラスに条件分岐追加
 悪意があるわけではない。 


    むしろバグを出さないことには気を使ってくれている。 
 function hoge($user, $isNeedXxxFlag ) { if ($nanika == $NANIKA_TEISUU ) { : : if ($isNeedXxxFlag ) { //なにか特別な処理 } : : return true; } return false; }
  5. まずは原因分析
 コード品質がよくない理由
 1.既存コードがよくない
 ▰ 20年以上継ぎ足されたコード
 ▰ フレームワーク未使用
 ▰ トランザクションスクリプト
 ▰

    神共通関数ファイル
 2.ベトナムに情報がない
 ▰ 参考書はほぼ英語
 ▰ ドキュメントは充実してない
 ▰ 既存コードが教科書

  6. まずは原因分析
 コード品質がよくない理由
 1.既存コードがよくない
 ▰ 20年以上継ぎ足されたコード
 ▰ フレームワーク未使用
 ▰ トランザクションスクリプト
 ▰

    神共通関数ファイル
 2.ベトナムに情報がない
 ▰ 参考書はほぼ英語
 ▰ ドキュメントは充実してない
 ▰ 既存コードが教科書
 すぐの対応は不可能
  7. まずは原因分析
 コード品質がよくない理由
 1.既存コードがよくない
 ▰ 20年以上継ぎ足されたコード
 ▰ フレームワーク未使用
 ▰ トランザクションスクリプト
 ▰

    神共通関数ファイル
 2.ベトナムに情報がない
 ▰ 参考書はほぼ英語
 ▰ ドキュメントは充実してない
 ▰ 既存コードが教科書
 すぐの対応は不可能
  8. まずは原因分析
 コード品質がよくない理由
 1.既存コードがよくない
 ▰ 20年以上継ぎ足されたコード
 ▰ フレームワーク未使用
 ▰ トランザクションスクリプト
 ▰

    神共通関数ファイル
 2.ベトナムに情報がない
 ▰ 参考書はほぼ英語
 ▰ ドキュメントは充実してない
 ▰ 既存コードが教科書
 英語
 英語
 英語
 英語
 日本語
 英語

  9. まずは原因分析
 コード品質がよくない理由
 1.既存コードがよくない
 ▰ 20年以上継ぎ足されたコード
 ▰ フレームワーク未使用
 ▰ トランザクションスクリプト
 ▰

    神共通関数ファイル
 2.ベトナムに情報がない
 ▰ 参考書はほぼ英語
 ▰ ドキュメントは充実してない
 ▰ 既存コードが教科書
 → 学習材料が足りていない!!
 すぐの対応は不可能
  10. 現状日本からのFBは不十分
 ▰ 母国語が違うので丁寧に指摘しないと齟齬発生!
 
 
 → 齟齬を恐れて FB をためらう
 メイン:ベトナム語

    サブ:英語をちょっと
 メイン:日本語 サブ:英語をちょっと 日本 チーム ベトナム チーム 翻訳 チーム 日本とベトナムチームのやりとり
 翻訳チームを挟む
 ▰ コード納品 = 結合フェーズ手前の忙しい時期
 → 忙しいと FB を諦めてしまう

  11. 対策1
 フィードバック阻害要因を除去
 FB と 修正要否 を分離
 ▰ 修正は不要な FB もOK!!


    → 納期を気にせず FB できる
 Need Fix 以下の修正をお願いします。 ~~ ~~ Not Need Fix 以下は確認のみお願いします ~~ ~~ FB イメージ

  12. ▰ FBでは事例集を指し示す
 ▰ “ガード節 の意図は ここを見てください”
 ▰ “変数名 で防げるバグについては ここを参照”


    ▰ “単一責務 について ここにまとまっています”
 対策2
 繰り返し使える事例集を用意
 指摘の説明が省略できる!!