モヒカンに殴られないためのPython環境構築〜2018初夏〜

目的はモヒカンに殴られるリスクを最小限に抑えてPythonの環境を構築することです。モヒカンにさえ殴られなければ病気の子供が増えようが世界が核の炎に包まれようがどうでもいいです。

概要

  • pyenvを使うと
  • 殴られるので
  • 標準のvenvと
  • direnvで
  • なんとかするよ

Anacondaは一度も使ったことないので知らね

環境

  • Ubuntu18.04

そもそもの話で18.04に上げるときに気が向いてクリーンインストールにしたのでPython入れ直す必要が生じてわざわざこんな記事を書いているのである。

手順

direnvのインストール

https://github.com/direnv/direnv#install

Pythonのバージョンを切り替えるためにいちいちGo入れるのは理解に苦しむのでaptで入れた。

仮想環境の作成

Ubuntu18.04のデフォルトだとvenv入ってなかった

$ apt install python3-venv
$ python3 -m venv ~/.venv/default

. ~/.venv/default/bin/activate して正しく入ってるか確認

direnvの設定

$ echo ". $HOME/.venv/default/bin/activate" > .envrc
$ direnv allow

プロンプトの変更

defaultのときも (default)$ と出るのはウザいのでdefault以外でしか出さない

show_virtual_env() {
  if [ -n "$VIRTUAL_ENV" ]; then
    env_name="$(basename $VIRTUAL_ENV)"
    if [ "$env_name" != "default" ]; then
      echo "($env_name)"
    fi
  fi
}
PS1='$(show_virtual_env)'$PS1

.zshrc に上記を追加

バージョン共存させてみる

気分でpypyを入れてみる

$ wget https://bitbucket.org/pypy/pypy/downloads/pypy3-v6.0.0-linux64.tar.bz2
$ tar -jxvf pypy3-v6.0.0-linux64.tar.bz2
$ sudo cp -R pypy3-v6.0.0-linux64/ /opt
$ /opt/pypy3-v6.0.0-linux64/bin/pypy3 -m venv ~/.venv/pypy3
$ mkdir pypy
$ echo ". $HOME/.venv/pypy3/bin/activate" > pypy/.envrc
$ cd pypy
(pypy3)$ 

まとめ

モヒカンには関わりたくない

2017年下半期に読んだ本たち

数えてみると全15冊。上半期よりペースが落ちている。くやしい

上半期と比較するとプログラミングやデータ分析から徐々にプロダクト開発(「どう作るか」ではなく「何を作るか」の観点)や組織、経営に興味が移りつつある。果たして今年はどうなることやら

例によって読んだ順ではなくカテゴリ別で

データ分析

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)

分野としては異常検知、変化検知限定なんだけど手法的には機械学習の各種手法のオールスター感があって腕試しにとても良い。単なる手法の解説にとどまらず背景理論の説明や他分野との比較まで踏み込んでおりそこもとても良い。

が、たまに(章の最後の補足部分が特に)レベルが突然上がって数学弱者にはとてもつらくなったりするがその部分は本筋の理解には関係なかったりするので読む側にも取捨選択するリテラシーが求められる。

それを差し引いてもすごく良い本。レベルとしてははじパタを数式丁寧に追いながら読んだ経験があれば食らいつけるかな、ぐらい。

岩波データサイエンス Vol.5

岩波データサイエンス Vol.5

これも単体としてはいいと思うんだが↑の異常検知本を読んだ後だと内容がかなり被ってる(で、もちろんMLPシリーズの方が踏み込んで書かれてる)ので個人的には読まなくてよかった。が、岩波DSの存在意義は広く薄くだと思うので別にこの本は悪くない。読んだ順番を間違えた私が悪いのだ(急にどうした)。

グラフ表現の奥深さはこの業界にいる人間なら誰しも実感していることと思うが、感や経験で各種グラフ表現のユースケースはある程度把握しているものの、本来あるはずの理論的背景が分からず困る、というのも実感している人が多いのではないか。

こうした課題に答えてくれる、ありそうでなかった本。

と、この点に関してはすごくいいのだが、後半のデータジャーナリズム云々でやってる分析が(紙幅の都合もあろうが)とっっっっても浅くて「そりゃないだろ」という出来なので後半いらなかったんじゃないか説。

社会科学

社会シミュレーション ―世界を「見える化」する― (横幹〈知の統合〉シリーズ)

社会シミュレーション ―世界を「見える化」する― (横幹〈知の統合〉シリーズ)

社会科学研究におけるシミュレーションの応用について概観した本。買う前から薄々感づいてはいたんだが数理社会学シリーズを何冊か読んだ後なので特に真新しい内容はなかった。これも私の選択ミスである。これ以上この分野深めたいなら論文読め。

ビジネス

サブカテゴリ掘った方がいいんじゃないかと思うぐらいこのカテゴリの比重が高まってきたのが今期の特徴

プロダクトマネジャーの教科書

プロダクトマネジャーの教科書

本来は消費財メーカーにおけるいわゆる製品開発をターゲットに書かれてるんだが、ソフトウェア開発やWebサービス開発にも当然応用できるだろうと手に取った。

ポジショニングと「何をやらないか」を決めるのマジ大事という当然のお話。あとプロダクトマネジャーの果たすべき役割や仕事について網羅的に書かれてるがこれ全部1人でやるとどう考えても死ねる分量なので、実際にはプロダクトマネジャーはこのうち一部だけ管掌していて他の役割は各機能別組織が担ってるのが実像なんだろうけど、そこをどう割り振って権限移譲していくかはどう考えてもマジ難しい。つらみ。

ドラッカー名著集 4 非営利組織の経営

ドラッカー名著集 4 非営利組織の経営

ドラッカー読むならこれが一番いいと同僚に勧めらたので読んだ。ことドラッカーについてはちょいとした付け焼き刃で理解した内容をここで開陳しても恥を晒すだけなので詳しくは書かないけど、とにかくミッションが大事という点とチャレンジしたいメンバーにはとことんチャレンジさせて責任はお前が取れ、でもってチャレンジしようとしないやつはほっとけ、という点が心に残っている。

GE 巨人の復活

GE 巨人の復活

GEがシリコンバレーのやり方をとことん模倣してデジタル製造業として復活したという話。正直大手にここまでやられたら吹けば飛ぶようなベンチャーに勝ち目はあるのかと思えてしまう。

てかこれだけは言いたいんだけどスタートアップの成功パターンってのは絶対に存在していて、もちろん不確実性があるから成功パターンなぞれても結果として確実に成功するわけではないんだけどそれを言い訳にして楽をして模倣すらしないできない輩が多すぎるんじゃないですかね。

小さなチーム、大きな仕事〔完全版〕: 37シグナルズ成功の法則

小さなチーム、大きな仕事〔完全版〕: 37シグナルズ成功の法則

  • 作者: ジェイソン・フリード,デイヴィッド・ハイネマイヤー・ハンソン,黒沢 健二,松永 肇一,美谷 広海,祐佳 ヤング
  • 出版社/メーカー: 早川書房
  • 発売日: 2012/01/11
  • メディア: 単行本
  • 購入: 21人 クリック: 325回
  • この商品を含むブログ (36件) を見る

大きい会社や巨大プロジェクトじゃないと大きな成果を挙げられないとか幻想だよ、という主張の本。言いたいことは分かるがちょっと「人と違うこと言いたい」欲が強すぎて読んでるうちに大企業だってそんなに悪いところじゃないよ! と大企業の人でもないのに言いたくなってくる不思議。

それはともかくとして、↑や↓の本とも繋がるんだけどプロダクト開発で大事なのは引き算だから削ぎ落として考えようよ! という点だったり小さいチームなら小回りも効いて軌道修正しやすいから状況の変化にも柔軟だよねという点だったり学びは多い。

リーン・スタートアップ

リーン・スタートアップ

今更読んだのかと呆れられそうだが今更読んだ。自分の理解としてはリーン・スタートアップとは突き詰めると「現実と向き合う」ということ。頭の中の素晴らしいアイデアは現実ではない。それどころか顧客の言うこと自体もそれは現実ではない。現実は顧客の行動にしかないのでそことちゃんと向き合いましょうよ。でもって現実が当初思い描いていた計画と違ってもそれは恥でも何でもなく当然のことなのでピボット(方針転換)しましょうよ、というお話。

要所要所で出てくる「計画をどんなに効率的に遂行したってその計画自体が間違ってたらどうすんの? 計画通り失敗してどうすんの?」という煽りがつらい。

人文

人間・始皇帝 (岩波新書)

人間・始皇帝 (岩波新書)

積読消化プロジェクトその1。近年の出土資料に基づいて『史記』をベースにした通説を見直しましょうぜというお話。 『諸子百家―儒家・墨家・道家・法家・兵家 (中公新書)』でも最近新資料出まくりって書いてあるんだが中国が経済発展しまくって開発が進んでるから文字通り土に埋没してた資料が出てきてるとかそういう話なんだろうか。

贈与の歴史学  儀礼と経済のあいだ (中公新書)

贈与の歴史学 儀礼と経済のあいだ (中公新書)

積読消化プロジェクトその2。こちらは新資料とかではなく既存資料を丹念に読み込んで中世日本の贈与のあり方を浮き上がらせようという話。読んでて思ったのは中世日本の研究者でもモースとかその辺の人類学の贈与論に言及するの当たり前になってるんだなという点。てか読者も知ってて当然でしょという体で話してくる。

あとやっぱりマルクス史観からの脱却。今が進んでる時代で昔(あるいは周辺)は遅れてるなんて誰が決めたんだバカヤローというお話。最近はてな界隈で日本は中世だって馬鹿にする向きがあるがそれって西欧近代こそが最先端で進んだ社会であり空間的時間的に離れた場所は遅れてて野蛮な未開人たちの世界だと暗に言っててそれはマルクス史観以外の何物でもないんだが君たち大丈夫か。今は2018年だぞ。

小説

第四部の文庫版が出たので第一部から読み直すなどしていた。この辺になると初期のハイテンション感は薄れていくんだけど、そのぶん著者の文章力と資料に裏付けされた説得力(恐らくこの人全部原著読んでる)とが際立ってくる。巨人たちが死にまくるんだけど特に周瑜関羽の死は泣ける。特に関羽の死(とうか死後)の描写は凄すぎてたぶんこんなの書けるの世界で酒見賢一だけだろうなと思う。三国志に少しでも興味があった人は手にとってみるべし。長いけど。

たぶん2年後ぐらいに第五部の文庫版が出ると思われるがそこでまた最初から読み直すんだろうな。

その他

相撲が好きなんです。好きだから最近の騒動には胸を痛めているんだが、何が一番胸が痛むかって協会が問題ある組織なのはそりゃそうなんだけどその中には当然真面目に頑張ってる人もいるし最近は真摯に相撲に取り組む若手も増えてきて成長している中で、普段ろくすっぽ相撲見てないクセに(見てないからこそ?)「あんな腐った組織早く潰れろ。大相撲なんてなくなれ」と簡単に吐き捨てる輩の存在。

自分が興味ないもの=社会に必要のないもの ではない。自分が興味なくてもそこに強い興味を持っている人、人生を預けている人はたくさんいるんだという想像力を失わずに2018年は生きていこうと思う。

なんだこの本の内容とは一切関係ないまとめは。

2017年に読んだWeb記事たち

先日Pocketからこんなメールが届いた

f:id:fuyumi3:20171223132623p:plain

私の情報収集術 - ふゆみけ〜おかわり〜 で昔書いたようにWebの記事はすべてPocketに集約させて読むようにしているのだが、いつの間にか Top 1% readers のヘビーユーザーになっていたらしい。

せっかくなのでどのくらい読んだのか調べたかったのだが公式で記事数カウントしてくれる機能はない模様(単語数カウントはあるようだがおそらく日本語に対応してない)。

なのでAPI叩いて取得してみた。

Pocket: Developer API

めんどくさいのでコードは貼らない。結果だけ

https://gist.github.com/who-you-me/8c23f9066d3a59f5d16ade457570b931

総数

12/23現在で1712記事。1日換算すると4.8記事。思ったより多かった

サイト別

5以上のやつだけ

ドメイン 記事数 サイト名
portal.nifty.com 303 デイリーポータルZ
trafficnews.jp 277 乗りものニュース
kabumatome.doorblog.jp 196 市況かぶ全力2階建
blog.livedoor.jp/vitaminw 125 スポーツ見るもの語る者~フモフモコラム
honz.jp 77 HONZ - 読みたい本が、きっと見つかる!
mag.japaaan.com 69 Japaaan - 日本文化と”今”をつなぐウェブマガジン
dhanow.ldblog.jp 66 八鬮不動産
reki.hatenablog.com 52 歴ログ -世界史専門ブログ-
delete-all.hatenablog.com 52 Everything you've ever Dreamed
massneko.hatenablog.com 45 墳丘からの眺め
academist-cf.com 42 academist Journal – 未来のノーベル賞はここにある! イチオシ研究発掘メディア
pmazzarino.blog.fc2.com 31 反社会学講座ブログ
next49.hatenadiary.jp 16 発声練習
miurayoshitaka.hatenablog.com 15 弁護士三浦義隆のブログ
toyokeizai.net 14 東洋経済オンライン
shouyutechou.hatenablog.com 13 醤油手帖
headlines.yahoo.co.jp 12 Yahoo!ニュース
vitaminw.seesaa.net 12 フモフモコラムプレミアム
ameblo.jp/redond 11 picture of player
r.gnavi.co.jp 11 ぐるなび みんなのごはん
www.another-tokyo.com 11 東京別視点ガイド
news.yahoo.co.jp 10 Yahoo!ニュース
healthpolicyhealthecon.com 10 医療政策学×医療経済学
japan.zdnet.com 9 ZDNet Japan
magazine-k.jp 9 マガジン航[kɔː]
tamukai.blog.velc.jp 7 ヴェルク - IT起業の記録
www.buzzfeed.com 7 BuzzFeed
postd.cc 7 POSTD
news.denfaminicogamer.jp 6 電ファミニコゲーマー
speakerdeck.com 5 Speaker Deck
srdk.rakuten.jp 5 それどこ
fujinumayasuki.hatenablog.com 5 藤沼康樹事務所(仮)for Health Care Professional Education
nlab.itmedia.co.jp 5 ねとらぼ - ITmedia

2017年上半期に読んだ本たち

上半期と言いながら7月に読んだのも含まれている気はする。

全部で19冊。これに加えて統計検定準1級の勉強もがっつりやってたので読書家とか勉強家とか言う前にこんな時間あるってことはお前真面目に仕事やってたのかと疑うべき。

時系列順じゃなくてカテゴリ別にまとめます。

分析・技術書

ディープラーニング嫌い芸人を続けるのはいいが知らずにケチつけるのはよくないということで読んだ。

そのままPythonで写経しても今更つまらないのでScalaで書いたりもした。

github.com

前半はいいんだが後半は「ロジックだいたいこんな感じだよ! コードはGitHubに書いてあるから読んでみてね!」で全然ゼロから作ってない。看板に偽りあり。

岩波データサイエンス Vol.3

岩波データサイエンス Vol.3

因果推論は楽しい。オーソドックスな回帰手法や確率についてある程度深く知っていないと理解できないことが多く理解できると優越感が得られる(統計の知識をマウンティングの手段にするのはやめましょう)。

統計的因果探索 (機械学習プロフェッショナルシリーズ)

統計的因果探索 (機械学習プロフェッショナルシリーズ)

データだけから因果を明らかにしようという野心的なアプローチ。実データでいろいろ試してみたい。

詳解 Apache Spark

詳解 Apache Spark

大量データを分析するならやっぱSparkだよねという話。実務で使う機会にはまだ恵まれていない。

社会学

社会学 (New Liberal Arts Selection)

社会学 (New Liberal Arts Selection)

社会学修士号を持っているはずだが理論を疎かにしていたせいでほとんど忘れてたので復習。日本の社会学者が書いてるので内容が日本社会に即しててギデンズのやつより読みやすい。

数理社会学入門 (数理社会学シリーズ)

数理社会学入門 (数理社会学シリーズ)

数理社会学の理論と方法 (数理社会学シリーズ)

数理社会学の理論と方法 (数理社会学シリーズ)

社会現象を数理モデルで説明しようとする社会学の(なかでもマイナーな)一分野。合理的選択理論や社会的選択理論やゲーム理論やネットワーク分析を駆使しまくる。

最近数理社会学やりたい欲が高まっているが「やっぱ生活水準落としたくねえなー」と悟ったのでまた大学院に行くことは当分なさそう。

デザイン

ノンデザイナーズ・デザインブック [第4版]

ノンデザイナーズ・デザインブック [第4版]

いい分析にはいい可視化が欠かせないよね。というかむしろ高度な分析しなくてもただデータを可視化するだけで価値が生み出せる余地ってまだたくさんあるよねということでデザイン系の本を読んだりしている。

「デザイン」というとセンスが云々という話になりがちだが実はかなりの部分は再現可能な原則から成り立ってるので理詰めで到達できるところまでは到達したい。

これを読むとプレゼン資料が綺麗になる。実例はこちら

たのしい インフォグラフィック入門

たのしい インフォグラフィック入門

たのしい(コメントが尽きてきた)

ビジネス書

製品開発の知識 (日経文庫)

製品開発の知識 (日経文庫)

最近開発組織のマネジャーを始めたんだが「どんなにいい開発チームを作ったところで組織全体の戦略とマネジメントがちゃんとしてないといいもの作れないよね」という壁に早くもぶつかったのでプロダクトマネジメント系の本を読み始めてる。

戦略とはつまるところ厳しい外部環境と限られたリソースの中でどこにリソースを重点的に注ぐか(逆にどこには注がないか)を決定することで中途半端にあれもやるこれもやるが一番よくない。

人文・社会

コンテナ物語―世界を変えたのは「箱」の発明だった

コンテナ物語―世界を変えたのは「箱」の発明だった

規格化大事という話と、機械化によって人の仕事が奪われるとか昔からよくあってコンテナの場合は労働組合がすっげえ抵抗して経営者と交渉して妥結してコンテナ化による利益を経営者と労働者でそれなりに分け合ったんだけど、昨今のAIブームで仕事が奪われる系の議論には組合とか全く出てこなくて労働者は搾取されるだけなんだろうな感があるのはなんでだろう。グローバリゼーションによって国際的な競争が激化したからでしょうねとかそんなことを(この本には全く書いてなく勝手に)思った。

応仁の乱 - 戦国時代を生んだ大乱 (中公新書)

応仁の乱 - 戦国時代を生んだ大乱 (中公新書)

冷静な語り口で事実をかなり整理して淡々と述べているがそれでもさっぱり分からないので応仁の乱がとにかくカオスだったということがよく分かる。

「その日暮らし」の人類学 もう一つの資本主義経済 (光文社新書)

「その日暮らし」の人類学 もう一つの資本主義経済 (光文社新書)

文明社会の我々からは不合理で不完全で「遅れてる」ように見える「未開」地域の人たちの暮らしぶりは実はすごく体系的で合理的であることを明らかにし、その事実から逆に我々文明社会様を相対化するのが文化人類学の仕事だとしたらこの本はまさにそれ。

でも私はその日暮しはしたくないです。生活水準落としたくないです(本日二度目)。

さっきのが空間の次元ならこっちは時間の次元。昔はひどいし今もひどい。いつだってひどい。

で、まさに空間と時間の結節点に存在するのがこの本。辺境地域と室町時代の日本が似ていてむしろ現代日本社会のほうが異常なんじゃないかと思えてくる。

応仁の乱もそうだが今ひそかに室町時代ブームが来てるのは今の時代がカオスだという認識からか。となるとそろそろ織田信長が出てくるのか。

知っておきたい「酒」の世界史 (角川ソフィア文庫)

知っておきたい「酒」の世界史 (角川ソフィア文庫)

お酒が好きなんです。

小説

泣き虫弱虫諸葛孔明〈第1部〉 (文春文庫)

泣き虫弱虫諸葛孔明〈第1部〉 (文春文庫)

泣き虫弱虫諸葛孔明〈第2部〉 (文春文庫)

泣き虫弱虫諸葛孔明〈第2部〉 (文春文庫)

天才・酒見賢一がその才能を遺憾なく発揮して好き放題やってると評判の『泣き虫弱虫諸葛孔明』がついに完結した&第四部が文庫化されたとの報を受け、三部まで読んだの結構前なので四部買う前に読み返してる。

てか今年ぜんぜん小説読んでないな俺。

Pythonでの可視化をおさらいするために読んだもの

matplotlibの使い方とかちょっと時間が経つとすぐ忘れるので復習しました。あとデータ可視化ならSeabornが便利らしいのでそっちも入門しました。

Pythonによるデータ分析入門』の8章を読んで写経

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

matplotlib単体の使い方+Pandasとの連携についてざっくり知ることができます。

matplotlib公式チュートリアルを読んで写経&galleryからいくつかピックアップして写経

↑を読んだ後だからまあいいかもと思いつつ一応公式のチュートリアルをおさらい。

http://matplotlib.org/2.0.0/users/pyplot_tutorial.html

でもって、galleryの「Statistical plots」のなかからピックアップして(明らかにほぼ被ってるやつが複数あったりするので)写経

http://matplotlib.org/2.0.0/gallery.html#statistics

Seabornのチュートリアルを読んで写経

matplotlibは便利だけどちょっと低レイヤーすぎてデータ分析の過程でやるboilerplateな可視化を繰り返しやるのにはまどろっこしいところがある。

のでデータ分析の可視化に特化したラッパーであるところのSeabornをやってみましょう。

http://seaborn.pydata.org/tutorial.html

チュートリアルがすごい充実していて、単なるAPIの解説じゃなくて可視化の勉強になる内容なのでみんな読んでみたらいいと思います。

とりあえずここまでやった。bokehってどうなのとかmpld3使ったらカッコよさそうとかあるけどひとまずこのくらいで十分かな。

『ゼロから作るDeep Learning』を読み終わった

読み終わりました。「Scalaで実装する」を目標として掲げていましたが結論から言うと5章までしか実装していません。理由は以下の通り。

途中まで実装したコードはこちら

github.com

上のツイートにもある通り、5章までは丹念に解説しながらニューラルネットが実装されていきますが、6章からはほぼ読み物と化します。

とはいえ5章までちゃんと手動かして基礎をつかめばそれ以降の内容は特に自分で実装する必要はないかなと思うので(そもそも大多数の人は実際にDeepLearningやるなら自前で実装せずにライブラリ使うので十分)この構成はバランス取れているのかなと思います。

「DeepLearningちゃんと知っておきたいけど端から見ると不毛なライブラリ覇権争いみたいなのには巻き込まれたくない。勝ち組決まってから乗り出したいけどその前に基礎は知っておきたい」みたいな人には向いてる本なんじゃないでしょうか(適当)。

現状DeepLearningをこれ以上掘り下げる気はあまりないので次は可視化強化月間です。matplotlibとseabornをちゃんとやります。

『ゼロから作るDeep Learning』をScalaで実装する(その3) - ニューラルネットワークとその学習

前回から2週間以上経ちました(そして年をまたいだ)がサボっていたわけではありません。

4章まで終わりました。規模大きくなってきたのでここにコード貼ることはしません。以下をご覧ください。

github.com

以下雑感

  • MNISTデータセットのロードでハマる
  • numpyでは「n次元ベクトル」と「nx1行列」の違いを意識することはほとんどないが、Scala(というかBreeze)では当然異なる型になるのでいろいろ厄介
    • とはいえ静的型付け言語なんだから当然
    • 暗黙の型変換とかを使えばうまくできそうだが、難しいので断念
    • 一貫してDenseMatrixを使う方針で
  • 4章では愚直に勾配降下法で学習しているが、numpyより実装速度が遅い
    • たぶん非効率な実装になってるんだろう。が、チューニングする気は特にない

今後は特にここに書くこともなさそうなので、全部読み終わって総括するまではたぶんこのシリーズは更新しないです。