運転免許無いけどMonterey行ってきた - 2017 3月

3月の最初の週末に、二泊三日でMontereyに旅行に行ってきた。Montereyはサンフランシスコから車で2-3時間南に行ったところにある海沿いの街で、さらに車で10分程の距離にあるCarmelと合わせて、ベイエリアに住む人の週末旅行の行き先として人気が高い。

僕も妻も運転免許を持っていないので、なかなかMonteryまでたどり着くのが大変そうだ、と思ってこれまでは行ったことがなかったのだけど、今回重い腰をあげて行ってみることにした。

まず、行きはCaltrainを利用してSan FranciscoからSan Joseまで。平日朝の出発だったので、通勤特急みたいなやつで1時間半くらい。 San JoseからはLyftに乗ってMonterey のfisherman’s warfまで。一時間ちょっとで、運賃はチップ前で$90ほど。運転手さんにちょっと申し訳なかったので、チップを多めに払っておいた。 初日はfisherman’s warfでご飯食べたり、ダウンタウンをふらふらしたり。小さい町なのでダウンタウンは特に見るものもない。

f:id:nkazuki:20170303131415j:plain

Canary Rowの方はちゃんと観光客向けに最適化されている感じだった。ダウンタウン→Canary Rowは徒歩三十分くらいで、歩けなくは無いかもしれないけど歩くと大変そうな距離。我々は大人しくLyftに乗った。 airbnbで見つけた宿泊先はフレンドリーなホストがいて良い感じだった。

二日目は朝からWhale watching. Airbnbのホストがおすすめしてくれた Sanctuary Cruiseという会社を利用した。これはMontereyよりやや北のMoss Landingという港から船が出ていて、Whale watchingのポイントに近いところから船が出る分、燃料が少なくて済むし、参加者としても船酔いのリスクが減るとのこと。Uberで宿泊先からMoss Landingまで$30くらい。

Sanctuary Cruiseは十数人乗りくらいの大きさの船で、バイオ燃料を利用して環境にも優しいとのことで、なかなか良さそうだったのだけど、この日はなかなか鯨が見れず、最初の一時間くらいはひたすら船を走らせていた。 結局鯨が見れたときにはMonteryのfisherman’s warfにかなり近いところに来ていたので、結果論としてはMonteryのfisherman’s warfから出てるツアーでも良かったのかもしれない。 最終的に、この日は遠くから鯨を2,3頭見ることが出来た。また、イルカの群れに出会うことも出来て、こちらは船のところまで来てくれたのでとても良かった。

f:id:nkazuki:20170326064213p:plain

Moss landingにあるレストランでランチを食べた後は、またもやUberでCarmelまで。$30くらい。建物が可愛らしい街で、雑貨屋さんなどが多いので妻は楽しそうにしていた。

f:id:nkazuki:20170304172924j:plain

この日の夜はNetflixで finding dory (劇中に出てくる水族館のモデルがMonterey水族館)を見るなどした。

三日目はMontery水族館に行った。色んな人からじっくり見て回ると丸一日かかると言われていたので、10時の開館に合わせて行った。 普通に楽しめたけど、全部見て回っても3時間くらいだったかな。葛西臨海公園水族館とかよりもっと広いのかと思っていたけど、そこまでではなかった。

楽しい旅を終えて、家路に着く。San FranciscoまでずっとUberLyftに乗っていくという手もあるかなと思ったのだけど、調べてみるとSalinasという近くの街からgreyhoudのバスが出ているらしいのでそちらを利用してみることにした。Montery -> SalinasまでLyftで30分、$40くらい。Salinasからのgreyhoundが想像してたよりも高くて、二人で$230くらいだったかな。SFまで直接Lyftに乗るのとたいして変わらないかもしれない。ただ社内に電源があるなど、乗り心地は悪くなく、2時間くらいでSFのバスターミナルまで到着した。

ということで免許を持っていなくても、Uber/Lyft/公共交通機関を駆使することで楽しい旅行をすることが出来た。もちろん時間的・金銭的に損をしてるように見える部分はあるわけだけど、それらの不便を考えても、自分で運転をするという行為が自分には考えられないので、自動運転技術の発展を祈るのみである。

大統領令の対応が明暗を分けたUberとLyft - アメリカにおける政治的問題とPRのややこしさ

トランプ大統領が就任一週間目に署名した、イラン・イラクなど7カ国からの入国を90日間禁止する大統領令は、施行直後から大きな批判を呼んだ。入国制限はすでにビザやグリーンカードを保持する人にも及び、労働ビザを拠り所にアメリカで働いている自分としても全く他人事ではなかった。もともと移民が多くリベラル寄りなサンフランシスコやニューヨークでは、空港などで大規模なデモが行われ、ニュースは大統領令に関する話題で持ちきりだった。

そんな騒動のさなか、面白いなあと思ったのがアメリカのテック企業のそれぞれが敏感に反応していたこと。週末であったにも関わらずairbnbやDoordashなど、テック企業の創始者自らがTwitterなどで自分の考えや、会社として支援する声明を出したりしていた。例えばTechcrunchの下の記事なんかを見ると、名前を思いつく限りのテック企業がすべて何かしらの行動をとっていることがわかる。

techcrunch.com

特に、ともにオンデマンドタクシーサービスを提供するスタートアップであるLyftとUberの、大統領令に対する対応の違いと、それによって招かれた結果が自分には興味深かったのでメモ代わりに記録しておこうと思う。


以下、時系列

1/27(金)

トランプ大統領が大統領令にサイン

1/28(土)

Uber創業者が社内向けメール(全文)にて、大統領令によって被害を受けた従業員に金銭的保証をすることなどを連絡。 また、他の大企業の社長などと並んで、自身がトランプ大統領のeconomic advisory counsil (経済顧問グループ)であることにも言及し、政治家と手を取り合っていくことが良い変化をもたらすためには必要だと主張している。 このメールは一部を切り取ってSNSなどにシェアされ、「Uberはトランプを支持している」として批判を受けた。

一方、Lyft創業者はTwitterで大統領令を批判、antiethical (倫理に反する)という強い言葉を使っている

大統領令に反対する大規模なデモが起きているニューヨークでは、タクシー協会がJFK空港からの乗客ピックアップを行わないボイコットを敢行

これは結果として、タクシーを拾えない客がUberに流れ、需要増でUberの利用料が高騰することになった。 (UberにはSurge pricing という、需要に応じて値段が変動する仕組みがある) Uberはその後JFK空港周辺でのSurge pricingを停止したけれど、デモに便乗してお金儲けをしているとして批判された。

ちなみにこのときLyftも営業して利益をあげていた(?)と思うのだけど、Lyftを批判するコメントなどは見られなかった。 背景として、UberのほうがLyftよりも商業的に成功していること、Lyftと比較してUberは従業員やドライバーに対する扱いが悪く、以前より批判されがちだったことがあるだろう。

上述のLyft・Uberのスタンスの違い、またUberがNYでのデモに便乗して利益を上げたなどの批判から、Twitter上で#DeleteUberというハッシュタグをツイートするユーザが現れ、トレンド入りするまでになった。

www.buzzfeed.com

1/29(日)

Lyftは公式のブログにて、大統領令を改めて批判するとともに、大統領令に反対する運動をしている人権団体ACLUに、今後四年間で$1M (一億円くらい)を寄付していくと発表した。

blog.lyft.com

一方Uberも、創業者が28日に社員に送ったEメール(上述)についてのブログ記事をTwitterで宣伝(以下のスクショは僕の実際のタイムラインに流れてきたpromoted tweet)するなどして、自社の主張を届けようとしたが、#DeleteUberのトレンドは止まらなかったように思う。

f:id:nkazuki:20170212043714p:plain:h400

Uber創業者のTravisFacebook上で改めて大統領を批判するとともに、Uber大統領令で影響を受けたドライバーに対する法的援助費用などのための$3Mの基金を設立すると発表した。

techcrunch.com

1/30(月)

UberをアンインストールしLyftに流れるユーザが大勢いたことから、App StoreでのLyftの順位が39位から4位へと急上昇し、アプリ公開移行初めてUberのランキングを抜いたことが報道された。

www.theverge.com

SNS上でのUberに対する批判は収まりを見せず、例えば以下のTweetは1/30に投稿され、1000以上のいいねがついている。

2/2(水)

トランプ大統領とのcouncil meetingを2日後に控えたこの日、Uber創業者のTravisは、自身がcouncilを辞退することを発表。 もとより大統領令を支持する意図はなかったが、さらなる誤解を避けるためにcouncilをやめることにしたとのこと。

techcrunch.com

New York Timesの報道では、今回の件でUberは20万人のユーザを失ったとも言われている。


こうしてまとめてみると、個人的にはUberが特に論理的に誤った対応をしたとは思わないし、別にcouncilからアドバイスしていくという立場も妥当だったと思うが(実際、Tesla CEOのElon Muskなんかはいまでもcouncilに所属している)、結果としてはUberSNSでの炎上により20万ものユーザを失い、更に結局councilからも脱退することとなった。一方でLyftは大量の新規顧客を獲得することになった

日本でなにかしらの大規模な政治的問題が起きたとして、個々の企業レベルで正式見解を出すということはあまり無いような気がする。一方アメリカの特にテック企業では、上に述べたように多くの企業が何かしらの声明を出していた。もともとテクノロジー業界は比較的新しく多くの移民に頼っていること、またアメリカ人は(日本人と比べて)政治的問題に関心が強いということなどがあるのだろうか。

いずれにせよ、サービスと本来関係ない、政治的な問題への対応やPRによって、これだけ各企業にとって大きな違いをもたらすというのはとても興味深い出来事であった。


件の大統領令については、結局裁判所から一時差止命令が出て、今のところ差し止め状態になっている。 多くの人が指摘しているように、とても「アメリカらしくない」政策だと思うので、しっかり却下されると良いな、と思う。

2016年お仕事振り返り - US企業から日本向けの仕事をする

1月ももう終わってしまうけど、2016年について振り返っておく。2016年の特に後半は、仕事ばかりしていた年だった。

入社した当初は、アメリカに本社がある企業の、アメリカ向けの製品開発に関わっていたのだけど、そのプロダクトがだんだんグローバル展開を始めたのが2016年。自分の近くに座っていた同僚がたまたま日本展開絡みのことをやっていたのをきっかけに、自分も日本向けのリリースに関わることになった。

マーケットによっては、アメリカ向けの製品を翻訳して微調整、だけで済むこともあるらしいのだけど、日本はいろいろと事情があり、それなりのボリュームの調査と開発が求められることになっていた。ビジネス面などでは東京オフィスの助けを借りつつも、PMとエンジニアはすべてUSに居るので、自分含め3人などの少人数で、日本への出張を繰り返し、弊社のエンジニアとしてはかなり珍しいことに、直接パートナーのオフィスにいって交渉をするなどした。

自分が前に担当していた領域含め、いまの会社の一般的な体制としては「技術的知識を持っていてパートナー交渉にあたる」専門職があり、エンジニアは純粋な技術的課題に向き合えることになっている。が、日本でやる新プロジェクトはそもそも技術的知見を集めるところからのスタートだったのと、同僚エンジニアがとにかくなんにでも参加したがるタイプだったので、エンジニアたちがどんどん参加して行くような感じだった。

製品開発の拠点をUSに起きつつ、その他(ビジネス、マーケティング、法務など)は日本オフィスの人に(ほとんどサイドプロジェクトのような時間配分で)お手伝いしてもらう中では時差やコミュニケーションの難しさもあった。

外部のパートナーや、マーケティングなどチーム横断的な人たちと仕事出来たのは色々勉強になってよかった。自分は他人に何かをお願いしてやってもらうということが苦手(自分で解決しようとしてしまう)なのだけど、何でも自分で抱え込むのはたいてい悪手なので、そこら辺の折り合いをもう少し上手くつけれるようにしたい。

開発的な意味では、コードを書いていた絶対時間は2015年と比べるとだいぶ減ってしまったけど、他社と協力するという前提でコーディングなり出来たのはよかったかな。

日本の会社と仕事するということで、自分の日本に関する知識や日本語ネイティブであることを活かしてかなり色んな役割や色んな議論をさせてもらえたけど、これは正直言って一長一短というところ。2017年はもう少し「日本語が喋れるという理由」だけで自分に割り当てられている仕事の割合を減らして行かないとなあという気がする。

情報共有についても同様で、どうしても日本語ベースの一次情報が入ってきたときに、自分含め日本語を理解する人が、それを英語に翻訳(しかもなるべく主観が入らない形で訳さないといけない!)して共有しないと、英語話者にとってはその情報は無いも同然なので、かなり意識的に負荷をかけないとチームとして機能しない気がした。そこまでしても同僚はメール見てなかったりするしね。。。

まだまだ改善の余地がある状態ではありながらも、なんとか昨年中にリリースまでこぎつけることが出来たのは、正直に良かったなあという感じがする。

アメリカの会社というやつは、11月はサンクスギビング、12月はクリスマスで、それぞれ二週間ずつくらい、人が居なかったりサーバに新しいプログラムをデプロイ出来なかったりする時期があるので、なかなか大変だった。

製品リリース自体は全く初めてというわけではないのだけど、今回のリリースは自分が貢献したと言える部分がこれまでと比べて多かったので、やはり良いものである。 今年も同じ製品に継続して関わりながら、改善したり、同じ製品の上で新プロジェクトに関わったりしていく予定。

世界最大規模のmonolithicコードベースを有するGoogleと、世界最大規模の分散コードベースをhostするGitHub

github上で公開されている280万以上のリポジトリのsnapshotを、Google Big Query上で利用できるデータセットとして公開すると、GoogleGitHubがそれぞれ発表した。

これによって「GitHub上で一番使われているJavaのpackageは何か」というようなGitHub上のソースコードすべてを対象としたクエリが簡単に書けるようになる。

ところで、同じ時期に、Google社内のmonolithic(一枚岩)なコードベースに関するレポート論文(Why Google Stores Billions of Lines of Code in a SIngle Repository)がACMで公開されていた。

冒頭で紹介したGitHubGoogleの取り組みは、280万のリポジトリ・1.6億ファイルの情報を横断的に検索したり、修正を提案したりできるようにするための試みだった。すでにGoogle社内ではほぼすべてのコードを単一のツールで検索したり、横断的にパターンを適用してリファクタリングしてるわけで、そういったところからモチベーションが湧いてきたのかな、と思うと興味深い。

Why Google Stores Billions of Lines of Code in a SIngle Repositoryは面白そうなのでまた改めて紹介したいような気もするのだけど、冒頭の記事で紹介されてるGitHubの数字と比較してみると面白いなと思ったので以下にいくつか並べてみる。

GitHub

  • 2008年創業
  • のべ1200万人が3100万のプロジェクトに参加
  • データセットサイズ3TB+ (全リポジトリ上の全データではなく、サイズの大きいバイナリは除いてあるとどこかで言及されていた気がするが出典を紛失)
  • 280万公開リポジトリ
  • 1億4500万公開コミット
  • 1億6300万ファイル

Google

  • 1998年創業
  • リポジトリサイズ86TB
  • 2.5万のエンジニアがリポジトリを共有
  • のべ3500万コミット
  • 900万ファイル、20億Line of Code (ちなみにLinuxカーネルは4万ファイル1500万Line of Codeらしい)

ファイル数だけで言うと、GoogleのコードベースはLinuxカーネルの200倍以上で、GitHubはさらにその10倍以上であるということが言える。Googleをすごいと見るか、GitHubをすごいと見るかでいろんな比較ができそうな数字である。

まあ、どっちもすごいという話なのかもしれないけど。

USForExで米ドルを日本の銀行口座に送金する

一時帰省のタイミングなどでなにかと日本円が必要になることがある。

前回アメリカから日本に送金したのは、インターンシップが終わった時だった。そのときは帰国間際でバタバタしていたこともあって、とりあえず銀行に行って日本の銀行に送金したように記憶してるのだけど、係員が不慣れなのかすごく手間取った上に、両方の銀行でそれぞれ数千円ずつ手数料を取られてああまり良い感じではなかった。両替レートはどうだっただろうか。覚えていない。


今回は特に急いで送金する必要もないので、いろいろ選択肢を調べてみたところ、こちらのサイトでUSForExという国際送金サービスが紹介されていた。日本語で情報があまりなさそうだったのでここに書いておく。


要約すると
時間:送金に要したのは約一週間
金額:レートは2円/ドルくらいGoogle先生提示のレートより高め、日本の銀行で結局手数料をとられる(!)
という感じだった。

おおまかな流れとしては、

1. 登録

2. 電話による個人認証

国外にコールセンターがあるっぽく、夜でも認証できるのはよかった。

3. 送金手続き

今回はGoogle検索で出てくるレートが1USD/122.39円のところ、1USD/120.26円という換金レートだった。また、別途5ドルの手数料を取られた。

銀行口座を認証する手続きみたいなのもあったのだけど、今回はそれをせずに直接自分の銀行口座からUSForExの口座に送金した。送金手続きから実際に送金がWebサイト上で確認できるまでは土日またいで3-4日だったように思う

4. 受け取り確認

それから日本の口座で入金が確認できるまでにさらに2日ほどかかった。また、非常に残念なことに、国外からの入金ということで4000円の手数料を取られた…全然安くないじゃん…口座はUFJで、送金額は20万円。

 

ということで最適な両替法の探求は続くのであった。

ビットコインを使うことで手数料を抑えて国際送金、みたいなことをしてる人も世の中にはいて、このAlign Commerceという会社がまさにそういう感じで試してみたかったのだけど、法人向けのサービスらしく利用できなかった。

 

 

アメリカに来てから見ているテレビ番組

アメリカに来てから、なるべく食事時はアメリカのテレビ番組を見るようにしている。 大家が契約しているComcastによって数十のチャンネルを見ることが出来るのだけど、なかなか面白い番組を見つけるのに苦労したので、自分たちにとって面白かった番組をいくつか書き記しておく。

Shark Tank

アメリカ版マネーの虎Wikipediaによるとマネーの虎のほうが古くからあったらしい) 実業界で成功を納めた投資家(Shark)たちの前で起業家が投資をもらうためにプレゼンをする。

アメリカの起業家たちはみんなプレゼンが上手で見てて面白い。 投資家たちも慈善で投資してるわけでなく、バシバシ厳しい意見を行ったり投資額を値切ろうとしたりというせめぎ合いも見どころのひとつ

The bachelor

結婚相手を求める1人の独身男性(bachelor)が、同じく結婚相手を求める30人の女性たちと、 リゾート地の大豪邸を舞台にデートしたりしながらパートナーとなる女性を見つける。 男女逆のThe bachelotteとシーズンごとに交互にやっている。

What would you do?

街なかで悪事や差別にであったら一般の人はどう振る舞うのか、というドッキリ番組。 ドッキリの内容のチョイスがアメリカっぽくて

  • 同性愛者に店員がひどい言葉を使っていたらどうするか
  • 白人女性とムスリムの男性が結婚の報告を両親にしているが、ムスリムと結婚なんてありえないと白人の両親が激怒したらどうするか
  • マニキュアやさんで男の子がツメを綺麗にしてもらってる時に父親が乱入してきて「もっと男らしくしろ」と激怒したらどうするか

などなど差別問題に絡んだものも多い。 アメリカの人々は他人のことであっても口を挟んでくる人が結構居て、差別されている他人のために声を上げる人がいるのは見ていてアメリカの良い所だなあと思う

Home Free

9組のカップルが優勝賞品の一軒家を目当てに毎週物件のリフォーム工事対決をする。 専門家のジャッジで毎週一組づつ脱落者が決定し、最後に残った1組がマイホームを商品として与えられる …という建前で参加者は集められるのだけど、実は毎週リフォームする家それぞれがその週の脱落者への商品になってて、 実は全参加者が家を貰えるというハートウォーミングなリアリティ番組

Undercover boss

社長が新入社員に扮して現場に潜入していくリアリティ番組。 ドッキリものとしても面白いし、潜入の過程で気付いた問題を社長が改革したり、なにかしら困ってる社員に対して社長が寄付したりしていい話っぽい感じで最終的にまとまる。

Cop

アメリカ版「警察24時」 ドラッグ絡みの話が多いのがアメリカという感じ。

Extreme Weight Loss

一般人が専門家の指導の元でダイエットする番組。アメリカの太ってる人はスケールが違っていて、300キロくらいあったりする。 一回の放送(2-3時間?)で、300キロくらいあった人が80キロくらいまで365日かけて体重を落とす様が一気に放送されるのでスピード感がすごい。

Tricorder: Building a Program Analysis Ecosystem (ICSE'15) 読んだメモ

Googleが社内のほぼ全てのプログラムに対して静的解析を行うためのフレームワークTricorderを開発し、運用した知見を紹介する論文がICSE*1で発表されていた。OSS版の Shipshapeはgithubで公開されている。

研究として新しい点は特にないけど、現場目線かつGoogle規模の開発で実際に成果を上げている事例としてとても面白かった。

提案ツールGoogle社内でメインに使われているレビューシステムと連携して動作するようになっており、 その上では一日に3万のchangelists snapshot(レビューの単位)が処理され、実際に9万件ほどの警告(未使用変数とか)がツールによって発見されている。 ただし、これは開発者がchangelistにおいて変更した部分以外に対する警告も含まれており(このあたり記述が曖昧) 開発者が実際に変更したコードに対する警告のみがレビューシステム上に表示されるようになっている。

レビューシステムに表示される警告には、

  • レビュアーが利用できる"please fix"ボタン
  • 無意味な警告が出た時に開発者が押せる"not useful"ボタン
  • また機械的に修正を提案出来る場合には"Apply fix"ボタン

が表示される。

提案ツールプラグイン方式を採用しており、既存のインタフェースを実装することで簡単に解析を追加できる。 また、これは並列度を高めることにも貢献し、数分程度で解析が終わるためコードレビューが終わる前に警告を出すことができている。 FindBugs, ClangTidy, Lintなどの既存ツールプラグインとして組み込まれているほか、社内の誰でも好きなプラグインを開発することが可能になっている。

プラグインの開発自体はだれでも出来るものの、それを社内にロールアウトするためにはいくつかのガイドラインが提示されている。

  • 実際に社内で稀だけど実際に起こっている問題を検出するものであること。こんなコード書かないよ、というような架空の問題を解決するものや、社内で頻繁に発生する(つまりとくに問題になってない)パターンを検出するようなものではいけない
  • 誤検出(false positive)の割合が10%以下であること
  • 可能であれば自動修正案を提示すること。これは問題が解決される可能性を高め、また開発者が警告の意図を理解するのに役立つ
  • 警告文にはなるべくURLや詳細な説明を含めること

false positiveの計算には上述のレビューシステム上に提示されるボタンに対する開発者の反応を利用しており、 実際の開発者目線で提示される警告の有用性を測定し、プラグイン開発者たちが改善を行えるようになっている。

実際に現在のGoogle社内では30程度のプラグインが運用されており、一日あたり700回程度の"please fix"が押されている。 開発者がレビュアーに指摘される前に警告に気づくこともあるため、実際にはより多くの改善につながっているとのこと。 これにたいして"not useful"ボタンは一日平均50回程度しか押されておらず、false positiveの割合を少なく保った運用ができている。

また、ツールによって直接問題を指摘して修正させるだけなく、開発者がその問題に気づき同じ過ちを繰り返さなかったり既存のコードを修正することにもつながっているらしい。実際に、ツールで警告を出しはじめたあと、コードベース全体でみた類似の問題の合計数が減少するということがあったそうだ。

*1:ソフトウェア開発に関するトップカンファレンス