🦆

その技術選定、本当に「選んだ」ものですか?

2024/11/27に公開

こんにちは。ココナラ募集部 開発チームのかもと申します。
先日チームメンバーより、リリースされたばかりのココナラ募集が全く違うアーキテクチャによりリプレイスされる予定、という記事が公開されました
今回はこのリプレイスの過程で発生した、技術選定の悲喜こもごもをお送りします。

リプレイスという決断

ココナラは今年で運営開始してから12年を迎えます。栄枯盛衰が激しいウェブ業界で、これだけ長く続けられているのは、利用してくださっているユーザーの皆さまのお力によるものに他なりません。今後も引き続きご贔屓に……と申し上げるべきところですが、ここは技術ブログ。そのサービスの裏側のお話です。

さて、本ブログをお読みになっている開発者の皆様は「12年間運営しているウェブサービス」と聞いてどのようなことが思い浮かぶでしょうか? SES等の受託開発の経験が長い方は、野生の勘これまでの経験から嫌な予感を覚えるのではないでしょうか。私のことなんですけどね。
12年前というと、AWSの東京リージョンが開設された年です。現在に至るまで、数え切れないほどの技術が発表され、一般化し、あるいは衰退していきました。
そんな中で、大きなリニューアルを挟みつつも続いてきたサービスです。その内側は往々にして濃厚な秘伝のソースで満ちているものです。

恥ずかしながら、ココナラもその例に当たります。
バックエンド領域を例に挙げますが、元はCakePHPで作成された巨大なモノリシックなアプリケーションです。Ruby on Railsへ移行する動きが続いていますが、今でも全ての移行を完了できていません。

そんな中で、ココナラ募集という新しいサービスをリリースしました。
複雑なDBやコードの中から必要なものを探し出し、既存のサービスへの影響を与えないよう注意を払いながらの開発です。大きな事故もなくリリースできたのは幸いでしたが、問題はこれからです。リリースはゴールではないのです。

今後、スピード感を持ってグロースしていくためにも、ココナラ募集のサービス分離━━マイクロサービス化という選択は必然と言えるでしょう。

「なんでその組み合わせなんですか?」

新規アーキテクチャの技術選定は、早々に終わりました。
Next.js, NestJS, Prisma, GraphQL。程よく成熟しており、ドキュメントも多い。これまでBE, FEと分かれていた開発者が、両方の領域を一括して担当するという部の方針にも合った、理にかなった選択だと思っています。
この方針が決まって1月ほどしたのち、新しくジョインしたメンバーから質問がありました。

「なんでその組み合わせなんですか?」

技術選定にあたって一連の資料があったため、前述の理由とともにそれを伝えます。

「選定資料は見ましたが、Remixは検討しなかったのですか? Honoは? そもそもリプレイスするにしても、素早いグロースが目的なら慣れているRailsの方が早いのでは?」(注:私がそう感じたものであり、実際にこう問い詰められたわけではありません)

確かにぃ!?

言われてみればおっしゃる通り。
既存環境での開発が苦しい、早く抜け出したい。実は以前にプロトタイプとして作成していたアプリが前述のアーキテクチャそのままであり「経験もあるしそれでいいでしょう」という考えに(少なくとも私は)支配されていました。
そう、技術選定は選定したものではなく、初めからありきだったのです。

既存環境での開発の辛さは、文脈を共有できるメンバー間では共通認識となっていました。
しかし、これからジョインしてくるメンバーはそうではありません。既存━━いえ、旧環境はなぜ辛かったのか、なぜ辛くとも慣れた技術セットを捨てたのか、そしてなぜこの技術セットを選んだのか。
我々に足りなかったのは、ADRでした。(私はその方にADRの概念を教えていただきました)

「納得」は全てに優先するぜッ!!

(章題は私の愛読書より)

実際のところ、この段階で技術選定をやり直すのは現実的ではありませんでした。そこで、私たちは改めてなぜこの選択に至ったのかを、集まって言語化することにしました。
別に「使ったことがあるから」でも良いのです。「やりたいから」でも良いのです。この技術セットを選んだ理由が明確にであり、旧環境の文脈を知らないメンバーにも想いを共有できるもの、可能なら納得してもらえるものが必要でした。

ブレスト

ちょっと表に出せないものが多いので全面マスキングとなりますが、こんな感じのブレストを3回ほど行い、最終的に第三者が見ても納得できるドキュメントができました。
その中で、共通認識だと思っていたものが実は違ったり、あるいは新たな知見や発見を得たり、非常に意義のある工程だったと感じています。

遠回りし、順序は逆になってしまいましたが、私たちは自分たちで選んだ技術セットと共に新たな道を歩みだせました。
この疑問を投げかけてくれたメンバーには、大変感謝しています。

最後に

未だ日進月歩で進化が進んでいるウェブ業界です。この技術セットがいつまで現役でいるのか、私には見当もつきません。
ただ、今回の学びがあれば、次に何らかしらの技術を選ぶ機会が訪れたとき、自分に問いかけることができるでしょう。

「その技術選定、本当に『選んだ』の?」

私たちの戦いは━━

冒頭で申した通り、ココナラは今年で12周年を迎えました。いまではココナラを生活インフラの一部として利用してくださっているユーザーさまもたくさんいらっしゃいます。
これが15年、20年、そしてずっと続くよう、ユーザーの皆さまに多くの価値を提供できるよう、私たち開発者も日々研鑽を積んでいます。
そしてまた、共に戦っていく仲間を募集しております。興味を覚えた方は、ぜひカジュアル面談からでもご応募をご一考ください。

Discussion