ゼロから始めたプログラミング（Python3）

始めまして、自身の技能向上のためにQiitaに登録することにしました。
勉強の合間に調べたことや雑感を残していく予定です。
まずは始めること、ということでプログラミング初心者が詰まったところを振り返りつつジョーク混じりに羅列しました。


##趣旨

これから始める人は何を学べばいいか、それ以外の方は初心者が何を理解してないかの参考にしていただければ幸いです。
Qiitaで色々と勉強させていただいたので慣れると当たり前のことがそうでないと自覚しているうちに書き留めておこうというのが動機です。
当然ながら、主観によるものなので個人差がある事を念頭においてください。

##要約
結論だけ教えてと言う方に向けて先にまとめておきます。

＞初心者はRasPi買って弄るのが一番早い

何故か？
・100の書籍より1回手を動かす方が圧倒的に理解できる。
・やったことが「目に見えて」フィードバックされることは学習効率、モチベーションを間違いなく上げる。
　工作キットも一緒に買ってみるのを強く推奨。LED光らせるだけでプログラミングする感動を得られる。

・Linux系だから必然的にターミナル(cmd)操作を学べる。winより素直
・Linuxの基本操作は検定をやってるLPI JAPANに登録すれば無料のチュートリアルPDFが入手可能
　一通りやるだけでPCの基本がわかる。
・python2、3も最初からある使える状態で入ってる。
・困ったらスクラッチでそれっぽく動作を勉強できる。

**・何より環境設定でつまる**


##※内容は実話基準ですが、ジョーク文なのでその辺を留意してください。
##プログラミング未満
とりあえずありのまま起こったことを書いていこうと思う。
恐らく本当に学びたての人は同意してくれる部分があると思う。


###最初の試練
pythonは初心者に優しい。流行りの機械学習やるならpython!
学び始めて4か月たったが、恐らく間違っていないと思う。けれど残念ながら始めた時はそれ以前の問題なんだ。

正直に言うとpythonをどう導入するかもわからなかったし、何をどこに入れれば良いのかわからなかった。
勿論、最近はとても親切な方が多いからgooleでもyahooでも開いてpythonと打ち込めばすぐにブログや書籍が見つかる。
####とんでもない数が
知識もなしにそこから最適な記事、書籍を見つけることは困難だ。
少なくとも準備したカップラーメンが食えたもんじゃなくなるくらい探し回る必要がある。
そしてようやく見つけたと思ったらこう書いてあるんだ
####python2.7
そもそもどっちを入れたらいいかすらわからない。2.7は現役だという人もいれば3.xが最新だから迷わず3.xを入れるべきだという人もいる。
結論から言えばpython3を学ぶことにしたし、機械学習系のワークフレームもpython3系が多いので正解だったと思っている。
けれど残念ながら初心者はそれすらわからないのだ。


###不思議の国のcmd
ようやっとpython3を学ぶこと決められたので早速インストールしよう。
さぁ公式サイトに辿り着いたぞ！
ところでpythonってどこでインストールするの？cmd,apt-get？ってなんのこと？
やぁ！googleまたあったね。
そうして、親切な記事に従ってインストールしたころには空は真っ赤に染まっている。残念ながらジョークじゃないんだ。
python3を開いて始めようと思っていったらネットで見かけた通り書いたのにエラーになるんだ、信じられないだろ？
どうやらライブラリはあらかじめダウンロードしてimportしなければいけないらしい。

必要なライブラリはcmdでダウンロードしろ？
そもそもライブラリってなんだ？cmdでダウンロードとか意味が分からない。

とりあえず左下からcmdを開いてapt-getと入れるとwindows先生は怒ってエラーを返してくる。
おまけにお勧めのライブラリはいっぱいあってどれを入れたらいいかすらわからないんだ。


仕方がないので今度はyahooに聞いてみるとAnacondaというお友達を紹介される。サイトを開きpython3.x向けをダウンロード。
インストールしている間に夕飯を食べていると相棒のPCから素敵なメッセージが届くFailed create Anaconda menus
oh shit!ユーザーネームが日本語だ‼


###Raspiと言う選択
多くの苦難に見舞われた結果、子供向けのプログラム学習ハードRaspberry Pi ,通称Raspiなるものに辿り着いた。
どうやら親切なこいつは小学生でも出来るらしい。流石にこれくらいなら何とかなりそうだ。
Amazonでカートに入れるとよく一緒に購入されている書籍が表示される。
「初めてのラズベリーパイ」とか「ラズパイで初めての電子工作」とりあえずカーソルが近い方を追加する。
散々に痛い目を見たのでついでにpython3の入門書をカートに入れておく。
あぁ、、それと後から分かったことだが自分の運に自信がないならminiSDをついでに買うべきだ。
備え付けのminiSDは少し動くとデータを消化しておかわりをせがんでくるとんでもない欠陥品だ。
それと電源はついてこないので一緒に買っておくと数日待たなくて済む。

###今までの苦労はコピペ未満
Amazonの箱を開封すると、とんでもない事実に気づく。
入門書は小学校の教科書より厚いんだ。少なくとも大学の専門書くらいはある。枕に最適だ。
襲い来る睡魔をこらえながらサイトからrabishを落としてminiSDにデータをコピーする。
手順はサイトを見ても良いし入門書を見ても良い、しかし時間と言うものは金で節約できるという点は留意すべきだ。
youtubeで動画を見ているうちにダウンロードが終わるので、miniSDを取り出してRaspiの電源を入れる。
ようやく自由にpython3を扱える環境を手に入れられた。

###入門書に入門
いよいよプログラムに入門だ！
ドキドキしながらページをめくるとpython3の立ち上げ方を押してくれるのでターミナルからpython3と打ち込む。
後は事前に負えてくれた秘密の合言葉を入れるだけだ。
”Hello world!”
意を決してprint("Hello world")と打ち込んだ甲斐があった。書いた通りに動く。これが実感できただけでも大きな収穫だ。
後は本に従って試してみればいいa = 3と書いてもエラーはでないしtype(a)と書けばintと教えてくれる。


###100の文字より1の動作
どうやらプログラムの世界には独自のルールがあるらしい。
文字は一文字たりとも間違ってはいけないし、a=3とa==3は全く別の操作なんだ。
一方で言ったことはきちんと覚えておいてくれる。賢明さもある。
a =3と打てば黙って覚えてくれるし、a==2と打てばFalseと教えてくれる。
黒板に「a = 3は変数に3を代入する」と書かれたときは忘れてしまったのに。


###プログラムは動かない
ありがとうpython,君のことはわかったよ。ところでプログラムってどう書くんだい？
エディタに一連の流れを書いてname.pyと保存すればいい。わかったやってみよう。
time関数なるものを入れて時間を表示させるんだ。
impory time
SyntaxError: invalid syntax
oh,python。君はなんて忠実なんだ。市役所よりもお堅いなんて。


###LEDより輝かしい
なぁ、pythonそろそろ文字か数字以外を返してくれないか？
そう思ったらラズベリーパイ電子工作入門を買おう。色んなメーカーが出しているので安いのを買えばいい。
LEDとRasberry piを使えば光が点灯できる。複雑なデバイスを動かす必要はない。
必要な呪文はラズベリーパイ入門に書いてある。手順通りに書き上げたらデスクトップにLED.pyを保存。
配線図にしたがってコードをつなげば完了。さぁ、機は熟した。ファイルをダブルクリックするだけでいい。
ピカッ
自分の書いたプログラムで物が動くというのはコードを10個書き終わった時より感動的だ。
やっていることが正しいって確信が持てるし、いずれはすごいことが出来るって希望が持てる。
光らない？そいつはプログラムに脱字があるか、LEDを逆に刺してるかのどっちかだ。


###おまけ
人間ちょっとうまくいくと欲が出る。音楽だって流したいし、webカメラだってつなぎたい。
そう思ったならまずはLPI JAPANにいこう。登録すればLinuxのマニュアルをくれる。
少なくとも初めてスマートフォンを買った時より分厚いマニュアルをもらえる。
そしてLinuxの動作を覚えたら好きなツールをダウンロードしよう。
何を入れたらいいかはgoogleにラズパイ、webカメラと入れれば教えてくれる。
色んな所が特集を組んでいるので参考には事欠かない。自分はDevice Plusなんかを参考にした。


プログラムに詰まったらスクラッチを使おう。
どんな順番で入れたら動くかのヒントになる。
マスコットの猫は不細工だがレゴブロックで遊ぶくらい簡単に動いてくれる可愛いやつだ。