Chua Ming Yam博士と、博士のソフトウェア開発の経験とプロジェクトに関するチャットをしました。 彼は講師や研究者としての仕事に加えて、フリーランス相談を行っています。 現在、千葉大学助教授を務めており、リモートセンシングや監視の目的でBoeing 737などの商用飛行機に搭載可能なレーダーの構築を専門としております。 博士は、過去の好きな時の1つとして料理をあげます。博士の技術的な仕事は 博士のウェブサイトで確認できます。
あなたが使った最初のコンピュータは何でしたか?それはいつですか?
小学校の時に、初めてコンピュータを使いました。そのコンピューターは、インテル80486DXプロセッサ(2MB RAM搭載)で動作し、 アクセサリには外部プラグインCD-ROM が2つ、グラフィックスカードVGA 640x480、外部プラグインサウンドカードが付属していました。 OSはGUI(グラフィックユーザーインターフェイス)なしのコマンドプロンプト上の、Windows 3.1でした。 ワープロソフトは、Word PerfectとLotus 123でした。その時は、モデムもインターネットもありませんでした。 私の父が、ロータス123を学ぶために買ったのですが、使っていないときに、私や兄弟が使っていました。 私は趣味で、DOSバッチスクリプティングを実行するために使っていましたが、これがコンピューティングへの関心を呼び起こしました。
実生活に使われた、最初のプログラムは、何ですか?
中学校で、校内の教師生徒の共同で運営されていた文具店で、スプレッドシートスクリプトを作成しました。そうしたことで、コンピュータエンジニアリングを専攻する、という私の野望に拍車がかかりました。大学に入学するときは、代わりに電子工学を選択しました。
ソフトウェア開発プロジェクトの、何が好きですか?
ソフトウェアソリューションを完成したときの、満足感と達成感が好きです。私が作成した独自のもの、それでもって、問題を解決して解決することができます。
ハードウェア開発はどのようにソフトウェア開発に関係していますか?もしくは逆でも良いのですが?
ハードウェアとソフトウェアは不可分であり、手を携えなければなりません。料理のような感じです。例えると、ハードウェアは原材料、ソフトウェアは熱、調味料、水のようなもので、原材料を料理に仕上げます。どちらも重要な役割を果たします。
どのコーディング言語が専門ですか?
低レベル言語:アセンブリ言語、Verilog HDL
高レベル言語:C、Basic、C#、Matlab
グラフィカルプログラミング:Labview,、私は、Certified Labview Associate Developer(CLAD)です。
時と共に、ツールはどのように変わってきたと思いますか?
電子システムの設計を始めた頃は、アセンブリ言語、C言語、およびマイクロコントローラのファームウェアを使用して、マイクロコントローラでソリューションを構築していました。DAU(データ取得ユニット)を含むレーダー受信機の開発に移ったときには、ユーザーの制御と構成のためのGUIを作成するため、マイクロコントローラー、ファームウェア、およびVisual Basicを使用していました。私がレーダーの構築へ進んだ頃は、シミュレーション、アルゴリズム設計、概念証明のためにMatlabを使用していました。FPGAを使ってハードウェアを開発し、LabviewでGUIを開発しました。最近のSAR(合成開口レーダー)コントローラシステムの開発プロジェクトでは、C#、Labview、FPGA、Verilog HDLを使用しています。レーダーで収集されたデータを処理するのに、Matlabを使用します。
MYebills のソリューションがもたらす、業界への貢献は?
私がみているプロジェクトには、電動工具メーカー・Boschの6つのテストステーションを構成する、電動工具テスト機器を開発しました。テスト機器の主な目的は、電動工具の耐久試験を行うことです。テスト機器は、ユーザが電動工具を操作し、その製品寿命が終了するまで工具を試験することを、シミュレートするものです。
このソフトは、温度、トルク、反作用トルク、最も重要な項目、電動工具の寿命を含むセンサからのデータ入力を収集することができます。データ収集後、電動工具が故障する前に症状を分析して認識し、電動工具の寿命を延ばすヒントを提供します。
さらに、このソフトウェアソリューションには、使用者の手腕振動症候群の発症を引き起こす使用期間など、電動工具の人間工学的解析も含めました。このデータは、例えば、神経系、血管系および筋骨格系の障害などの振動傷害を分析するためにも、使用することができます。
レーダー・コントローラーとプロセッサーの開発に関する別のプロジェクトでは、市販のハードウェアと、FPGAボードを設計して、市販にはない専用ハードウェアの組み合わせを使用しました。次に、そのハードウェアをソフトウェア機能と統合し、システムを制御して大量のデータを高速に取得できるC#でユーザーインターフェイスを開発しました。
飛行試験中に飛行機に搭載されたレーダーによって取得された元データは、画像形成アルゴリズムを実行してレーダー画像を生成するMatlabを使用して処理されました。レーダーセンサーは耐候性があり、光センサーよりも優れており、災害被害評価、陸上変形観測、雪監視、海洋学、地形分類、ターゲット検出などのリモート・センシング・アプリケーションに使用できます。
ソフトウェア開発プロジェクトを提供する際に、直面する課題は何ですか?
R&Dプロジェクトでは、通常、専用のソフトウェア開発者はいません。新しい言語を学んだり、新しいツールを使用して目的を達成したりしても、必要な機能は自分で開発する必要があるからです。
開発者が備えるべき最も重要な、技術スキルは何ですか?
コードの再利用性、コードの最適化、速度、リソースの利用率、スケーラビリティ、拡張性ですね。R&Dアプリケーションでは、ソフトウェアは商用アプリケーションに比べて小規模であり、システム設計のデザインはそれほど強調されておらず、プログラミングスキルは特化されていません。
開発者にとって重要なソフトスキルは何ですか?
プロジェクト管理と時間管理、プロジェクトのタイムラインと期限の管理だと思います。プロジェクトによっては、サードパーティのサプライヤーや、さまざまなチーム間のコラボレーションが必要な場合もありますが、コミュニケーションが重要となります。
新卒者は今日、高等教育に適切なスキルを備えていると思いますか?
学部が受ける訓練は、本質的なステップを含んだレシピに導入されるようなものです。練習がなければ、完璧な料理を作ることはできません。プログラミングを学ぶ最も良い方法は、練習することであり、本だけでは学ぶことができないものです。
新卒者が業界に参入する際のアドバイスはありますか?
若い時にできる限り、学びましょう。機会が得られたら、それを大切にすることです。自分自身を、常にアップグレードしてください。学習をやめると、とり残されてしまいます。
最も重要なのは、スキルではなく、態度です。これに添っていけば、目標を達成できるでしょう。