TabNineをしばらく使ってみて感じたメリデメの話
最近,YouTubeとかでよく TabNine ってツールの広告が出てたんですよ.YouTubeプレミアムじゃないのかって?そのうち入る.
ページタイトルにもあるとおり,機械学習を使ったコード補完ツールとのこと.なんと対応エディタが幅広く,調べた感じ無料版でもそこそこ使えるようす.
最初はちょっと気になる程度だったんですが,あまりにも広告が出てくるので「そんなに使ってほしいなら乗ったるか〜〜〜〜」って感じで導入してみました.
当方環境Android Studio,最近ずっとFlutterしかやってないのでDartコードを補完し続けて思ったことを書いていきます.
メリット
宣伝どおり,結構強力に,しかも空気を読んで補完してくれます.
わかりやすい例↓
https://gyazo.com/a62d92219e964cf8083eb589a0ff14eb
特に強力なのが同じファイルで大体同じような記述が並ぶ例(まさに上みたいな)で,数文字打っただけでこのようなサジェストをしてくれます.
速度的にもかなり早く,これは確かに便利だなと思いました.
また,例えばfor文などの頻出するイディオムも,変数を汲み取って補完してくれたりします.
あと実質言語関係なく汎用的に使えるのもいいですね.自分は導入してからここまであんまり使い込めてないと思いますが…
デメリット
Android Studio他Jetbrains製 IDEにはLive Template,VSCodeにはsnippetという風に,エディタによってはテンプレを登録しておける機能があります.
自分の場合,Flutterでよく使う表現はLive Templateに登録してるのですが,これを頻繁に使おうとするとTabNineとの相性は良くないです.
https://gyazo.com/4499926fba061ea89cd40e7508784d5b
右に説明が書いてるのがLive Templateの項目なんですが,このようにTabNineの候補が常に優先されて出る仕様のおかげでテンプレを呼び出すのに手間が増えました.
また,自動でimport文を追加する機能なども効かないです.ファイルをまたいで補完してくれるまではいいものの,importを足すために逐一Alt+Enterしないと行けなかったりしてちょっと大変…
後これは言語によりけりだと思いますが,もともとエディタのプラグインでサポートが優秀な言語には向かないかもしれないと思いました.Dartの場合,サジェストで出る関数を適用すると,引数がマストの場合は選択状態で仮引数を表示してくれて,そのままTab移動で入力できるっていうサポートがあるのですが,TabNineはそこまではカバーできません.
---
そんなわけで,TabNineを導入うしてしばらく使ってみたらいい点とよくない点が見えてきたっていう話でした.自分はしばらく外そうかなと思っていますが…(上に書いたとおりDartとの相性があまり良くないため)
ユースケースによってはかなり有用だと思うので,おすすめはできます.ぜひぜひ.