🤔

FlutterエンジニアがAndroid StudioからVSCodeに移行して思っていること

2024/05/26に公開4

はじめに

気づけば学生の頃にFlutterを触り始めてから4年ほど経ちました。
最初に始めた時にAndroid Studioで開発を始めて、周りがVSCode(Visual Studio Code)軽くていいよと言っているのを横目にずっとAndroid Studioを使い続けていましたが、Flutter以外のコードを読んだり書いたりする際にはVSCodeを使っていることもあり、FlutterでもVSCode使った方がいいかもと思って、ここ半年くらいVSCodeで開発をしていました。

確かにVSCodeは一瞬で立ち上がりますし、拡張機能も豊富で便利だなと思うところもある反面、Android Studioだったらここうまくできるのに、みたいなことが溜まってきたので、それを吐き出そうと思います。

もちろんエンジニアにとってエディタについて議論する場合は宗教や政治の話と同じくらい神経を注がなければいけないことを理解してますし、どちらが優れているという話をしたいわけではないです。
どちらかというと、自分目線のVSCodeのつらみをここに記すことで、VSCodeマスターの方に、「いやそれはこうやったらできるよ」みたいなアドバイスがもらえるのでは?という魂胆で書いていますので、くれぐれもどちらがいいとかで争わないで欲しいです。

つらみリスト

1 ほんとに軽いの?
2 Warning見にくくない?
3 unused importグレーアウトして欲しい
4 ファイル保存する時に謎にローディング走って固まる
5 コード保管する時、lowerCamelで書いててもUpperCamelのコード提案してくる
6 フォーカスが当たっているファイルによってビルドするエンドポイント変わる
7 ファイルの保存自動でやってくれ
8 外部での変更をすぐに反映してくれ

1 ほんとに軽いの?

まだ私がAndroid Studioを使っている頃VSCodeを使っている周りのエンジニアからVSCodeの方が軽いから使いやすいと聞いていました。
VSCodeを使い始めてみると確かに一瞬で立ち上がりますし、待ち時間なしでビルドを始められます。
しかしその一方実装中にコードジャンプをしようと思ったらローディングが走ったり、ファイルを新規作成したり保存したりするタイミングでローディングが走ったりして、実装中に待たされることはちょくちょくあるなという印象です。

GPTによるとこれらのIDEはプロジェクトに対してindexを貼っているのですが、Android Studioでは起動時に一気にindexを貼るのに対して、VSCodeは非同期でindexを貼っているため、Android Studioでは起動時にたくさん待たされる代わりに、Coding中に待たされることは少ないようです。
個人的にはこれが一番ストレスなのですが、解消法があれば知りたいです。

2 Warning見にくくない?

これは十中八九設定の問題な気がするのですが、VSCodeではTypoとWarningが同じ色で表示されています。

上がVSCodeで下がAndroid Studio

いやいやと言っていても仕方ないので、設定を変える方法を調べてみます。

原因はVSCodeの場合Flutter analyzeの結果lintの警告がinfoレベルで扱われているようです。おそらくこれをWarningに変えれれば良さそうなのですが、変える方法を見つけられませんでした。

ご存知の方がいらっしゃれば教えてください。。

3 unused importグレーアウトして欲しい

これもAndroid Studioとの比較なのですが、import文について書く必要のない場合Android Studioではグレーアウトされるのですが、VSCodeではこちらもinfoとして扱われているようです。

上がVSCodeで下がAndroid Studio

慣れの問題もあると思いますが、グレーアウトしてる方が不要なimportだから消して良いことが一目でわかります。
こちらも少し調べましたが、設定方法が見つけられませんでした。

4 ファイル保存する時に謎にローディング走って固まる

これありませんか?
そもそも何が起きてるかすらよくわかってないです、、

書き終わってから思いましたが、7の自動保存をONにしたらこれ起きない説ありますね、、そもそもファイル保存を明示的にしないし

5 コード保管する時、lowerCamelで書いててもUpperCamelのコード提案してくる

これも割とよくあります。
そのままエンター押してからわざわざ先頭に戻って小文字に直してます、、

6 フォーカスが当たっているファイルによってビルドするエンドポイント変わる

これは慣れの問題な気がする&この仕様がありがたい時もありそうなので、つらみとしてあげるのは迷いましたが、VSCodeを触り始めた頃によく分かっておらず、アプリをビルドしたいのにテストコードばっかりデバッグした思い出があるので、一応挙げておきます。

7 ファイルの保存自動でやってくれ

と思いましたが、VSCodeの設定からFile → AutoSaveをONにすることで自動で保存してくれました。流石にそれくらいしてくれますね。自動保存機能オフで半年もVSCode使っていた怠惰な自分が悲しい、、

8 外部での変更をすぐに反映してくれ

これはGitのGUIクライアントで変更を元に戻したりしたときにVSCodeでの変更とGUIクライアントでの変更のどっちを取り込むかを委ねてくるのがつらみだったのですが、7のAutoSaveをONにすることでこの問題は起こらなくなったようです。

おわりに

つらみを共有するだけでほとんど解決策を提示できてなくてすみません、、
もしコメントいただいたりこっそり教えていただける方がいたら編集で追記しますので、よろしくお願いします。
もしくは共感コメントとかもいただけたら嬉しいです!

2024年は技術発信も頑張ろうと思っているので、記事が参考になった方はいいねとフォローをしていただけると励みになります!GitHubのフォローも!

https://github.com/miyasic

Discussion

Kosuke SaigusaKosuke Saigusa

3 の unused import はそもそも settings.json に設定しておければ、command + S で勝手に消えるので「グレーアウトしてる方が不要なimportだから消して良いことが一目でわかる」ことすら必要性を感じたことがないです!(むしろ勝手に消してくれないのが Android Studio の不便なところかもと私は認識していて、unused import が原因で CI の analyze でコケるので、Android Studio 派の方のコミット履歴にしばしば fix: remove unused imports みたいなのを見かけたりもする気がします)

例:

{
  "editor.formatOnSave": true,
  "editor.formatOnType": true,
  "editor.rulers": [80],
  "editor.codeActionsOnSave": {
    "source.fixAll": "explicit",
    "source.organizeImports": "explicit",
    "quickfix.insertSemicolon": "explicit"
  }
}

6 の

アプリをビルドしたいのにテストコードばっかりデバッグした思い出がある

については、そもそもアプリを起動したい場合は、そのように設定した launch.json の設定からしか起動しないので問題を感じたことがないかもです👀

4 ファイル保存する時に謎にローディング走って固まる

と、書かれていないけど、ブレイクポイントの赤色がグレーになったり(それでも実は有効だったり)、なんなら勝手にずれたりするのが、ここ最近では VS Code でつらいです...!

みやジックみやジック

コメントありがとうございます!

確かに保存時にunused import消すのも手ですね!自分の記憶が正しければAndroidStudioもその設定はできるのですが、一部のコードをコメントアウトしてデバッグをしようとしたときにimportが消えてしまうのが嫌でオフにしてました!
でも確かにunused importでCIこけることたまにあるので、また設定試してみます!

launch.jsonももうちょっと勉強してみます 🫡

と、書かれていないけど、ブレイクポイントの赤色がグレーになったり(それでも実は有効だったり)、なんなら勝手にずれたりするのが、ここ最近では VS Code でつらいです...!

ブレイクポイントもなんかよくわからない挙動になるのありますね、、