Python
python入門

Python書いたことないマンによるPython入門1Week戦争録

本記事は、すごく突発的にPythonを学ぶ必要ができてしまった人間による、1週間に及ぶ環境構築とおべんきょう戦争の記録である…。

環境はMac OSX El Capitan(後にhigh Sierra)です。

経緯(興味ない方はスキップ推奨)

自分は元々、iOS/Androidのフロント系の人間です。
プログラマでもないのでコーディングはサンプル書く程度。
そんな自分が、↓のような経緯で急にAIのことを勉強することになりました。GANBARU…

①AIとかできたらエンジニアとして食いっぱぐれないかなぁと思う
②AIとか興味ありますねって上司に言う
③なんか上のほうから「社外のAI講座受講しない?」って指名が来る
④なんかよくわからないけどとりあえずエイヤッで申し込む
⑤なんかよくわかんないけど書類選考に通る
⑥AI講座の人「1週間後に実力試験やるで。来てや。Python書いてもらうで。」 ← いまここ

マジで?Python書いたことねーよ。なんならPythonの綴りすらあやしいよ。

というわけで、1週間でAI講座の人に「エッ…なんで…来ちゃったの…?」って言われないレベルまでpythonを書けるようになるのを目標に、勉強をすることにしました。

Pythonのインストール

バージョンの確認

手元にあるのはMacなので、元々Pythonは入っているはず。ターミナルでバージョンを確認します。

python --version

デフォルトは2.7でした。
しかしやっぱり今から学習するなら3系なのではと思い、3系をブチ込みます。

pyenvのインストール

pyenvで環境管理したいので、下記を参考にpyenvをインストール。

https://omoshetech.com/how-to-manage-python-environments-by-pyenv/

しかし環境のせいか、元々のpythonのインストールされていた場所と違うところに3系が落ちてしまったらしく、わりとこの後面倒なことになるのであった…。

環境変数の追加

みんなだいすき.bash_profileに下記環境変数を追記。
export PATH="$HOME/.pyenv/shims:$PATH"

パスの通し方は下記記事を参考にさせていただきました。ありがとうございます。
pythonのバージョンが切り替わらない

自分のMacには2種類の.bash_profileがある(グローバルのやつとユーザごとのやつ)のですが、ユーザのやつのほうに反映しないとダメでした。冷静に考えればそりゃそうなんだけど…ここでちょっとハマった。

さて、これでpythonの環境自体は整ったはずです。
次に、実際にコーディングする環境を作ります。

コーディング環境を入れる Eclipce編

Eclipce基本設定

pythonの開発環境のおすすめがよくわからなかったので、とりあえずEclipce(pleiades)を入れることにしました。今回は最新のOxygenです。なんて読むの。スペル合ってるかいつも不安になる。

基本手順は下記記事を参考にさせていただきました。ありがとうございます。
Pythonインストール(Mac編)

さて、Eclipce>環境設定>PyDev>インタプリター>Pythonインタプリターを設定しないといけないのですが、
先述の通りどうも自分のMacには2系統のPythonが入っているようで、クイック自動構成からだとプリインのPythonのほうのパスの分しか拾ってきてくれませんでした。
※これがさっき「面倒なことになる」といったやつ。

でも、pyenv経由で入れた新しいほうのインタプリタを使いたかったので、
「新規」>インタープリター実行可能ファイル の欄にターミナルで

which python

した実行結果のパスを張ることで無事登録できました。

ライブラリを入れる

数値計算系ライブラリのインストール

今回Pythonを一週間で覚えないといけなくなった原因は、機械学習を急に勉強することになったためなので、それっぽい有名どころのライブラリを入れます。
ターミナルに下記をッターンです。

pip install numpy われらが科学計算してくれるマン
pip install matplotlib グラフめっちゃ描いてくれるマン
pip install pandas いい感じに表とか操作できるマン
pip install scipy numpyに似てるマン

どうでもいいんですけどずっとscipyのことを「スパイシー」って空目してました。結局なんて読むの。

OpenCVライブラリのインストール(地雷あり)

ついでに文字認識とか顔認識をやりたいと思っていたので、OpenCVを落としました(これはあとでAWSとか使い始めたら使わないかもしれない)。
いまさらですが、python3系なので3系のコマンドで落とします。

pip3 install opencv-python

しかしOpenCVはなんかよくわかんないけどEl Capitan固有のバグ?かなんかで、cv2をimportするとエラー(import cv2 throws Symbol not found)が出るという謎事態が発生し、結局High Sierraに乗り換える羽目になりました。マジかよ。
確かに同じ手順でHigh Sierraでやったらエラー出ないんだぁ…。

参考:import cv2 throws Symbol not found: _clock_gettime

これで一通りPythonの環境は整ったのですが、ここまでやってから、↓の記事を見つけてしまいました。

コーディング環境を入れる Jupyter編

東大松尾研、データサイエンティスト育成講座の演習を無料公開

(下記、記事より引用)
Jupyter Notebook形式で作成された全15章の演習コンテンツ。データのセットアップから解析、可視化やモデルのアウトプットまでを一気通貫で学べるという。データサイエンスの主要言語Pythonの基礎から学べるほか、統計的数値計算や機械学習に関する技術、SQLやMongoDB、分散処理フレームワークのSparkなど、ビッグデータ解析に関する技術も学習できる。

最高のやつかよ…。

でもこれ、Jupyter Notebookじゃないですか。知ってる。Eclipceじゃないやつデショ???
入れます。

まあもうほとんど環境はできちゃってるので、普通にpipで入れるだけ。

pip install jupyter

適当なフォルダを作って、そこにcdしてからターミナルで

jupyter notebook

と入力したら、無事起動しました。

Pythonを学ぶ

さて、ようやく手を動かせる環境が整ったので、実際にPythonを書いてみることにしました。

paiza

最初はpaizaのpython3入門をひたすら見て、書く。をやりました。
https://paiza.jp/works
Python3入門編ってやつです。

さすがにhello worldとかはなーと流し見してたのですが、型キャストの話とかぽつぽつ「えっそういう仕様なの!?」と思うところがあったので、わりとはじめのほうは愚直に見ました。

でも、さすがにプログラミングの基礎っぽいところは時間を掛けすぎてもなんなので(なぜなら一週間で書けるようにならないといけない)、つまみ食いみたいな感じで見ました。
自分のスキルに合わせてなので人それぞれかと思いますが、結局自分が見たのは↓です。他は飛ばしました。

あとはまあ…やればわかるかなって思って…。(面倒になった)
あとのことを考えると、入門編3の05:データの読み込み(標準入力)はやっておけばよかったかなと思う。

AtCoder

なんとなく、それなりに、そこはかとなく書けるような気がしてきたので、Qiitaでもお勧めされていたAtCoderの過去問10選をやりました。

AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~

こちらの記事を参考にしながら(ありがとうございます)、ループや探索系の処理の具体的な書き方を学習しました。

問題の意図がいまいち汲み取れなくて自分で実装するの時間掛かるな…という問題については、上記記事に掲載されているサンプルコードをPythonに書き直すことで、ちょっとでも場数を増やすようにしました。
なんせ数学を高1でやめた人間です。数式に弱い。すみません。

データサイエンティスト育成講座演習

環境構築のところで触れた、東大の研究室が公開したすごい演習講座のドキュメントです。語彙がない。下記から落とせるすごいやつだよ。

GCIデータサイエンティスト育成講座演習コンテンツ 公開ページ

この中には、Pythonの基礎も入っているので、jupyter Notebook形式のドキュメントを読みつつ、途中にある演習問題を適宜解きました。

時間があまりなくて、結局Chapter3くらいまでしか勉強できなかったですが、機械学習に入る前の基礎中の基礎を勉強したいのであれば、Chapter2まででも十分すぎる良コンテンツです。ありがたみがすごい。
さすが敷地内に100円ローソンと普通のローソンがある大学は違う。(?)

ここまで来ると、「なんとなくわかったぜ…だいたいは…おおまかにな!」という状態になりました。
まあ少なくとも、試験で何も書けないすなわち死みたいなことにはならないかな、と思いました。
_人人人人人人_
> 死なない <
 ̄Y^Y^Y^Y^Y ̄

結果

実力試験、無事合格しました!

1週間前には素人だった割にはなんとかなったのではないでしょうか。
Qiitaの先達のみなさまのおかげです。ありがとうございます。

というわけで、無事AIを勉強することができそうなので、今後随時学んだことをまとめようと思います。

_人人人人人人人_
> GANBARUZO <
 ̄Y^Y^Y^Y^Y^Y ̄