見出し画像

MathWorks での仕事

MathWorks での仕事は楽しかった。いろいろと面倒なことも山ほどあったが、お客様から感謝をされることも多く、やりがいのある仕事だった。

自分がやっていたのは主に Application Engineer という仕事だったが、これは技術的な側面から MATLAB の営業活動やマーケティング活動を支えるというようなタイプの仕事だった。要するに技術系の何でも屋だ。

いまはもしかしたら仕事の中身が変わってしまっていて、ここに書いてあるような仕事ではなくなっているかもしれないが、あくまで「当時の話」ということでこの記事は読んでもらえたらと思う。

ちなみに、MATLAB は技術関係の分野で使われるソフトウェアで、いまの Python や R が使われる前には、さまざまな研究で MATLAB が使われていた。

MATLAB

自分も MathWorks 社に入る前には、ほぼ毎日 MATLAB を使って通信の研究を進めていた。MATLAB を使う以前は主に C/C++ で仕事をしていたのだが、さまざまなアルゴリズムの性能を迅速に検証するという観点からすると、C/C++ では辛い部分があった。開発やデバッグに非常に時間がかかってしまうからだ。

その点 MATLAB は開発やデバッグ・高速化などがし易く、自分が頭の中でイメージするアルゴリズムをそのまま書き出していくことができた。その頃、似たようなアルゴリズムを MATLAB で書いてみたり、C/C++で書いてみたりしたことが何度かあったのだが、ざっくり言って開発効率は3倍くらいにはなったんじゃないかと思う(ざっくり過ぎる?)。

C/C++ で書いていたときには、関数を1個書いて、テスト用の Main を書いて動きをざっくり検証して、本体に組み込むまでに数日はかかることも珍しくなかったが、MATLAB の場合はもっと速く進むことができた。そんな訳で MATLAB には大変助けられたのだが、何年か研究の仕事を続けた後で、今度は MATLAB を売る側の立場になった。

MATLAB を何年も使っていたので「MATLAB の良さは誰よりも知ってる!」という自負はあったが、その頃はほとんどのアルゴリズムを自作していたので、あまりツールボックスを使ったことがなかった。そのため、MathWorks に入ってからはその辺りでいろいろと勉強をさせてもらうことになった。

※ ちなみに、「ツールボックス」というのは MATLAB のためのオプション製品で、他の言語で言うところの「ライブラリ」に相当する。

例えば、MATLAB で画像処理をやりたいときには Image Processing Toolbox という製品を組み合わせて使い、信号処理をやりたいときには Signal Processing Toolbox を組み合わせて使う、といった具合だ。

MathWorks

MathWorks に入ってからは、本当にさまざまなことを勉強させてもらった。元々は通信や信号処理のエンジニアとしてキャリアを積んできたつもりだったが、MathWorks に入ってからは信号処理だけでなく、画像処理や最適化、統計解析や機械学習などの分野を幅広く勉強させてもらった。

そんなに広い分野を勉強できるものなのか?という疑問を抱く方もいるかもしれないが、実は科学・工学で使われる数学にはかなり共通する部分がある。信号処理の知識を画像処理に活かせることもあれば、時系列モデルの知識が制御でのシステム同定などにも活かせることがある。

いま流行りのニューラルネットワークも何層も積み上げなければ、古くから知られている適応フィルターという概念に近いもので、そうした過去からの積み上げがあって、現在ある技術も生まれてきている。

また、通信の分野で知られている LDPC 符号という誤り訂正符号の復号には積和アルゴリズム(sum-product algorithm)という確率的な推論を行うアルゴリズムが使われており、このアルゴリズムはビショップという人の書いた有名な機械学習の書籍でも紹介されている。

自分が通信の研究をしていたときの最後の自信作が、この LDPC 符号と等化器を結びつけるというアイデアだったが、残念ながら素晴らしく性能が向上する訳ではなく、そのままお蔵入りになってしまった…

Application Engineer という仕事

研究関係の仕事が終わってしまってから、しばらく仕事を探していたが、その頃はまだ MATLAB も日本ではあまり広くは使われておらず、MATLAB が使えること自体はあまり就職には有利に働かなかった。そこで、最終的に自分を拾ってくれたのが MathWorks だった(本家!)。

Application Engineer というポジションは、基本的には営業やマーケティングを技術面から支援するような立ち位置で、ガチガチの技術系のポジションではなかったが、上で述べたようなさまざまな技術に触れられることが面白かった。

セミナーイベントでは、沢山のお客様を前に講演するようなことも何度もあり、そうした講演で「勉強になりました!」とか「わかりやすかった!」などと言ってもらえると励みになったし、地方のお客様に会いに行くと「Webinar では何度も声を聞いたことがあったのですが、やっと本人に会えました…」などと喜んで頂くこともあり、そうした声をもらうと本当に嬉しかった。

セミナーのコンテンツや準備には沢山の時間をかけたし、面白いコンテンツを作るために週末を潰したりすることも何度もあったが、そうした言葉を貰うと、苦労は一気に吹き飛んだ。

意外な勉強法

メーカーの技術者は、やはり日々の作業に追われて、なかなかゆっくり勉強したりする機会が少ない。だからこそ、セミナーイベントみたいな場所では「新しい技術に触れて楽しんで欲しい」そう思っていた。そのために、沢山の論文や書籍を読んで、なるべくわかり易く、技術的なトピックを伝えることができたらと思っていた。そして、これが自分にとっても意外に良いトレーニングになった。

通常、本や論文をシンプルに読んでいるだけだと、情報は頭の中を通り抜けてしまい、なかなか記憶に残らないのだが、「しっかりと情報を咀嚼して、人に伝え直す」ということを繰り返すと、忘れなくなる。そして、人にもわかり易く説明できるようになる。

そして、基本的なことをそらで人に説明できるくらい理解できていると、更にもっと高度な内容の論文や書籍に当たってもスムーズに読み進めることができる。つまり、インプットだけでなく、アウトプットも必要なのだ。

大学では数学科に在籍していたが、セミナーでは何度も自分が読み進めている書籍の内容を説明させられた。本に書いてある通りに「XX は明らかなので…」などと説明したりすると「XX が明らかなんだったら、いまここで説明してみてくれますか?」などと厳しいツッコミが入ったりするものなのだけど、それも要するにそういう訓練だったのかもしれない(数学科に入る人はよく考えてから入ろうw)

なぜ辞めたのか?

しかし、一通りいろいろな統計やら機械学習系のコンテンツを作り終わった後で、思ったのは「もうちょっと個別の問題に深く関わりたい」ということだった。アルゴリズムがいろいろわかるようになって、人にスムーズに説明できるくらいの力がついても、実際に解く問題を与えられないのが、段々と物足りなくなってきたのだ。

POC のような小さな課題を解くチャンスは何度かあったが、それは本当の意味でのアルゴリズム開発とは言えないレベルのものだった。

自分が主に担当していた機械学習・ニューラルネット系の製品の売り上げは順調に伸びていたので、あと何年か頑張っていたら、もしかしたらマネージャーとかになれたのかもしれないが、どうだったろうか…

データサイエンティスト

そんな訳で、いまのところは「フリーのデータサイエンティスト」として活動をしている。ついこの間までは、友人のツテを頼って、需要予測やダイナミックプライシングのモデルをいじらせてもらっていたが、いまは事情があって、少しだけ休憩している。

ここ数年で随分 Python もいじったし、おかげさまで念願の確率プログラミング言語にも触れることができた(友人に感謝!)。本当に楽しい時間だったが、次は何をすることになるか…

そろそろ隠居かなぁ…とも思っているけど、いままで学んできたことを活かして少しでも人の役に立てれば…とも思っている。次はどうなるかな…


この記事が気に入ったらサポートをしてみませんか?