2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
大規模フロントエンドの技術的負債と向き合う。(全1記事)
リンクをコピー
記事をブックマーク
外松俊尚氏:はい。それでは「大規模フロントエンドの技術的負債と向き合う」というタイトルで、サイボウズ株式会社の外松が発表いたします。よろしくお願いします。
(会場拍手)
私は今、新卒3年目になるエンジニアです。今はkintoneというプロダクトの開発をしています。最近だとフロントエンドエキスパートチームという横断的な組織と兼務しています。今日は技術的負債というテーマについてお話します。みなさんも何かしら技術的負債と向き合ってきたり、何か苦労した経験があるんじゃないかなと思います。
今日話すことは、現場の目線で、いま抱えている問題であったり、これまでこの問題とどう向き合ってきたかであったり、技術的負債と向き合うことのメリットについて話をしようかと思っています。
なので特定の技術とかライブラリに限った話とかはしません。今、技術的負債に苦しんでいる人がこれから前向きに取り組むきっかけになったらいいなぁと思っています。
さっそく、私が開発しているkintoneというプロダクトの話を中心にします。
kintoneはWebのアプリケーションなんですけど、2011年にリリースをしているということもあって、プロダクトのライフサイクルとしてはすごい長いんですよね。これからも機能をどんどん実装していくということで、継続的な開発が必要になっています。ドラッグアンドドロップといった複雑な処理もできるので、今JavaScriptで約45万行と大規模なアプリケーションとなっています。つまりkintoneは大規模フロントエンドを抱えています。
このフロントエンドというトピックに関して言うと、やっぱり変化が激しいのが特徴としてあると思っています。例えば、毎年JavaScriptの新しい仕様が出ていたり、ブラウザがどんどん進化していたり、あとはnpmのエコシステムにより新しい技術やライブラリ、ツールが日々生まれています。
世間はどんどん進化しているんですよね。ですけど「kintoneはどうだろう?」と考えると、2011年の開発スタート時のフロントエンドとは状況が違っています。なので昔活躍していた技術は、今は負債として残っているのが現状です。
kintoneが抱えている問題をもうちょっと深堀りして考えると、例えば特定のライブラリやコンパイラに強く依存していて、今のnpmのエコシステムの恩恵を受けづらい状況があったり、使っているツールやライブラリが古いとか、あとはすべてを新しいコンポーネントに書き換えられるような規模ではないなど、いろいろな問題を抱えています。
現状として、技術的負債を多く抱えているというのが、これでわかります。私がこれまでにどのようにこの問題と向き合ってきたかをお話します。
この技術的負債と向き合うきっかけが、趣味でフロントエンドの開発とかをしているんですけど、その開発の体験と業務での開発の体験が「なんか違うなぁ」という違和感がきっかけでした。ふだんの開発でも自分がやっている良い体験がしたかったので、そしたら今ある問題を改善しないといけないなと考えて、この問題に向き合うきっかけになりました。
改善しようと思って、まずはチームで考えないと向き合えないので、チームのみんなで開発系の改善をテーマにワークショップを開催してみました。グループに分かれて「ここがつらい」とかいう改善をブレストして、それを3つの優先順位でグルーピングしてみんなでまとめました。
でもこの回はぜんぜん上手くいかなくて、アイディアがすごい多く出るわけでもないし、議論がすごい活発にできたわけでもありませんでした。
この場でみんなと話してわかったことがいくつかあって、当たり前だけどみんなが自分と同じように「これがいいよね」「今やっぱりこれが大事」とか、そういう同じ感覚を持っているわけではないことがわかりました。
説明するときに「これがデファクトだから」という説明はやっぱりダメで、みんななんとなく良いというのはわかるんですけど、そこからの実行になかなか繋がりませんでした。あとは、ツールとかライブラリを先行して考えるとみんなに伝わらないので、でもみんなふだんの開発のつらみとかなら共感して聞いてくれるんだなと感じました。
これがきっかけで、自分以外の人からの見え方を考えるようになってきました。例えば、新しい技術やツールなどで言うと、みんな良さはなんとなくわかるんですけど、本当にここで導入すべきかはわからないと感じていて、そもそもその良いものを体験していないからイメージするのが難しいみたいな状況があると思いました。
なので、ここで「チームのみんなで新しいものを学べるフロントエンド勉強会をやるといいかも」と考えて開催してみました。今はみんなで毎週木曜日にやっています。すごくよかったのが、ふだんの開発だけでは学べないことを学べるので、新しいツールの良さなどをみんなが体験できてイメージできて、そこから「これを導入したい」みたいな感じで実行につながるということができました。
あともう1つ良い点があって、同じチームの人だけでやっているので、より具体的な話ができます。「kintoneだと、ここはこうだよね」「これkintoneで導入したいよね」みたいな具体的な話がどんどんできるようになってきました。
知識を得るという部分について話をしたんですけど、「ところで最初に話した技術的負債はどうなったんだろう」と考えるとやっぱりぜんぜん進んでいなくて、自分が空いている時間とかに探求してみたけどそれではぜんぜん進まなかったです。
やっぱり継続的に改善するためには時間を掛けてちゃんと向き合わないといけないので、社内にある組織横断的な専門チームとしてフロントエンドエキスパートチームがあるので、そこと兼務することにしました。
兼務を始めてみてすごい良かったことは、フロントエンドが得意なメンバーと今の問題について考えることが頻繁になったり、横断的な組織なので他のプロダクトとも関わるようになって、他のチームで導入しているツールとか、チームに持ち帰れそうな知見が増えました。
これがきっかけで技術的負債の解消が進んできました。今は超巨大な問題から小さい細々した問題までそれぞれ向き合っています。例えば強く依存しているライブラリやツールを減らす作業だったり、DXが向上するようなツールの導入だったり、あとはkintoneの中で「ここは良い設計、ここは悪い設計」ということをみんなで考える会を開くようになりました。
あとはモブプログラミングというものをすごい活用していて、技術的負債だとどこから手を着けたらいいかわからないとか、何をしたらいいかもわからないみたいな「なんかつらい」みたいな。
そういう不確実性が多い問題は週に2日30分とか区切って定期的にスケジューリングしています。次のスケジュールまでにメンバーが解決してくれたりするので、すごく良いです。やることが明確なら一気に進めてプルリクを作るみたいなことをしています。
最近「ちゃんと向き合えてるな」と感じてたんですけど、普通に失敗もあって、最近Prettierの導入をしてみたんですけど、技術的負債の特定の問題とPrettierの相性が悪くて導入ができませんでした。ここで感じたのは、技術的負債を解消しないと世界の進化に追従できなくなって、恩恵を受けれなくなるというのをすごい認識しました。
「やっぱり技術的負債と向き合わないと」と思ったきっかけでした。
「技術的負債と向き合うとどういうメリットがあるだろう」というのを、最近自分の中で考えるようになりました。けっこういいなぁと思っているのが、最初からツールを導入するというのと、大規模なプロジェクトに途中から導入するのは難易度がぜんぜん違くて、その技術についてちゃんと理解をしていないとやっぱりできないので、自分としてはすごいスキルアップにつながる場だなと思っています。
あとは個人開発で当たり前に使っているものを「なんでこれが良いんだろう」と考えるきっかけになっています。例えば、当たり前のようにReactやTypeScript、新しいツールなどを使っているけど「それを入れることによってどういう問題がどう改善するだろう? どれくらい改善するだろう?」と、すごく考えるようになっています。
確かにこれは自分は深く意識できていなかったところかなと思っています。
最後に、すごい優秀なエンジニアじゃない新卒3年目のエンジニアが一歩一歩技術的負債と向き合って進めています。勉強会とかモブプロとかを活用してチームで向き合えば怖くないかなと思っています。すごい自分の成長にもつながります。それでは、ぜひチームと自分のために技術的負債と向き合いましょう!
ありがとうございました。
(会場拍手)
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05