MATLAB ユーザーコミュニティー

MATLAB & Simulink ユーザーコミュニティー向け日本語ブログ

Visual Studio Code の公式 MATLAB Extension リリース

※この投稿は 2023 年 4 月 26 日に The MATLAB blog (Mike Croucher) に投稿されたものの抄訳です。


Visual Studio Code には一目惚れした派です。カスタマイズ性が高くて使いやすく、3 つの主要な OS すべてに対応。いろんなエディタを使用していた私が、すぐに MATLAB の Editor とVisual Studio Code の 2 つだけを使用するようになりました。

MathWorks、Visual Studio Code 用のMATLAB Extension をリリース

さっそく本題:MathWorks 公式の MATLAB Extension が Visual Studio Marketplace から入手できるようになりました。GitHub(https://github.com/mathworks/matlab-extension-for-vscode)でも確認してもらえます。
後で詳しく説明しますが、この拡張機能は 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 を押すと、マウスまたはキーボードを使用して選択できるリストが表示されます。

code_snippet1.gif
また、キーボードで入力してから関連するスニペットを選択することもできます。
code_snippet2.gif
コメントアウトしたい行の任意の場所にカーソルを置いた後、CTRL(Mac では Command)と / で行をコメントアウトすることができます。また、テキストの一部を選択し、CTRLと / を使用すると、そのすべてにコメントを付けることができます。
commenting.gif
コードの折りたたみもコードが長くなってくると便利ですね。
coldfolding.gif

高度な機能(MATLABのインストール必要)

MATLAB R2021a 以降をインストールされている方は、MATLAB と連携しより多くの機能を利用することができます。例えば、以下のようなものがあります:
  • 自動コード補完機能
  • ソースコードのフォーマット(文書の書式設定)
  • コードナビゲーション
  • コードチェックや自動修正などのコード解析
私のお気に入りの機能は、MATLAB Editor を使用する際に非常に頼りにしているコード解析です。Visual Studio Code でもこの機能を利用できるのは嬉しいです。コード解析機能はコードについてアドバイスしてくれます。例えば、下の例ではもう推奨されていない古い MATLAB のコードから何かをコピー&ペーストしています。
code_analyze.gif
コードアナライザーはこれを認識し下線を引いてくれます。下線の上にカーソルを置くと、理由を教えてくれ、どうすればよいかを提案してくれます。
またコード補完の動作も見ることができます。rngと入力すると、関数のシグネチャが rng(seed,generator) であることが表示され、入力し続けると generator の可能なオプションが表示されました。この作業には、ヘッドレスの MATLAB がバックグラウンドで実行されている必要があります。デフォルトでは、拡張機能の起動と同時に起動しますが、拡張機能の設定で制御することができます。この機能を必要としない場合は、完全にオフにすることも可能です。

バージョン 1 の拡張機能には何が足りない?

バージョン 1 では、Visual Studio Code で MATLAB コード編集体験を提供することに重点を置いています。そのため、MATLAB コードを実行する機能やデバッグのサポートなどは含まれていません。もちろんこれらのことは視野に入れています。このプロジェクトはまだ始まったばかりで、もし何か欲しい機能、足りない機能があれば、GitHub で issue を作成して教えてください。

プルリクも Welcome

この拡張機能のソースコードは GitHub で MIT ライセンスの下で公開されていますが、ソースコードの一部が.pファイルの形式になっており、設計上人間が読むことができないことにお気づきかもしれません。これは、これらのファイルが内部 API を使用しているためで、まだ公開する準備ができていません。今後、これらの API について文書化し、.p を .m に置き換えていく予定です。
コミュニティと協力してこの拡張機能を開発していきたいという目的があります。プルリクもお待ちしています。プロセスの詳細は、GitHub リポジトリの Contributing.md ファイルに記載しています。

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

新しい Jupyter Kernel に続いて、新しい Visual Studio Code Extension が登場しました。使ってみて・遊んでみて、感想を聞かせてください!

|
  • print

Comments

To leave a comment, please click here to sign in to your MathWorks Account or create a new one.