プログラミングコンテスト in MATLAB EXPO 2023、優勝者インタビュー!
こんにちは、トレーニングチームの遠藤です。普段は「MATLAB と Simulink を繋ぐ」をテーマに技術記事を書いています。
今回はコミュニティイベント系の内容ということで、MATLAB EXPO 2023 の会場で行われたプログラミングコンテストに関する記事となります!
プログラミングコンテスト in MATLAB EXPO 2023 とは?
少し前になりますが、5/31 に MATLAB EXPO 2023 が開催されました(講演資料などはこちら)。今回は完全対面実施ということで、会場は多くの来場者の方々でにぎわい、様々な展示や講演が行われておりました。そしてその会場の窓際で、 PC を配置してひっそり(?)と行われていたのが、MATLAB プログラミングコンテストです。
コンテストの詳細についてはこちらの記事もご参照いただければと思いますが、今年のプログラミングコンテストは非常にハイレベルな争いとなり、特に見事優勝された “taku さん” は、学生としての参加でありながら、290 点という超高得点をたたき出しました。
↑過去の優勝者の得点(2020, 2021 はオンライン開催だったため未実施)。開催するごとに 100 点ずつ増えていき、ついに 300 点近くまで来てしまいました。
そして、なんと、このプログラミングコンテストで見事優勝した “taku さん” こと西野さんが、今回特別にインタビューに答えてくれることになりました!コンテストで超高得点を記録した西野さんが一体何者なのか、どのようにして MATLAB をマスターされたのか、その謎に迫ります!
インタビュー開始!
1. 早速色々聞いちゃいます!
西野さん、研究でお忙しい時期にも関わらずご協力いただきありがとうございます。まずは簡単な自己紹介とMATLAB/Simulinkの使用歴を教えてください!
はじめまして。西野択と申します。現在は東京工業大学にてシステム制御工学を専攻しており、電力系統の安定度解析に関する研究を行っています。MATLABの使用歴は学部4年生からですので今年で3年目です。
趣味は散歩と銭湯巡りです!研究に詰まった時は、気分転換に散策に出たり銭湯でぼーっとしたりしています。
今は引退してしまいましたが学部時代はずっとバレーボールをやっていました。体を動かすことが全般的に好きで、去年は富士山の一合目からの登頂やフルマラソン完走を達成!今年は琵琶湖一周(200km)を自転車で完走しようと友人達と計画しています!
東工大のシステム制御系!実は私も同じく東工大のシステム制御系出身だったりします(私はインドア派の極みだったので、アウトドアの趣味が眩しい……)。研究や講義で MATLAB/Simulink をフル活用する代表的な学科と言えるかもしれませんね。
そして、MATLAB は学部 4 年生から使い始めたということで、なんとわずか 3 年足らずで MATLAB マスターになられたということになりますが、MATLAB/Simulink の使い方はどのようにして学ばれましたか?
MATLABに触れるようになったのは研究を始めてからです。
私の所属した研究室では、電力システムの解析やシミュレーションを行うための解析プログラム(MATLAB言語)が独自に開発されていました。このプログラムは、現在他大学の助教や准教授となりご活躍なさってる先生方がかつて本大学のポスドクや研究員として在籍されていた頃に作成されたプログラムが基になっているそうです。今はこのプログラムに「GUILDA」という名前が付けられ研究室の学生を中心に運用・保守が行われています。本コードにはオブジェクト指向設計の理念やプログラムの小技など数多くのエッセンスが盛り込まれており、このリファクタリング作業や拡張機能の実装に携わる内に多くのスキルを吸収させて頂いていたのだと思います。
聞く限りでは相当高度なプログラムとお見受けしますが、それを学部 4 年生の時点で扱うとなると、相当苦労されたのではないでしょうか……。ただ、こうやって目的の機能を実現するために調査しながら手を動かして覚える、というのは短期間でスキルを磨くには非常に有効かもしれませんね。では、そんな高度な解析プログラムを含め、普段どのようなことに MATLAB/Simulink を使用していますか?
主な使用用途は研究の数値解析ですが趣味のためにも使います。
自分は直感型なところがあり理論研究やその勉強を行う際には、数式をこねくり回すより先に、取り敢えずよく分からないがMATLAB上で数値解析をしアニメーションなりプロットを作成することでイメージを掴もうという結論に至ります。頭でイメージし切れない複雑な運動方程式を見たら取り敢えず応答のプロットやアニメーションを作成したくなります。
こういった作業を何度も繰り返してきたため最近は、いかに効率よくプログラムを書くか?いかに直感に訴えかけられるビジュアリゼーションを作成するか?ということを考えてコード作成するようになりました。
アニメーションやプロットでイメージを掴む、凄くわかります!制御系ですと、過渡応答や定常応答、安定性や物体の物理的な挙動など、可視化してみることで制御アルゴリズムの評価や改善方針がわかるので特に重要ですよね~。
↑アニメーションでロボットなどの動きを可視化。プレゼン資料にまとめる時などにもオススメ!
では、普段よく使用する MATLAB/Simulink の Toolbox・機能はありますか?
一番お世話になっている関数はode15sです。
「モデルを定義→シミュレーション→ビジュアリゼーション」というプロセスが自身の主な使用用途なので微分方程式を解くodeソルバーは欠かせません!
ode15s というと、微分方程式を数値的に解く関数の一つですね!ソルバー系の関数ですと ode45 を使っている人が多いんじゃないかと思いますが、ode15s は ode45 が苦手とするスティッフなシステムのシミュレーションを得意とするソルバーです。システムに応じてソルバーを使い分けされているところからも相当な “MATLAB 力” が垣間見えます……!
↑ode45 だと計算に時間のかかるファンデルポール方程式のシミュレーションも、ode15s ならあっという間!
2. プログラミングコンテスト優勝について!
それでは、ここから本題ということで、改めてプログラミングコンテスト優勝おめでとうございます!学生の方の優勝というのは(少なくとも私が知る限りでは)初めての快挙となります!まあそもそも例年 MATLAB EXPO の参加者の大部分が企業の方々なので、当然と言えば当然だったのですが、その中で、学生である西野さんが今回 MATLAB EXPO 2023 に参加された理由は何だったのでしょうか?
各業界の動向を知りたいと思い、これまで様々な分野のEXPOに参加してきました。
MATLAB EXPO 2023に参加したのも同様の動機ですが、それに加えて「自身が普段からお世話になっているMATLABがどのような場面で活用されているのか」を知りたいという目的もありました。
色々な業界調査の一環で、ということだったんですね。学生時代の私に爪の垢を煎じて飲ませてやりたいです。それでは、その MATLAB EXPO の会場でプログラミングコンテストに参加しようと思ったきっかけはいったい……?
プログラミングコンテストが開催されていることを知ったのは偶然でした。
MATLAB言語は長い間使用してきた愛着のある言語でしたので、この機会に是非腕試しをしてみたいと思ったのが参加した動機です。
なるほど、会場で偶然見つけて「参加しよう!」となったんですね。偶然見つけてふらっと参加してそのまま優勝を攫っていく、差し詰め「さすらいの凄腕 MATLAB プログラマー」といったところでしょうか……。
↑当日の看板デザイン。気軽に宣伝文句を書いたら、とんでもない腕利きの MATLAB プログラマーを引き寄せてしまった……!
それでは、今回プログラミングコンテストで優勝された感想を簡単に教えてください。
これまでにプログラミングコンテスト自体に参加したことはほとんどなく自身のスキルを客観的な指標で見ることはなかったので、いい機会に巡りあえたなと感じています。
優勝景品として頂いた教材には、これまで触れてこなかった高度でマニアックなTipsが数多く掲載されており、とても参考にさせて頂いています!!
ぜひまた機会がありましたらまた参戦させて下さい。
まさに、西野さんのハイレベルなスキルが、290点という超高得点に表れていたと思います!
ちなみに、西野さんに優勝景品としてお渡ししたのは、「MATLAB によるオブジェクト指向アプリケーションの開発」という超マニアックな有償トレーニングのテキスト。なかなか熟練者向けの内容で対象者も限定されるものなのですが、”とても” 参考にしていただいているとのこと、さすがです!研究室の解析プログラムではオブジェクト指向設計も使われているということですので、色々ご活用いただければ幸いです。
3. おまけ
最後に、今後の MATLAB/Simulink に期待することがあれば、自由にご記載ください!
ニッチな内容ですが、グラフプロットのノードの枠線に対して NodeColor とは別に色指定をしたいと感じております。
おー、来ましたね、グラフプロット!ちょうど前回の記事でも使われていて、なんともタイムリー笑。西野さんの研究されている電力系統のシステムですと、まさにグラフ構造がシステム全体の安定性に関係してきますよね。
おっしゃる通り、残念ながら現状グラフプロットのノードは枠線の色を変えることができません。ぱっと思いつく代替案としては、少しムリヤリですが、NodeColor を “none” にして一度ノードを非表示にしたうえで、ノードの各 x, y 座標を取ってきて scatter 関数などでノードを別途描画する、といった方法でしょうか……。よければ試してみてください!
↑scatter でムリヤリやってみた例。scatter なら FaceColor と EdgeColor を両方指定できるが、やはり2回描画するのは少し面倒かも……。
まとめ
ということで、プログラミングコンテストで見事優勝された西野さんのインタビューでした。
気になる学習の秘訣は「先輩が作ったプログラム」でしたね。MATLAB の学習方法で悩んでいる、という方は、ドキュメントの例題コードや誰かが作ったプログラムをとにかく色々いじってみる、というのもアリかもしれません!
それでは改めまして、西野さん、お忙しい中インタビューにご協力いただきありがとうございました!ぜひ今後とも研究や趣味で MATLAB を存分にご活用いただければと思います!
そして、これを読んで「いやいや、自分も負けてないぞ!」と思った方、ご安心ください。来年、2024 年も MATLAB EXPO にてプログラミングコンテストを実施予定です!
西野さんもおっしゃっている通り、自分の MATLAB スキルを試す絶好の機会かと思いますので、会場にいらした方はぜひ参加してみてください!
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.