なぜAndroid StudioからVSCodeに切り替えたのか
単純に軽い動作環境で開発をしたかった、というところが大きいです。Android Studioはそれなりのマシンパワーを要求されるという面があり、個人としては自分の予算次第ではスペックの良いマシンを使って、不自由なく開発出来ると思います。
しかし参画した案件で、あるいは入社した会社で必ずしも最新のPCがお借り出来るとは限りません。そういう場合でも快適に開発出来るのではと、VSCodeに対して関心が高まりました。
実際に切り替えてみて良かったところ
やはり動作は軽快、しかし補助機能は充実している
VSCodeはやはり起動も早いところが魅力です。ざっくりですが、Android Studioの時はまずAndroid Studioを開いた時に長い読み込み時間があり、その後ビルドすることになるので、2回待つような感覚がありましたが、VSCodeだと待つのはビルド時のみ、という感覚です。
実際に切り替えてからは、実はコードの補完などもしっかり充実しており、flutterで頻繁に行う、Widgetを別のWidgetで囲ったり、削除する「Wrap this Widget」や「Remove this Widget」などの機能はVSCodeでもしっかり実現されています。それでも切り替えた当初はAndroid Studioよりはコード補完が弱い気がしたのですが、少し慣れてしまえば特にそういったこともない気がします。
またFlutterのエコシステム的にもFlutterの公式ドキュメントにVSCodeでの環境構築の項目があるのはもちろん、例えばFlutterの状態管理ライブラリのRiverpodの公式ページにもriverpod用のスニペット拡張機能が紹介されていたり、VSCodeはFlutter開発においては、Android Studioと同じく公式推奨であるといえます。
Method Channelなどを書く時にエディタの切り替えが不要
Flutterにおいて、やはり様々なパターンでiOS/Androidのコードを呼び出す必要があります。Android Studioで開発をしていたときは、SwiftやKotlinを書く際にAndroid Studioを開き直したり、XCodeを開いたり、切り替えが目まぐるしいと思っていました。
VSCodeに切り替えてからは、SwiftやKotlinの補完も効くので、SwiftやKotlin書く必要があるときも特にエディタを開き直したりすることなく、開発ができるようになりました。
※とはいえ、私はSwiftやKotlinに関しては1から調べつつ、何とか書いているような感じなので、これらの言語に慣れていて、XCodeやAndroid Studioで開発をされてきた人からすると貧弱に感じることや、物足りないところがあるかもしれません。
ターミナルを中心にした開発が心地良い
ここは少し余談で、そもそもVSCode自体の話とは少し違うのですが、VSCodeに切り替えてからは自然とターミナルを中心にした開発スタイルになりました。
(Android Studioの中でもターミナル操作したり出来るのですが、VSVodeの軽快さにさらに後押しされた気がします)
以前、シェルをfishを使うようになった記事を書きました。こういったコマンドの補完が有効なシェル環境は大事です。
fishに限らずzshでも良いのですが、エディタにコマンドの補完が効く状態にしておくことは大切かな、と思っています。今はプロジェクトファイルを開くのもシェルからVSCodeを起動して、ビルドもシェルから実行していますが、シェルのコマンド入力で補完が有効になっているのと、いないのとでは、VSCodeにスイッチ出来るか出来ないかの分かれ目にもなると思います。(補完無しでのコマンド入力は厳しい)
最近はFlutterの頻繁なバージョンアップ対応の調査のためなど、Flutterバージョン管理ツールのfvmを利用しています。
fvmでFlutterバージョンアップして試しにビルドしてみる、などといったことが気軽に試せるようになりました。
fvmを導入すると、例えばfvm flutter clean
、 fvm flutter run --device-id <デバイスID>
というようにコマンドの最初にfvmをつける必要があります。以前はこれが嫌でfvmは使わないようにしていたのですが、シェルの補完と組み合わすことで気にならなくなりました。
あと結構細かい話だとrunもコマンドで実行すると、プロジェクトなどによっては、設定されているdart-defineをしっかり意識できます。
まとめ
結論としては、これからもFlutter開発はVSCodeでやっていこうと思います。
私自身、Android Studioもかなりお気に入りのツールで、Gitの操作もほぼ全てAndroid Studioでやるほどだったのですが、fvmでのFlutterバージョン切り替え、FlutterではSwiftやKotlinのコードも確認したり書いたりする必要がある、あたりが決め手になった感じがします。
いきなり完全にスイッチできた訳ではなく、最初は慣れずAndroid Studioに何回か戻ることもありました。一応何となく環境だけ作ってみて、合わなければAndroid Studioに戻るのもアリだと思います。
VSCodeへのスイッチの挫折ポイントはターミナルの操作に慣れないなどもあると思っていて、場合によってはターミナルだとログを見るのもままならない場合もありそうです。とはいえFlutterはbuild runnerコマンドでのコードの生成などが必要だったり、ターミナルと仲良くなっておいて損はない気がします。