はじめに
数年前にJetBrains製品をプロジェクトに導入しようと画策してた頃を思い出しつつ振り返ってみたいと思います。
ちなみに、プロジェクトは社内向けWebアプリケーションで、事業部門のエンジニアが増えていっている部署での話なので、導入の際に考慮いただければと思います。
導入背景(利用目的)
ツールによる品質向上
特に、無料のツールだけでやっていたメンバーが、
個人で購入したJetBrains製品を使っていたメンバーよりも品質が低かったことがありました。
IDEAを使っていれば防げた些末なミスやイケてないコードが、最終的に品質を担保をする人の目によるチェックからすり抜けてしまうことがありました。
最終的な人の目だけでコードの品質を担保するのは難しいため、開発中の段階から品質を上げるために必要だと考えています。
コードを書いた際に「お前のコード、イケてないんじゃね?」と教えてくれる機能がついています。
実はこの機能は、初めてプログラミングしたり、途中からプロジェクトに参加した人が扱うと、その指示に従うだけで、品質を管理している人の目に頼らなくても大丈夫という優れものです。
また、IDEAが教えてくれるコードを書き続けることで、イケてないコードを書かないトレーニングにもなります。
さらに、過去のイケてないコードも指摘してくれるので、指摘箇所を改善し続けることで品質を上げることが出来ます。
そのほかにもコードを書く際にサポートしてくれる機能が豊富なので、私自身は手放せないツールの一つになっています。
ツールによる開発効率の向上
システムを構成しているアプリケーションを開発している言語は現在以下の通りです。
PHP: 社内向けのWebアプリケーション本体
Scala: バッチ処理
JavaScript(TypeScript): 社内向けWebアプリケーションのフロントエンド部分
SQL: バッチ処理やデータ抽出処理等
Python: 予測機能等
これらの開発を行う際に無料のツールを使い分けていたり、個人で購入したJetBrains製品を利用していたりと、バラバラでした。
また以前にも別のチームで個人で購入されていました。
過去3年間社内向けWebアプリケーションに関わった開発メンバーを振り返ってみると、特にPHPとJavaScriptについては、
無料のツールを使っているメンバーとJetBrains製品を使っているメンバーの開発スピードがはっきり違っていました。
個人の感想ではありますが、初めてPHPとJavaScriptを扱った際に、JetBrains製品が無ければ、開発はもっと遅かっただろうと思います。
おそらく、他の言語をやっていたとしても新たにPHPを初めて触るであろう人についても、同じことがいえると思います。
また、言語ごとにツールを使い分けていると、そのツールごとの使い方を覚える必要があり、
ツールを教えられるメンバーがいなかったりすると、そのツールの使い方を調べるだけで時間がかかったりするので、
開発中でもその時間が持っていかれたりします。
また、スキルの高い人であればより効率的に開発することが出来るので、
品質の高い開発を素早く行うことで、より速いPDCAを回せるようになると思います。
導入プラン
- 案1: 全員がAll Products Packを使う場合
- 案2: 全員がIntelliJ IDEAにそろえた場合
- 案3: 各個人が利用したいツールを指定した(ツールの切り替えは考慮しない)場合
個人的には、案1を推しますが、もしダメな場合は案2が望ましいと考えています。
案3については、人員の流動性を考えた場合、ライセンスが無駄になる可能性があるので、
最低でも無駄になりにくいオールマイティな案2を推します。
一人当たり月数千円程度で、品質、効率を上げられるなら安いです。
他社事例
IIJさんがIntelliJ IDEAとEclipseの比較と導入成果について発表していた事例がありました。
また、ReSharperになりますが、gloopsさんの事例がありました。
効果測定
効果測定については、どちらの事例からもうかがうことが出来なかったので、なかなか難しいとは思います。
一つの案としては、月にツールの指摘による改善の時間が全体の開発にかかった時間と比較して、
どれくらいの割合で推移していくのか見るのがいいのではないかと思います。
改善が進めば、割合は減っていくと思いますし、その場合開発スピードや成果物を評価することで、相対的に計測は可能かと考えています。
福利厚生として
金額がやはりそれなりするものではありますが、エンジニアの採用の際に「うちはIDEAを会社で買って支給してるよ」というアピールが出来るので、エンジニアの開発環境にも力を入れていると認識してもらえます。
おわりに
今はAll Products Packを開発メンバー全員に支給しています。
おかげさまで、無事導入出来て日々の開発がかなり楽になったので、今後導入を考えているところの参考になればと思います。