あなたの体は9割が細菌

あなたの体は9割が細菌 微生物の生態系が崩れはじめた

あなたの体は9割が細菌 微生物の生態系が崩れはじめた

ライブラリにあったので手にとった。 このジャンルは面白い。生物の進化の歴史という観点でみても面白いし、人間の健康維持という観点でみても身近に感じられる。

抗生物質の効用とリスクについて ・自閉症の原因について ・妊娠・出産のときの母親の微生物環境の変化について ・マイクロバイオータを移植することについて

Netflix Culture

tkybpp.hatenablog.com

jobs.netflix.com

リーダーとしては「Informed Captain(情報に通じたキャプテン)」「Context, not control(統制ではなく前後関係(コンテクスト))」の2つは特に意識していきたい。「責任者」「リーダー」って漠然と定義してアサインされても、結局自分が何をする立場なのかを言語化できてないともやもやの中で動かざるを得ない。

  • 他人の意見を整理し、判断を下す。どうしてその判断をしかたの共有をし、反対意見を募る。ミクロな意思決定をするのではなく、全体に関わるマクロな意思決定を行う。
  • 決めるために必要な情報を共有し、コンテキストを設定する。過去の経緯から将来にいたるまでのストーリーの中に位置づける、みたいな感じか。

自分なりの解釈はこんな感じ。

<インターネット>の次に来るもの 未来を決める12の法則

〈インターネット〉の次に来るもの 未来を決める12の法則

〈インターネット〉の次に来るもの 未来を決める12の法則

どこかで紹介されていて(本の中だったかネットの記事だったかも忘れてしまった)、それで手にとった記憶がある。 コンテキストをつなげるという意味ではメモしておかないといけなかった。

著者はワイアードの初代編集長で、「テクニウム」なども書いているこの分野では有名人。テクニウムが割りと哲学的な内容であったのに対し、本書は、12のテーマに沿って多くの「変化しつつある実例」が出て来る。AIはもちろん、IoT、ブロックチェーンSNS、VR、自動運転、ライフログクラウドサービス、キュレーション(remixing)、シェアリングエコノミー、シンギュラリティなど、私が思いつくかぎりのITのトピックが網羅されている感じだ。とにかく実例が豊富で網羅性が高いので、一歩引いて俯瞰する見方を得たいときのスタート地点として使える。他分野で最初に本を読むとしたら、こういう本を読みたい。

本書を通じて込められているメッセージは、これらの変化がまさに始まったばかりであり、ある一定の飽和点を超えつつあり、異質の新しい世界に変わる時代の境目であるということだ。

訳者あとがきから、本書を端的に要約した一文を引用しておく。

その12章を簡単にたどるなら、ネット化したデジタル世界は名詞(結果)ではなく動詞(プロセス)として生成し(第1章Becoming)、世界中が利用して人工知能(AI)を強化することでそれが電気のようなサービス価値を生じ(第2章Cognifying)、自由にコピーを繰り返し流れ(第3章Flowing)、本などに固定されることなく流動化して画面で読まれるようになり(第4章Screening)、すべての製品がサービス化してリアルタイムにアクセスされ(第5章Accessing)、シェアされることで所有という概念が時代遅れになり(第6章Sharing)、コンテンツが増えすぎてフィルターしないと見つからなくなり(第7章Filtering)、サービス化した従来の産業やコンテンツが自由にリミックスして新しい形となり(第8章Remixing)、VRのような機能によって新しいプレゼンスとインタラクションを実現して効果的に扱えるようになり(第9章Interacting)、そうした全てを追跡する機能がサービスを向上させライフログ化を促し(第10章Tracking)、問題を解決する以上に新たな良い疑問を生み出し(第11章Questioning)、そしてついには全てが統合され彼がホロス(holos)と呼ぶ次のデジタル環境(未来の<インターネット>)へと進化していく(第12章Beginning)という展開だ。

確率思考の戦略論 USJでも実証された数学マーケティングの力

テーマとして「確率思考」をかかげていて、いくつかのパラメータから表出する確率分布を計算して、コントロール可能なコストパフォーマンスのよい分野に資源を投入して勝つ、という戦略が述べられている。 さらに、いくつかの異なる視点から予測し、それらの予測分析をあわせていくことの重要性も説かれている。

・「本質」によって構造が形づくられて、さまざまな「現象」が生まれてくる 表面的な事象をみるだけでなく、本質が何なのかを、得られるデータを深い洞察にかけて導き出す。 そして100%の確度の成功というのは無いので、成功確度の高い戦略をかけ合わせていく。

・市場構造を決定づけている「本質」は消費者のプレファレンス。ブランド・エクイティーx価格x製品パフォーマンスによって計算できる プレファレンスの肝は、消費者のエボークトセット(evoked set, 買っても良いと思っているブランド群)に入っているかどうか。

・Aided AwarenessとUnaided Awareness USJを例にすると、「USJを知っていますか?→知っている/知らない」の答えがAided Awareness。対して「テーマパークや遊園地のような集客施設として思い浮かぶブランドはなんですか?→USJ」となることが、Unaided Awareness。どちらも異なる視点から重要だが、プレファレンスにとっては、Unaided Awarenessがより重要。

・プレファレンスは、NBDモデルという負の二項分布の式で計算できる。

この本をよむと、USJだけでなく、P&Gという会社もマーケティングに長けた会社というブランディングが自分の中で強くなってくる。 P&Gは米国だけでなく、日本でも強い存在感がある。

www.reuters.com

trend.nikkeibp.co.jp

もうちょっと深く読み解きたい。時間がきたのでいったんここまで。

headless serviceを使ってVIPを使わずに各podのIPに直接アクセスする

kubernetesはserviceの仕組みの中でVIPを使って背後の複数podへのルーティングを管理していて、多くのケースではよしなにやってくれるので便利なのだが、以前Nettyを使ってservice間のコネクションを管理していて、背後にある複数podへの接続が偏る問題に悩んでいた。やりたいこととしては、背後のpod達に完全に均等に接続を振りたいのに、serviceを使うとランダム要素を排除することができず、一定の確率でコネクションがかたよってしまう。

そのときは接続数を増やす(たとえば3バックエンドに対して3コネクションだとどこかに偏ってしまう可能性大だが、3バックエンドに対して300コネクションはれば平均に回帰するのでだいたい均等になる)&一定時間ごとに接続を貼り直すという対策をとったが、headless serviceを使う手もあるというのを最近知った。

きっかけとしてはこの記事で、gRPCも似たような問題に遭遇することがある。

Kubernetes上でgRPCサービスを動かす | SOTA

  • 公式ドキュメント

kubernetes.io

  • headless serviceについて(日本語)

qiita.com

上記の記事を読むと、serviceのclusterIPをNoneで起動すればheadless serviceになるみたいなので、試してみた。

まずは普通にサービスを起動する場合。

ローカルのminikubeを立ち上げておいて、

minikube start
helm init

ingress controller + バックエンドnginxの組み合わせの公式のhelm chartで試してみる

helm install stable/nginx-ingress --set defaultBackend.replicaCount=3

ingress-controllerのpodが1つ、backendのpodが1つできている。

ᐅ kubectl get pods                                                                                                                                                        
NAME                                                              READY     STATUS    RESTARTS   AGE
opinionated-saola-nginx-ingress-controller-7b64bf5b74-gk6pw       0/1       Running   0          9s
opinionated-saola-nginx-ingress-default-backend-759d876cd-pkgsr   1/1       Running   0          9s
opinionated-saola-nginx-ingress-default-backend-759d876cd-sbdnr   1/1       Running   0          9s
opinionated-saola-nginx-ingress-default-backend-759d876cd-zr8ng   1/1       Running   0          9s
ᐅ kubectl get services                                                                                                                                                     
NAME                                              TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
kubernetes                                        ClusterIP      10.96.0.1        <none>        443/TCP                      15m
opinionated-saola-nginx-ingress-controller        LoadBalancer   10.100.231.194   <pending>     80:32561/TCP,443:32723/TCP   24s
opinionated-saola-nginx-ingress-default-backend   ClusterIP      10.97.231.34     <none>        80/TCP                       24s

今回はClusterIPが貼られているのでheadlessではない。この場合はnslookupで引いてもClusterIPが返ってくる。

# nslookup opinionated-saola-nginx-ingress-default-backend
Server:     10.96.0.10
Address:    10.96.0.10#53

Non-authoritative answer:
Name:   opinionated-saola-nginx-ingress-default-backend.default.svc.cluster.local
Address: 10.97.231.34

次にheadless serviceで起動した場合。

helm install stable/nginx-ingress --set defaultBackend.replicaCount=3 --set defaultBackend.service.clusterIP=None

backendのClusterIPをNoneにした。

ᐅ kubectl get service                                                                                                                                                      
NAME                                         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
kubernetes                                   ClusterIP      10.96.0.1       <none>        443/TCP                      19m
original-pig-nginx-ingress-controller        LoadBalancer   10.108.233.23   <pending>     80:30045/TCP,443:30788/TCP   6s
original-pig-nginx-ingress-default-backend   ClusterIP      None            <none>        80/TCP                       6s
# nslookup original-pig-nginx-ingress-default-backend
Server:     10.96.0.10
Address:    10.96.0.10#53

Name:   original-pig-nginx-ingress-default-backend.default.svc.cluster.local
Address: 172.17.0.5
Name:   original-pig-nginx-ingress-default-backend.default.svc.cluster.local
Address: 172.17.0.6
Name:   original-pig-nginx-ingress-default-backend.default.svc.cluster.local
Address: 172.17.0.8

この場合には、3つのアドレスが返ってくる。

headless serviceを使えば各podのIPに直接アクセスできるので、接続の偏りの問題があるときに、クライアント側での対処方法として使えそう。

人工知能が金融を支配する日

人工知能が金融を支配する日

人工知能が金融を支配する日

金融が人工知能によって大きく変わる、という本にタイトルテーマ真正面の内容も扱われている一方で、海外のロボトレーダーの進化に対して日本社会としてどう対峙すべきかというような社会への提言も書かれている。筆者は東京銀行出身の理工系出身の数理ファイナンスの専門家で、その立場を色濃く反映したような内容になっている。

直近、金融分野を仕事としてやる予定はないのだけど、金融はAIがもっとも劇的に業界を変えていっている業界であること、その流れはいずれマーケティングの世界にも来るであろうこと、 また、個人的に投資を少し始めたこともあって、業界の動向には興味がある。RTBが金融取引を参考にして生まれたように、新たなモデルが広告に持ち込まれる日がそう遠くない日に来るだろうと思っている。

この分野の本というと、「フラッシュ・ボーイズ」の印象が強くあるが、本書も分野的にはかぶっていて、米国や英国のヘッジファンドが、数学・統計・ITの技術を駆使して大きな利益をあげて成長している動向を時系列にまとめてくれている。技術にも詳しいため、AI関連の個々の手法や定義も整理されてわかりやすく書かれていて、その点はすごくよかった。

例えば、ベイズ推定とは何かを考えたときに、定義としては

ベイズ推定(ベイズすいてい、英: Bayesian inference)とは、ベイズ確率の考え方に基づき、観測事象(観測された事実)から、推定したい事柄(それの起因である原因事象)を、確率的な意味で推論することを指す。

(出典:Wikipedia

というような感じで、けっこう一言でいうのが難しいというか、腑に落ちる端的な説明というのが難しい。 本書では、

適当に設定した事前分布から出発して実際の観測値を使って、推定の精度を徐々に上げていくことによって、最終的に精度の高い推定値にたどり着くというのがベイズ推定の神髄です。

というように、ある一面でやや言い過ぎ感はあるものの、それを読者が自分の中で咀嚼する余裕がある前提とすれば、腑に落ちる説明がうまいというか、すっと頭に入ってくる説明が多くて良書だと思った。

話題は金融に閉じておらず、チューリングエニグマの話があったり、ワトソンやアルファ碁にも触れられていたりと、AIや機会学習のメジャーなテーマをさらってくれているので、その中での金融のポジションという感じで俯瞰的に見れて良い構成だと感じる。

後半は人間の仕事がロボットに代替されるという話から、日本が(特に金融分野について)そのへんの進歩についていけてないという展開になり、縦割りな会社文化への批判や過去の護送船団方式の反省もされる。そこに微妙な距離を置いての記述は、東京銀行出身で、三菱東京UFJ銀行に買収された過去と、筆者がソニーに転職しソニー銀行設立にも関わっている経歴と深くリンクしている気がしながら読んだ。

むすびとしての筆者の主張は、一部のヘッジファンドが技術とそこからあがる利益を独占する未来ではなく、公共的な方向に技術が活用される未来に期待するというものとなっている。ただ、そこで日本のとるべき道として、オールジャパン的な横の連帯と制度づくりが重要という主張だったのは違和感があった。金融は法律の縛りもきついだろいうから、そういう文脈では官民共同の取り組みが必要というのもわかるが...。