LLMの技術的成果が日に日に突きつけられて喉元まで迫っているのを感じる今日この頃、さすがにろくに使いこなせないのでは困るため、ついにGitHub Copilotを試すことにした。LLMを応用した検索エンジン(perplexity.ai )は以前から使っていたが、開発環境と密に統合されるとどんな具合になるのかはやはり気になるところである。僕の開発環境はNeovimなのでそれに合わせてCopilotを設定していく。GitHub Copilotは最低月額10ドルからのサブスクリプションサービスなのだが、契約完了時に送られてきたクイックガイドにNeovim向けのものがあったのには少々驚かせられた。大抵Vim向けの設定は各々が手弁当で勝手に生やしている印象が強かったからだ。なんならNeovimのプラグインも公式で用意されている。
ようやくSwiftに馴染んできたと思ったら次の案件はFlutterだと言う。まだ具体的な時期は決まっていないが今年中の話には違いない。面接で「あらゆる技術領域にチャレンジしたい」などと自信満々にアピールしたことがボディーブローのように効いてきている。とはいえ、良い話もある。SwiftでのiOSアプリ開発はXcodeの使用が絶対条件だがFlutterはVimで書ける。Xcodeを使うとしたらビルド周りの設定をする時だけだ。その上、よほど込み入った作りでなければ共通のコードでAndroidアプリも開発できるため受託側としては工数が少なく非常に都合が良い。いちコーダーとしては、単純なモバイル案件は全部FlutterかReact Nativeで受ければいいじゃんと感じてしまうがそうもいかない事情があるのだろう。
転職して約一ヶ月。予想に反してiOSアプリ開発案件にアサインされたため業務時間中は常にMacを使っている。皆さんもよくご存知の通り、iOSアプリの開発にはMacが必須だからだ。リモートワークでは貸与されたMacを使うし、実機検証用のiPhoneも傍らに置いてある。半分Appleアンチで知られる僕も今やすっかり林檎林檎している。じきに取り囲まれて林檎シロップ漬けと化すことだろう。さて、しかし業務時間が終わればもはやこっちのものである。退勤報告をぶち上げた直後に即ディスプレイの入力を切り替えればそこは僕の庭だ。Macの方でもなんとかタイル型WMの挙動を再現できないかとyabai を入れてみたり、なるべくCommandキーを使わないショートカット体系を目指してみたりと試行錯誤しているものの、どうしたって自分の手に馴染んだ環境は他と代えがたい。
フレームワークを用いたJavaの開発案件をVimのみでこなすのは少々厳しい (いや、こうすればうまくやれるとの案があれば教えてほしい! 切実に!) ので、IntelliJ IDEAにIdeaVimを入れてなんとかする。文脈から明らかな通り、IdeaVimとはVimっぽい操作体系を実現するためのプラグインである。とはいえこれでVimの操作感を十分にエミュレートできるのか、と言われればやはり難しい。そもそも「Vimの操作感」とはVim単体のみならずプラグイン群と独自の設定を含めた個々人に固有の環境を指すため、他のソフトウェアがどんなに頑張ったところでVimでなければVimではないというのが正直な感想だ。しかし僕はプロのグラマーであり、過度の公私混同はプロフェッショナルに反する。