🔥

新技術導入プロセスを紹介します

2023/12/01に公開

こんにちは! 株式会社ココナラで執行役員 VP of Engineeringの村上です。

今回は株式会社ココナラにおける新技術導入の考え方について説明します。

背景

これまで、お恥ずかしながら弊社の技術導入はルールが一切定まっていませんでした。
そのため、領域別にエンジニアが使ってみたいという思いをもとに個人判断で技術選定し、比較検討も十分なされない中、そのまま導入するということが度々発生していました。

その結果として以下のような問題が発生していました。

  • 導入したが他の人に浸透しない、運用が十分されない
  • 導入者退職によりメンテナンスが滞り、新技術がむしろ負債化してしまう
  • 導入の背景が整理されておらず、なぜその選択・設計になったのかがわからない
  • 実はもっといい代替手段があるのに考慮できておらず、今更変えられない
  • あまりに新技術すぎて流行りもせずに廃れてしまい、逆に触りたくなくなってくる
  • 知識・経験を持っている人が少なく、逆に生産性が低下したりする

こうした問題が発生してしまうと、会社(事業)を伸ばしていくどころかむしろ足を引っ張ることに繋がりかねませんし、実際少なからずそういう状況になっていたと思います。

弊社としては、技術アップデートを大事にしていますし、新技術の導入も必要であれば積極的に行いたいと思っています。
ただ、最終的には事業貢献につなげていきたい、ひいてはユーザー体験をよくしていきたいという思いがあり、そこの目的からはずれないようにしたいと思っています。
このような中、やはり一定基準をもってきちんと技術選定した上で導入する必要があるだろうということで、新技術導入のプロセスを整理することにしました。

新技術導入プロセスについて

上記のような課題感をもとに、新技術導入プロセスを仕組み化し、どのような場合であっても一定品質が担保されるように整えていこうということになりました。

新技術の導入プロセスの概要は以下のとおりです。

それぞれ次で詳細を説明します

1. 新技術導入のレビュー資料作成

新技術導入資料の構成について説明します。
以下は資料の目次構成だと思ってみてください。

対象となる新技術の説明

このパートでは、対象となる新技術について簡単に概要を説明します。

レビュアーは必ずしも新技術のことを認識しているとは限りません。
そのため、簡単な図表を入れて説明を記載したり、参考リンクを貼り付けることで、どういう技術なのかを理解しやすくします。

あとの妥当性判断でも活用しますが、以下の情報があるとより良いです。

  • Github情報
    • Star数
    • 直近のコミット日時
    • Contributors数
  • 類似ツール情報(上記と同じ情報があると良い)

新技術導入の妥当性説明

このパートでは、新技術導入が問題ないかを複数の観点で説明します。

参考までに、記載する論点を以下に示します。

判断基準

  • 目的の合理性 については、目的が曖昧なまま新技術導入ありきで検討が進んでいないかを精査するために必要な観点です。
    目的が曖昧だと他の人が見たときに「これなんのために入れたの?」となりがちです。また、目的は明確であっても手段が目的に合致しないこともあるため注意が必要です。
  • 運用の継続性 については、今後導入者以外の人でも継続的に運用が回せるかどうかを精査するために必要な観点です。
    導入者だけ温度感高く、周囲の人が乗り気でない場合、運用が回らなくなることがあるため、組織として運用していけるかどうかが重要です。
  • 投資対効果 については、人件費やツール代でコストがかかるため、それに見合った効果が得られるかを精査するために必要な観点です。
    世の中一般で使われていたとしても、自社適用した場合に十分に効果が出せるとは限りません。そのため、適用した場合にどれくらい効果が出るのかを事前に予測しておくことが重要です。
  • 技術の将来性 については、今後数年にわたり導入する技術がメンテナンスされ続けるかについて精査するために必要な観点です。
    各エンジニアリング分野において技術革新のスピードは早くなっており、一時期流行ったものがすぐに次世代のものに置き換えられてしまうことも多々あります。その場合、既存のシステムはそれほど柔軟にリプレースができないため、デファクトではなくなった技術を使い続ける必要が出てきます。
    そうならないように、現状コミュニティが活発であり数年に渡って使われ続けるのかというのを判断する必要があります。

これまでの経験上、上記いずれかを満たしていない場合、運用していると何かしらの問題が発生してきます。
そしてそのまま運用を続けていると、その問題が徐々に無視できないくらいの大きさになり、再びその問題を解決すべく、短期のうちに新技術を導入しようというサイクルに入ってしまいます。

せっかく良い効果を期待して新技術を導入しても負債化してしまっては本末転倒であるため、上記を中心に十分検討した上で導入するように心がけています。

2. 関係者レビューと導入判断

上記の資料が整理できたらレビューに回します。

レビューはその時々によって関係者が異なりますが、基本的には以下の流れでレビューを行います。

  1. 部署内レビュー
    • 部署内レビューでは、導入者が同じ部署内のメンバーに対して説明し、問題がないかを議論します
  2. EM/役員レビュー
    • EM/役員レビューでは、マネージャーやスペシャリストと役員を交えて部署内レビューの判断結果を共有し、問題がないかを議論します

レビューについては特に規定はなく、フリーなディスカッションを行います。

肝心なのは、複数人のエンジニアの目で見たときに導入が妥当かどうかを判断することです。
これを行うことで、観点の抜け漏れを防いだり、関係者も納得感を持って導入を推進できるようになります。

また、副次的な効果として、レビュー資料を残しておくことで、今後入社してきた人がなぜこの技術が導入されたのかの背景を知ることができるようになるので、その点も助かります。

実際に導入した新技術について

上記のように整備した後、それに則って導入した技術としては以下のようなものがあります。

技術名 概要
Rundeck Crontabで実行していた旧バッチ実行環境のリニューアル目的で導入
Vertex AI サービスの検索アルゴリズム改善とML基盤の自前運用目的で導入
Playwright WebサービスのE2Eテスト自動化目的で導入
Appium モバイルアプリのE2Eテスト自動化目的で導入
Vercel 新規事業の開発生産性向上目的で導入

上記はどれもボトムアップで提案されたものです。
細かいものまで含めれば上記以外にもさまざまな技術を導入してきていますがここでは割愛します。

しっかりと吟味した上で導入したこともあり、今のところ大きく問題なく運用できています。

まとめ

本記事ではココナラにおける新技術導入の考え方とそのプロセスについて紹介しました。

新技術導入はどの会社も悩ましい問題かなと思いますが、上記が唯一解だとは思いません。
会社によって新技術導入の考え方は違うと思うので、大事なのはその会社のカルチャーにあった導入プロセスを模索し作り上げることかなと思います。

他にもココナラでの考え方についていろんな方面で紹介していきたいと思います。

最後に

ココナラでは、プロダクト開発に関わるさまざまな領域のエンジニアを募集しています。
少しでも興味を持たれた方がいましたら、エンジニア採用ページをご確認ください。

https://coconala.co.jp/recruit/engineer/

まずは話を聞いてみたいという場合は、カジュアル面談でも大丈夫です。

Discussion