8/21~9/8 の3週間、DX Squad でインターンをしていました寸田です。 私は、DXエンジニアコースということで、エンジニアの生産性を高めるための開発を行いました。 インターン中に作成した新たなシステムの話と、インターンを経て得た学びについて、自分自身の振り返りも兼ねて、書いていこうと思います。
なにをしたのか
Wantedly 社内には、開発を支援する様々なツールなどが存在します。例えば、kube や Kubefork のようなCLIツールや、PR Preview のようなGithub上で動くツールなどがあります。しかし、現状では、これらツールの使われ方の状況について、社内でヒヤリングを行うなど、定性的な情報は集めていましたが、具体的な使用頻度などを定量的に知る方法はあまりありませんでした。また、ツールを提供し始めた当初は、開発メンバーが感じた、「自明にやった方がいいこと」をすれば開発者体験が向上していきましたが、良い社内プロダクトが増えるにつれて、容易に問題を発見しにくくなりました。一般的には、このような課題に対して、データドリブン的なアプローチで意思決定や仮説検証を行っていくことが有用とされています。そのため、「開発メンバーの感じたこと」以外の手法で、新たな施策を生み出すための、計測基盤が欲しいということになりました。これを実現するため、社内ツールがどのように使われているのかを計測するシステムを作成することになりました。このシステムによって、データをもとにして、新たな施策を考え、実行できるようになることを期待しています。
成果物
devlog という新たなシステムの立ち上げと基盤構築を行いました。 これは、開発者体験の定量化や新たな施策を考えるために、開発中の開発者がどのようにツールを利用しているかをログとして収集するものです。具体的には、以下のような構成になっています。
各社内ツールからログデータをログ中継サーバに送信して、その内容をデータウェアハウスに書き込むというようなものです。実際に、この新たなシステムについて以下のようなことをしました。
- 現在抱えている問題を整理する
- どんなログを集めると良いのか考える
- プロトタイプを作ってデプロイする
- 本実装を作成してデプロイする
- 実際のツールに埋め込んで動作を確認する
どんなログを集めるかについては、様々な観点から検討を行い、社内ツールを利用する人たちが不安にならないかつ、有用な情報が集まるような内容を検討しました。また、プロトタイプ作成は、本実装にあたって不確定な要素を予め調査するために行いました。本実装ではインターン中には、実現したい機構の基本の部分を作成することができました。
学んだこと
3週間のインターン中、ひとりで開発しているだけでは、なかなか体験できない様々な学びを得ました。
思考の整理
いままで無かったものをつくるため、「なぜやるのか」「なにをやるのか」の観点で思考を整理するなど、今回作るものについてじっくり考えました。この過程で、どのように思考を整理していけばより良いものができるのかを学びました。実際、開発している間に、このときの考察が役立つ場面が何度もありました。
デプロイ時の問題の切り分け
新たなプロダクトを作るということもあり、デプロイには様々な障害がありました。今回、各社内ツールからの中継サーバへのデータ送信を、gRPCを用いて行うことにしました。しかし、gRPC 通信を kubernetes cluster 外に露出するサーバは社内では前例がなく、正常に動作させるのに非常に苦労しました。何が起きているのか、なぜ動かないかなどの問題の切り分けをするのは難しかったです。他のサービスの設定を読んだり、公式ドキュメントを当たったり、様々な調査を行いました。作業を振り返って、サーバの構造を理解し、調査でわかったことを適切に記録していくというのが重要だったということに気付かされました。
これらの他にも、様々な学びや気づきを得ることができました。
まとめ
データを集められる基礎の部分を作成することができました。残念ながら、インターン期間では、実際にプロダクトに埋め込んでリリースするところまではできませんでしたが、今回作ったものが今後どう役立っていくのか、非常に楽しみに思っています。
メンターの市古さん (@igsr5) をはじめ Wantedly の皆さん、3週間の間ありがとうございました。