こんにちはめんたいこです。アドベントカレンダーの季節ですね。皆さん準備はよろしくて?
僕はHoudini Advent Calendar2021に参加させて頂いてるのですが、12/6の担当日はすでに予約投稿済みなので圧倒的勝者です。
閑話休題。
今回は久しぶりにDTPerのスクリプトもくもく会に参加させていただきました。
ぼくはDTPerでもなんでもないのですが強い心で参加しています。皆さん本当にお優しくてありがたい限り。
いち参加者である僕がいくらなんでもDTPに全く関係ない勉強だけするわけにも行かないので、今回は下記を目標に取り組みました。良い進捗が出せたのでご興味がある方はどうぞ。
- Neo Vim (VSCode Neovim)のセットアップ
- GitHub CopilotでExtendScriptを書くとどこまで補完されるのか検証
今回の開発環境
項目 | 内容 |
---|---|
OS | macOS Big Sur(11.6) |
マシン | MacBook Air(M1, 2020) |
エディタ | VSCode 1.62.3 |
Neo Vim | NVIM v0.5.0 |
Neo Vim (VSCode Neovim)
VSCodeのセットアップについてのお話です。
Neo Vim (VSCode Neovim) is 何
今までのVSCodeのVimキーバインド系機能拡張を過去のものとする、決定版的なやつです。以前の機能拡張と比べどこが違うかというと、裏側で本物のVimインスタンスが動くというところです。エミュレータを頑張って実装してるわけじゃないんですね。テキストエディットをNeo Vimが、レンダラ(ビューワ)をVSCodeが担うようなイメージだとわかりやすいかもしれません。もちろんVSCodeで動かない機能もありますが、そこはよしなに手を加えていきましょう。しかし、Neo Vimで入れてるプラグインが普通にVSCode上で動く様は感動しますよ。
セットアップに関しては割と皆さん書かれているので割愛しますが、ぼくは特に問題なく導入できました。
プラグインの動作確認
時間の関係で2つだけ確認しました。問題なく動いてますね。
vim-surround
vscode-neovimの挙動確認。
— めんたいこ (@kickbase) November 27, 2021
nvim側のvim-surroundも正しく動作している。https://t.co/o0V6zQ5JDp#dtpscriptmkmk pic.twitter.com/Ja4ggYbUny
vim-easy-align
=
で整列したとこと|
で整列したとこの動画。
vscode-neovimの挙動確認。プラグインもちゃんと動く。https://t.co/K7r2AlgiB0#dtpscriptmkmk pic.twitter.com/CbI7E6qdSC
— めんたいこ (@kickbase) November 27, 2021
vscode-neovimの挙動確認。こちらは|で整列したところ。https://t.co/K7r2AlyrP8#dtpscriptmkmk pic.twitter.com/50VPjL8aEm
— めんたいこ (@kickbase) November 27, 2021
GitHub Copilot
GitHub Copilot is 何
機械学習でコード補完してくれるでウワサのあいつです。これもそこそこ前に話題になったやつなのですでに試した方も多いのではと思います。ちなみに僕はライセンスの懸念(念の為)と生成されるコード品質を鑑みて業務用のマシンには本機能拡張は入れていません。あくまで技術検証的な立ち位置ということで。
ライセンスもコード品質も業務で使える形でクリアされたら、個人的にはPythonで利用することになりそうです。そこらへんも雑感で後述します。
使用感
割といい。というのがファーストインプレッションです。詳しくは動画をご覧ください。
GitHub CopilotでAdobe Extend Script。
— めんたいこ (@kickbase) November 27, 2021
1行目のコメントからTAB連打でこれが生成されるのはなかなか。#dtpscriptmkmk pic.twitter.com/K00PNKSdJn
GitHub CopilotでAdobe Extend Script。(例としてIllustratorのスクリプト)
— めんたいこ (@kickbase) November 27, 2021
「layer」をサジェストされているときに「layers」と入力すると保管される右辺がdoc.layersオブジェクトになるところが好感触。
loopの処理もわかってる感。
適正な変数名をつける練習にも良さそう。#dtpscriptmkmk pic.twitter.com/0F0LI9Hrqn
GitHub CopilotでExtendScript。静的構造補完ではないのでうろ覚えのコードも補完できるのがメリットのひとつ。#dtpscriptmkmk pic.twitter.com/wqXV0lZ0Ac
— めんたいこ (@kickbase) November 27, 2021
雑感
機械学習ベースなので学習リソースの量がそのままコード品質に直結するというのが特徴(デメリット)。僕がメインで書くVEXなどはユーザーが少なすぎてサポートすらされていない。
例えば生成されたコードにlayer.name == "Layer 1"
が出てきますが、厳密等価演算子使ってないあたりに闇を感じざるを得ないですね。*1
そもそもGoogleのサービスや機械学習は数が多いものは正しかろうという思想が色濃く出ると思うので、本当に正しいかどうかはユーザーがきちんと判断する必要があるでしょう。また当然ながら実際のコードを学習リソースにしているので、var
とか久しぶりに見かけて実に優しい気持ちになれますね。ええ。*2
しかし、それを置いても「多くの人が使っている命名規則」や「生成されたコードによって自分の能力を超えた出力に出会える」という意味で、慣れていない言語や初学者の学習には良いかもしれないなと思いました。
VSCodeのオススメ機能拡張紹介
もくもく会の題材とはそれますが、便利なやつをポスト。
carbon-now-sh
Carbon | Create and share beautiful images of your source codeというコード共有サービスをVSCodeから呼び出すことができる機能拡張です。Twitterのお供に。
VSCodeからhttps://t.co/XDTnuYY2UAを呼び出すことができる機能拡張https://t.co/cFp38c3w7bhttps://t.co/PiVkxb3AUD#dtpscriptmkmk pic.twitter.com/nX4m8nrx0V
— めんたいこ (@kickbase) November 27, 2021
carbon.now.shを使用してTweetしたところ↓
Created with @carbon_app pic.twitter.com/RJ0dlbhX5j #dtpscriptmkmk
— めんたいこ (@kickbase) November 27, 2021
Polacode
コードをいい感じにスクショしてくれる機能拡張。画像を保存できるので便利。
Polacode - Visual Studio Marketplace
Fontについて
気分でプログラム用フォントを変更してみました。白源 (はくげん/HackGen) というやつです。いつもはRicty使ってるのですが、こちらも良いフォントでしたよ。ホントに。
JXAについて
JXA(JavaScript for Automation)を勉強したいという方がいたので下記URLを共有しました。
JXAはAppleScriptのJS版なのですが、まともなリファレンスや参考資料がないことで有名です。なので逆転の発想でリファレンスから型定義を生成し、TSで書けば型情報から補完が効いて書きやすくなるだろうという記事になります。
僕がTSでJSX(こっちはAdobe ExtendScriptのお話ですね。ややこしいw)を書いていたのも型定義ファイルからバリバリ書けるから、という理由でした。思い起こせば5年前にドリコム様にてブログを書かせていただいたことがあるのでそちらも記載しておきます。*3
まとめ
というわけでDTPerもくもく会、今回もとても楽しく参加させていただきました。個人的にはゴリゴリAdobe系のツール開発をする現場からは離れて久しいですが、色々な立ち位置の方とお話をするのは非常に良い刺激を得られます。参加者の皆様に感謝とともに、興味がある方はぜひご参加させていただくと面白いと思います!