COLUMN
組み込みとC言語とPython
あなたは仕事でどのプログラミング言語をよく使用していますか?C言語、C++、Java、Visual Basic、アセンブラ、Ruby、C#、Cobol、Python、Swift、PHP、JavaScript、Go、Cuda、Perl、Matlab、Arduino、VHDL、Verilog-HDL、LabVIEWなどなど、思いつく限り上げてみました。組み込みをテーマとしたサイトの都合上、C言語、またはC++を使用している方が一番多いのではないかと思います。そんな中、いま一番流行っているプログラミング言語は?いま一番稼ぎの多いプログラミング言語は?という問いに対しての回答は、やはり「Python」ではないでしょうか。
世の中には多くのプログラミング言語がありますが、やはりそれぞれの言語によって向き不向き、出来ること出来ないことがあります。それにも関わらず流行りや稼ぎの違いが出てしまうなら、組み込みソフトウェア開発者も「乗るしかない、このビッグウェーブに」ということで、Pythonの概要や、組み込みとC言語との親和性についてご紹介していきたいと思います。
・Pythonとは?
Python(パイソン)は、他のプログラミング言語と比較すると、シンプルで少ないコード量でプログラムを書くことができ、誰が書いても可読性の高いソースコードとなるプログラミング言語です。
Webアプリケーションやデスクトップアプリケーション、様々なシステムのスクリプトとしてPythonは多く使われています。代表的な例としてはGoogleやFacebook、Evernote、Instagramなど世界的に成功を収めているサービスがPythonを使っています。また、多くのPython用ライブラリが公開されており、理工学や統計、自然言語処理、機械学習など様々な分野での利用が広まっています。また、組み込み開発での代表的な例としてはRaspberryPiの標準開発環境としてPythonが用意されているため、組み込み業界でもPythonユーザを増やすきっかけとなっています。
色々な場面で活躍するPythonですが、もちろんデメリットもあります。Pythonは汎用性の高い高級言語であるため、プログラムの処理速度はC言語に比べて犠牲となっています。
関連ソリューション
・PythonとC言語
組み込み開発では大きな課題となることが多い処理速度ですが、Pythonの処理速度を解消させるためにC言語と組み合わせる方法や、C言語で問題を根本から解決してしまおうという方法がいくつかあるのでご紹介していきたいと思います。
・PythonからC言語を呼ぶ その1「Python.h」
python.hを使用してPython側で呼び出せるAPIをC言語側に用意し、PythonでそのAPIを呼び出します。また、python.hを使えばC言語からPythonを呼び出すことも可能です。
・PythonからC言語を呼ぶ その2「SWIG」
SWIGというC言語やC++とスクリプト言語をAPIで接続するためのツールを使用し、PythonからAPIを呼び出します。
・PythonからC言語を呼ぶ その3「Boost.Python」
これはC++となるが、その1と流れは同じでboost.pythonを使用してPython側で呼び出せるAPIを用意し、PythonからそのAPIを呼び出します。
・C言語で動かす その1「Micro Python」
Micro Pythonは軽量なマイコンで動作させることを目的にC言語で実装されたPython処理環境です。
・C言語で動かす その2「Cython」
Cythonはコンパイル時にPythonのコードをC言語に変換して、実行速度を上げてしまおうというものです。
・Pythonで組み込み?
RaspberriPiのようにLinux環境でも動作するPythonなので、組み込みシステムに多く使われるLinuxでも問題なく導入することができます。ですが、前に述べた通り、Pythonの処理速度がC言語より遅いのであれば、わざわざ組み込みでPythonなんて使う必要はない、とは単純にいかないのがシステム開発です。様々なライブラリが用意され、複雑な演算処理が1行で書けてしまうPythonは、開発効率を大幅にアップすることができます。そのため、処理速度が求められる部分はC言語やさらにはハードウェアロジックに落とし込み、その他の複雑なアプリケーションはPythonで開発することができます。また、それ以外でも評価などの開発効率化を助けるツールなども簡単に作れてしまうので、組み込みソフトウェア開発者もPythonをマスターすることで、開発者もお客様もみんなが幸せになれるシステム開発となっていくのではないでしょうか。
個別相談も承っております。下記よりお申し込みください。