「音響 × MATLAB」 可視化王におれはなる!
本日は、MathWorks Japanで教育/研究の支援に携わる仕事をしている村松さんにMATLABヘビーユーザーとのインタビューについて投稿していただきます。記事のタイトルからして興味をそそられました。
 ̄
はじめまして!カスタマーサクセスエンジニアの村松と申します。普段は、MATLAB Campus-Wide Licenseをご導入いただいている大学様を中心に、MATLABを教育/研究利用されている方の技術支援、コンサルなどを担当しています。私自身のバックグラウンドは音響工学なのですが、今回のインタビューでは、MATLABのヘビーユーザであり、音響の研究分野で活躍されている、早稲田大学 矢田部先生にご協力いただきました。
Q1: 簡単に自己紹介をお願いできますか?
Q2: MATLABにハマったきっかけって何ですか?
Q3: MATLABの好きなところを教えてください!
Q4: 現在はどういう場面でMATLABを使っていますか?
Q5: MATLABを音響分野で使うメリットってどういう点がありますか?
Q6: 今後もMATLABを使う上でMathWorksから何かサポートできることはありますか?
「4月だけど大学始まらないし何か勉強したいけど何しよう」って思ってる理系の皆さん,MATLABをやるのはいかがでしょう?
学部1年必修のプログラミングや線形代数の勉強になるだけでなく,2年生以降の専門科目に関連した内容を最も手っ取り早く試せるツールなのでオススメです!— 矢田部浩平 (@yatabe_) April 2, 2020
学生が教えてくれた A history of MATLAB 読んでみて「開発プロセスの話」とか「 CPU のバグのおかげでメディアに取り上げられて一躍有名になった話」とか色々面白かったけど一番面白かったのは若かりし頃の Cleve Moler 博士の見た目が今と全然変わんないとこだったりhttps://t.co/mPivyvQWdM
— 矢田部浩平 (@yatabe_) July 14, 2020
MathWorks社員が訪ねて来たので超マニアックMATLABトークをした結果「こいつどんだけMATLAB好きなん」みたいな空気が漂う事案が発生した
— 矢田部浩平 (@yatabe_) December 17, 2019
TwitterでMATLABのことをポストしていただいたり、学会発表のタイトルにMATLABツールボックスという名称を入れていただいたり、昨年対面でお会いした際もMATLAB愛をとても感じる話を沢山していただきました。
今回のインタビューもMATLAB愛に溢れています(笑)。それでは、インタビュー本編に行ってみましょう!
Q1: 簡単に自己紹介をお願いできますか?MATLAB歴も是非教えてください! [Top]
今は、表現工学科(※1)で教員をやっています。学部生の頃からずっと表現工学科に所属していて、修士/博士課程、現在も早稲田で音響を中心に研究をしています。
MATLAB歴は、多分修士1年からなので、現在8年くらい使ってます。学部生の頃はC言語を使って卒論を書いてました。MATLABを使い始めたきっかけは実はよく覚えてないのですが、研究室の同僚や周りの学生がMATLABを使っているのを見て、周囲の影響で使い始めた気がします(笑)。
※1早稲田大学 基幹理工学部にある一学科
Q2: MATLABにハマったきっかけって何ですか? [Top]
C言語を使っていた時は、相互相関や畳み込み演算を自分で書いていましたが、MATLABだと関数などを使えば1行で置き換えられて便利だと思ったので、そこからMATLABを使い始めました。また、過去にC言語で書いた研究用プログラムもMATLABで書き直したりしました。
本格的にハマり始めたのは、ベクトル化などの高速化でした。僕はスピード狂なので(笑)、MATLABの高速化に関するチュートリアルを読んだりしていました。高速化をやり始めたときにベクトル化や bsxfun などを使って、for文をなるべく使わずにコードを書く、というのがハマったきっかけです。今は bsxfun より implicit expansion の方がアツいですが。あと、高速化に関していうと、僕、マルチコアという響きが好きなんですよ。沢山のコアを使いたいという欲求もあったんです(笑)。
あと、個人的に宝探しみたいなことが好きなんですよ。MATLABは表面上、すごいユーザフレンドリーにできているので、するっと何も考えずに高度なことができると思っていますが、ベクトル化などのテクニックを知っていくと、より良く使うことができます。知れば知るほどディープな使い方ができ、ゲームと同じようなやりこみ要素があると思っています。ポケモン赤緑(※2)をやりこんでた時のように、ゲームの裏技みたいに普通の人は知らなくてもいいけど、知ってるとお得みたいなことがMATLABにはあるので、これが理由でハマりがちですね。あと、タイムアタックも好きで、MATLABでは tic, toc を使って簡単に実行時間を計れるので、この点もテンションの上がるポイントでした。実行時間をちゃんと計るための timeit も用意されてますしね!
※2 私たち世代は小学生の頃、かなりハマってやりこんでいました。
Q3: MATLABの好きなところを教えてください! [Top]
好きなところは沢山あるんですけど、その中でもMATLABの「数学のための言語」「数式をそのままコードに起こす」という設計思想が好きです!また、ラピッドプロトタイピング環境という点は、まさに研究など物事を思考するために重要なことだと思っていて、コーディングに時間かけていてもしょうがないですし、結果をすぐ見てフィードバックできることが大事なので、そこを含めて設計思想が好きです。
開発者が数学側の人間という点も好きで、「絶対に結果は正しくなくてはいけない」という感じで、ユーザ側としては、MATLABはクオリティがしっかりしているので安心感があります。
あとは、「可視化できる」という点ですね。いわゆるグラフなどの可視化だけでなく、MATLABの場合は関数などの中身を見ることができるという点も含めて、「可視化できる」というのが気に入ってます。高度なソフトウェアほど中で何をやっているかよくわからないという不安がありますが、MATLABは中身を開けて見ることができるし、簡単なコードで書かれているので安心感があります。
1,2年前に驚いたことなんですが、Deep Learning Toolbox™も中身を触ることができる上に、GPUで学習を回している時に、一時停止で実行を途中で止めてGPU側の変数まで全部触れるんです。中間の変数にも潜れて表示もできるし、デバッグもしやすいし、中身が見えるのは良いことだと思っています。
やっぱり、「可視化が世界を救う」と思っているので(笑)。「可視化王におれはなる!」みたいな(笑)。そう思ったら、やっぱりMATLABですね。ビッグデータの時代なんて、大可視化時代だと思いますし、もちろん、データを適切に扱うスキルも必要ですが、大可視化時代を生きるにはMATLABですよ!
Q4: 現在はどういう場面でMATLABを使っていますか?授業や研究でのご利用が多いかと思いますが… [Top]
昨年の秋から早稲田大学では全学でMATLABが使えるようになり(※3)、昨年の秋学期に音響信号処理の授業をやったんですけど、数年前から授業で学生に配布していたMATLABファイルを昨年から学生の手元でも実行できるようになって、これは良いなと思いました。
また、今年の春学期の授業では、レポート提出時にライブエディターを使うことを必須にしました。これまでは、他のソフトでレポートを書くときにMATLABで出力したグラフを貼り付けても、そのグラフについて言及していない学生もいて、何のデータをプロットしたのかがわからない、などの問題がありました。それに対して、ライブエディターを必須にした結果、学生が書いたコードも見れるので、実際に学生が何をやっているかわかるようになりました。コードやグラフなどのコンテンツが上から順に並んでいる状態でPDFに出力できるので、Word活用術のようなスキルが無くても体裁が整ったレポートを作成でき、見栄えに関して学生間でのクオリティの差があまりないことで採点側も平等に評価ができるので、レポートをライブエディターで書くのは良いな、と思いました。学生の中には初めての体験で苦労した人もいたようですが、ライブエディターはレポートが書きやすいという書く側からのポジティブな声もありました。
あと、とある企業と音響信号処理の共同研究した際に、研究室でアルゴリズムをライブエディターで作って、パラメータをスライダーにして相手側に渡し、企業側のエンジニアがそのスライダーを使ってパラメータチューニングして、結果をフィードバックしてくれる、という事例があり、とてもスムーズに共同研究ができました。このパラメータチューニング用のスライダーを作る作業は研究室の修士の学生がやってくれたのですが、学生でも一瞬で簡単に作成でき、それをそのまま企業側のエンジニアにも使ってもらえました。
あとは、研究室内での利用の話で、とある学生がMATLAB Coder™を使って、MATLABコードをMEXに変換したものを使って、ちょっと実行時間が速くなったとニヤニヤしています(笑)
※3 全学でご利用いただけるMATLAB包括ライセンス”Campus-Wide License”を導入いただいています
Q5: MATLABを音響分野で使うメリットってどういう点がありますか? [Top]
データの解析が楽、という点が良いですね。音って目に見えないものなので、音のデータを手に入れても解析するのって簡単じゃないと思ってますが、スペクトログラムですぐに可視化できたり、フーリエ変換も一発でできるので、音響分野においてもMATLABは便利だなと思います。あと、Audio Toolbox™などが最近充実していて(※4)、教育面で役に立っています。例えば、インパルス応答の測定とか、フィルタをかけるとか、実演する時にすぐに使えるので、教育の意味でもとても役に立っています。
あと、音響分野で使うときに、「リアルタイムで動作する」というのが大事だなと思っていて、実際に興味ある人が試してみたいと思った時に、Audio Toolboxが充実してきたことで試すためのハードルが下がったというのが良いことだな、と思っています。学部3年生でもMATLAB公式のコード例を見ながらリアルタイムエフェクターを作れてたりして、難しいはずのことを手軽に実現できるのってすごいなって思いました。
あと、研究室でハードウェアを使って何かやりたい学生がいたら、MATLABにRaspberry Pi™, Jetson®,ドローンなどが繋がるよ、と伝えてます。つい最近もAzure® Kinect®を使おうという話も挙がっていました。ハードウェアを繋いでリアルタイムでやりたいです。
※4 音響分野では、Signal Processing Toolbox, DSP System Toolbox™, Audio Toolboxがよく使われています。最近では、これらツールボックスとDeep Learning Toolboxとの組み合わせで使うケースも増えてきています。
Q6: 今後もMATLABを使う上でMathWorksから何かサポートできることはありますか? [Top]
マニアックな話になってしまうんですが、擬似4倍精度は欲しいです!Dr. Cleve Molerのブログで書かれていたので、これが正式リリースされると嬉しいです!また最近では、Deep Learning ToolboxやComputer Vision Toolbox™とか、Wavelet Toolbox™の時間周波数解析あたりは、わりと近年の論文がリファレンスになっているし、MathWorksがモダンなものに力を入れてるのを感じますが、応用数学のマニアックなものが意外と少ないと感じるので、モダンなものがサクッとリリースされると嬉しいです。
あと、僕や研究室内のMATLAB好きな学生のようなMATLABマニアは、MATLABに新しい機能が入ったら、そこから何か研究に使えないか考えたりします(笑)。また、MATLABのリリースノートが出たら研究室内でリリースノートを読む会をしているんですけど、例えばCurve Fitting Toolbox™はいつもBug Fixしかない、というのが学生との鉄板ネタになってます(笑)。我々Curve Fittingファンとしては見過ごせないです。
とにかく、マニアックで使いどころがわかりにくいけど、モダンな応用数学の機能や関数が欲しいです!
画像:Curve Fitting Toolboxファンの悲しみ。リリースノートを見るとBug Fixが主になってます(矢田部先生ご提供)
矢田部先生、インタビューのご協力ありがとうございました!
インタビューでお話を聞かせていただいて、非常に盛りだくさんの内容でしたし、改めて矢田部先生のMATLAB愛を感じた、とても濃い時間でした!授業・研究の話だけでなく、企業とのやり取りでMATLABを使っている、という話は非常に興味深かったですし、「リアルタイムで動作する」という点は技術を受講者にわかりやすく説明できる方法なので、個人的にもとても大事な点だと思っております。また、マニアックなご要望もありがとうございます!
ちなみに、Q5: MATLABを音響分野で使うメリットってどういう点がありますか?のところで、矢田部先生から「実は僕からもお聞きしたいと思っていました!」と逆質問をされました(笑)。私が大学/企業にいた時代に音響分野でユーザとして使っていた例をWebセミナーで話しております。ご興味ありましたら、18:22あたりからご覧ください。
私もMATLABを使った音ネタをたまにTweetしてますので、こちらも良ければご覧ください。
Follow @mikio_cse
「私もこんなことやってみたよ・やってるよ!」など披露の場を待っているネタがございましたらコメントお待ちしております。是非本ブログで紹介させてください。
- Category:
- ユーザー紹介
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.