バイオリンのほうではいろいろと個人的に残念なことがあったのではありますが、気を取り直して。
まっとうなプログラミング経験はN88-BASIC以外にはないに等しい自分ですが、プログラミングの楽しさは知っています。
ということで、この夏休みに、最近興味の出てきたPythonをかじってみることにしました。
Pythonを選んだのは、人工知能の開発にも使われるものでありながら、いわゆる学習コストが低いとのことなので。
「Pythonの学習コストが低いという話」
http://qiita.com/karashi39/items/1a2514829f4249a4cefc
や、そこにあるリンク先のようなところを参考にしました。
帰省先に持ってきたテキストは、
・日経ソフトウェア2017年6月号付録
「日経平均株価をスクレイピングしよう
5日間で学ぶプログラミング Python編」
と、その続編の
・日経ソフトウェア2017年9月号付録
「Python+便利ツールで実践!
5日間で学ぶスクレイピングのキホン
です。
とっかかりとしては、こんなもんでいいかなと。
合計10日間を2日間で通過しました。
「5日間で学ぶプログラミング Python編」
1日目 初めてのPython
・Part1 Pythonはじめました
→Pythonのインストール。なんとなく64ビット版じゃなく32bit版にしておく。テキスト余談の昔話として書いてある「紙テープ」は僕も使ったことない(見たことはある)けれど、1行1枚のマークシートでの入力は大学の授業で1回だけやったなー(FORTRAN)。
・Part2 計算してみよう
→インタプリタ直接入力で。print関数、四則演算。0.1+0.1+0.1=0.30...中略...04になるよ等。あ、ここには書いてないけどデータ型の宣言はいらないのか。
・Part3 数値と文字列
→「'」か「"」でくくる。str関数、文字コード。
・Part4 入力してみよう
→input関数、変数の名前のルール(大文字と小文字は区別されるなど)、int関数。
★ついでに調べると、関数内で参照されるだけの変数は暗黙的にグローバル。関数の本体のどこかで値が変数に代入されたなら、それは明示的にグローバルであると宣言されない限り、ローカル。
2日目 制御文と関数
・Part1 if文と比較演算子
→if文、インデントによる「ブロック」、比較演算子、if else文。
・Part2 論理演算子
→and、or、not、True、False。
・Part3 while文
→while文、break、continue。
・Part4 関数の定義
→ATOM(エディタ)のインストール、Pythonモード。.pyファイルでの足し算の実行、format関数、return文。
※コーディングスタイル
・インデントは空白4つ。タブは使わない。
・ソースコードの幅は79文字を超えないように行を折り返す
・コードブロックの区切りに空行を使う。
・コメントは行に独立で書く
・演算子の前後とコンマの後には空白を入れる。括弧類のすぐ内側には空白を入れない。
★分岐とループと関数(サブルーチン)。昔ながらのフローチャートを思い出す。ここいらあたりは文法的な書き方が少し違うだけで基本は変わらない。インデントによるブロックは、インデントでソース見やすくするのが好きな自分には向いているかも。
3日目 Pythonのデータ型
・Part1 リスト
→配列なんだが、appendメソッド、insertメソッド、removeメソッドで要素数の変更ができる。len関数、変数に代入されているのはリストオブジェクト自体ではなくリストオブジェクトの参照値(なんのこっちゃ)。
・Part2 リストの便利な機能
→whileで回して、countメソッド、for文、スライス、inキーワード、sortメソッド、reverseメソッド。
・Part3 タプルと集合
→要素の値を変更できない、要素無しまたは1つの時はカンマが必要、del文、可変長引数、集合(同じ値を持てない、順番がない)、set関数、集合演算。
・Part4 辞書
→要素が、key:valueの組み合わせでできている、要素の追加にメソッドを使わなくていい、dict関数でも作れる、内包表現、、、、、、
★タプルとか辞書とか僕には新しい。配列使ってのいろいろって、とても楽になってるんだろうなぁ。
仮面ライダータプル:ガイアメモリの値は変更できない。可変長引数によりガイアメモリがいくつあっても大丈夫・・・いえ、なんでもありません。
4日目 クラスとモジュール
・Part1 オブジェクト指向
→オブジェクト:
データ(昔で言えば変数)=属性
処理(昔でいえば関数)=振る舞い
オブジェクトはクラス(「型」)から生成される。
クラスから生成されたオブジェクトはインスタンスという。
・Part2 クラス・継承
→仮に、オブジェクトは一つでいいのなら、
クラス名.変数名
クラス名.メソッド名()
になるが、
インスタンスメソッドに引数selfを
・・・とか言ってるうちに、何?コンストラクタ(__init__メソッド)とか?
・Part3 例外
→tryブロック、exceptブロック、elseブロック、finallyブロック。これはわかりやすい。
・Part4 モジュール
→import文で取り込んで、モジュール名.関数名()で呼び出す。これもわかりやすい。
★オブジェクト指向は、日本語の本が出始めた頃にちょっとだけかじったけど、その概念自体がよくわからんのよなぁ。でも、手軽にプログラミング遊びをしたいだけなので、今のところは便利なモジュールの使い方がわかれば良いのだ(^^;
5日目 スクレイピング
・Part1 eメールの基礎と準備
→クライアントとサーバー、プロトコル、SMTP、POP3、IMAP4、というものがあり、プロトコルを利用する。ここでは、Gmailを利用する。
・Part2 Pythonからメールを送信
→必要なモジュールをimportして(パッケージから必要なものだけというのもあるのか)、書いてある通りにして成功。本文の改行はどうするんだろう(^^;
・Part3 Webサーバーと通信
→Webページから画像ひとつをダウンロード成功。例はPythonサイトからPythonのロゴだったけど、勤め先サイトのロゴにしてみた(^^; 同じファイル名だとどんどん上書きされる(^^;
・Part4 外部ライブラリを使う
→例は、Yahoo!ファイナンスの日経平均株価の情報を取り出す。外部モジュールbeautifulsoup4をpip3でインストール。アンインストールするときはどうするんだろう・・・調べてみると、installをuninstallと書けばいいらしい(^^; しかし、今日は値動きがないから、何度取りに行っても同じ数字(笑)
★続編に続く。
「5日間で学ぶスクレイピングのキホン」
1日目 Webの基礎
・Part1 Webサーバーを起動しよう
→PythonにはWebサーバーのモジュールが標準装備、しかし、書いてある通りに入力するとエラーが出る。
「へたっぴpythonista」というブログの
http.serverが起動しない・・・
http://hetapy.hatenablog.com/entry/2013/12/23/131356
と同じ症状で
サーバー起動しました!
http://hetapy.hatenablog.com/entry/2013/12/23/141337
で解決。ありがとうございます。
・Part2 WebサーバーとHTMLの関係
・Part3 HTMLの基礎
・Part4 tableタグ
★HTMLはここに書かれてることくらいはわかるから省略。
2日目 cssとJavaScript
・Part1 cssとは
・Part2 cssのセレクタ
・Part3 JavaScriptとは
・Part4 関数とイベント
★cssはここに書かれてることくらいはわかるから省略。JavaScriptで関数、あー、一時期面白がってやったけどもう覚えてないや(^^; でも調べながらなら何とでもなるだろうから省略。
3日目 フォームと正規表現
・Part1 フォーム
・Part2 formの入力をPythonで受け取る
・Part3 正規表現で入力チェック
★フォーム、すっかり忘れてるけど、これも何とかなるから省略。そうか、サーバーでPythonが動くのならPythonで処理できるんだ(ブログ書いているレンタルサーバーはPython使えると書いてあったはず。ラッキーかも)。正規表現も、秀丸でテキスト置換するときに少し使ってるので、何とかなるから省略。
4日目 Seleniumで自動化
・Part1 Seleniumとは
・Part2 Selenium IDE
→Firefoxに「Selenium IDE」をアドオン・・・と思ったら、This add-on is not compatible with your version of Firefox. でしたわ(笑)。
・Part3 PythonからSeleniumを使う
→pipでSeleniumモジュールをインストール、geckodriverをダウンロードしてpathの通るところに置き、Pythonインタプリタからブラウザの起動、Googleページの表示、検索キーワードの入力、クリックイベントを発生させる、ところまで。
★ブラウザをリモートコントロールしてるみたいでおもしろーい(笑)
5日目 Pythonでスクレイピング
・Part1 正規表現でスクレイピング
・Part2 beautifulsoup4とXPathを使う
・Part3 Seleniumとの連携
★ページをダウンロードして、そこから必要な個所を切り出す方法のいろいろ。
最後に、スクレイピング自体は違法行為ではないけれど、サイト運営者に迷惑とならない範囲で、という注意があって、テキストはおしまい。
お疲れさまでした。
やっぱり、プログラミングは、習うより慣れろだなぁ。
やりたいことはあるので、やってみょう。
なにかできたら、やらかしたら、また書きます。
コメントする