はじめに
はじめましての方ははじめまして!
HITOTSU株式会社 の宮といいます。
昨年から本格的にプロダクト開発を進めてきたのですが、ひょんなことからアドカレやるかと言うと、ほぼ冗談で言ったにも関わらずメンバーがギラギラしてたのでやることになりました。
とはいえ、書くからには弊社で割と色々経験して取り入れてきたものを共有できると言いなと思ってますので、宜しくお願いいたします。
なのでこの記事は HITOTSU株式会社のアドベントカレンダー の1日目です。
TL;DR
- 静的型付け言語ならCodeSeeは良いぞ
- レビューの時に重宝するぞ
- 何回か命救われたぞ
CodeSeeって?
CodeSeeは影響把握分析のための可視化ツールです。
コードの依存関係を視覚化してくれて、GithubでPRを作ったら影響範囲のあるところだけ表示してくれる様な機能があります。
うちでは以前たまたま見つけてバックエンド側に差し込んでみたら手放せなくなりました。
CodeSeeの機能
CodeSeeにはコードの依存関係の可視化をベースにレビューやオンボーディング用の機能があるようです。
※ 僕はたぶん5%くらいしかCodeSeeの機能を使いこなせていません。なんで使いこなしたら段々と追記しています。
コードベースの視覚化
とりあえずリポジトリを連携すると凄い頑張ってコードの依存関係を可視化してくれます。
普通のバックエンドだととんでもない量の依存関係が出るので、あぁ結構コード書いてるなぁと自己肯定感を高められます。
レビューの依存関係可視化
HITOTSUではとにかくこの機能にお世話になっています。
GithubでPRを書くと、変更されたコードに基づいて依存関係が可視化されます。
とても良いのは、変更したコードだけでなく、そのコードが依存してるモジュールまで描画してくれるので、レビューの時に重宝しています。
エンジニアのオンボーディング
CodeSee上でコードの解説を作る機能の様です。
例えばエンジニアが参加した時にドメインごとにこの辺りが関連するよー!的な内容をチュートリアルとして設定する様な意図の機能だと思います。
HITOTSUでの使い方
HITOTSUではバックエンドのPRが作成された時に、自動的にコードマップができるようになっています。
うちはGoを使ってDDDにある程度基づいてプロダクト開発していますが、サービスの依存関係やリポジトリとサービスの関係が見えるようになるのが良いです。
特にレビュー時の影響確認がめちゃくちゃスムーズになっているので、何度か影響範囲の修正漏れを見つけては命を救われています。
注意点
一回強引にPython/DjangoのプロジェクトにCodeSeeをぶっこんでみたのですが、1PRごとに15分Github Actionsの時間を消費しまくることになりました。
しかもコミットをプッシュするごとにCodeSeeのマップを再作成するので、湯水のごとく消費されてしまいました。
ホントはPythonみたいなスクリプト言語のほうが恩恵がでかいと思うのですが、流石に厳しかったです。
(これも1年くらい前の情報なので、もしかしたら今はとても)
JVM言語は試していないのですが、静的型付け言語で取り入れるのがオススメです。
うちはGoを使っていますが、CodeSeeの依存関係マップは数秒で作成されています。
まとめ
CodeSeeは利用している技術スタックにもよりますが、依存関係の把握をめちゃくちゃ上手に可視化してサポートしてくれるので導入して良かったもののひとつです。
バックエンドの依存関係はプロダクトの開発が進めば進むほど把握が大変になってきますし、特定の箇所のみを修正したPRが上がってくると思わぬ影響がでがちです。
CodeSeeはその辺までの機能はコミュニティプランでさせてくれますし、ぜひ広まると良いなと思っています。
HITOTSU株式会社のアドベントカレンダーの2日目は、うちのフロントエンド開発から顧客対応から英語まで何でもござれな @motsuka1です。
ではでは、ゆるりとやっていきますので宜しくお願いします。