インターネットや本などで独学する人が増えています。
なんとなく稼げそう、なんとなく面白そうで始める人が多いと思います。
そして、インターネットや本の例題を解いて、
案外簡単じゃんと思う人も多いと思います。

でも、いざ、何かやってみようとなった時、
どこから始めればよいのかがわからない。
1.課題をどう設定するか?
2.何かできるか?

ここで悩んでなかなか先へ進めない。
それは次の実践経験がないからと思います。

1.構造的に問題を分解できるか?
2.問題点として、ターゲットを捉えられているか?
3.解決の手順を段取りできるか?

例えば、次の課題を考えてみます。

命題:
「Pythonを使って、カーテンを日の出、日の入りの時間に合わせて、自動的に開け閉めを行う。」

いきなり難しいですよね?

でも、問題を構造的に分解できれば、見方が変わります。

分解した課題:
1.カーテンを開け閉めする装置
2.日の出、日の入り時間の取得
3.日の出、日の入り時間の時間をもって、カーテンの開閉装置へ伝える

さらに細分化する
1.カーテンを開け閉めする装置
1-1.モーターが必要
1-2.電源が必要
1-3.配線が必要

2.日の出、日の入り時間の取得
2-1.Pythonのライブラリを探す
2-2.日の出、日の入りは地域によって異なるため、計算に必要な緯度経度が必要
2-3.自分の住んでいる住所から緯度経度を探す

3.日の出、日の入り時間の時間をもって、カーテンの開閉装置へ伝える
3-1.カーテンの開閉装置はモーターで動いているので、モーター制御を調べる
3-2.モーター制御するには、モータードライバーを使う
3-3.モータードライバーへの指示するには、電気信号を送る必要がある
3-4.電気信号を送るには、通常のPCよりもラズパイOrマイコンからできる
3-5、電気信号を送るプログラムを探す
3-6、日の出、日の入り時間というトリガーOrバッチを作る
3-7.日の出、日の入り時間の実行バッチから電気信号を送るプログラムを実行する

ここからさらに問題点を細かく分解してゆくのだが、ここで割愛します。

上記の命題を実現するプログラムは、以下に作ってあります。

https://github.com/akeyi2018/FlaskStudy/tree/master/curtain_prj

このように問題を細かく分解し、深堀することによってはじめて、問題解決につながります。