Diverse developer blog

株式会社Diverse(ダイバース) 開発者ブログです。

レガシーから脱却する話をしました

f:id:lasa007:20161122215639j:plain
2016年11月22日、ヒカ☆ラボにて、ネットマーケティング様と合同で「レガシーシステム脱却秘話」をテーマに勉強会をさせていただきました。

atnd.org

弊社からはエンジニア3人が登壇いたしました。何を発表したのか、どのような思想や思いでレガシーからの脱却に取り組んでいるのかをご紹介します。




どうしてコードはレガシーになるのか

f:id:lasa007:20161122200148j:plain
id:kikuchy です。
『どうしてコードはレガシーになるのか』という題でお話をさせていただきました。



YYCチームでは昨年から今年の頭にかけてAndroidアプリをフルスクラッチでリニューアルしました。
そのきっかけ(原因)となったリニューアル前のアプリのコードのレガシーさと、その分析から得られた「レガシーコードを生み出さない環境づくり」の方法についてのお話です。

レガシーコードが生まれる原因

人間が当たり前のことを当たり前にやらないからです。
ところが、当たり前のことをやる、というのは意外と大変なものです。
しかし、人間は認知的負荷の低い行動はとりやすい(前例に倣う、など)ので、当たり前のことをきちんと実行できる環境を整備しましょう、というのが今発表の主旨でした。

整備するべき環境
  1. プロダクトがどのような構造で出来上がっているのかを、後から来た人にもわかるようにする
  2. その言語らしいコードを書く
  3. エンジニアがスキルアップを心がけるようにする(仕掛ける)
レガシーコードが生まれたら

スライドに明記していなかったのですが、このようになると思います。

  1. これ以上レガシーコードが生まれない環境を整える
  2. 地道に取り除く
  3. 取り切れる量でなかったらコードを全部捨てる

最後の「コードを捨てる」は時間もお金もかかるため、最終手段ですが……
YYC Androidアプリの場合は経営判断でOKがでたので、フルスクラッチでリニューアルを行いました。



Titaniumから脱却している話

f:id:lasa007:20161122203208j:plain

こんにちは、Diverse 結婚支援事業部 アプリエンジニアの @yuta-fujita-dvs です!

当日のスライドはこちら

YoubrideのiOSアプリをTitaniumからSwiftにするために行っていることについての発表です。

RedmineからGitlab、Jenkinsの導入、チーム横断でのコードレビュー、に開発環境を変えていったお話になります。
詳しくはスライドを参照していただければと思います。

反省点としては、

  1. デメリットにまだ自分の中で解決できていない内容を混ぜてしまっていた。
  2. LTなのに発表時間を意識せずにダラダラ話してしまった。
  3. 発表中にPCを見すぎて会場に目を向ける時間が少なかった。

といったことです。

まだまだレガシーから脱却していくためには壁があり、現在進行中で壁を破っているので、次回があれば反省点を活かしつつそういった話などもできればな・・・と思っています。




集計システムをDBからTDに移した話

f:id:lasa007:20161122205307j:plain

女性向けデーティングアプリ Poiboy でiOSエンジニアをしている中西 @cfiken です。

同様のイベントで、「集計システムをDBからTreasureData(TD)に移した話」というタイトルで、
TreasureDataを使って行ったことと、それによってチームがどのように変わったか、という話をさせていただきました。

Poiboyは今年の1月に正式リリースしたデーティングアプリで、少人数チームでの開発のため、開発効率であったり、PDCAサイクルを如何に早く回すか、という点がサービスのスケールのために重要です。
そのために必須とも言えるのがサービスの各数値の集計です。
より詳しく、より早い段階でチームメンバーが数値を追うことが出来るように、今までサービスのDBからのみ直接集計を行っていたものを、TD上に移して自動化を行いました。

前半は、具体的にどのような手続きを踏んだのか、TDの使い方、集計効率をあげるための工夫、メンバーに浸透させるための工夫などの話を。
後半は、色々と集計に関するレガシーを脱出した結果、チームメンバーの働き方にも影響があったよ、という話をさせていただきました。

まだ変化の途上ではありますが、後半の話が中心だったので具体的にいくつか紹介すると、

  • チームメンバーが以前より数値を追うようになった
  • 施策の企画から反省までの流れが確立した
  • 集計が身近になり、開発者だけでなく一部の企画などのメンバーが直接WebからTDを触るようになった

など、当初想定していなかった色々な良い影響がありました。

今までは施策の度にエンジニアがKPIを集計していたのを考えると、ただ見れる数値が増えたのみにとどまらず、大きな改善になりました。
レガシー要因を改善することで、そのレガシー部分だけでなく、想定していなかった良い影響があるかも、ということがイメージとして伝われば幸いです。

準備時間があまり取れず、時間配分や資料のクオリティがまだ甘かったところがあるので、次の機会ではもう少ししっかりと準備したいと思います。
また、タイトルにTreasureDataと入っていたことで、TDの踏み込んだ使い方やデータサイエンスに関する話を期待されていた方もいたようで、また機会があれば次はそのような話をしてみたいですね。
当日お世話になった皆さま、ありがとうございました。


今回の勉強会で、思いの外たくさんの方が古いシステムから新しいシステムへの移行について悩んだり苦労したりしていることがわかりました。

どんな新しい技術も時間が経てば陳腐化してしまい、その寿命は年々短くなっているようにも感じます。が、Diverse は、常に新しい技術を積極的に導入できるようなエンジニア文化を推進していきたいと思います。