卒業研究のタイトルは『拘束のある力学系の制御に関する研究(先端が限定された面上を動くマニピュレータの運動制御の基礎研究)』だったビッツの村上です。全く制御から離れたmacOS/iOSのアプリケーション・プログラマをやっているのだが、今回は、思い切った制御工学に挑戦する。
学生時代から言われたいたのは、制御工学は使われていない。確かにそのようだ。
最初の仕事は人工心肺装置の企画なのだが、病院研修で心臓外科のオペの手伝いをやっていた。心臓手術は心臓に戻ってきた血液を人工心肺装置が取り込み、それを心臓の出口に返して心臓に血液が流れない状態にして行うのだが、循環している血液を冷やすと心臓は止まり、オペ終了時に血液を温めると心臓は動き出す。この血液の温度の調整を水槽で行うのだが、これは、指定された温度になるとヒータが止まり、下がるとヒータがつく。そう、自動制御をやっている方はお分かりだと思うが発信する。これはそういうものだということで特に改善されることはなく、自動制御の出番はなかった。
その後に選んだ職業がプログラマ。またまた、書店で手に取った『神経回路網の数理』に興味を持ち、電子計算機の世界に飛び込んだ。
あるギネスにも載っている巨大なゲートウェイシステムの構築に関係した際のことだ。自分は方式Gというアーキテクトを扱うチームに配属されたのだが、そこで行なっていた流量制御はこんな感じだ。予想される処理コストを決定し、それで性能測定を行い。その値で流量を規制する。そう、ここでも自動制御は活用されていない。予想が外れると性能限界を超えてしまった。内心フィードシステムだ!と思っていたのだが、学生時代に習ったことをプログラミングで、どう表現すればいいのか分からない。
そんな自分にとって、これはと思ったのが、オライリー社の『エンジニアのためのフィードバック制御入門』だ。まえがきに、しっかりと書かれている。自動制御を行うためには電子計算機の力が必要だ。でも、プログラミングの現場では、自動制御が疎遠となっている。この書籍は、この問題に対しての著者からの回答で、ソフトウエアの世界の出来事を自動制御の対象として適用する例が豊富となっている。
また、使っているのもPythonとgnuplot。学生時代、大型計算機でFortranでリカッチ方程式を解いていたのは何だったのか?手元のMacBook Proで演算できちゃいます!
ちなみに、ひねくれ者の自分は、書籍の通り動かすのではなく、SwiftとAccelerate Frameworkを使って、挑戦している。
関連情報
エンジニアのためのフィードバック制御入門
Cocoa Advent Calendar 2017
Cocoa勉強会 BUKURO.swift (connpass)
Cocoa勉強会 BUKURO.swift (ATND)
Cocoa勉強会 BUKURO.swift (Peatix)
【Cocoa練習帳】
http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)
Qiita