bio_img_japan-community

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

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

MATLAB R2025a 最新情報 — これだけは知っておきたい新機能

※この投稿は 2025 年 5 月 16 日に The MATLAB Blog へ 投稿されたものの抄訳です。
2024 年のMathWorks 創立 40 周年を経てリリースされた最初のバージョンである MATLAB R2025a は、私にとってユーザーとしても MathWorks の一員としても、これまでで最大規模のリリースと言えるかもしれません。新機能の幅広さと奥深さには圧倒されそうで、このような概要ブログの書き出しとしてどこから始めればよいか迷ってしまうほどです。
このブログ記事では、私自身が特に注目したハイライトを簡単にご紹介します。新機能は数百(数え方によっては数千)にも及び、とてもすべてをここで取り上げることはできません。すべての詳細はぜひリリースノートをご覧ください。また、今後さまざまなブログで新機能の詳細な解説が投稿される予定ですので、そちらもお見逃しなく。

新しくなった MATLAB デスクトップ

デスクトップ版の MATLAB を起動してまず最初に気づくのは、見た目が刷新されていることです。これまで使われていた Java ベースの旧デスクトップは廃止され、代わりに JavaScript や HTML などを使った、よりモダンなデスクトップに生まれ変わりました。
すでに何百万人もの方にとっては馴染み深いものかもしれません。というのも、この新しいデスクトップは、数年前から MATLAB Online で採用・開発されてきたものと同じだからです。また、この新デスクトップは、ここ 2 年以上にわたってベータ版のアドオンとしても提供されており(例:2023年3月のブログ記事でも紹介しました)、これまでに何千人ものユーザーからフィードバックをいただいてきました。MathWorks 社内には、それらすべてのフィードバックに目を通し、分析したメンバーもいます。新しいデスクトップについて貴重なご意見をお寄せくださった皆さん、本当にありがとうございました!
そして今回から、MATLAB Online とデスクトップ版 MATLAB が同じモダンなコードベースを共有することになり、今後は新機能をよりスピーディーに皆さんへお届けできるようになります。最先端のツールへの早期アクセス、よりスムーズなワークフロー、そしてより頻繁なアップデートにより、技術計算の最前線を走り続けられる環境が整います。
それでは、このリリースですでに実現されたデスクトップの新機能を、いくつか簡単にご紹介していきましょう。

ダークモードとアクセシビリティの向上

この機能については、2年以上前に新しいデスクトップの最初のベータ版が登場した際に紹介しましたが、今回ついに正式版の MATLAB デスクトップにも搭載されました。MATLAB Online で何百万人ものユーザーがすでに利用しているように、デスクトップ版でも目に優しいダークモードが使えるようになったのです。設定方法については、[デスクトップのテーマと色の変更]のページをご覧ください。
アクセシビリティの面でも、これまで R2024b でベータ版として提供されていた機能が、今回のリリースで正式に製品へ統合されました。スクリーンリーダーを使って以下の操作が可能になっています。
  • コマンドウィンドウでの作業
  • MATLAB デスクトップツール間の移動
  • エディターやライブエディターでのファイル作成・編集
詳しくは、ドキュメントの[Accessibility in MATLAB]をご覧ください。

新しいデスクトップの「サイドパネル」と「ドキュメント」

新しい MATLAB デスクトップでは、ツールストリップの下に表示されるものは、すべて「ドキュメント」または「サイドパネル」(あるいはその両方)として整理されています。ざっくり言うと「ドキュメント」は作業エリアを指し、たとえば .m ファイル、グラフィックス図(figure)、ライブスクリプトなどが該当します。「サイドパネル」は作業をサポートする補助ツールで、以下のようなものが含まれます。
  • ファイルパネル(旧「現在のフォルダー」ブラウザーに相当)
  • テストブラウザーパネル
  • デバッガーパネル
デスクトップのカスタマイズ方法など、詳細はドキュメントの[デスクトップの構成]ページをご参照ください。私自身による新しいデスクトップのツアー記事も、近日中に公開する予定です。

フィードバックをお聞かせください

この新しいデスクトップについて、きっと皆さんからのご質問やご意見があると思います。私たちは、それにしっかりとお応えしていきたいと考えています。フィードバックを送る方法はいくつかあります:
ぜひ、あなたの声を聞かせてください。

新しい Figure コンテナとツールストリップ

これまでの MATLAB では、Figure ウィンドウは新規作成されるたびに、個別のウィンドウとして開かれていました。しかし R2025a からは、Figure がデフォルトで「Figure コンテナ」にドッキングされたタブとして開かれるようになりました。これは大きな変化であり、新しい Figure 環境については語るべきことがたくさんあります。
詳しい情報は、近日中に MATLAB Graphics and App Building ブログにて紹介される予定ですので、そちらもぜひチェックしてみてください。

MATLAB Copilot

生成 AI は、エンジニアリングやサイエンスのやり方を根本から変える可能性を秘めており、最近の MATLAB Blog でも最も注目を集めている話題の一つです。私自身も 2024年10月に「MATLAB と大規模言語モデル(LLM)の連携法:ChatGPT や Ollama を活用する4つの方法」という記事を公開しましたが、今回それをアップデートする必要が出てきました。
MATLAB Copilot は、生成 AI モデルを MATLAB の日常的なワークフローに統合する新しい製品です。この MATLAB Copilot については、今後のブログ記事でも多く取り上げていく予定ですので、ぜひご期待ください。

ライブスクリプトのさらなる進化

私はライブスクリプトが大好きです。実際、この MATLAB Blog に掲載されているすべての記事は、まずライブスクリプトとして執筆され、その後、File Exchange にある wp_publisher を使って WordPress に変換・公開されています。つまり、ライブスクリプトは私の日々のワークフローに欠かせない存在です。そんな中で、私が長らく待ち望んでいた機能のひとつが、YouTube 動画をライブスクリプト内に埋め込める機能です。
undefined
最近、 のワークフローが浸透してきたこともあり、Git や GitHub と組み合わせてライブスクリプトを使うユーザーが急増しています。しかし、従来のライブスクリプト(.mlx)には大きな課題がありました。それは、バイナリ形式のファイルであるため、git のようなテキストベースのバージョン管理システムと相性が悪いという点です。
この課題を解決するために、MathWorks は新たにプレーンテキスト形式のライブスクリプトのファイル形式を開発しました。この形式は R2024b でベータ版として登場し、今回の R2025a で正式に導入されました。以下のスクリーンショットにあるように、見た目は通常の .m ファイルに近く、テキストベースで管理・比較・マージがしやすくなっています。詳細については、公式ドキュメントの Live Code File Format (.m) をご覧ください。

Markdown 対応の強化

ここ数回のリリースにわたって、Markdown ドキュメントのサポートが徐々に拡充されてきました。たとえば:
  • R2024a では、MATLAB エディターでの Markdown 構文のハイライト表示に対応
  • R2023b では、ライブスクリプトを Markdown 形式でエクスポートできるようになりました(export 関数)
そして今回の R2025a では、Markdown サポートの目玉機能として、MATLAB エディター内で Markdown ドキュメントをレンダリング表示できるようになりました。MATLAB が Markdown を日常的なワークフローにさらに自然に組み込める環境へと進化しています。

GPU 機能の強化

昨年、MATLAB の NVIDIA GPU サポートを活用するためのすべての関数を詳しく調べました。これらの関数は、gpuArray データ型を通じて利用できます。R2024 では、14 のToolbox にわたって 1195 の関数が GPU に対応していましたが、R2025a では、その数が 1256 関数 にまで増加し、さらに 17 の Toolbox でサポートされるようになりました。以下のグラフは GPU 対応関数の数がどのように増えてきたかを示しています。
新しい GPU 対応の関数やワークフローについての詳細は、以下のリンクから確認できます:
特に興味深かったのは、Antenna Toolbox の「GPU を使ったレイトレース解析の高速化」という例です。この例では、OpenStreetMap の建物データを使って、香港の送信機と受信機の間で伝播経路を計算しています。計算は、CPU と GPU の両方で行われ、ドキュメントによると、GPU を使った場合のスピードアップは 3.6 倍 とのことです。私自身も自分のマシンで実行してみたところ、2.9 倍 のスピードアップが得られました。
もちろん、実際のスピードアップはハードウェアに依存しますが、GPU を活用することで、計算速度が大幅に向上する可能性を実感しました。
propagation paths found by the GPU between transmitter and receiver using building data for Hong Kong from OpenStreetMap.
MATLAB の GPU 機能強化は、新しい gpuArray 対応関数の追加だけではありません。いくつかの既存の gpuArray 関数も、さらに高速化されています。例えば:
  • mean(2.4 倍高速化)
  • movmean (1.6 倍高速化)
  • histcounts(1.7 倍高速化)
  • Deep Learning Toolbox の Transformer Networks のトレーニングおよび推論パフォーマンス(2.5 倍高速化)
もちろん、実際のスピードアップは使用するハードウェアや計算内容に依存します。それぞれの検証環境については release note に記載しています。
さらに、いくつかの関数では gpuArray のサポートが強化されています。たとえば:

GPU Coder におけるパフォーマンス分析

次に、gpuArray 以外の GPU 機能に目を向けると、GPU Coder という製品があります。GPU Coder は、MATLAB コードから CUDA コード を生成するツールです。今回のアップデートでは、GPU Performance Analyzer が強化され、生成された CUDA コードの パフォーマンスのボトルネックを自動的に検出できるようになりました。
この機能は、gpuPerformanceAnalyzer 関数を使用することでアクセスできます。具体的には:
  • Profiling Timeline で、ボトルネックを警告アイコンで示します。
  • 新たに追加された Diagnostics では、検出されたボトルネックの詳細な説明が表示されます。
これにより、GPU コードのパフォーマンスを効率的に分析し、最適化のための手がかりを得ることができます。
GPU Coder で生成されたコードのパフォーマンス評価に関連して、Analyzing Network Performance Using the Deep Learning Dashboard に関する新しいページを、ぜひチェックしてみてください。この新しい機能を使えば、深層学習ネットワークのパフォーマンスを視覚的に評価でき、最適化の方向性を見極めやすくなります。
新しいパフォーマンス分析ツールに加えて、GPU Coder では他にも多くの機能強化が行われています:
またの median, cumtrapz, envelope 関数で生成される CUDA コードの性能が大幅に向上しています。特に cumtrapz では、生成されるコードが約20倍も高速化される大きな改善が見られました。

コーディングとソフトウェア開発

今回のリリースは、コーディングおよびソフトウェア開発ワークフローにとっても大きなアップデートです。たとえば、新しいデスクトップに追加された多くのパネルは、こうした用途に関連するものであり、その代表例が下の図に示されている ソース管理パネル(Source Control panel) です。
その他にも注目すべきパネルとして、以下のものがあります:
  • デバッガー(Debugger)
  • プロジェクト(Project)
  • テストブラウザー(Test Browser)
  • コードの問題(Code Issues)
  • コードアウトライン(Code Outline)
これらのパネルはすべて、コーディングやソフトウェア開発をより効率的に行うために設計されています。
新しいデスクトップ以外にも、ソフトウェア開発に関する多数の機能強化が行われています。
たとえば以下の機能に、さまざまな改善が加えられています:
  • プロジェクト(Projects)
  • コードアナライザー(Code Analyzer)
  • Git ソース管理(Git Source Control)
  • ビルドの自動化(Build Automation)
  • ユニットテストフレームワーク(Unit Testing Framework)
  • Toolbox のパッケージング(Toolbox packaging)

MATLAB と Python 連携

私が MATLAB と Python の連携に関するセミナーやワークショップを行う際、最初に伝えることのひとつが「MATLAB と Python を連携して使いたいなら、常に最新バージョンの MATLAB を使ってください」ということです。というのも、毎回のリリースでこの機能が継続的に改善されているからです。そして、R2025a も例外ではありません。まずは、Python 環境を扱う際の利便性向上についてご紹介します。
MATLAB から Python 関数を実行するには、まず Python を MATLAB と同じプロセスで動かす(ExecutionMode==”InProcess”) か、別プロセスで動かす(ExecutionMode=”OutOfProcess”)かを選択する必要があります。どちらにも利点と欠点があります。R2025a 以前では、実行モードを切り替えたい場合、必ず MATLAB を再起動する必要がありました。しかし R2025a では、最初に OutOfProcess で起動しても、途中で InProcess に切り替えることが可能になり、MATLAB の再起動は不要になりました。
% Create an OutOfProcess Python Environment
pe = pyenv(ExecutionMode=“OutOfProcess”);
% Do a calculation in Python
py.math.sqrt(2)
ans = 1.4142
たとえば、途中で「やっぱり Python を別プロセス(OutOfProcess)ではなく、同一プロセス(InProcess)で実行したい」と思い直したとしましょう。その場合は、まず OutOfProcess の実行を終了(terminate) します。
% Terminate the OutOfProcess Environment
terminate(pe)
そしてその後、新しい環境を作成します。R2025a より前のバージョンでは、ここで MATLAB の再起動が必要でした。
%Create an InProcess Python Environment
pe = pyenv(ExecutionMode=“InProcess”);
% Run a Python command using this new environment
py.math.sqrt(3)
ans = 1.7321
ただし、逆の切り替えはまだできません。一度 InProcess の Python 環境を使用すると、OutOfProcess 環境に切り替えるには、引き続き MATLAB の再起動が必要です。
ここまでは「MATLAB から Python を呼び出す」話でしたが、「Python から MATLAB を呼び出す」側にも改善があります。特に、以下の点が強化されました:
これにより、MATLAB と Python 間でのデータのやり取りが格段にスムーズになり、Python 側で MATLAB 関数を活用する際のハードルが大きく下がりました。
以下は、今回のリリース(R2025a)における、MathWorks 製品全体での Python 関連の追加機能です。
最後に、Python と Simulink に関連するいくつかのアップデートをご紹介して締めくくりたいと思います。私は Simulink の専門ではないので、ここでは詳しい説明はせず、各リリースノートへのリンクのみを記載しておきます。

単精度スパース行列(Single Precision Sparse Matrices)

行列の中にゼロが多数を占める場合は、スパース行列を使うと効率的です。これまで MATLAB のスパース行列は、double(倍精度)または logical(論理型)のみ対応していました。しかし、多くのユーザーから「単精度(single precision)のスパース行列が使いたい」という要望が寄せられており、今回 R2025a で単精度スパース行列が正式にサポートされることになりました。
MATLAB のほぼすべての場所で、これまで double 精度のスパース行列を使えたところで、単精度スパース行列も利用可能になっています。NVIDIA GPU 上や分散配列(Distributed arrays)でも対応しています。単精度スパース行列の作成は非常に簡単で、関数に”single”を付け加えるだけでOKです。
mySingleSparse = speye(3,“single”)
mySingleSparse = 3×3 sparse single matrix (3 nonzeros)
(1,1) 1
(2,2) 1
(3,3) 1
倍精度(double)スパース行列から単精度(single)スパース行列へ変換することもできます。
myOtherSparse = single(someDoubleSparse);
この機能の詳細な解説は、近日中に The MATLAB Blog に掲載される予定です。

MATLAB 識別子の最大長が 2048 文字に拡大

これまでは、関数名や変数名などの識別子は最大 63 文字までと決まっており、それを超えるとエラーメッセージが出ていました。しかし今回、R2025aからはその制限が 2048 文字まで大幅に拡大されました。
NowWeCanCreateExtremelyLongVariableNamesIfWeAreSoInclinedAndAreNoLongerLimitedTo63Charcters = 42
NowWeCanCreateExtremelyLongVariableNamesIfWeAreSoInclinedAndAreNoLongerLimitedTo63Charcters = 42
このように非常に長い名前の変数も作成可能です。個人的には 63 文字の制限に困ることはほとんどなく、むしろ
N = 42
N = 42
のように短くシンプルに書くことが多いですが、一部のユーザーには長い識別子が必要な場合があります。
例えば、AUTOSAR(自動車ソフトウェアの標準規格)のユーザーは識別子の最大長が 128 文字なので、従来の 63 文字制限では互換性の問題が生じることがありました。また、外部ドキュメントに基づいて自動生成される MATLAB コードでは、標準規格などから長い名前が割り当てられることも多く、このようなケースでも今回の制限緩和が役立ちます。
この識別子の最大長制限を引き上げたのは、前回は 2002 年のことで、そのときは 31 文字から 63 文字に増えました。同時に、namelengthmax 関数も導入され、それ以降 20 年以上にわたってこの関数はずっと 63 を返していました。R2025a では 2048 を返します。今後また数十年のうちにこの制限が変わる可能性も否定できないため、コードを書く際には最大長をハードコーディングせず、必ず namelengthmax 関数を使うようにしてください。
今回の変更については、おそらく皆さんは以下のどちらかに分かれるでしょう。
  • 「MATLABの識別子に 63 文字以上も必要になるなんて、全然想像できないし、気にもしない」グループ
  • 「やっと!ずっと困っていた問題が解決されて嬉しい!」グループ
どちらの立場でも、このアップデートが役立つ場面はきっとあります。

多くのデータインポート関数が圧縮ファイルに対応

これも使い勝手の向上を目指した改善です。以前の MATLAB では、誰かから.zipファイルでデータが送られてきた場合、開く前に必ず解凍する必要がありました。
unzip(“somedata.zip”)
data = readtable(“somedata.csv”)
data = 3×3 table
col1 col2 col3
1 1 2 3
2 4 5 6
3 7 8 9
今では、readtable などの関数で、解凍せずにそのまま圧縮ファイルを直接開くことができるようになりました。これにより、解凍後の .csv ファイルがファイルシステムに不要に残ることもありません。
data = readtable(“somedata.zip/somedata.csv”)
data = 3×3 table
col1 col2 col3
1 1 2 3
2 4 5 6
3 7 8 9
.zip ファイルは複数のファイルを含む可能性があるため、フォルダのように扱われます。そのため、たとえファイルが1つだけであっても、読み込みたいファイル名を明示的に指定する必要があります(今回の例のように)。この機能は .gz や .tar ファイルにも対応しており、以下の関数で利用可能になっています。
この機能は多くのユーザーから要望が寄せられていたため、皆さんに喜んでいただけたら嬉しいです。

お気に入りの新機能は何ですか?

長い投稿になりました!(初期の原稿はもっと長かった・・)このような投稿では、何を省くかを決めるのが本当に難しいです。もしこの概要であなたのお気に入りの新機能を取り上げていなければ、ぜひコメント欄で教えてください。まだ詳しい内容をじっくりご覧になっていない方は、リリースノートをチェックしてぜひ掘り下げてみてくださいね。
|
  • print

Comments

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