生まれ変わらNight に参加しました!

こんにちは、松下です。 2018/11/29 に ヤプリラクスル さん合同のイベントが開催されたので参加してきました。

yappli.connpass.com

今日はこのイベントのレポートを書こうと思います。

レガシーシステムの再構築、システム設計

プロダクト面でも成長したいため、思い切ってシステムをリプレースする事になったそうです。

これで選ばれたのは React + Laravel
しかし、 React は複雑で扱いきれず、頓挫してしまったようです。
これによって中途半端に React が入ってしまいました。

そこで、リベンジとして全員でリプレースに取り組む日を設定し、技術選定の時間を多めに取ったそうです。
選ばれたのは Nuxt.js と Golang
それぞれ技術者のレベルに合っている、メモリがネックになっていたので PHP よりメモリ効率がよいなどの理由で選ばれました。

工数が伸びてビジネスサイドともめたりもしましたが、社内勉強会などで技術レベルを上げつつ頑張っているようでした!


チームのレベルに合わせて技術選定をしたり技術選定のために工数をかけるのはとても良い手段だと思いました。
経験上、レベル間にあっていないものを導入するとその技術に振り回されたり、一部の人しか触れなくなったりする場合が多いと思いますので…。

一枚岩なレガシーシステムラクスルではどのようにRebuildしているのか?

www.slideshare.net

歴史的経緯により巨大に成長したレポジトリの影響で、新人がコミットできるまでの時間がやたら多くなったり、使われているかどうかわからないなど業務に支障をきたすので作り直すことを決心したようです。

もとは PHP でしたが、 人が入れ替わって PHP より Rails ができる人が多いのでリファクタリングではなくこちらもリプレースをすることにしたそうです。
マイクロサービスは組織の規模的に辛いのでモノリシックに、しかしレイヤー分割を意識して設計、実装しました。


ソースが巨大がゆえに使われているかわからないのは、個人的には静的解析等の仕組みで解決するのが一番手っ取り早いのかなと思っています。
Jector ではたまにメタプログラミングされていてこれは本当に使われていないのか、という心理戦を楽しめます…

モダン JS フレームワークで技術的負債を作らないために

コンポーネント指向フレームワークでの辛み集でした。

どうもコンポーネント指向だと変数のバケツリレーがあるのでデータがどこから来たのかなどが分かりづらく、煩雑になってしまうようです。
そこで flux を導入しバケツリレーを回避したようです。

ヤプリさんはフロントエンドエンジニアがデザインもする?ようですが、サーバサイドエンジニアも触るらしく、サーバサイドエンジニアが vue 側を触りづらいため、 vuex 側をサーバサイドエンジニアが、 vue 側をフロントエンドエンジニアが担当することにしたそうです。

学びとしてはチームのレベル感にあっていないものを採用して効率が落ちては元も子もないということでいした。(以前は React + Redux でしたが、 Redux 難しくてダメだったそうです…)


Jector はモダンではない JS フレームワークを使用しているのでイマイチ共感できないのが悲しいですが、そうなったときには参考になるかと思います。 3年以内にはしたい…。

経営陣は技術的負債をどう考えるべきか

www.slideshare.net

おそらく技術的負債返済における最大の壁となるであろう、経営陣との交渉についてのスライドです。

技術的負債はエンジニア的には辛いものですが、数値には出づらかったりすることがあります。 例えば、なんか重たいとかなら外から見えますが、このクラスいじりづらいなどはエンジニアが触る内の部分でしかわかりません。 そこを改善したい、と言っても外から見れば開発が止まっているようにしか見えず、またそれが利益に直結するわけではないので難しいところです。

そこで経営陣の成長戦略を達成するにはこのくらいの規模が必要で、再構築が必要なのでします、や当時は x だから今の構成だけど、今は 1000x だから通用しないよ、だから再構築するよなどというアプローチで攻めると良いらしいです。

エンジニアも経営のことを知っておくとこのあたりはイケるとのことでした。


このあたりはなかなか難しい問題だと思います。 技術的負債の返済する時、新機能実装などは止めてやるほうが楽ではあるのですが、そうも行かないと思うので…。

感想

やっぱりみんな技術的負債に悩んでいるんだなと、少し安心しました。 我々もやらなきゃと思い続けて先延ばしにしてしまい、返済が大変そうな感じになってしまったので、定期的に返済できる仕組みを作らないとですね…。

作って終わり、ではなく長期的に続けていくサービスなので、そこのところを時間作って考えないと根本的な解決にはならないのかなと思いました。

まずは返済しなきゃ、ですけどね…

ねこじゃらしについて

ねこじゃらしでは Ruby (Ruby on Rails) や JavaScript での開発経験がある Web エンジニア、ネイティブエンジニア、UI/UX デザイナを募集しております。

ご興味をお持ちいただけましたら、以下のリンクからお問い合わせください。

www.nekojarashi.com