Save 37% off PRO during our Black Friday Sale! »

レガシーな開発現場にUTを入れてCIを導入した話

13fbd31a4503c352369aab017e3edef7?s=47 Leko
November 16, 2016

 レガシーな開発現場にUTを入れてCIを導入した話

Web Tech Tokyo #2 CI会

13fbd31a4503c352369aab017e3edef7?s=128

Leko

November 16, 2016
Tweet

Transcript

  1. レガシーな開発現場にUTを 入れてCIを導入した話 井上 真吾

  2. 24歳、鎌倉住まい ブログ: http://leko.jp Twitter: @L_e_k_o Github: Leko 会社:Hamee株式会社 QAIT リーダー

     入社2年半、小田原、目黒勤務  品質向上と自動化を追い求めるチーム 井上 真吾(れこ)
  3. 話すこと、話さないこと • 話します ◦ つらみを救ってくれたのは CIでした • 話せないです ◦ イケてる会社の最新の事情

    ◦ 技術負債と向き合う話
  4. 2500社近くが導入する、ECのバックエンド一元管理サービス 自社。内製で提供するWebアプリは30近く サービス開始から9年目 PHP, Java, Rubyが主 サポート切れてるバージョンを使ってるサービスも... サービス開始当初は僅かでも経験があれば即採用 仕様書レス、テストレス、レビューレス、仕様レス 動作は手で確かめる。ただしい動きは誰かが知ってる、はず

    レガシーな開発現場
  5. • 一部上場、予算も増えて人も増える ◦ 案件開始 → 仕様書もテストもない  → 聞いてもわからない  → とにかくコード読む ◦ 案件ついでにリファクタ  → 安定のデグレ → 誰も触れない化物 ◦

    仕様書書き出す → 機能が多すぎる → 形骸化or中途半端な情報 ◦ レビューなし → しょうもない凡ミス  → 何も学ばないで二の鉄を踏む ◦ スピード出ない、品質担保で精一杯 • 契約企業が増えれば負荷も増えるし責任も増す ◦ 寿命によるハードウェア障害、スロークエリ、 CPU高沸 etc… • でも売れてる ◦ 売れたまま、スピード感が出せるように加速させたい レガシーが悪いわけではない、が。
  6. • 新卒が「技術力足りない」と思うくらいには低かった • 人も実力者も増え、今やそうではなくなった よろしい、ならば改善だ

  7. • コードレビュー開始 • Doxygen入れてAPIドキュメント生成 • 仕様置き場の確保、旗振り • General logをパースしてERD作成 •

    UT書き始める。UT書く案件にはベネフィット持たせて書かせる • ST書き始める。とてもじゃないけど手が回らない • オフショアに頼る。ベトナムに飛んでコミュニケーション取る • オフショアといい感じにUT埋めてる ← いまここ 改善の前段
  8. 要は長い、煩雑 メンバーが増えると こっちの管理コスト 増加、凡ミス頻発。 当初の業務フロー

  9. テスト書いてもらうならCIだ

  10. • 社内にCIという文化がない • もう勢いで入れてしまえ、あとでその有用性を分からせる • 動作環境がめちゃくちゃレガシー ◦ CircleCI(phpenv)ではサポートしてくれてないバージョン ◦ chefで作られた超大なレシピ

    • Dockerで凌ぐ ◦ Packer + Dockerでコンテナ生成 ◦ 環境がchef製なのが幸いした CIへの壁
  11. CI後の業務フロー 手元でテストを実行 する という不確実な手順 を排除

  12. • ユニットテストを書く文化づくり • 効率化、省力化の文化づくり • 他の製品へのCI横展開 ◦ Java製アプリのビルド・デプロイ自動化 • ドキュメントもCIしたい。lintかけたい。

    • 成果:バグ数軽減、精神衛生向上 • ゆくゆくは開発効率の向上につなげたい。 今後
  13. ありがとうございました! これからも レガシーを駆逐し てゆきます