- 最終更新日
- 記事公開日
マイコン開発に必要な『プログラミング』を習得する方法(ラズパイ・Python・Arduino言語など)
「ラズパイを使って何か動かしたいけど、プログラミングが分からない」
「プログラミングを覚えたいけど、どうやって学習していいのか分からない」
今回は、このように悩んでいる方に見て頂きたい記事です。
私が実際にプログラミングを覚えた体験談を元に、ムダなく最速でプログラミングを学習する方法について書いてみます。
基本は独学
「ラズパイ」や「Arduino」といったマイコンの制御に用いられるプログラム言語は、比較的、学習のしやすいプログラム言語が採用されています。
例えば、「Python(パイソン)」
Pythonは、ラズパイを制御するためのプログラム言語として、現在の主流となっています。
Pythonは元々、機械学習や人工知能の開発現場において「プログラマーではない研究者でも簡単に扱える」という事から、人気に火がつきました。
よって、プログラム未経験の人でも、独学での習得は十分可能です。
入門書は不要
「さープログラムを勉強するぞぉ!」と意気込んで、とりあえずプログラミングの入門書を一冊買ってくる人がいますが、このやり方はNG。
ほぼ100%の確率で挫折します。
なぜダメなのか?
それは「プログラミングを覚えたい」が目標になっているからです。
まずは、
「プログラムで何がしたいのか?何を作りたいのか?」
を決めることが大事です。
例えば、
- スマートロックを作りたい
- アルコール自動噴射機を作りたい
- ロボットを作ってみたい
のように具体的な目的を決めます。
やることが決まったら、あとはその目的に向かって動くだけ。
ネット検索を活用して、情報を集めましょう。
プログラムを完成させるコツは、必要なときに必要な情報だけを探し出すこと。
書籍は必要ありません。
本に書いてあることをいちいち覚えていたら、時間がいくらあっても足りません。
Lチカで実践
やりたいことは決まりましたか?
とはいえ、いきなり難易度が高すぎるものをだと困るので、ためしに以下の練習課題に取り組んでみて下さい。
【練習課題】
マイコンを使って、LEDを光らせる
この「LEDを光らせる」という課題は、マイコン制御の基本中の基本『Lチカ』と呼ばれる課題です。
一見、簡単そうに思えるかもしれませんが、
- モジュールの読み込み
- 信号を送るピンの設定
- LEDを点灯させるためのプログラム
- LEDや抵抗など、電子部品の選別
- マイコンの初期設定
などなど。
基本を抑えるためのさまざまな課題が隠れています。
最初は、かなり苦労するかもしれません。
何度もつまづくことがあるでしょう。
しかし、ネットで検索すれば、そこに答えは書いてあります。
例えば、
「ラズパイ Lチカ」
とGoogleで検索すれば、情報は大量に出てきます。
もちろん、調べるだけではダメです。
自分の手を動かして、実際にやってみることが大事です。
さて、実はこのLチカさえできてしまえば、もうプログラミングは難しくありません。
あとは実践あるのみ。
調べて→ 試して→ 躓いて → 調べて→ 試して→ 躓いてを繰り返す作業です。
プログラミングは、実際にコードを打つ時間が1割。
調べている時間・考えている時間が9割です。
プログラミングとは、ほとんどが答えを探すための作業です。
挫折する理由
「いざ、プログラミングに手を出してみたものの、途中でやめてしまった」
「なんだかプログラミングへの熱が冷めてしまった」
こんな感じで、プログラミングを挫折してしまった人は多いはずです。
おそらく、プログラミングを始めた人のうち、9割くらいは挫折しているのではないでしょうか。
プログラミングを挫折してしまう理由。
それは「分からないを解決できないから」です。
例えば、RPGゲームを思い浮かべてください。
次にどこに行けばいいのか?何をすればいいのか?
ゲームだったら、村人に聞くなり、攻略本を見るなり、ネットで検索するなりすれば、すぐに答えが見つかります。
ところが、プログラムの場合はそう簡単にはいきません。
みんなが同じ目的に向かうゲームとは違って、プログラムは目的や手段がそれぞれ違っています。
つまり、調べても、正解があるとは限らないわけです。
例えば、ラズパイでLEDを光らせようとしたとき。
電源を投入しても、うまく光りませんでした。
そんなとき、
「ラズパイ LED 光らない」
こんなキーワードで検索しても、解決までの道はほど遠いです。
考えられる原因が多すぎます。
例えば、
- ラズパイが壊れているかもしない
- LEDが壊れているのかもしれない
- 抵抗値が合っていないのかもしれない
- 電源の電圧が合っていないのかもしれない
- プログラムが間違えているのかもしれない
- プログラムがうまく書き込めていないのかもしれない
- ケーブルが断線しているのかもしれない
などなど。
今パッと考えただけで、これだけあります。
もしこのまま数日間も問題が解決できなかったら、そりゃ、飽きますよ。
モチベーションが下がってしまう気持ちは痛いほど分かります。
挫折の対処法
では、挫折しないためにどうすれば良いのか?
方法は3つあります。
1.モチベーションが上がるまで放置
そもそもプログラミング学習に挫折はつきものです。
私だって習得するまでに、何度か挫折しています。
また、やる気が出てくるまでひたすら待ちましょう。
待っている間は挫折とは言いません。
充電期間です。
次にやる気が出てくるの、数日後かもしれない。
数ヵ月後かもしれない。
数年後かもしれない。
もしかすると、ずっと来ないかもしれません。
でも、それでもいいじゃないですか。
もしずっとやる気が起きないのなら、それくらいの情熱しかなかった。
それが分かっただけでも収穫は十分です。
そのときは、プログラミング以外のことにも挑戦してみましょう。
2.やり方を変えてみる
とりあえず、問題さえ解決してしまえば、挫折を食い止める効果はあります。
今までとは違ったやり方で、強引にでも問題を解決してしまうのも一つの手です。
例えば、
- マイコンをラズパイからArduinoに変えてみる
- 電子工作に詳しそうなブログに直接コメントして聞いてみる
- Twitterで検索してみる
- 最初からやり直してみる
などなど。
ずっとネット検索だけに頼っていると、頭がガチガチになっている場合があります。
意外と、プログラムは自分のミスに気付けないものです。
やり方が変わると、見る角度も変わります。
ふとした瞬間に「あ、もしかして・・・」と、ヒントが見つかることも多いです。
私の場合、お風呂に入っているときに、ふと解決策を思いつくことがあります。
あれだけパソコンの前で「分からない・・・」と頭を抱えていたのに、コードを書いていない時の方が良いアイディアが思い浮かぶので、不思議なものです。
原因が分かると、「あ、なんだ!そんなことか」という経験が山ほどあります。
やり方を変えるのは、思い込みを捨てるための良いきっかけになります。
3.高額じゃないプログラミング講座を利用する
「プログラミングスクールなんて金のムダ!」
「独学できる奴じゃないと、まともなプログラムは書けない!」
昔の私は、こう思ってました。
でも、時代は変わりましたね。
- Pythonのようにプログラミング未経験でも習得しやすい言語の登場
- WEB系のような覚えたてのプログラミングでも出来る仕事が増えた
- 独学でムダな時間を費やしてる場合じゃない
昔は独学しかなかった
そもそも昔は、独学以外に習得する方法が無かったんです。
まだまだインターネット上にもプログラミングの情報が乏しかった。
だから、バグが起きるたびに一つ一つしらみつぶしに原因を探していくほかありませんでした。
たくさんムダな時間を費やしました。
私の場合、プログラミング習得までにおそらく5年くらい掛かってます。
もしあの頃、プログラミングスクールのような「分からないことがあったら、すぐ聞ける」という環境が整っていたら、もっと短期間で習得できていたと思います。
勉強代を取り返せる時代
今の時代の何が良いかって、勉強にお金を掛けても、その分取り返すチャンスがありふれてるってことです。
昔はプログラムの仕事と言えば、大手のシステム開発くらいしかありませんでした。
ところが今は、小さいお店や企業でも、ホームページやWEBシステムを導入しています。
最近、フリーランスという働き方を選ぶ人が増えてきた背景には、こういった「個人で受注できる仕事が増えてきた」ということも関係しているでしょう。
高額なプログラミングスクールは必要ない
マイコンで使用するプログラムは、それほど複雑なコードではありません。
一か月も勉強すれば、十分習得できるような難易度です。
正直、数十万円もするような高額なプログラミングスクールは必要ありません。
ちなみに、いくつかのプログラミングスクールについて調べてみましたが、マイコン向けに用意されたカリキュラムはほとんど存在していませんでした。
- ウェブサイトを制作する際に使用するHTML/CSS/JavaScript
- WEBシステムの構築に必要なPHP/SQL
- AI機械学習向けの高度なPyton
このように実務向けのカリキュラムばかりです。
たしかに私が習得したプログラムの順番を辿ってみると、
BASIC → C言語 → HTML → CSS → JavaScript → Perl → PHP → SQL → Python
という感じなので、言語を学ぶ一手としては悪くありません。
しかし、実際これらを業務に10年フリーランスとして生きてきた私からすれば、たかだか数ヵ月スクールで勉強した知識では、何の役にも立ちません。
「マイコンが趣味でプログラミングは独学で覚えた」という人の方が、よっぽど将来性があります。
もちろん、プログラミングスクールが独学よりも圧倒的に優れている点もあります。
それは「聞くことができる」こと。
プログラミングスクールでは、教材を進めて行くうえで分からないことがあったときは、Q&A掲示板に質問を投稿することができます。
当然ですが、プログラミングスクールの掲示板は質が高いです。
Yahoo知恵袋のようにトンチンカンな回答をされることはありません。
掲示板を担当している講師陣には「掲示板に返信したら報酬〇〇円」みたいな制度があるからです。
実際のところ、プログラムの質問に答えるのは大変な作業です。
特に相手が初心者の場合、返信するために必要な情報が足りないことも多いです。
例えば、
- 何がしたいのか?
- 制限はあるのか?
- 現在、どんな状況なのか?
- 何を試したのか?
- どんな環境でテストしているのか?
などなど。
その状況によって、ベストな回答は違ってきます。
たった数百文字で回答できるのではありません。
一往復で終わらず、何度もやりとりすることも多いでしょう。
それでも最後まで付き合ってくれるのが、プログラミングスクールの大きな魅力です。
じゃあ、結局どうすればいいのか?
オススメは「Udemy」で公開されているマイコン用のプログラム講座を受講することです。
【初心者向け】直感的にわかる!電気回路/デジタル回路の基礎を学ぼう【Vol.2】【Arduinoで電子工作も学べる】 | Udemy
技術書、一冊分の値段です。
動画の手順通りに従うだけなので、本を買うよりも圧倒的に挫折しにくいです。
もし、このカリキュラムを終えることができれば、プログラミングを身につけられる見込みありです。
逆に続かなかったときは、プログラミングの習得は確実に無理です。
お金は無駄になりますが、高額なプログラミングスクールの解約金(年払いの50%)に比べれば、軽傷で済みます。
でも、挫折することは別に悪いことではありません。
「プログラミングへの情熱がそれほどなかった」というだけの話です。
そのことが分かっただけでも十分です。
ということで、以上『マイコン開発に必要なプログラミングを習得する方法』でした。
こんなに長々と書いた文章を最後まで読んでくれて、ありがとうございます!