Web Tech Tokyo #2 CI会
レガシーな開発現場にUTを入れてCIを導入した話井上 真吾
View Slide
24歳、鎌倉住まいブログ: http://leko.jpTwitter: @L_e_k_oGithub: Leko会社:Hamee株式会社 QAIT リーダー 入社2年半、小田原、目黒勤務 品質向上と自動化を追い求めるチーム井上 真吾(れこ)
話すこと、話さないこと● 話します○ つらみを救ってくれたのは CIでした● 話せないです○ イケてる会社の最新の事情○ 技術負債と向き合う話
2500社近くが導入する、ECのバックエンド一元管理サービス自社。内製で提供するWebアプリは30近くサービス開始から9年目PHP, Java, Rubyが主サポート切れてるバージョンを使ってるサービスも...サービス開始当初は僅かでも経験があれば即採用仕様書レス、テストレス、レビューレス、仕様レス動作は手で確かめる。ただしい動きは誰かが知ってる、はずレガシーな開発現場
● 一部上場、予算も増えて人も増える○ 案件開始 → 仕様書もテストもない → 聞いてもわからない → とにかくコード読む○ 案件ついでにリファクタ → 安定のデグレ → 誰も触れない化物○ 仕様書書き出す → 機能が多すぎる → 形骸化or中途半端な情報○ レビューなし → しょうもない凡ミス → 何も学ばないで二の鉄を踏む○ スピード出ない、品質担保で精一杯● 契約企業が増えれば負荷も増えるし責任も増す○ 寿命によるハードウェア障害、スロークエリ、 CPU高沸 etc…● でも売れてる○ 売れたまま、スピード感が出せるように加速させたいレガシーが悪いわけではない、が。
● 新卒が「技術力足りない」と思うくらいには低かった● 人も実力者も増え、今やそうではなくなったよろしい、ならば改善だ
● コードレビュー開始● Doxygen入れてAPIドキュメント生成● 仕様置き場の確保、旗振り● General logをパースしてERD作成● UT書き始める。UT書く案件にはベネフィット持たせて書かせる● ST書き始める。とてもじゃないけど手が回らない● オフショアに頼る。ベトナムに飛んでコミュニケーション取る● オフショアといい感じにUT埋めてる ← いまここ改善の前段
要は長い、煩雑メンバーが増えるとこっちの管理コスト増加、凡ミス頻発。当初の業務フロー
テスト書いてもらうならCIだ
● 社内にCIという文化がない● もう勢いで入れてしまえ、あとでその有用性を分からせる● 動作環境がめちゃくちゃレガシー○ CircleCI(phpenv)ではサポートしてくれてないバージョン○ chefで作られた超大なレシピ● Dockerで凌ぐ○ Packer + Dockerでコンテナ生成○ 環境がchef製なのが幸いしたCIへの壁
CI後の業務フロー手元でテストを実行するという不確実な手順を排除
● ユニットテストを書く文化づくり● 効率化、省力化の文化づくり● 他の製品へのCI横展開○ Java製アプリのビルド・デプロイ自動化● ドキュメントもCIしたい。lintかけたい。● 成果:バグ数軽減、精神衛生向上● ゆくゆくは開発効率の向上につなげたい。今後
ありがとうございました!これからもレガシーを駆逐してゆきます