Spinach Forest

October, 2016

/ Debates   / 自転車通勤   / Book: High Performance Python   / VS Code, Jedi, Rope   / PyCharm and Type Hinting   / Fluent Python   / Unlearning Anarchism   / Inflammation   / CLion   / ... 

Debates

|

結局 Presidential Debates は三回とも観てしまった。一回目以降は時間の無駄だった気もするけれど、まあ四年に一回だからよしとしよう。

自分は debates というものがまったく好きではないことを自覚した。Debates は conversation ではない。相手ではなく聴衆に話しかけている。二人並べることに生産的な意味合いがない。二人並べておくと 半リアルタイムで相手を罵れるぶん盛り上がり、聴衆の気は引きやすいだろうというのはわかる。 こうした debates で poll が動くことも多いというけれど、こんな茶番で政局が決まってしまうのはちょっとやだね。

Presidential election debates のおかげで人々が選挙自体に関心を寄せる面はあるとも思う。あと本来なら特に聞きたいとも思わない対立候補の主張を強制的に聞かされるというのも、気分は悪いが視野が広がる、こともある。おおむねこいつはやっぱりダメなんじゃないかという確信を深めるだけだった気もするけれど・・・。

あわせて選挙関係のニュースもよく読むようになった。普段あまり気にしていないアメリカの事情やアメリカ人の関心がわかるのはよい。

たとえばしばしば話題でてくる coal miner. 炭坑のない国から来た身としてはほとんどファンタジーの中の存在だった。でも US だと消費電力源の 3-4 割が coal で、しかも 20 年くらい前は更に 2 割くらい多かった。これだけの coal を自国で掘っているなら、たしかに coal miner も沢山いるのだろう。そして単なるしがない肉体労働者かとおもいきや意外と稼いでいる。そんな稼げる仕事が政策の煽りでなくなったと感じていたら、取り返したいと思うのはわからなくもない。

銃にしても、しょうじき Second Amendment は自分には狂ってるとしか思えないが、アメリカ人からみたら憲法第9条も狂ってるんだろうなとは思う。そして Second amendment を尊ぶ人々の振る舞いに article 9 を尊びがちな自分が向ける視線は、湧き上がるアメリカってヘンな国だよなという印象の出処を端的にあらわしている気がする。

などと疲弊したあと Barak および Michell Obama の昔のスピーチをみるとなんだかすごくキラキラしていて, 2008 年の選挙はきっともっともっと盛り上がって楽しかったのだろうなと思いを馳せる。そんなキラキラスピーチの原稿を書いたとおもわれる元 Obama の speech writer は ハリウッドの screen writer を目指すと職を辞し、今はなぜか政治 podcast をやっている。聞いてみたらずいぶん軽薄でびっくり。失望しつつ、これもアメリカらしさなのかとちょっと思ったりする。

自転車通勤

p1180444

通勤用の自転車を盗まれた。自転車置き場には切断されたロックが残されていた。以前は盗難防止のため室内に置いていたのだけれど、引っ越したあとは隣人がみな家の外に置いているのと居間が狭くなったなどのなりゆきで屋外に置いていた。鍵を頑丈なものにアップグレードしておくべきだったが、していなかった。うかつ税。

自分は会社員になってからずっと自転車通勤をしている。運動好きではないが、だからこそ強制的に体を動かす仕組みがないと運動不足になると社会人になる直前の自分は考えた、のだった気がする。結果としてはすごくよい判断だった。我ながら偉い。

会社員になる直前の春休み、そんな話を近所にすむ高校時代の同級生に話したら、それじゃあ良い自転車を買いましょうとサイクリングが趣味の彼は言い、新宿の大きな自転車屋に連れて行ってくれた。はじめて乗ったママチャリよりも高級な自転車は軽く速く、自転車通勤は思っていたよりずっとラクなものになった。転職をまたいでも、勤務先の規則をしらばっくれたりしつつ自転車通勤を続けた。先の盗まれた自転車は三代目。今や自転車通勤は自分の職業人生の重要な構成要素になっている。

自転車通勤の良いところはカロリー消費と気分の良さ以外にもいくつかある。労働時間の長かった最初の勤務先では、終電を気にしなくて済むのが嬉しかった。終電の時間が過ぎても会社に泊まらなくていい。いつでも家に帰って寝られる。すばらしい。とか当時は思っていたけれど、終電過ぎまで働く時点でどうかしていたとも言える。

腱鞘炎のため自転車通勤をやめておもったことは、会社についた瞬間に心拍数と体温を少し上げておくのは一日をはじめる大切な儀式だったということ。会社の前で通勤バスを降りてオフィスに踏み込むと気分が晴れない。自分が車酔いに弱いせいもあるかもしれないけれど、朝から少し気分が悪く、疲れたかんじがする。血流に背中を押してほしい。

まだすこし腱鞘炎が残っているので、最近は歩いて会社まで行くことにした。だいたい似た効果が得られる。でも 40 分くらいかかるので往復はできない。体力ではなく時間がない。

次は奮発していい自転車を買いたい気もするけれど、また盗まれると悲しい。ひきつづき数百ドルのクロスバイクかなあ。

Book: High Performance Python

読んだ(Amazon, Play Books)。結果としては CythonNumba と Pypy に目を配っておけば良さそうと理解した。Pandas でヘビーに使われている Cython についてある程度わかったのはよかった。思ったより頑張っていた。たとえば C のコードで GIL を外すための構文がある。Python を早くしたくなったら Cython の本を読んでもいいかもしれない。

最終章は engineering blog のエントリをまとめたようなケーススタディ。性能はさておき Python でシステムを作る際のスタックにどういう要素技術を使えるのかちょっとわかったのよかった。自分は Pypy の使いどころがわかっていなかったけれど、 microservices ぽくしてバックエンドに使うとか、CPU intensive なバッチに使うとかはアリかもしれないと思えてきた。まあ自分だったら Java なり Scala なりで書くだろうけれど。

性能の一般的な話も少し扱っていたが、そういうのは個人的にはどうでもよかった。

VS Code, Jedi, Rope

余暇プロジェクトでは PyCharm を使っているものの、ダウンロードしてきたプロジェクトを冷やかすのには重すぎるため、コード読みには VS Code も併用している。

VS Code の Python mode は Microsoft の人がプラグインを書いており、けっこうちゃんと動く。コード補完などの支援にはオープンソースのライブラリを使っていた。JediRope という二つのライブラリのコピーが plugin のコードに含まれている。Jedi はコード補完, Rope はリファクタリング主体のライブラリらしい。編集はともかく定義へのジャンプが普通に動くのはすごい。コード分析がオープンソースのコモディティになる日がくるとは思わなかった。

自分にとってランダムなコード読みは Emacs の最後の用途だった。でも VS Code で事足りる気がしてきた。VS Code の使い方はもうちょっと真面目に調べていいかもしれない。ほんとは Atom を応援したかったけれど、現状だと信仰では埋められない品質の差があるね。

PyCharm and Type Hinting

静的型の国からくると Python のように型を書かない duck typing は落ち着かず、せめてドキュメント的に型をつけておきたいと感じる。そういえば Python はいつからか型注釈をサポートしたと何かで読んだ記憶がある。調べたところ、3.5 から type hinting という名前で実装されているらしい。適当に真似をして type hint をつけてみる。

すると PyCharm のコード補完が突然まともな候補を表示しはじめた。Type Hinting をつかったコード補完をサポートしているらしい。これはもうぜんぶ型つけちゃいますよ。Python3 のキラー機能と言ってよいのではないか。Docstring に埋め込む書式もサポートしてるというけれど、そういうのは仕事の Closure Compiler だけでおなかいっぱいです。

またひとつ JetBrains への faith を高めてしまった。なお Python の標準ライブラリをみると特に型注釈はついていない。つけておくれ。

追記

Type hinting をベースとする Mypy なる type checker があることを知った。大掛かりで失敗しそうに見えるけれど、Guido van Rossum が手伝っているというのでもしかしたらいい子なのかもしれない。しかし自分のレベルだとまずは linter の Pyflake からかな。

Fluent Python

|

Amazon, Play Books

余暇に Python を使っている都合から読んだ。なんとなくでしか Python を使えない人向けに、もうちょっと真面目に理解すると色々良いことあるよ、というスタンスで書かれた本。自分は書捨てのぶんにはなんとなくの理解でいいと思いつつ、ライブラリなどオープンソースのコードを読むとわからないことが多く苦労していた。この本のおかげでその不安が和らいだ。

トピックの選択が見事。自分が知りたいと思いつつ面倒で放置していた話題を軒並みカバーしてくれている。具体的には Unicode, generator, metaclass. それ以外にも色々知らないことがあった。自分は Python について、今となっては特に新しいところのない退屈な言語という印象を持っていた。「新しいところがない」という部分の印象は変わらないけれど、退屈というほどで もないとわかった。それなりにモダン言語として歩みを進めている。

全編 Python3 を前提に書かれている。自分はもともと Python3 にまったく興味がなかったけれど、読後はもうぜんぶ Python3 でいいと意見を改めた。色々新しい機能が入っているし、Python を前に進めたいという著者の熱意に影響された面もある。Python への愛と熱意がページの端々から伝わってくる。

自分のような Python 初心者が次のステップに進むのを助ける良い一冊だと思う。Python で少しは良いコードが書けそうな気になれた。

Unlearning Anarchism

Hackability を損なう Bureaucratic だと思って避けてきた習慣、具体的には可視性をきちんと private にするとか、を見直す時期が来た気がしている。コードレビューで指摘されることが多いし、でかいコードだと可視性を厳しくした方が逆にコードをいじりやすい 。その箇所に依存されている心配がなくなるから。

もともとは「自分のチームしからさわらないコードなら可視性厳しくしなくてもどうせ悪いことされないよコードレビューもあるし」という言い分があった。その一方でいま自分が書いているコードへの変更を将来自分以外の誰かがレビューする可能性はけっこうある。そして「チームしかさわらないコードなら最初は private にしといて必要に応じて public にすればいいじゃん」という主張も等しくありうる。

一番の問題だったテスト可能性については、C++/GUnit では FRIEND_TEST なる便利マクロで解決済みなのだった。Java もリフレクションがある。もう悪ぶって可視性全開にするのはやめ、おとなしく隠せるものは隠すよう自分を再教育しないとなあ。

Inflammation

右親指の付け根に痛みがあり、突き指かと思いつつ放置していたら痛む範囲が広がってひどい腱鞘炎となった。病院というかカイロプラクタに診察を受けるとテーピングを貼られ、安静にしてれば数日で治るよキーボードはダメだよ、と言われる。仕方なく週末土日と安静にし、念のため月曜も欠勤。だいたいなおったのでおそるおそる出社している。悪化が怖い一方いつまで休めばいいのかもわからない。そろりそろりとコーディング。腱鞘炎、体感がわかりにくいぶん風邪よりタチが悪い。油断した自分に反省。

発端はコードの書きすぎ、では決してなく、家事労働。自分の近況を象徴する出来事となった。しばらくは手首に負担のかかる作業、すなわち中華鍋を振る、配偶者の肩を揉む、自転車などをやめておく。どれも自分の私生活の中では重要なピースのため禁じられると切ないがやむなし。

先週の発熱、今回の腱鞘炎で完全に仕事が stall してしまった。このところまあまあ熱心に働いていたのだけれど、頭の中に詰まっていた仕事のコンテクストが完全に消え失せた。計画は書き出してあるので読み直せばいいといえばいいんだけれど、勢いは戻ってこない。また少しずつ勢いをつけていかないとなあ。

予防。まず日々のストレッチに手首と指を追加したい。友人にエルゴノミクスキーボードを勧められたが、どうなんだろうな。全然試したことがないので良いも悪いもわからない。今 Macbook Pro でタイプしてるけど、これですらちょっと重く感じる。その手のキーボードだとマシなのかな?

CLion

仕事の都合で久しぶりに C++ を書く必要があり Emacs を起動したら、しばらく使っていなかったせいか設定が色々壊れている。特に X Window 側からのコピーが動かなくなっており辛い。しばらく我慢していたけれど耐え切れなくなり社内資料を漁ると CLion を使っている一派を発見。ドキュメントの指示に従いいくつか設定ファイルを書くと・・・動いた。

C++ で IDE を使うのは久しぶり。とはいえ JetBrains なので操作はおおむね Android Studio と同じ。リファクタリングもまあまあ動く。コードベースがでかいせいか大量にメモリを使うしあちこち遅さが目につくけれど、それでもコピペできない Emacs よりはいい、というかコピペできても CLion の方がいい。どうも持ってるライセンスの数が足りてないらしく使えない時があるのが難点。でもちゃんと動くから、自分でライセンス代を払っていいかもしれない。