歩いたら休め

なんでこんな模様をしているのですか?

【雑記】データエンジニア・サバイバルガイド

この間、久しぶりにある優秀な先輩に会い、いろいろと話をする機会がありました。

以前短い期間でしたが一緒に仕事をする機会があり、その際に基本的な統計プログラミングや仕事で気をつけるべき点(闇)についていろいろ教えていただいた方です。「お前はもう少しいろいろできるはずだから気張れ」とケツを叩かれつつ、今の仕事について考えていることを共有していただけました。

(そのとき食べていたのがおいしい中華料理で、妙に辛い肉と紹興酒のせいで次の日お腹を壊してしまいました。)

特にデータ分析者やエンジニアに限らない話も多いですが、そこで話した内容を自分の解釈でまとめておきます。

自分のアウトプットに責任を持たない人を信用するな

企業で働くエンジニアは「どれだけビジネスの役に立ったか」で価値が決まります。

インフラエンジニアなら「可能な限りサービスを止めないこと」、アプリケーションエンジニアなら「新しいサービスを使ってもらうこと」が価値であるのと同じように、データに関わるエンジニアなら「データを正しく活用してビジネスを加速させること」が価値であって、「データ集計・分析を行うこと」で終わりはありません。

先輩は「コンサルティング会社に依頼した日次の売上予測のコードが、(精度はそれなりに良いけど)実行に数時間かかって運用できないから結局自分で全部作り直したよHAHAHA」って言ってました。

(逆に言うと、ある人が信頼できるかどうかを判断するには、エンジニア以外でも、「その人のコード(成果)がちゃんと運用されて役に立っているか」を見ればいい気がしています。また、他人からそれを見られていることも逆に意識しないといけないでしょう。)

自分の成果に責任を持たない人(例えばコードを渡してハイ終わりという立場の人)は、そのコードが今後も運用され続けることを考えないため、とりあえず動かすために平気で例外処理を握りつぶしたり、プログラムの可読性や汎用性を考えません。

コードを自分で書け

自分のアウトプットに責任を持つようにすると、BIツールより、汎用的なプログラミング言語やシステムも使いたくなります。

例えば、もっと多くのデータに適用したり、バッチ処理として自動化したくなると、あらかじめパッケージングされているものより、自分で作って応用先を変えられるもののほうが、結果的には細かいニーズに応えられるでしょう。

ただし、それを行うには、重回帰分析を行う際に多重共線性に気をつけつつ、データ抽出のために負荷の小さいSQLを書くよう気を遣いながら、微妙なR言語のプログラムをメモリを食いつぶさないようにリファクタリングしているうちに、なぜかデータ分析用のサーバー運用まで任されるようになってしまうため、より多くの分野を学び続ける必要があります。

そのため、「評価する(上司や会社)側の立場が、エンジニアのスキルの有無や成果を正しく評価するのは難しいだろうな」と思っています。

会社の外と繋がりを持て

それは、この分野のほとんどのエンジニアや分析者にとって今のところ「ロールモデルとなる人がいない」からです(少なくとも日本では)。

ある優秀な同僚は「論文や最新の記事を読めば必要な情報が集まるから外の繋がりはいいや」と言っていましたが、自分が力を入れるべき分野や、自分自身のキャリアを考えるとき、自分に近い分野の人の考え方を知っておく必要があると思います。

また、会社によって前提になっている技術や文化が違う場合も多いです。 (少し)私の今の仕事では、ほとんどの箇所をRubyで書いている(汎用的な一つの言語で統一しようという思想)ので、場所によっては静的型の言語で厳密に書きたいなあと思うこともあります。

ただ、同じような仕事でも、「得意なものを得意な言語に任せる」という思想もありえます(例えば基本的にはJavaで、分析的なコードだけPythonで書くなど)。そういう話を会社の外の人とすると、気付かされることも多いです。

縄張り意識に気をつけろ

「もうちょっとこういうデータの分析や活用ができるんじゃないか」と思うと、どうしても組織の壁や、既にその仕事をやっている人がいるがイケてないもの(例えば自動化できる仕事を自動化できていない、など)にぶつかります。

まずは、ワインバーグの『スーパーエンジニアへの道』に書いてある「問題ない症候群 (No Problem Syndorome)」に陥らないようにしましょう。 これは「対応する問題を深く理解することなく、××という技術さえ導入すれば問題ない」と主張してしまうことです。多かれ少なかれ(自分でも他人でも)身に覚えがあると思います。

要するに、関係部署にヒアリングや、データの調査(例えばログデータが数日間途切れていたのに、誰も気づいていないということも多々あります)の手間を惜しんではいけません。

スーパーエンジニアへの道―技術リーダーシップの人間学

スーパーエンジニアへの道―技術リーダーシップの人間学

たぶん、ほとんどの人は「自分は無能だ/悪人だ」と認識するのを嫌がります。私も嫌で「自分は有能で、他人の役に立っている」と思いたいです。

そのため「××さえ導入すればものすごく楽になるのに、なんでやらないの?バカじゃね?」という態度でいるのはやめましょう。 大抵はどこか間違ってますし、万が一その通りだとしても相手は反発し、自分の仕事の成果が出なくなるでしょう。

組織構造も重要である

基本的に、データ分析を行う人は「ある程度規模が大きくデータが揃っている組織」に必要とされているのに「複数のスキルや複数の部署の仕事に跨った仕事をするベンチャー精神(?)」が必要であるため、ある程度大変なことはすぐにわかると思います。

そのため、組織構造も(おそらく)重要なはずなのですが、「どういうふうにデータ分析チームをマネジメントすればいいか」というノウハウも、ここ1~2年でようやく少しずつ見かけるようになった程度です。(例えば@tokorotenさんの以下の資料などです)

また、その先輩は「いろいろな会社を見たが、データ分析者の立場や仕事のやり方は、最初に分析の基盤やノウハウを作った人の思想を受け継いでいる」と言っていました。

www.slideshare.net

これからの世代は自分より優秀だ

実は、日本の大学に「統計学」専門の学部がなく、データサイエンス(と呼べそうな)分野を専門的に学んだ人はそう多くはありません。 しかし、日本国内でもそういう機関を充実させる動きはあり、例えば滋賀大学が2017年4月から「データサイエンス学部」が産まれます。

(私自身は、コンピュータサイエンスやデータサイエンス(と呼べる分野)を専門的に学んだことがありません。私のように、WEB企業で働いていて、近い仕事をしている人の中にも、今はそういう人が多い気がします。)

diamond.jp

統計学といえば日本では長らく、経済学部や工学部の一部(学科ですらない!)という位置づけにありました。しかし遂に日本で初めて、独立した“統計学部”が登場します。その名も「データサイエンス学部」。

ということを私から見ると一枚も二枚も上手な先輩でも話していました。「海外のエンジニアと比べると、モデル自体の精度みたいなところで勝負するのは難しいから、他の強みを持っておいたほうがいい」とも。

5年後や10年後の未来には、おそらく自分より遥かに優秀な後輩と仕事をすることになるでしょう。そのときにどこで勝負すべきか考えておく必要がありそうです。

【雑記】なぜ「人工知能」という言葉が使われてしまうのか

というバズりそうなタイトルですが、「人工知能」とか「機械学習」のことはあまり書きません。 私も詳しくないので。

そういうのを期待している人は、こっちを読みましょう。

bohemia.hatenablog.com

ある会のとき、上司が同僚2人の成果について「人工知能」という言葉が使われて説明していました。本当は、数学好きな方が使っているものは「数理最適化」で、分析が得意で業界ニュースをひたすら追っている方が使っているものは「統計学」の「重回帰」で、「知能」と呼べる(ぶべき)ものでは無いよなと私は思っていました。

(ただし、その上司も「本人が人工知能だと思っているかは別だけど」という注釈を付けて、よく聞かれる言葉で説明するために、敢えて「人工知能」という言葉を使っているようでした。)

同じようなことが何度かあり、そこでいろいろモヤモヤしていたのですが、根本的に、ビジネス側の人にとっては「(実装者にとって重要な)何を使って/どうやって解決するか」は重要ではなく、「何を解決するか」のほうを重視しているだからだろうと思うようになりました。

フェルディナン・ド・ソシュール - Wikipedia

一方、音韻だけではなく、概念も言語によって区切られている。たとえば、「イヌ」という言葉の概念は、「イヌ」以外のすべての概念(ネコ、ネズミ、太陽、工場、川、地球……)との差異で存立している。このように、人間は、「シーニュ」という「概念の単位」によって、現実世界を切り分けているのである。そして、その切り分け方は、普遍的ではない。たとえば、日本語では虹の色を「七色」に切り分けているが、それを「三色」に切り分ける言語もある。

かっこつけてソシュールを出しときましたが、実装者でなければ、裏で動いている仕組みが重回帰でもディープラーニングでも変わらないわけです。しかし、私も会計と財務と経理の違いが分かっておらず、それらは抽象化して他の部署に任せているので同じようなものです。

要するに、「数値計算を使った難しい技術が発達しているらしい」ということは分かっていて、「それらを包括して任せられる人が欲しい」と考えているようです。ただし、「人工知能」という言葉は「何を解決するか」という部分も曖昧なので、そっちの視点でも充分な言葉じゃないなと思ってしまいますが…。

また、最近飲み会で他部署の後輩と「インフラ苦手なんでどう勉強したらいいのか分からないんですよ」という話を少ししていたのですが、 よくよく聞くと「データベースやログ収集・解析の仕組み」のことを「インフラ」と言っていたので、ちょっとビックリしてしまいました。

私はデータ収集のプログラムを作っていて、私はそういう部分までアプリケーション側の(DevOpsの考え方が普及してきた今、アプリケーション/インフラの対比も既に古臭いかもしれませんが)責務だと考えていたのですが、 彼の触っている会社のメイン事業のコードベースが巨大すぎるので、必要以上に難しくブラックボックスに見えてしまっているのかもしれません。

最近ローレンス・レッシグの本を読んでいて、「アーキテクチャによる規制(要するに、ユーザーに行動を取りやすい/取りづらい仕組みを作ってふるまいを制御すること)」という考え方が書かれていたのですが、同じような現象が古いコードや巨大なシステムのせいで意図せず起こっているのかもしれません。

CODE VERSION2.0

CODE VERSION2.0

結局よくわからない記事になってしまいましたが、

  • 相手の使っている言葉が、何を差しているのか(どの範囲を差しているのか)
  • それは多分、立場とか経歴とか、触れてきたアーキテクチャ(?)によって変わるから、それを確認してちゃんと考えたほうがいい

ってことを考えています。

【R/Python】rChatworkとpychatworkをチャットワークAPIのバージョンアップに対応させました

RとPythonのチャットワーク用ライブラリを、APIのバージョンアップに早めに対応しました。 ライブラリの実装練習に作った割に、なんだかんだ自分でいろいろと利用しているのでビックリです。

help.chatwork.com

v1からv2への移行期間として、下記の停止日まではv1を引き続きご利用いただけます。
停止日:2017年5月上旬予定 ※具体的な停止日は2017年3月下旬頃にご案内予定です。

上記の停止日以降は、v1でのアクセスはできなくなりますので、 チャットワークAPIをご利用中のお客様は、お早めにv2へ移行いただきますよう、お願いいたします。

といっても、個人的に利用している「メッセージの投稿」と「メッセージの取得」しか実装していないので、エンドポイントのURLを変更しただけなんですけどね。

github.com

github.com

【雑記】『フリーカルチャーをつくるためのガイドブック』で色々勉強になったけど結論はない

先日、市役所に書類を取りに行くついでに寄ったブックオフで、気になるタイトルの本を買いました。

それが『フリーカルチャーをつくるためのガイドブック』です。

フリーカルチャーをつくるためのガイドブック  クリエイティブ・コモンズによる創造の循環

フリーカルチャーをつくるためのガイドブック クリエイティブ・コモンズによる創造の循環

filmart.co.jp

本書は、「あらゆる創造的活動は、先行して存在する文化物を継承しながら行なわれる」というフリーカルチャーの本質に迫り、「継承」と「リスペクト」が生み出す「創造の共有地」という未来を描き出します。「わたしたち個々人が、これからの文化の形成にどのように参加していけるのか?」という道筋を明らかにして、未来の創造と表現、ビジネスと社会活動のためのヒントとなる1冊です。

クリエイティブ・コモンズをデザインしたローレンス・レッシグのことは(友だちが話していて)一応知ってはいて、 「国家は法律や慣習で構成されたOSのようなものだ」みたいなことを言っていることは知っていました。 (又聞きなので、正確な表現ではないです)

クリエイティブ・コモンズが国家間の法律の差異を吸収するために、複数の層からなる構造をしているそうです。

「リーガルコード (Legal Code)」の層は、法の専門家(弁護士や裁判官など)が法的に解釈することのできる法律用語で記述された文書になっています。 「一般人 (Human Readable)」は、法の専門用語に慣れていない一般人が読めるように、可能な限りライセンス内容を伝える文章である「コモンズ証 (Commons Deed)」を指しています。

なんとなく、VM(バーチャルマシン)でOS間の差異を吸収し、その上で動くプログラミング言語で記述しているような感覚を受けます。 こんな発想というか問題の解き方してる人いるんですね。知ってる人からすると「今更かよ」っていわれそうですが。

いい加減、彼の著作を読んでみなきゃなと思っています。

719夜『コモンズ』ローレンス・レッシグ|松岡正剛の千夜千冊

具体的なサービスの話も結構充実していて、 例えば、「自分の履歴書をGithubで公開したよ」というエントリーがうちの会社のエンジニアの中でちょっと話題になっていましたが、

okoysm.hatenablog.jp

これと似たような発想で、イラストレーターやグラフィックデザイナーが自分のポートフォリオを公開する「ロフトワーク」というWebサービスがあるそうです。いわれてみれば、アート関連の「作品を見れば分かる」ものはこういうサービスと相性が良さそうだし、類似のサービスもいくつかあるっぽいです。

www.loftwork.com

もう一つ印象に残った記述は、あとがきにある次の文章です。

他方で、フリーカルチャーがもたらすべき(まだもたらしていない)重要な変革だと個人的に考えていることがあります。 それは、私たちの文化の中で巨大な重力を持つ既得権益とは関係のないところで、新たな創作物の秩序が持続可能な形で立ち上がることです。

ちょっと関係のない話になりますが、音楽やっている人もやっぱり「技術との付き合い方」で悩んでいるらしい、というのは感じています。

この間知り合いのインディーズバンドマン(活動が長く、そこのコミュニティを支えている立場の人)と、「自分たちの世代からすると、ライブに来てほしいし、そっちのほうがリアルだと感じる」「今の時代はファンの定義があいまいで、CDを買っていればファンなのか、ライブに来ればファンなのか」みたいな話や、「バンドのWebでの告知をどうすればいいのか」というようなとりとめのない話をしました。

技術が発展するに従って、その分野やジャンルに合った、コミュニティや技術のデザインを考える必要があるのかもしれません。めっちゃふわっとした感じにして、特に結論もないまま終わります。

【Python】Web集客や、データ処理の最新ニュースを自動投稿するブログを作りました

実際には、ここ1年くらいSlackに通知していたものを、「ログ残んないしざっと見るとき不便だな」と思ってたので、はてなブログに自動投稿するように作りました。

TumblrBloggerとか、JekillとかPelicanとかでS3に静的ページを作ることも考えたのですが、既にはてなブログに自動投稿するスクリプトは書いていて、いろいろやるのが面倒だったのではてなProに登録しました(はてなProではブログが10個まで持てます)。私はサラリーマンなので時間を金で買います。

正直、はてなブログの投稿部分をライブラリ化してないし、それぞれ同じテンプレートで投げているだけだし、そもそも元々小規模なコードをサーバーで動かしてたやつをアレしててリポジトリ管理もしてなくてヤバイのですが、いずれ手を加えざるをえないと思っています。

だいたい、以下のリポジトリのコードを使っています。

github.com

以下の3つのブログです。

webacqs.hatenablog.com

7news.hatenablog.com

fudosaninfo.hatenablog.com

集客系のニュースに関しては、@rechiba3さんの記事の「SEOマーケティング」を参考にし、その項目にあるアカウントからURLを取得していい感じに重み付け&ソートしています。

(他の項目も参考になると思います)

www.rechiba3.net

私も社会人になってからはTwitterをニュースフィードとしています。ディスプレイ大きい環境で仕事していたときには、常に表示していたほど。各APIの更新情報とかいち早く知れるのでまぢ便利。

私は学生のときにTwitterばかり見ていたのですが、生活がついていけなくなったので、プログラムで効率化しました。

【本】プログラマーのための『贈与論』

最近、面白い本をいくつか見つけて読んでいました。

特にモースの『贈与論』に関係あるところで。とはいえ、まだまとまった文章は書けるほど消化できていないので、簡単に紹介していくだけにします。

本書『贈与論』Essais sur le donは、フランスの文化人類学者マルセル・モース(1872~1950)の著作だ。1925年に出版された。

本書でモースは、ポリネシアメラネシアにおける贈与の体系や、ローマ法やゲルマン法といった古代法の分析をもとに、社会一般において贈与が果たし、また果たすべき役割について“道徳的”な観点から論じている。

贈与論 他二篇 (岩波文庫)

贈与論 他二篇 (岩波文庫)

プログラマーがだいすきな『伽藍とバザール』にも、「ハッカー文化は贈与の文化で、贈与による承認欲求ををイニシアティブにして品質の高いソフトウェアを開発できている」みたいな記述があります。以下、こちらの記事から引用します。

また,なぜ、そんな評価という無形のご褒美が効いたのか,訳者の山形浩生さんの 第6章 訳者あとがき には原著者のエリック・レイモンドさんがこう答えたとあります 

Raymondの答・・・・・・みんな暇だから。暇で、物質的にはある程度充足しているから。  これは大事なポイントだ。そして、そういう物質的に充足した社会では、従来の市場による稀少資源の配分システムが機能しない。  そのとき、別の原理が動き出す。贈与によって名声を得るという原理だ。これがハッカーたちにフリーソフトを書かせる動機なのだ!

そして,この文化により,バグを作ってしまった人をDisるのではなく,バグを直した人が賞賛される文化になり,品質(機能も含め)が高まったとありました.

贈与論再考 人間はなぜ他者に与えるのか

『贈与論』に関する最近の論文集みたいな本です。

特に「ポトラッチ追証できておらず、モースが生きた限られた時代にだけ行われたものらしい」ということは初めて知りました。

特に次の2つが印象に残ってます。小山さんの内容については、後で彼女の著書を紹介するのでそちらで…。

  • 毒と贈り物 / 近藤宏 著
  • 〈借り〉を回すシステム / 小川さやか 著

贈与論再考 人間はなぜ他者に与えるのか

贈与論再考 人間はなぜ他者に与えるのか

借りの哲学

『贈与論再考』に名前が出てきたので読みました。「贈与論などを下敷きにした道徳本」みたいな印象でした。

1542夜『借りの哲学』ナタリー・サルトゥー=ラジュ|松岡正剛の千夜千冊

この一文が印象に残っています。

私たちはちょうど反抗期をへて、自分ひとりでは生きていけないとわかった思春期の若者のようなものである。自分ひとりの力では生きていけず、かといって、これからの人生を《借り》をつくりっぱなしで生きていくこともできない。

借りの哲学 (atプラス叢書06)

借りの哲学 (atプラス叢書06)

その日暮らしの人類学

先程も紹介した小川さやかさんの本です。読売オンラインでは次のように紹介されています。

著者はタンザニアの市場で自ら古着の行商人として働いたりしながら、この種のインフォーマルな、「その日暮らし」の生存戦略を研究してきた。そして、日本人の仕事観が世界の全体の中ではきわめて異様なものであることを示す。世界の大部分では安定した雇用はむしろ稀なものであり、ほとんどの人が雇用されずに自分の工夫で小規模なビジネスを展開して人生を構築している。そのような仕事では未来はまったく不確実だが、まさにそれゆえ、急速な成長が可能であり、状況の激変にも対処でき、リスクの分散もしやすくて、かえって強さと安定性があるというのだ。不確実であることは希望がないことと同義ではないという。

「働き方」や仕事していく中での「仲間意識」など、考えさせられることが多々ある内容でした。(後から来た人には気前よくノウハウを教えてしまう、というのはプログラマーにも通じるところかもしれません。)

また、ケニアのモバイル送金サービスである「エム・ペサ」についての考察も、非常に面白かったです。

gaiax-socialmedialab.jp

M-PESAとは、簡単に言うと携帯電話で送金から出金・支払までなんでもできるモバイルマネーサービスです。ケニアでは公共料金や教育費などの支払いから、給料の受け取りまで今やM-PESAで賄われています。

にわかに信じがたい話ですが、M-PESAではなんとケニアのGDPの約5割を超える金額が動いています。

このサービスによって「気軽に親からの仕送りや、仲間うちでのお金の無心ができることになった」ことで、友人関係にも少なからぬ影響を与えているようです。同様の決済サービスを考えている人は、一度彼女の本を読むといいかもしれません。

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

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

マーケット進化論 経済が解き明かす日本の歴史

日本の歴史を、経済の視点から解き明かそうという試んでいる本です。

d.hatena.ne.jp

もともとは『経済セミナー』に連載されたコラムが元になっており、きっちりとした経済史というよりは、それぞれの時代からトピックを抽出して、マーケットの発展を分析しようとしています。

250ページほどの本で律令制以来の日本の経済史を分析しているため、「広く、浅く」という面は否めないのですが、高校の歴史の教科書などと比べると、経済学に基づいた本質的な議論がなされていますし、各時代ごとにぶつ切りになるのではない、まとまった見通しが得られます。

マーケット進化論 経済が解き明かす日本の歴史

マーケット進化論 経済が解き明かす日本の歴史

【自動要約】海外のニュースを自動で要約して翻訳して、自動でまとめてくれるプログラムを書ければいいなあ

海外のニュースを簡単に通知できないか試そう(試したい)という記事です。 国内の業界ニュースは当然追っているにせよ、海外に面白い動きがあるのに、全然把握できていないことは多々あります。

とはいえ、私は英語が得意ではないため、自分の興味のあるニュースなのか、おおざっぱでも良いので要約して通知したいと考えています。

ということで、同僚が読んでいた不動産関連のニュースを要約→翻訳してみようと思います。 日本語の自動要約は難しいものの、簡単なAPIやライブラリである程度はできるんじゃないかと踏んでます。

www.zoopla.co.uk

最終行に、都合のいいことに全体の要約があります。

  • The number of people buying a home with a mortgage has bounced back to the level seen before the UK voted to leave the European Union.
  • A total of 40,851 mortgages were approved for house purchase in October, the highest level since May.
  • But the number of loans in the pipeline for homeowners remortgaging to a new deal dipped slightly compared with September and is broadly unchanged since August.

これをGoogle翻訳すると、すごくいい結果が返ってきます。

  • 住宅ローンを持つ住宅を購入する人々の数は、英国が欧州連合を離れることに投票する前の水準まで戻ってきた。
  • 10月の総住宅購入件数は40,851件で、5月以来の最高水準であった。
  • しかし、新規契約に移管する住宅所有者のパイプラインの融資件数は、9月に比べて若干減少したが、8月以降は変わらない。

自動要約には、取り急ぎ、sumyというPythonプログラムを使いました。

github.com

コマンドラインでURLを指定すると使えるようです。なんてお手軽!

とりあえず、3文でまとめてもらうことにしましょう。

sumy lex-rank --length=3 --url="http://www.zoopla.co.uk/discover/property-news/mortgaging-activity-bounces-back-says-bba/#DR1uX77tk3xgULQQ.97"
  • The mortgage figures support anecdotal evidence from estate agents that following a brief dip in confidence after the referendum, buyers are once again returning to the housing market.
  • But despite the increase, mortgages for people buying a house are still 10% lower than they were in October last year, possibly due to affordability constraints following recent strong house price gains.
  • The fact that buyers appear to be returning to the market is obviously good news for people trying to sell a property.

何も考えずにGoogle翻訳に突っ込んでみます。

  • 住宅ローン数値は、住民投票後に安心して短期間で暴落した後、買い手が住宅市場に再び戻ってくる不動産業者からの事例を裏付けている。
  • しかし、住宅価格の上昇にもかかわらず、家を購入する人々の住宅ローンは、最近の強い住宅価格の上昇に伴う手頃な価格の制約のため、昨年10月の住宅ローンよりも10%低い。
  • バイヤーが市場に戻っているように見えるという事実は、財産を売ろうとしている人にとっては明らかに良いニュースです。

要約…というにはちょっと微妙な気がします。

要約さえきちんとできれば、最近精度が大幅に向上したGoogle翻訳でなんとかなりそうです。