見出し画像

CloneTrackerとは何であり、何でないか

■はじめに

初めまして、株式会社Siderの高橋です。弊社は、コピペコード管理ツール「CloneTracker」の提供をしています。

私たちは2019年より、コピペコードに起因する「バグ」や「事故」を未然に防止するためのツール開発に取り組んで参りました。そして、4年間の研究開発を経て、2023年10月にCloneTrackerをリリースいたしました。

東京大学の千葉滋研究室を始め、複数の研究機関のサポートをいただき、CloneTrackerはこれまでにない機能を持つ商用版のコピペコード管理ツールとなっています。

このnoteでは、CloneTrackerに関する仕様/新機能の説明やユースケース、顧客事例などの記事をエントリーしていきます。
まずはエントリー第1弾、「CloneTrackerとは何であり、何でないか」について書いてみました。


◼️CloneTrackerとは何か

CloneTrackerは、コピペコードを継続的に追跡・管理することで、「変更忘れ」の可能性があるコピペコードを検出して通知するツールです。

CloneTrackerを開発するにあたり、3つの課題にフォーカスしました。それは「コピペコードの発生を防ぐことは難しい」「リファクタリングに掛かる時間的/人的コストは大きい」「動いているコードをいじることで、思わぬバグを踏んでしまう可能性がある」です。

それら3点を避けられないものとして受け止めた上で、実務で使えるツールを目指して開発をしてきました。

CloneTrackerの基本機能は3つです。
・新規発生したコピペコードの検出
・コピペコードの変更履歴を追跡
・「変更忘れ」の可能性があるコピペコードを通知

これらの基本機能によって、エンジニアに掛かるコピペコードに起因する負担を軽減し、バグが発生する前に対処できるようにします。

◼️CloneTrackerとは何でないか

CloneTrackerはリファクタリング支援ツールではありません。

コピペコードが大量発生していたとしても、すでに本番稼働しているシステムであれば、リファクタリングに取り組もうとする意思決定者は稀でしょう。それよりも、売上に直結する新機能開発や次の開発プロジェクトにリソース配分する意思決定者のほうが多いと思います。

CloneTrackerは、リファクタリングに取り組む必要がないように、バグに繋がる「変更忘れ」の可能性があるコピペコードを通知するツールです。
「変更忘れ」のコピペコードを把握できれば、コピペコードに起因する「バグ」のリスクに対処することができるでしょう。コピペコードを削減するためのリファクタリングは不要になります。

コピペコードを減らすためのリファクタリング支援ツールでしたら、どこに、どのようなコピペコードがあるか、を把握する機能があれば十分の可能性があります。
そのようなツールをお探しであれば、無償のクローンコード検出ツールがOSSで複数ありますので、そちらをお使い頂くと良いかと思います。こちらのQiita記事が参考になります。

CloneTrackerは、他のコピペコード検出ツールとは異なります。

コピペコード検出ツールは有償・無償とわず、複数あります。一般的によく使われているコピペコード検出ツールは、検出対象とするコピペコードのパラメータ(トークン数や行数、類似度など)をユーザーが設定します。そして解析の都度、検査対象全体をスキャンして、パラメータに沿ったコピペコードを検出します。
CloneTrackerは、コピペコードの検出に加えて、コピペコードの変更履歴を追跡することで「変更忘れ」の可能性があるコピペコードを検出します。詳細は別の記事にてご説明いたしますが、コピペコードの「変更忘れ」を検出するアプローチの仕方に大きな違いがあります。

◼️誰が使うツールなのか

CloneTrackerは、Git管理しているプロジェクトに対して利用することが出来ます。対応言語はC/C++、C#、Java、Pythonです。Javascript、PHP、VB.NET、Rustもβ版としてご利用が可能です。
上の要件を満たしているすべてのエンジニアに使って頂きたい思いはありますが、まずは、すでにコピペコードに課題認識をお持ちの方々、そして、コピペコードが発生する傾向にある大規模なシステム開発に従事されている方々にお試し頂ければ幸いです。

■おわりに

今回はCloneTrackerとは何であるかを読者の方に知ってもらうために、コンセプトのようなものを書きました。
次回からは、CloneTrackerの使い方やコピペコードの検出ロジックなどについて取り上げていきたいと思います。