こんにちは、Wantedly DX Squad の 大坪です。
内定をもらった4年前に「いつか技術基盤チームを立ち上げるのでそこで活躍してほしい」と言われてそこに強い興味を持ったことが入社の決め手の一つでした。その後色んな経験をして技術基盤チームのリーダーをできることになり日々奮闘中です。正確には技術基盤とはミッションが一致しないところも多いし、リーダーと言っても一応をつけるべきというような状態です。でも自分としては「技術基盤をやっているんだ」と思うと気持ちが良いのでそう思うことにしています。
今回は自分がどんな考えを持ってDXに取り組んでいるのかを言語化してみたいと思います。
DX Squad とは 世間では DX というと Digital Transformation のほうが一般的かと思いますし、社内ではデラックスという愛称で呼ばれていますがどちらの意味でもありません。少し前に流行った言葉ですが D eveloper e X perience の意味です。社内の開発者の生産性を高めてより高速に安全なリリースを実現する環境を用意することで開発者にもユーザーにも価値を届けることを目標しています。社内の開発体験が良いことはユーザーに提供する価値にも繋がりますし、更には採用を加速させる要因にもなります。
実際にやっていることは技術基盤といって差し支えないことも少なくないので社外ではよく技術基盤チームと説明しています。
シゴトでココロオドルひとをふやす Wantedly のミッションは「シゴトでココロオドルひとをふやす」です。ユーザーに対してシゴトでココロオドル体験を届けることを目指すということは当然ですが、社内の環境を改善することにも同じくらい重要視して投資していくべきだと考えています。「シゴトでココロオドルひとをふやす」と言っている人には当然シゴトでココロオドっていてほしいですよね。つまり社内のシゴトをもっとココロオドルものにするということも DX の仕事の一つだと考えています。
これは現状がつまらない仕事をしているという意味ではありません。これまでも様々な仕組みの改善によって常に開発者にとって最適の環境を提供しようと努力してきました。例えば非同期なコミュニケーションを推奨してテキストの記録が必ず残るようにする文化を明文化したり Docker / Kubernetes / gRPC などの新しい技術を取り入れて未来の開発スタイルを取り入れたりしてきました。
しかし自分の体感として「今の常識で考えられる開発体験が未来の常識であるわけがない」という気持ちがあります。未来には10年後20年後には今では考えられない開発/運用スタイルが登場するだろうという考えです。それを今から知ることは難しいとしても何に向かっていくのが正しいのかを考えておくことには価値があると考えています。
ミッション「未来の開発体験」 では未来の開発体験とはどんなものでしょうか。ここでは大坪が考える開発の未来を語ってみたいと思います。ここで考えることは究極的な未来であり実現方法が現時点では一切わからないものも含まれます。また、これは大坪個人の意見で社内でも議論が分かれるものも含まれます。
コーディングはゲームのようになる ゲームは UX 勝負です。もちろん例外は多々あるでしょうが、ヒットするゲームはどれも説明書を読まなくてもなんとなく触り始めたら何をすればよいのかが明確で、なにか自分がミスをしたらすぐにわかり、そしていつの間にか没頭して目標をクリアできてしまいます。もう一つ重要な点として「楽しいか本質的な部分しかやらせない」という性質があるでしょう。試合時間の何倍もの練習を要求してくるスポーツゲームも、出撃前の武器の点検を綿密にやらせる戦闘ゲームも存在してもヒットはしないでしょう。
現在のエンジニアリングはどうでしょうか。ここでエンジニアリングの中でも特にコードを書く部分を見てみます。大体のプログラミング言語やフレームワークはある程度エンジニアリング経験があればドキュメントを読まなくてもなんとなく書けてしまうくらいにはわかりやすくなっています。ある程度優秀なエディタやIDEであれば、ちょっとした typo や実装ミスは瞬時に検知してくれます。
しかし、小さい規模のプロジェクトでなければ自分の書いたコードが test を通るのかは少なくともフィードバックに数秒かかるしすべての test が通るかを確認するには数分かかることもあるでしょう。またそもそも test は自分で書かないと行けないし test でカバーされている変更なのかは簡単にはわからないことも多いでしょう。分単位の時間をかけてよければ CI を通せばこれらの情報は feedback できます。でもゲームでリザルト画面を生成するのに分単位の時間を使うものはありません。この体験が究極的な到達点であるはずはありません。
目指す未来としては、コードは本質的な部分だけを直感的にかけて自分の変更が正しかったのか瞬時にわかり、よい feedback が来たら自信をもって deploy できる環境です。その変更が正しいというフィードバックを遅くとも秒単位で届ける。というのが自分の考えるコーディングの未来です。
エンジニアはデザイナーに近づく しかしエンジニアの仕事はコードを書くことだけではありません。場合によってはコードを書かずに根本的な解決をすることや、むしろ消したりすることもあります。また設計に使える時間の大半を使うケースもあるでしょう。また特に Wantedly ではエンジニア に「ユーザーにとって何が重要であるか」を考えて施策や新機能を考案する力を求めています。そうではない環境もあるでしょうがいずれにしても仕様を実装するだけがエンジニアリングではないと考えています。
低レイヤーには適切な抽象を持ち込んで考えなくて良くするのが正しい未来だと思っています。どんなことをすれば今の課題が解決するのかを考えるのがエンジニアリングになりコードを書くことを単なる手段です。そしてその手段は前述の通りより本質的な部分だけを行うようになるべきです。プロダクトを作る上で本当に本質的な部分だけを取り出そうとするとプロダクトにどんな変更を加えるべきかを考えることだと考えています。その意味でエンジニアはデザイナーになっていくと考えています。これはビジュアルを作れるようになるという話ではなく、どんな体験を提供するべきかとそれの達成方法を考えるということが日々の仕事の中で大きな時間を占めていくという意味です。
つまり究極的には「何を作るべきかを宣言したらそれを高い品質で作ってくれるレイヤーが存在する世界」を目指すことになります。もちろんそのレイヤーを作るエンジニアリングはまた別で存在するでしょう。しかしどのレイヤーのエンジニアリングも「何を作るべきか」「どうやって達成するか」を考える時間が重要な仕事になっていくと考えています。
そのためにやること これまでのエンジニアリングの歴史で多くの個人や企業がライブラリ / フレームワーク / 言語などを作ってきたり標準化を行ったりして、やりたいことの本質だけを取り出す試みをしてきました。Rails を使えば Model / View / Controller さえ実装すればネットワークとか SQLとか細かいことは考えなくても良くなります。Docker を使えばサーバーの環境構築のほしい部分だけを定義できるし、Kubernetes を使えば何を動かすべきかだけを考えればどうやってマシンにデプロイするのかを考えずにサービスを運用できるようになりました。
現時点の Wantedly のスケール感では Kubernetes のような規模のものを社内で作ることは得策ではありません。でもそういった新しい技術をいち早く取り入れる、そのコミュニティに貢献することはこの規模でもできることです。また現時点でも小さいものであればどんどん汎用性のあるライブラリにしていくことができます。色んな場所で繰り返し行われているものやミスが多い場所を見つけ出してそこを考えなくする方法を考えるということが日々目指すことです。
実際にやってきたこと ここまで夢を語ってきましたが実際には夢から程遠いタスクもたくさんあります。実際 DX Squad が立ち上がってから行ってきたタスクは Rails の Upgrade, Ruby の Upgrade, Gem の Update, dead code の削除, CI 高速化, flaky spec の修正, flaky な code coverage の修正 など未来を取りに行くというより現代のスタンダードにキャッチアップするというものを多数含んでいます。未来を作るという理想からはまだ遠いところがあります。しかしこれは未来像を描かなくて良い言い訳にはなりません。未来のエンジニアリングを考えることができて今という通過点があります。CI の速度を20分から10分にしましたがやっぱり理想は1秒がいいと思いながら高速化をしたほうが目の前のことに満足しすぎなくていいなと言う感覚です。
これからやること 立ち上げから半年たって、未来を作るプロジェクトにも手が回るようになってきました。今回考えた理想像はもしかしたら自分が生きている間には達成されないようなものかもしれません。それでもこの方向に進むんだと言う気持ちで未来を作っていきたいと考えています。