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

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

プログラミングコンテスト in MATLAB EXPO 2024、優勝者インタビュー!

こんにちは、トレーニングチームの遠藤です。普段は「MATLAB と Simulink を繋ぐ」をテーマに技術記事を書いています。

今回はコミュニティイベント系の内容ということで、MATLAB EXPO 2024 の会場で行われたプログラミングコンテストに関する記事となります!

 

プログラミングコンテスト in MATLAB EXPO 2024 とは?

今年も 5/30 に対面での MATLAB EXPO 2024 が開催されました。去年同様、会場は多くの来場者の方々でにぎわい、様々な展示や講演が行われました。そして、今年はそのメイン展示ブースとは逆側を陣取り、 (なぜかオシャレな雰囲気を出しながら)PC を複数台配置して行われていたのが、MATLAB プログラミングコンテストです!

↑今年は照明の色合いもあってシックな雰囲気に。

 

コンテストの詳細については過去の記事もご参照いただければと思いますが、今年のプログラミングコンテストは、問題を完全にリニューアルしての開催となりました。去年までは数学的な演算を題材とした問題が中心でしたが、今年は文字列処理や行列操作など、より幅広い知識が必要となるような問題を揃えてみました。その分なかなか一筋縄ではいかない問題も多く、参加者の方から「去年よりも難しかった!」といったコメントもありました。

↑当日出題された最高難易度の問題の一つ(タイトルはただのダジャレ)。簡単そうに見えて、各桁の数字を取得するのが意外と難しい!

 

しかし、そんな中、我々が用意した数々の難問を解きまくり、ぶっちぎりで見事優勝されたのが、”tomo” さんこと高木智章さんです!

↑2 位の方と大差をつけての優勝。相当な腕利き MATLAB プログラマーと見受けられるが……?

 

そして、去年の優勝者の西野さんに続き、今年も優勝者の高木さんがインタビューに答えてくれることになりました!今年の優勝者はいったい何者なのか?どうやって MATLAB スキルを磨かれたのか?その謎に迫ります!

 


インタビュー開始!

1.早速色々聞いちゃいます!

高木さん、お忙しい中インタビューにご協力いただきありがとうございます。まずは簡単な自己紹介と MATLAB/Simulink の使用歴を教えてください!

はじめまして.高木智章と申します。現在の活動は機密が多くてお伝え出来ないですが、去年までは遺伝的アルゴリズムに代表される進化計算の研究をしていました。
2018 年から MATLAB を使っているので、MATLAB の使用歴は 6 年になります。MATLAB に出会ったのは、修士 1 年の時になります.「PlatEMO という MATLAB のすごいライブラリがあるよ」ということを学会で聞いてから、MATLAB を使い始めました。それ以降、博士時代、客員研究員時代から現在まで、研究と趣味で MATLAB を使っています。

 

MATLAB の使用歴は 6 年ということで、長きにわたり MATLAB をご活用いただきありがとうございます!PlatEMO というのは、File Exchange で公開されているこのパッケージでしょうか?多目的最適化を行うためのプラットフォームということで、最適化の研究では大いに活用できそうですね。

それにしても、お話を聞く限りでは、MATLAB を使用し始めてからすぐに複雑な最適化計算を実行されていた、ということになるかと思いますが、MATLAB/Simulink の使い方はどのようにして学ばれたのでしょうか?

自分は,MATLAB を使いながら学んでいきました。PlatEMO を動かして、ソースコードを読んで、自分でプログラムを改変しながら、どのように MATLAB を使うのか学んでいきました。
MATLAB 基礎や MATLAB 入門に取り組んだことがあるのですが、取り組んだ時には既に知っていることが多かったです。でも、抜け落ちている知識もあったので、改めてオンラインコースに取り組んで良かったと思っています。

 

なるほど、とにかく PlatEMO を使いながら MATLAB の使い方を学ばれたということですね。それで使いこなしてしまうあたり、高木さんのプログラミングスキルの高さがうかがえます。ただ、去年の優勝者の西野さんと同様に、手っ取り早く使い方を学習するためには「まずは使ってみる!」の精神が大事、ということなのでしょうね。

また、オンラインの学習コンテンツについても、ご活用いただきありがとうございます!使いながら学んでいくとどうしても “我流” な使い方が増えてきてしまうので、たまにこういった学習コンテンツで基本に立ち戻るのも重要かもしれませんね。入門コースはアカウントさえあれば誰でも受講可能ですので、興味ある方はぜひ オンラインコースのページを見てみてください!

↑いろいろな分野に特化した入門コースも盛りだくさん!

 

さて、それではそんな高木さんの高い MATLAB のスキルを活かして、普段どのようなことに MATLAB を使用していますか?

普段は、研究と趣味にMATLABを使用しています。特に、さっとデータを可視化したい時なんかには、MATLABを重宝しています。自分は内容と掲載場所によって、png,svg,pdf,emfなどの画像形式を使い分けているのですが、MATLABだと簡単に欲しい画像を出力できるので助かっています。

 

可視化の際に重宝、とてもよくわかります。私も Excel ファイルを見るとついつい MATLAB で取り込んで解析してグラフを描きたくなってしまいます。また、最近のバージョン(R2020a 以降)では exportgraphics という関数が登場し、Figure から余白を無くした画像を簡単にエクスポートできるようになったのも大きいですね。ちなみに、普段よく使用する MATLAB/Simulink の Toolbox・機能はありますか?

特に意識して使っているToolbox・機能は無いです。ただ、Deep learning toolboxとOptimization toolboxが無いと自分のプログラムにエラーが出るとは聞いています。自分が調べた中ではDeep Learning Toolboxのnewrb関数の精度が良く、重宝しています。

 

Deep Learning Toolbox はディープラーニング、Optimization Toolbox は最適化の機能がまとまっている Toolbox ですね。確かに前述の高木さんの専門分野とは関係性が高そうです。関数の精度も調べられているということで、専門的な関数も使いこなされている様子が伝わってきます……。

ちなみに、高木さんが言及されている newrb は、放射基底ネットワークを自動で設計する関数で、主に浅層ニューラルネットワーク向けの機能になります。先ほど可視化の話が出てきましたし、せっかくなのでネットワーク構造を可視化してみました↓

net = newrb;
view(net);

↑ネットワーク構造も view 関数で気軽に可視化!

 

 

2.プログラミングコンテスト優勝について!

それでは、ここから本題ということで、改めてプログラミングコンテスト優勝おめでとうございます!会場では結構早めの時間帯にプログラミングコンテストのブースにいらっしゃったと記憶していますが、今回 MATLAB EXPO 2024 に参加された理由は何だったのでしょうか?

ずばり、プログラミングコンテストに参加したくて MATLAB EXPO 2024 に参加しました。
去年はポスター発表者として参加していたため、他の人の講演を聞くことができず、プログラミングコンテストにも参加できませんでした。去年できなかったことを精一杯楽しむぞという気持ちで MATLAB EXPO 2024 に参加しました。

 

なんと、プログラミングコンテスト目的での参加だったのですね!私の知る限りでは、プログラミングコンテスト目的で MATLAB EXPO に来られたという方は高木さんが初めてなんじゃないかと思います(毎年実施してきた甲斐があった……泣)。それでは、それほどまでにプログラミングコンテストに参加しようと思ったきっかけは何だったのでしょうか?

去年一番気になっていて、去年は参加できなかったというのが大きいです。去年のMATLAB EXPOの後に色々と調べて、自分がしっかり参加すれば優勝できると思ったので、優勝するつもりでプログラミングコンテストに参加しました。

 

なるほど、「優勝できる」という確固たる自信が参加のモチベーションになったということですね!そして、その自信の通り、今回見事優勝されてしまったわけですが、改めて MATLAB プログラミングコンテスト優勝の感想を教えていただけますか?

素直に嬉しいです。優勝するつもりで参加して、しっかり優勝できたので良かったです。

 

2 位の方の 3 倍近い得点を見ても、まさに高木さんの高い MATLAB スキルが表れた結果だったかと思います。おめでとうございます!ちなみに、前述の通り今年はコンテストの問題をリニューアルしたのですが、今回プログラミングコンテストで解いた問題の中で印象に残ったものはありますか?

checkerboard を作成する問題とピラミッドを作成する問題が印象に残っています。どちらも Cody で見たことあるぞ、と思いました。前者の問題は、鬼〇の刃のパロディだと思いながら、スマートに解けました。後者は、スマートな解答を知っていたはずと思いながら、最後まで思い出せませんでした。他には、文字列を操作したり文字列に変換して扱うと良い問題が印象に残りましたが、これは関数と解き方を忘れていて、解答できませんでした。

↑高木さんが印象に残ったという2問。皆さんはどのようなコードを書きますか……?

 

checkerboard を作成する問題はタイトルも含めて個人的に結構気に入っているので、挙げていただいて嬉しいです!MATLAB には「論理インデックス」や「暗黙的なサイズ拡張」など、知ってると行列操作が非常に楽になるような機能がいろいろあるので、プログラミングコンテストではこういった機能を使いこなせるかどうかも重要になってきますね。

また、高木さんが言及されている “Cody” というのは、MATLAB Central 上でプレイできるコーディングゲームで、ユーザーが作った様々な問題に挑戦したり、逆に自分で問題を作ったりしながら、 MATLAB スキルを磨くことができます(ページはこちら。実はプログラミングコンテストもこの Cody のルールを再現する形で実施しています。いろいろな問題が投稿されていますので、興味ある方はぜひプレイしてみてください。

↑問題を眺めているだけでも結構面白い……

 

3. おまけ

最後に、今後の MATLAB/Simulink に期待することがあれば、自由にご記載ください!

競技プログラミングや他のプログラミングコンテストでもMATLABが使えるようになると嬉しいです。

 

おっしゃる通り、現状ではなかなか自分のMATLAB スキルを確かめるチャンスが少ないので、我々コミュニティチームとしても力を入れていかなければいけませんね。参考になるコメントありがとうございます!

なお、「自分の MATLAB スキルをアピールしたい!」という方は、「MathWorks 認定プログラム」 に挑戦してみるのもありかもしれません。受験は有料となってしまいますが、見事合格すればデジタル認証も発行されますので、「我こそは!」という方はチャレンジしてみてください!

 


まとめ

ということで、今回はプログラミングコンテストで見事優勝された高木さんのインタビューでした。最適化計算のために MATLAB を使いこなし、オンライン学習コンテンツや Cody なども使って日々のスキルアップにも余念のない、まさにプログラミングコンテストが求めていた「凄腕 MATLAB プログラマー」にふさわしいスキルの持ち主でしたね!

ちなみに、高木さんは MATLAB プログラミングコンテスト必勝法 というプログラミングコンテストの攻略記事を Qiita に投稿されています。高得点を獲得する秘訣などの攻略情報が多数記載されていますので、「自分も来年挑戦するぞ!」という方は、ぜひ一読をおすすめいたします!

 

それでは改めまして、高木さん、お忙しい中インタビューにご協力いただきありがとうございました!引き続き、研究や趣味で MATLAB を存分にご活用いただくとともに、コーディングスキルも磨きをかけていただければと思います!

 

そして、この記事を読んで MATLAB プログラミングコンテストに興味を持たれた方に朗報です!トレーニングチームでは、MATLAB プログラミングコンテスト環境の貸し出しサービスを実施しています!

大学の学園祭や会社の技術交流会などで、「MATLAB ユーザーが集まって楽しめるようなイベントコンテンツが欲しい」「MATLAB の認知度を上げたい」という方は、プログラミングコンテストを使って楽しくコミュニティを盛り上げてみませんか?

ご興味ある方は mendo@mathworks.com までご連絡ください。

 

 

|
  • print

コメント

コメントを残すには、ここ をクリックして MathWorks アカウントにサインインするか新しい MathWorks アカウントを作成します。