kick the base

Houdiniと、CG技術と、日々のこと。

第26回DTPerのスクリプトもくもく会に参加してきたよ

こんにちはめんたいこです。アドベントカレンダーの季節ですね。皆さん準備はよろしくて?

僕は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

vim-easy-align

=で整列したとこと|で整列したとこの動画。

GitHub Copilot

GitHub Copilot is 何

機械学習でコード補完してくれるでウワサのあいつです。これもそこそこ前に話題になったやつなのですでに試した方も多いのではと思います。ちなみに僕はライセンスの懸念(念の為)と生成されるコード品質を鑑みて業務用のマシンには本機能拡張は入れていません。あくまで技術検証的な立ち位置ということで。

ライセンスもコード品質も業務で使える形でクリアされたら、個人的にはPythonで利用することになりそうです。そこらへんも雑感で後述します。

copilot.github.com

使用感

割といい。というのがファーストインプレッションです。詳しくは動画をご覧ください。

雑感

機械学習ベースなので学習リソースの量がそのままコード品質に直結するというのが特徴(デメリット)。僕がメインで書く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のお供に。

carbon.now.shを使用してTweetしたところ↓

Polacode

コードをいい感じにスクショしてくれる機能拡張。画像を保存できるので便利。

Polacode - Visual Studio Marketplace

Fontについて

気分でプログラム用フォントを変更してみました。白源 (はくげん/HackGen) というやつです。いつもはRicty使ってるのですが、こちらも良いフォントでしたよ。ホントに。

github.com

JXAについて

JXA(JavaScript for Automation)を勉強したいという方がいたので下記URLを共有しました。

azu.github.io

JXAはAppleScriptのJS版なのですが、まともなリファレンスや参考資料がないことで有名です。なので逆転の発想でリファレンスから型定義を生成し、TSで書けば型情報から補完が効いて書きやすくなるだろうという記事になります。

僕がTSでJSX(こっちはAdobe ExtendScriptのお話ですね。ややこしいw)を書いていたのも型定義ファイルからバリバリ書けるから、という理由でした。思い起こせば5年前にドリコム様にてブログを書かせていただいたことがあるのでそちらも記載しておきます。*3

tech.drecom.co.jp

まとめ

というわけでDTPerもくもく会、今回もとても楽しく参加させていただきました。個人的にはゴリゴリAdobe系のツール開発をする現場からは離れて久しいですが、色々な立ち位置の方とお話をするのは非常に良い刺激を得られます。参加者の皆様に感謝とともに、興味がある方はぜひご参加させていただくと面白いと思います!

参考サイト

zenn.dev

zenn.dev

www.itmedia.co.jp

dtpmkmk.connpass.com

*1:もちろんこのコードであれば全く問題なく動きますし、layer.nameがstring以外で渡ってくることはないので良いのですけど、「多くの人が書いているコードが出てきてしまう」という意味です。

*2:これは半分冗談で、以前はぼくもJSX用にTypeScriptなどで開発環境を整えていましたがAdobeの拡張機能開発においてそこまで規模の大きい開発をすることがあまりないのでES3で書いちゃえばいいやってのは正義だと思います

*3:今見返したらまだEmacsをメインのエディタにしてた頃ですね。懐かしい…