White Box技術部

WEB開発のあれこれ(と何か)

【Eclipse】StepCounterに選択範囲のカウント機能を追加した話

「ちょっと聞きたいんだけど」

「この機能何ステップくらい?」

とか、

「今日何ステップくらいコード書いたの?」

とか、仕事でコードを書いていると、上長にコードのステップ数を問われることが多々あります。
個人的には、実コードを見ない人がステップ数から得る情報は何もないと思っていますが、 世の中的には、複雑度とか潜在バグ数とか難易度とか効率とか色々わかるらしいです。すごいですね。

コード量で見積もりも変わるようなので、 リファクタリングで他人が書いたコードを半分にしたりすると、 度々コード量が減ったことで問い詰められたりします。

・・・やめましょうか、この話。

ともあれステップ数は計りたい

ステップ数での見積もりを求められる以上、プログラマはステップ数で見積もれなければいけません。お仕事ですからね。
そんなときに参考になるのは、過去の自分が書いたコードや、機能検証で書いたコードだったりします。

求められるステップ数は、コメントや空行を除いた、実行されるコード部分のいわゆる「実ステップ数」です。 なので、単純にファイルの行数をカウントするだけでは不十分であり、ステップカウンタと呼ばれるツールを使って測定します。

自分は以下のEclipseプラグインを使っています。

Eclipseがリリースされた時からEclipseと歩いてきた私にとっては、とても使い勝手が良くて満足していますが、

選択範囲のステップ数カウントできたらいいんだけどな

私が参考にステップ数を知りたい場合は、『このメソッド部分だけ』とか、部分的なことが多く、 最近はその頻度が増えていたので、先ほどのプラグインに選択範囲のステップ数を計測する機能を追加しました。

Release add a function to 3.0.3 · seriwb/stepcounter · GitHub

上記リンクでダウンロードしたJARファイルを、Eclipseのdropinsかpluginsフォルダに配置してからEclipseを起動すると使えるようになるはずです。

使い方はこんな感じです。

選択範囲を作ってから「ステップカウンタ > 選択範囲をカウント」を実行すると、選択範囲の開始行から終了行までのステップ数がカウントされます。

選択範囲をカウント機能の解説

最初は、ステップ数をカウントするロジックに、対象データを渡すだけの簡単な修正かと思いましたが、 ステップカウンタ機能が呼び出された後に対象ファイルを読み込んでカウント処理を行っていたため、 いきなり諦めムードが漂いました。

というのも、今回は人様のコードを利用しているので、元のコードには極力手を入れないようにしたかったのです。

それならファイルを作ればいい

思いついてみれば簡単なことで、選択範囲だけのファイルを作ってしまえばいいわけです。

実際、その案で選択範囲のカウントは実施することができなのですが、一つ問題になったのはファイルの置き場でした。 RemoteSystemsTempFilesフォルダに配置する案など色々考えましたが、結局はプロジェクトルート直下に一時ファイルを作成する仕様にしています。

作成する一時ファイルのファイル名は、『stepcounter_scopeCountTempFile』で、 もしも同じファイルがプロジェクトルートにある場合は、実行時の日時を末尾に付けるようにしてあります。 そして作成したファイルは、結果表示後に削除しています。

Eclipseプラグイン開発をしてみて

今回初めてEclipseプラグインの開発をしたわけですが、 例によって、コードを書いている時間よりもStepCounterの処理を追ったり、プラグイン開発の調べ物をしている時間が長かったです。

「既存コードが存在していたおかげで何とかできた」といった感じでした。SocialCoding様々です。

開発中に気になった個所はQiitaにまとめました。

Qiitaとはてなブログ

Qiitaの良いところは、画面キャプチャをいちいちファイルに保存してアップロードしなくても、 キャプチャ後にQiita上でペーストすればいいところですね。 これ、前から自分で作りたかった機能の一つなので、今度自分でも実装してみようと思います。

Qiitaに都度Tipsを書いて、ブログにまとめるスタイルは意外とやり易い気がするので、 今後もこのスタイルでやっていこうと思います。 なので、良ければQiitaのアカウントもチェックしてみてください。

seri - Qiita

そんな感じで

今回はお終いです。
選択範囲のステップ数カウント機能は、我ながら便利な機能を作ったものだとテンション高くなったので、 ぜひ皆さん使ってみてください。

せっかくなので本家の方にもプルリクは出したんですが、すこーしコードを綺麗にしたいところを後から見つけたりすると、 少し早まったかなと思ったりしますね。

今回のオチ

そんな自画自賛の機能だったりしますが、今所属しているプロジェクトでは『ダウンロード禁止令』なるものが出ており、 これ、自分で使えてません。

転職しようかな・・・