こんにちは! けい(Twitter)です。
私は電気電子学生で,Pythonを独学で勉強中です。
学校では例のごとくC言語とMatlabを学びました。
電気電子の研究室では、多くの方がMatlabという有料の数値計算ソフトを利用すると思われます。
私も研究室でMatlabを使用しています。
しかし、学校のプログラミング教育で学ぶ言語だけで本当によいのでしょうか。
そこで今回は、電気電子学生という目線でPythonという言語について有用性をまとめていきたいと思います。
目次
Pythonの学習を始めた理由
ラズパイを使えるようになりたかった
一つめは、ラズベリーパイを自由自在に扱えるようにしたかったからです。
普通に電気電子学生として過ごしていたらラズベリーパイの存在すら知らない人も多いと思います。
実際に私も授業等で知ったわけではなく、友達に高専の情報系の学生がいて、卒業研究の画像処理システムにラズベリーパイを使っているという話を聞いて知りました。
そこからラズベリーパイを買ってみて、触っているうちにPythonという言語で入出力やカメラを制御することを知り、学んでみたいと思いました。
人工知能の仕組み
二つめは、人工知能について理解を深めたいと考えたからです。
これはすごくミーハーだなと思うのですが、結果的に学んでよかったと思います。
Pythonではよく「人工知能に多く使われている」だとか、「人工知能ライブラリが充実している」だとかという情報を素人ながら耳にしました。
確かに、TensorflowやKerasなどの実際のシステムに用いられているような複雑なアルゴリズムが数行で書けるのはとても魅力的だと思います。
その誘惑に負けて、始めはTensorflowの公式サイトの写経をして、実際に画像分類のコードが動かしてとても感動しました。
しかし、いくらTensorflowの動かし方が分かっても、結局人が作ったものの上でしかものを作れないということに気が付きました。例えるなら、Minecraftでサバイバルはできないのに、工業modを入れて延々と遊んでいる状態(とても楽しいのですが)で満足してしまいます。それではいつか足が掬われると思い、基礎からPythonを学ぼうと決意しました。
Pythonを学ぶべき理由
C言語より簡単、短い、無料
C言語くらいしか触ったことがないという方の多くがPythonの記述の簡単さに驚くでしょう。
C言語と比較して、Pythonは変数の型宣言がいりません。変数にいきなり何をぶち込んでもいいのです。例えば、
>>> a = 1
>>> a = "ora-ora-ora-ora!!!!!"
>>> a = "もうやめてーーー”
>>> print(a)
もうやめてーーー
上の例では、ざっくり言うと、aという変数に整数1を代入して、二行目に文字列を代入して、三行目でまた文字列を代入して、aを出力させるというコードです。
C言語ではまず a の型を宣言し、代入しなければなりません。(;も要)
しかし、Pythonでは型が自由自在なのです。そこが C と大きく違う点です。
次に、Pythonは無料という点がPythonの持つ大きな魅力の一つです。以下のツイートより、現役の研究者がこのように述べています。
多くの電気電子学生がmatlabというソフトを研究室で利用しています。
しかし、有料で個人が買うには痛い出費となります。
そこで、Pythonは無料だからこそ習得しておけばどこでも使えるのが強みです。
シミュレーション(数値解析)もできる
pythonには科学計算に必要なライブラリが充実しています。
電気電子ならではのシミュレーションと言えば、
- 制御工学
- 電磁界解析
- 定在波
- 電磁波
などが挙げられると思います。これらはPythonでシミュレーションすることができます。
制御工学には python-control というライブラリがあり、それを使えば現代制御でもロバスト制御でもシミュレーションすることができるのです。
伝送線路の定在波についても、シミュレーションすることができます。下のリンクは以前、私が定在波のシミュレーションをしたときのものです。
マイコンのプログラムも記述
一昔前までは、マイコンはC言語やアセンブリなどの高速で動作するものでしか記述することができませんでした。
しかし、半導体の性能の向上や、MicroPythonの開発により、Pythonでも記述できるマイコンが段々と増えてきています。
例えば、ESP32などのIOTマイコンやM5stack系列などです。
また、最新のものではラズパイPicoもMicroPythonに対応しています。
時代の流れは確実にきています。
この流れに乗るかはあなた次第です。
ラズベリーパイ
あなたが、電気電子学生であるならば、ラズベリーパイという存在を忘れてはなりません。
ラズベリーパイは安価で、しかも入出力やカメラを制御したりできるので、プロトタイピングに多く使われます。
また、ラズベリーパイはOSがLINUXなのでコマンドラインの学習にもなります。
ラズパイは5000円であなたにスマホより多くのものを与えてくれるでしょう。
こちらは、以前にラズパイを使って、ロボットアームを制御したものです。
その他にも,ラズベリーパイでの機械学習や画像処理などを記事にしたので,ぜひ見ていってください.
AIの学習
pythonは人工知能を学ぶ上で、大きな土台となります。
なぜなら、人工知能のライブラリが充実しているからです。
ライブラリというのは、簡単に誰でも使えるようにした型みたいなものです。(誰でもは嘘ですが)
電気電子の分野で注目されているのが強化学習です。
強化学習は、制御工学の分野で今までの常識に囚われない手法で制御します。
例えば、倒立振子を制御するときに、現代制御理論で制御するなら、状態関数を与えなければなりません。
また、倒立振子の物理モデルを計算しなければなりません。
しかし強化学習では、倒立振子のモデルを与えなくても、倒立振子が試行錯誤して倒れないように自分で制御量を学習します。
この二つは大きな違いです。
前者はすべてを計算して、環境モデルを作らなければなりません。
しかし、後者は環境モデルが分からなくても、自分で探ることができるのです。
人間により近いモデルと言ってもいいかもしれません。
赤ちゃんは、自分の足をどのくらい動かせばどれだけ進めるのかが分かりません。
自分で少しずつ学習していき、立つことができるのです。
このようにあらゆる分野でAIが必要となってきているのです。
強化学習のシミュレーションとしてOpenAIGymというライブラリで始めることができます。
私自身も、人工知能を学びたいというミーハーなノリで始めたpythonの学習ですが、初めて本当に良かったと思います。学校でC言語を学んでから,プログラミングに対する意欲が激減しました。アドレスで死にました。(笑)
でも安心してください、そんな私がPythonを学習してまったく苦しくありません。
むしろ、どんどん進めるので楽しいくらいです。
Pythonの学習方法
私の経験
私自身も、たくさんの学習方法を試しました。
- 本を買って、本の内容を写経してみる
- ネットに転がっている情報を見ながら、プログラムを書いてみる
- オンライン動画学習で、動画を見ながら学習を進める
これらの事を試してみて、分かったことがあります。
本の学習はなんかつまらないんですよね。。
教科書を読んでるような感覚で、モチベーションが維持しにくいです。
ネットの情報は初心者の段階は絶対におすすめしません。
ネットの情報って、書いている人のレベルと、対象の読者のレベルのミスマッチが多く起こります。
あと、情報がまとまっていないことも多いので、いきなりネットに頼るのは効率悪いです。
でも唯一、
オンライン動画学習ってめちゃくちゃ面白い
オンライン動画学習は初心者におすすめです。
何より、学習していて飽きません。つまりはモチベーションが高い状態で学習を続けられます。
また情報もまとめっていますし、様々なレベルに対応した教材が用意されています。
オンライン動画学習を始めよう
私はUdemyというオンライン動画サービスを使用しています。
Udemyは世界最大規模の動画学習サービスで、様々なコンテンツが用意されています。
その中でも、初心者向けのPython学習として、「現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用」がおすすめです。
私もこれを購入し、1年経った今でもたまに見返しています。
>> 現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用