Python速修
スーパーバイザーで入ったプロジェクトがPythonメインだったため、これまでずっと食わず嫌いだったPythonを速修しています。初めてPythonの名を知ったのは間違いなく10年以上前、もしかしたら15年ぐらいかもと思いますが、オフサイドルールと呼ばれる改行とインデントでブロック認識させる書き方がなんか馴染めなくてHello World以前に避けてました(たとえばYAMLよりJSONの方が好き)。時が過ぎ、GoogleがAppEngineをPython版でリリースした時も遅れてJava版も出たし、クラウドでの機械学習等についてはその機運が高まっている時にそもそも自分が手を動かすところにいなかった。つまりこれまでは避けてもなんの支障もなかった。
しかし、今やAmazonやGoogleやその他のクラウドでもPythonが第一言語なのかなというぐらいにどこでも対応されているのでやって無駄はなかろうし、とにかくプロジェクトの採用言語がすでにPythonだったから避けられないだろうと、重い腰あげて学んでみました。隙間時間での取り組みでカレンダーとしては年明け約二週間、ここまでで正味3日ぐらい。
Python環境を作る
MacにHomeBrewでpyenv入れてPython 3.6.4をインストールしました。その後のことですがリントのためflake8も入れた。
AtomでのPython環境作り
- autocomplete-python:識別子の自動補完。やってみたら完璧レベルに補完してくれて快適
- python-indent:オフサイドルールのためのインデント処理。これ大事。
- indent-guide-improved:インデントを可視化する。これ重要。
- linter-flake8:当然のリントツール。私はこれが無いとアプリケーション書けないと思ってる。
- platformio-ide-terminal:シェルがエディタにくっついていると便利。
Pythonチュートリアル
- 作者: Guido van Rossum,鴨澤眞夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/03/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
まずは移動時間や寝る前とか、待ち合わせ前に喫茶店で時間調整しているときに本を一冊。このPythonチュートリアルはどうやら公式的なものっぽい位置付けで、常にWEBに上がってるものの製本版なのですが、私も中高年なのでスクリーン長時間みてると目がしょぼつくから紙で購入。
Pythonの公式姿勢が此の期に及んでまだ控えめなのか、他に書けるプログラミング言語がしっかりある人向けにしか書かれていない。すなわち非オフサイドルールなC系文法に馴染んでいる人にPythonすごいよとアピールする本。結果としてチュートリアルにして全く入門本でなく、Python初心者に向けていて全くプログラミング初心者には向けていないのが私にちょうど良かった。
- この本でだいたいPythonの基本的なことを知ることができるんじゃないかな?地平線を知らないので断言できないが。
- 4章 制御構造、5章 データ構造、6章 モジュール、これらでPython書ける気がする。実際書けた。
- 続いて7章 例外処理、8章 クラス、で他言語との文法の違いだけ追えば、既存コードを読める。
- 薄い本なので正味1日ぐらいで終えられる。
既にPythonが素敵だなあと思い始めてきた。私はGO言語を書いたときにタプルとスライスを知って便利だと思ってたのだけど、どちらもPythonにしっかりあって素敵。タプルの代入で開くやり方で関数戻り値の書き方もGO言語的(もしくはSwift的とも)にできる。
Fluent Python
Fluent Python ―Pythonicな思考とコーディング手法
- 作者: Luciano Ramalho,豊沢聡,桑井博之,梶原玲子
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/10/07
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
amazon.co.jpでポチった時には気がつかなかったが、これは800ページ弱と厚く、昔ながらのコンピューター書籍サイズな大型本でした。普段持ち歩く重さでは無いです。
まだ読み始めですが、これは超良書。当然プログラム入門本で無くPython初心者向けでもないのですが、かといって普段づかいの実践的なことが内容なので興味を逸らさず、5,800円の書籍価格と読むために係る自分の時給を足しても久しぶりにTOCの良い本だった。マストバイ。
- やっぱりPythonはそのデータ構造のところのテクニックがユニークだし大事。
- 関数型プログラミングできる。データ構造のところで知ったデリゲートパターン(?、つまりはダンダー)を活用したのも素敵だけど、最近の私はTypeScriptでもクラスベースを避け関数型風に書くのが好きなのでPythonでもそう書けるのは嬉しい。
- 普通の自然科学書としても読んで面白いレベル。
- まだまだ読み進める先の先には、コルーチンとか非同期処理についてもちゃんと章があった。今読んでるところから400ページぐらい後ろなので目次しか見てないけど。
PyCharm
PyCharmはJetBrainのシリーズ商品でPythonのIDEですがこちらにコミュニティ版として無料の奴があった。IDEとしてJetBrainの製品群は完成度レベルが高いのですがPyCharmはいかに?Atomで環境作ったばかりで痛みがまだ無いために試していない。この後、速修時期を終えてもまだしばらくPythonやることあればダウンロードしたり課金したりするかもしれない。
ちなみにWEBフロントを書く用にはWebStormがお気に入りでずっとサブスクライブ課金しています。WebStormは初期試用無料はあるけどコミュニティ版はないってのがエグいな。それだけ需要があるってことなのでしょう。
現時点での感想
Python面白い。特にデータ構造周辺が素敵。まだPythonで非同期処理を書く局面に到達できていないのですが、クラウドAPIコールで必ず出てきますので。。。Pythonが面白いとはいえ、まだ私はTypeScriptがより好きだな。画面をPythonで書くことはおそらくこれからもないと思うので、サーバ&クライアントを両方書けるTypeScriptがまだまだラブ。