世界最大規模のmonolithicコードベースを有するGoogleと、世界最大規模の分散コードベースをhostするGitHub
github上で公開されている280万以上のリポジトリのsnapshotを、Google Big Query上で利用できるデータセットとして公開すると、GoogleとGitHubがそれぞれ発表した。
これによって「GitHub上で一番使われているJavaのpackageは何か」というようなGitHub上のソースコードすべてを対象としたクエリが簡単に書けるようになる。
ところで、同じ時期に、Google社内のmonolithic(一枚岩)なコードベースに関するレポート論文(Why Google Stores Billions of Lines of Code in a SIngle Repository)がACMで公開されていた。
冒頭で紹介したGitHubとGoogleの取り組みは、280万のリポジトリ・1.6億ファイルの情報を横断的に検索したり、修正を提案したりできるようにするための試みだった。すでにGoogle社内ではほぼすべてのコードを単一のツールで検索したり、横断的にパターンを適用してリファクタリングしてるわけで、そういったところからモチベーションが湧いてきたのかな、と思うと興味深い。
Why Google Stores Billions of Lines of Code in a SIngle Repositoryは面白そうなのでまた改めて紹介したいような気もするのだけど、冒頭の記事で紹介されてるGitHubの数字と比較してみると面白いなと思ったので以下にいくつか並べてみる。
- 2008年創業
- のべ1200万人が3100万のプロジェクトに参加
- データセットサイズ3TB+ (全リポジトリ上の全データではなく、サイズの大きいバイナリは除いてあるとどこかで言及されていた気がするが出典を紛失)
- 280万公開リポジトリ
- 1億4500万公開コミット
- 1億6300万ファイル
- 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:ソフトウェア開発に関するトップカンファレンス
サンフランシスコの安い語学学校
調べる機会があったので。
Low cost, English classes, ESL, affordable, discount, TOEFL, school 625 / 4weeks, 18 hours/weeek 2015年2月現在、日本語を話すスタッフさんがいらっしゃるようです。
Tuition & Fees | American Academy of English 490 / 4weeks, 18hours/week
Advance English Academy - How Much? 440 / 4weeks, 18hours/week
http://www.iicesl.org/tuition.html 395/4weeks, 週四日、時間不明 初めての受講は16weeks以上義務
Noncredit ESL at CCSF 無料 10hours/week, 2hours/day 市内数カ所にキャンパスあり、申し込みから受講まで2ヶ月かかるらしい (2017年追記: 開いてるクラスがあれば学期途中でも入れたそうです)
アメリカのテック企業では人々が裁量を持って働いている気がする話
フルタイムとして働き始めて2ヶ月と少し経ちました。 よく「日本の会社と比べて働き方がどう違うか」のようなことを聞かれるのですが、自分は日本の大企業でフルタイムとして働いた経験がないので、はっきりと違いはわかりません。ただ、自分の持っている一般的な日本企業のイメージと比較すると、自分の会社の人たちは裁量をもって自由に働いている感じがします。
マリッサ・メイヤーが変革する前のYahoo!のエピソードで「みんな職務時間中に平気でサイドプロジェクトをしてる」というのを聞いたことがあります。その時は信じがたいと思いましたが、実際にアメリカのテック企業で働いているといかにもありそうな話だなあという気がします。
特に自分のマネージャはあまりマイクロマネージメントをしたがらないので、自分の担当範囲で緊急性の高いバグが出ない限りは、日々自分が何をするのか、というのはわりと任されています。ミーティングも、出ても出なくても良い、というものがいくつかあります。勤務時間も同様で、各々都合の良い時間にきて都合の良いに帰っていきます。一ヶ月やより長いスパンでのマイルストーンみたいなものは当然設定するのですが、それを決めるときも個々の構成要因であるエンジニアが(必ずしも技術的観点だけじゃなくてプロダクト目線とかでも)好き勝手言いたいことをいうのが普通、という雰囲気。大企業なのでいろいろ垣根はあるものの、それを飛び越えられるという建前をちゃんと守ろうという風土はあって、自分でアクションを起こせばそれなりに広い行動範囲があります。
僕はまわりの同僚と比較すると指示待ち族になってしまいがちな部分があるようで、なかなかこのへんが難しいです。マイクロマネージメントされるのはもちろん好きではないのですが、いざ全部決めていいよ、といわれる(とはいえなんだかんだ制約がある)とどうして良いかわからないような部分もあります。単にコードを書いたりレビューしたりするのは気楽なのですが、大局的な働き方みたいな話はまだまだこれからだなあという感じです。
サンフランシスコで家探しをする
サンフランシスコで家探しをした記録を残しておきます。Web上にすでにいくつか記事が有り、特にFumi's Travelblog: サンフランシスコの家探しなどが詳しいです。ただ、Web上の記事はルームシェアを前提にしてるものが多いですが、自分は妻とこちらに来ていることもあって、夫婦で住む独立した部屋を探していました。
家探しに際しては、以下の様な条件で物件を探していました。
- SOMAエリアにあるオフィスまで公共交通機関(まだ免許を持っていないので)で1時間圏内
- 家賃が2500ドル/月以下
- シャワーでなくバスタブ付きのお風呂がある
- 治安が悪くない
- 1ベッドルーム
サンフランシスコ界隈の家賃は非常に高く、以上のような条件でも満たす物件はさほど多くなかったです。
逆に妥協した点としては
- 物件の新しさ
- 洗濯機が建物内にあるかどうか
- ペット不可
- ダウンタウンへのアクセスの良さ (本当はオフィスまでも30分圏内が良かった...)
などがあります。
物件の探し方
物件を探す際は以下のサイトを主に利用していました。
Craigslist
ベイエリアで知らない人は居ないであろうなんでも掲示板です。いかにもWeb1.0なレイアウトですが、未だに絶大な人気があり、膨大な量の物件が投稿されています。 SF bay area apts/housing for rent - craigslistがアパートを探すためのページです。ルームシェアを探す場合は別のページが有ります。Craigslistは使い勝手があまり良くないため、以下のPadMapperのようなサイトが生まれているのだと思いますが、PadMapper側のミスなのか上手く拾われてない投稿が時折あり、結局Craigslistもたまにチェックしていました。
PadMapper
Google Map上にCraigslist(など)の投稿をマッピングして表示してくれるサイトです。指定した条件を満たす物件があった際にはメールを飛ばすことが出来るので、その機能のみ使っていました(後から気づいたのですが、craigslistにも同様の機能があったかもしれません)
WalkScore
PadMapperと同様に、いくつかのサイトの物件リスティングをまとめてMap上に表示したり出来るサイトです。ある地点からの通勤時間でスコアリング出来たり、Crime rateというその辺りの地域がだいたいどんな治安か見てたりするので頻繁に利用していました。Crime rateの機能がどの程度信頼できるのかはわかりませんが、妻の最大の懸念事項が治安だったので。ただ、WalkScoreで条件の良い物件が頻繁にひっかかるApartmentHunterzというサイトはいかにもスパムサイト臭いので、
ZillowやZumperなども試しましたが、メインで使うという感じではありませんでした。
その他、10月から働く会社の同僚に連絡し、社内のメーリスでも物件を探してもらいました。成約には至りませんでしたがとても良い物件を教えてもらいましたし、後述の審査の面倒を軽減出来ると思うので、知り合いづてで探せるのであれば利用したほうが良いと思います。
補足1: 物件管理者の種類について
こちらで家探しをしていて、 賃貸の管理者によって3つのパターンがありそうだと思いました
- 大家さんが管理している(一軒家の一階をそのまま貸し出しているなど)
- 管理会社が存在するが、鍵の預かりなど最小限のことしかしていない(小さめのアパート)
- 法人が団地をつくり管理もしている(郊外のでかい団地にありそう)
一番上はいかにもcraigslistにリスティングを出してそうですが、一番下の団地などはcraigslistでは見つけづらいかもしれません。また、大規模な団地であれば、現状空きがなくてもどれかの部屋が近いうちに開くということがありそうです。サンフランシスコ市内に住むのであれば大規模な団地というのはそもそもあまりないですが、BARTで少し郊外に出るのであれば、団地に特化したような別の探し方をとるのが良いかもしれません(どうするのが良いのかはわかりませんが)
補足2: 不動産仲介業者
日本では家探しに際して不動産業者に条件を伝えて希望の物件を探してもらいますが(そもそも不動産会社しかアクセス出来ないデータベースがある)、こちらではあまりポピュラーではありません。会社が費用を負担してくれるのであれば利用するのも手かとは思いますが、僕たちは利用しませんでした。こちらの物件は1年契約が基本のようなので、最初の物件で最高のものに出会えなくとも引っ越せば良いと考えています。
内見に行く
上述のサイトたちの賃貸リスティングには部屋の間取り図が乗っているのを見たことがありません。また、部屋の写真がどの程度乗っているかもまちまちなので、内見の重要性は日本で部屋探しする時よりも高そうです。
内見の方法には以下のいくつかの種類があり、物件によって違います。
- オープンハウスをしている時間に行く
- 不動産屋で鍵をピックアップして一人で内見に行く
- アポイントメントをとって見せてもらう
大家さんが不動産業者に鍵を預けている物件の場合は、不動産屋に行って、鍵を預かります。ネットで物件みたんだけど、とかいってパスポートを見せて、20ドル程度の預かり金を渡すと鍵を貸してくれるので、後は自分の好きなように見に行って、数時間以内に鍵を返せばオッケーです。近隣の似た条件の物件の鍵を同じ業者が持っていることがあると思うので、事前に調べていくと良いと思います。(その場で聞いてみてもいいかもしれませんが、あまりフレンドリーな感じではありませんでした)
アポイントメントを取って見に行かなくてはいけない場合は、物件を見つけたサイトから連絡します。多くの方が行っていますが、電話番号が乗っている場合は直接電話したほうが、見落とされる確率が減りそうです。僕も英語が苦手なのであまり電話したくなかったのですが、がんばりました。いざ電話すると留守電なことも多いので、ちゃんとメッセージが残せるように、伝えたいことの要点を電話する前に英語でまとめておくと良いと思います。
物件に応募する
気に入った物件があったら契約の前に審査に入ります。英語の記事を見ていると、良い物件があったら仮押さえのためにapplyしましょう、とか書いてあるのですが、実際どの程度カジュアルにapplyしていいのかはわかりません。僕は実際に行くと決めた一箇所のみにapplyしました。
一般的にこの際にID、SSN、クレジットヒストリ、直近の給与証明、銀行の残高証明、過去の雇用主のリファレンスなどが必要なようです。僕はアメリカで働くのは学生の頃インターンして以来なので、事情を説明したのですが、それでもいろいろな文書の提出を求められました。
補足3: 曜日について
自分の場合は木曜金曜あたりからやる気を出し始め、土日で物件あれこれ見て回るつもりが月曜にずれ込み、火曜には気に入ったところに申し込むという感じの流れでした。が、こちらの不動産屋は土日は普通に休むか早く閉まったりします。また、PadMapperから飛んでくるアラートも平日のほうが多いような気がしました。なので、もし日程がフレキシブルなようであれば、平日に家探しをしたほうが効率が良いかもしれません。