Visual Studio Code には一目惚れした派です。カスタマイズ性が高くて使いやすく、3 つの主要な OS すべてに対応。いろんなエディタを使用していた私が、すぐに MATLAB の Editor とVisual Studio Code の 2 つだけを使用するようになりました。
MathWorks、Visual Studio Code 用のMATLAB Extension をリリース
後で詳しく説明しますが、この拡張機能は Visual Studio Code で MATLAB コードを簡単に編集・開発する機能を提供します。MATLAB ユーザーがいろんな環境で MATLAB を使えるようにすることを目的としたプロジェクトの一環です。Visual Studio Code を利用する MATLAB ユーザーは多くいますので。
今回リリースしたのは version 1 で、今後も機能拡張は進める予定です。ですので、使用してみた感想・フィードバックはいつでも welcome です。技術的な問題が発生したり、機能強化の要望がある場合は、
GitHub で issue を作成してご連絡ください。
さて、それでは早速詳細を見てみましょう!
VS Code 用 MATLAB Extension の特徴
拡張機能には、MATLAB がインストールされているかどうかにかかわらず動作する基本機能と、MATLAB を必要とする高度な機能があります。
基本機能(MATLABは不要)
以下の基本機能は MATLAB のインストール無しでも機能します。
- シンタックスハイライト
- コードスニペット
- コメント
- コードの折りたたみ
Visual Studio Codeの言語拡張に期待される最もシンプルなものは、シンタックスハイライトです。下の図は、Dark Modeで動作するVisual Studio Codeで、MATLABのクラス定義が、拡張機能を有効にした場合(下)としない場合(上)の両方でどのように表示されるかを示しています。
Visual Studio Code のコードスニペットは、for ループ、関数定義、条件ブロックなど、一般的なコードパターンのためのテンプレートです。コードスニペットは、コードを書くときに必要なキーストロークの数を減らすことができるだけでなく、使うプログラミング言語を行ったり来たりして、基本構文がこんがらがっちゃう場合にも便利なツールです。
MATLAB extension は、コードスニペットのセットをサポートしており、将来的にはさらに追加することができます。CRTL と Space を押すと、マウスまたはキーボードを使用して選択できるリストが表示されます。
また、キーボードで入力してから関連するスニペットを選択することもできます。
コメントアウトしたい行の任意の場所にカーソルを置いた後、CTRL(Mac では Command)と / で行をコメントアウトすることができます。また、テキストの一部を選択し、CTRLと / を使用すると、そのすべてにコメントを付けることができます。
コードの折りたたみもコードが長くなってくると便利ですね。
高度な機能(MATLABのインストール必要)
MATLAB R2021a 以降をインストールされている方は、MATLAB と連携しより多くの機能を利用することができます。例えば、以下のようなものがあります:
- 自動コード補完機能
- ソースコードのフォーマット(文書の書式設定)
- コードナビゲーション
- コードチェックや自動修正などのコード解析
私のお気に入りの機能は、MATLAB Editor を使用する際に非常に頼りにしているコード解析です。Visual Studio Code でもこの機能を利用できるのは嬉しいです。コード解析機能はコードについてアドバイスしてくれます。例えば、下の例ではもう推奨されていない古い MATLAB のコードから何かをコピー&ペーストしています。
コードアナライザーはこれを認識し下線を引いてくれます。下線の上にカーソルを置くと、理由を教えてくれ、どうすればよいかを提案してくれます。
またコード補完の動作も見ることができます。rngと入力すると、関数のシグネチャが rng(seed,generator) であることが表示され、入力し続けると generator の可能なオプションが表示されました。この作業には、ヘッドレスの MATLAB がバックグラウンドで実行されている必要があります。デフォルトでは、拡張機能の起動と同時に起動しますが、拡張機能の設定で制御することができます。この機能を必要としない場合は、完全にオフにすることも可能です。
バージョン 1 の拡張機能には何が足りない?
バージョン 1 では、Visual Studio Code で MATLAB コード編集体験を提供することに重点を置いています。そのため、MATLAB コードを実行する機能やデバッグのサポートなどは含まれていません。もちろんこれらのことは視野に入れています。このプロジェクトはまだ始まったばかりで、もし何か欲しい機能、足りない機能があれば、GitHub で issue を作成して教えてください。
プルリクも Welcome
この拡張機能のソースコードは GitHub で MIT ライセンスの下で公開されていますが、ソースコードの一部が
.pファイルの形式になっており、設計上人間が読むことができないことにお気づきかもしれません。これは、これらのファイルが内部 API を使用しているためで、まだ公開する準備ができていません。今後、これらの API について文書化し、.p を .m に置き換えていく予定です。
Thank you Xavier Hahn!
コミュニティというテーマでは、50 万インストールを超える Visual Studio Code 用の MATLAB Extension をメンテしてきた Xavier Hahn に賞賛を送りたいと思います。最近、彼はさらに開発する時間を割くことができず、一部のユーザーは MathWorks が介入することに興味を示していました。
“なぜ新しいものを作るのか? Xavier のプロジェクトを引き継がないのか?” という声が聞こえてきそうです。いい質問です。このプロジェクトが社内で発表されたときに私もそう尋ねました。それに対する答えは、異なるアーキテクチャを採用することを選択したからです。私たちの Extension は、Microsoft の Language Server Protocol(LSP)を活用しています。これにより、LSP インターフェイスを通じてプラグイン可能な言語サポートを提供する IDE 間で再利用可能な
MATLAB language server が実現します。
Xavier とは移行について話し合いましたが、彼は自身のユーザーにこの新しい Extension に移行するよう勧めて、自身のプロジェクトを非推奨とすることを決めました。Xavier さん、長年にわたるサポートとビジョンに感謝します。MATLAB ユーザーの間で彼のプロジェクトが成功しなければ、この非常に人気のある IDE をサポートするという考えを受け入れることはなかったでしょう。
Over to you
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.