$30 off During Our Annual Pro Sale. View Details »

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

Leko
November 16, 2016

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

Web Tech Tokyo #2 CI会

Leko

November 16, 2016
Tweet

More Decks by Leko

Other Decks in Technology

Transcript

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

    View Slide

  2. 24歳、鎌倉住まい
    ブログ: http://leko.jp
    Twitter: @L_e_k_o
    Github: Leko
    会社:Hamee株式会社 QAIT リーダー
     入社2年半、小田原、目黒勤務
     品質向上と自動化を追い求めるチーム
    井上 真吾(れこ)

    View Slide

  3. 話すこと、話さないこと
    ● 話します
    ○ つらみを救ってくれたのは CIでした
    ● 話せないです
    ○ イケてる会社の最新の事情
    ○ 技術負債と向き合う話

    View Slide

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

    View Slide

  5. ● 一部上場、予算も増えて人も増える
    ○ 案件開始 → 仕様書もテストもない  → 聞いてもわからない  → とにかくコード読む
    ○ 案件ついでにリファクタ  → 安定のデグレ → 誰も触れない化物
    ○ 仕様書書き出す → 機能が多すぎる → 形骸化or中途半端な情報
    ○ レビューなし → しょうもない凡ミス  → 何も学ばないで二の鉄を踏む
    ○ スピード出ない、品質担保で精一杯
    ● 契約企業が増えれば負荷も増えるし責任も増す
    ○ 寿命によるハードウェア障害、スロークエリ、 CPU高沸 etc…
    ● でも売れてる
    ○ 売れたまま、スピード感が出せるように加速させたい
    レガシーが悪いわけではない、が。

    View Slide

  6. ● 新卒が「技術力足りない」と思うくらいには低かった
    ● 人も実力者も増え、今やそうではなくなった
    よろしい、ならば改善だ

    View Slide

  7. ● コードレビュー開始
    ● Doxygen入れてAPIドキュメント生成
    ● 仕様置き場の確保、旗振り
    ● General logをパースしてERD作成
    ● UT書き始める。UT書く案件にはベネフィット持たせて書かせる
    ● ST書き始める。とてもじゃないけど手が回らない
    ● オフショアに頼る。ベトナムに飛んでコミュニケーション取る
    ● オフショアといい感じにUT埋めてる ← いまここ
    改善の前段

    View Slide

  8. 要は長い、煩雑
    メンバーが増えると
    こっちの管理コスト
    増加、凡ミス頻発。
    当初の業務フロー

    View Slide

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

    View Slide

  10. ● 社内にCIという文化がない
    ● もう勢いで入れてしまえ、あとでその有用性を分からせる
    ● 動作環境がめちゃくちゃレガシー
    ○ CircleCI(phpenv)ではサポートしてくれてないバージョン
    ○ chefで作られた超大なレシピ
    ● Dockerで凌ぐ
    ○ Packer + Dockerでコンテナ生成
    ○ 環境がchef製なのが幸いした
    CIへの壁

    View Slide

  11. CI後の業務フロー
    手元でテストを実行
    する
    という不確実な手順
    を排除

    View Slide

  12. ● ユニットテストを書く文化づくり
    ● 効率化、省力化の文化づくり
    ● 他の製品へのCI横展開
    ○ Java製アプリのビルド・デプロイ自動化
    ● ドキュメントもCIしたい。lintかけたい。
    ● 成果:バグ数軽減、精神衛生向上
    ● ゆくゆくは開発効率の向上につなげたい。
    今後

    View Slide

  13. ありがとうございました!
    これからも
    レガシーを駆逐し
    てゆきます

    View Slide