2016年3月29日火曜日

実現可能な最小の Block chain のサンプルコード(未完成)

Block chain についての Lightning Talk を聞く機会があったので、このとても解りやすい記事を読んで、サンプルコードを書き始めてみた。

価値あるモノ(例えば貨幣)をデジタル化した時に問題になるのが double spend (二重支払い)で、Block chain はこの問題を解決しようとしている。例えば、私が $100 のデジタル貨幣(適当なバイナリデータで表現されているとする)を持っていたとして、バイナリデータは簡単に複製可能なので、この $100 を同時に 2 人(以上)に送ることができてしまう。これを P2P の世界で、中央集権的なサーバなしでどのように解決するか、というのがテーマだ。

もし参加者全員が信頼できるならば、これはいわゆる leader election 問題なので、Paxos/Raft で解決できる。しかしここでは参加者が信頼できることを仮定しない。参加者の一部は悪意あるユーザーかもしれない。Paxos/Raft は、参加者が(データをドロップすることはあっても)プロトコルには従うことを仮定しているので、参加者が悪意ある場合には適用できない。

Block chain のアイデアは、「ある命題を主張するためにコストを支払わなければならないとしたら、コストが十分に高ければ、悪意あるユーザーが偽の主張をする経済的メリットはなくなり、システムは安定する」ということだ。たとえば、「Alice は Bob に $100 あげた(ホントは Chris にあげたのに)」という偽の主張をするインセンティブが Alice にはある。もしその主張が認められれば、Bob に $100 の貸しができるからだ。しかしもし、その虚偽の主張のために $100 のコストを払わなければならないのなら、そしてもし Alice が経済合理的な人間なら、そのように主張するはずがない。

このようなシステムが設計できることを示したのが Block chain 論文だ。参加者は契約(例えばお金のやりとり)をネットワークに流し「この契約を認証した人には $1 差し上げます」という。この $1 を欲しい参加者は、proof-of-work という作業を行い「この契約は正しい」とハンコを押すことができる。もちろん悪意あるユーザーが proof-of-work を行って虚偽の主張を認証することもできるが、proof-of-work は CPU を消費する作業なのでコストがかかる。もし参加者の多くが善意のユーザーだとしたら、偽の主張を認証するためには膨大なコストを払う必要があり、そのようなインセンティブはなくなる。



もしかしたらすでに現実的な解はあるのかもしれないが、Block chain にはシステムの安定性の問題があると思う(コンピュータシステムの安定性の話ではない)。ある主張の真偽は、どれだけ工夫しても確率的にしか定まらず、「この主張は絶対に正しい」という状態には到達しない。
突き詰めて考えれば、これは中央集権的なシステムにも存在する問題だ。Alice が Bob の銀行口座に $100 振り込んだ時、もしかしたらその銀行は Bob を騙していて、実際には $100 は振り込まれていないのかもしれない。私たちは単に銀行を非常に高く信頼してるだけの話だ。
とはいっても、銀行を「誰が運営しているかもわからないコンピュータのネットワーク」で置き換えられるのか、その置き換えを心情的に受け入れられるまでどれだけの期間がかかるのか疑問だ。


というわけで、Block chain は、詐欺の被害が小さい少額決済から順に普及していくのではないかなーと思っている。
なんにせよ、この記事はとても面白かった。サンプルコードはインタラクティブな感じにして完成させたい(希望)。

2015年12月30日水曜日

2015 年を振り返って

残すところ 1 日となったので、2015 年を振り返ってみたいと思います。

仕事

インフラ関係

実りある一年でした。3 点目の experiment framework は game changer だった。コロンブスの卵というやつ。
  • tail latency(リクエスト 100 個のうち最も遅いやつの処理時間)の改善
  • アプリケーション sharding を動的に変更する
  • システムレベルの変更を実験できる experiment framework の実装

開発体制の改善

各チームの責任範囲の明確かなど。
"It's wise to structure organizations the way you'd like to structure your software architecture" という人もいるように、システムとそのシステムの開発組織との対応関係を明確にすることは開発をスケールさせるためにとても重要。どこで聞いたか忘れたけど「大規模システム開発はエントロピーとの戦いだ」という言葉もある。
マイクロアーキテクチャは一つのソリューションだろうけど、マイクロアーキテクチャにそぐわないシステムもあるので、パフォーマンス上の理由とかで。

プロダクト

(振り返ってみると意外に)プロダクトに関わってた。カルーセル、ユーザープロファイルへの広告表示、ビデオ広告、Promoted Moments などなど。


2016 年は選択と集中をもっと頑張らないと。「コードレビューは(自分がレビューしたいもの以外は)しない」とか「個人宛にきた質問はチーム全体にふる」とかやってるけど、まだまだ時間が足りないなぁ・・・。

家庭

第二子誕生

一人目の経験があるので、二人目は何かと楽ですね。とはいえ、小さいのが二人いるとプライベートな時間がなくなるね。


第一子がプリスクールに

日本語・英語環境のプリスクールに通い始めました。Montessori のプリスクールなのでいろいろ勉強(「お仕事」という)しているようです。ある日突然「南エリカ」とか言い出すから新しい友達かと思ったら「南アメリカ」のことだった。「世界地図をトレースする」という仕事があるらしい。

家を購入

メンテナンスがとてもめんどくさい。近いうちに売ってしまうかもしれない。「家をメンテナンスする」という仕事は自分に合ってないようだ・・・。

交通事故に遭う

もらい事故。保険屋と話したり、車を修理屋に持ってったり、大変だった。


2016 年は、まぁ粛々と・・・。こどもが大きくなってきたのでバケーションに時間をとるようにしたい気もするが、子供とどっか行く方がストレス大きいような・・・。

2015年11月15日日曜日

Facebook のトリコロール機能は有料にすべき

Facebook で自分のアイコンにトリコロールを重ねられる機能について。

なぜフランスだけなのかとか、フランス(を始めとする先進国)も空爆によって無差別殺人してるじゃないかとかいう指摘はもっともだと思うが、正直それを議論し始めると何も行動できないし、もっと正直に言うとこの程度のダブルスタンダードは今の所諦めるしかないと思う。世界は(まだ)公平じゃない。

私が思ったのは「この機能は有料にすべきだ」ということだ。具体的には「$10 寄付すれば、3 日間あなたのアイコンにフランス国旗を重ねて表示します」というのが良いと思う。理由は 2 つある。

まず、この機能の目的が、フランス人に対する哀悼の意であろうが、反テロリズムの意思表示であろうが、具体的な活動にはお金が必要だということだ。被害者の救済にしても、テロリズムの根本的な解決(それが何なのかわからないが)にしてもお金がないと活動できない。

そして、この機能が無料であることで、トリコロール化した人が本当に哀悼の意を表しているのか、テロ反対を表明しているのかよくわからなくなってるというのが勿体ない。「$10 もったいないから、トリコロールいらないや」という人がいたら、大して被害者のことも気にしてないし、テロ行為にも興味ないんだな、と私は思う。極端な話、テロリストだってアイコンをトリコロールにしてるかもしれない。その人が本当にある主張に賛同してるのかどうかを確認する最も確実な方法は、お金を払わせることだ。

Facebook の月間アクティブユーザーは 15 億人なので、10% が $10 寄付したら 15 億ドル。これだけあれば何か意味のあることができると思うんだけどね。少なくともアイコン変えるだけよりは、世界変えられる可能性が高いよね。


・・・というようなことは Facebook 社内でも議論されたんじゃないかと思うんだけど、なんで実装されないのかな。ちなみにこれ実装すると、ユーザーのクレジットカード情報も取れるから Facebook としても嬉しいと思うんだけど。

2015年5月24日日曜日

動物園の入場料比較

子供がいると、休日を何もせずのんびり過ごすというのが不可能になり、何かしないといけなくなる。で、今日は Oakland Zoo に行ってきた。以前に San Francisco Zoo にもいったことがあるので、この辺(SF 及び北東地域)の Zoo は制覇したことになる。


ふと気になって、動物園の入場料について調べてみた。メインの客は小学生だろうと仮定して、大人の入場料と小学生の入園料は以下のとおり。

(日本の動物園のうち、富士サファリパークは私立、他は公立)

日本の公立動物園の入園料の安さは一見して明らかだ。
誰でも入園できるようにという意図なのだろうが、赤字分は税金から補填されているはずで、それは公平な税金の使い方だとは思えない。動物園に行ったこともない納税者も多いだろうに。

そもそも動物園に行くという行動の価格弾力性は低いと思う。メインの客が子供を連れた家族だと仮定するなら、個人的な経験から言うと、入園料よりも例えば移動にかかる時間や移動の手間の方が負担だ。
子連れで(特に東京では普通であろう)電車で移動するのはとても苦痛だ。乗り換えの手間や車内で静かにさせる手間を考えれば、入園料が 600 円だろうが 1,200 円だろうが大して問題ではない。
また、「入園料が 1,200 円なら年 1 回しか行かないけど、600 円なら 2 回行く」というのも考えづらい。だったら 1,200 円に設定した方が良いだろう。受益者負担の原則にも則っている。

まぁ東京都はお金持ちなのでいいとしても、財政危機の横浜のズーラシアは入園料を見直した方が良いのでは・・・。

2015年5月23日土曜日

アメリカで交通事故にあった話(その 2)

MetLife のウェブサイトから事故のレポートをしたところ、約 3 時間後に電話がかかってきた。
簡単に事故の内容を伝えたあと、修理費用を見積もるという話に。「一番簡単な方法は、iPhone アプリで写真を撮ってこっちに送ることね」ということなので、その方法ですすめることに。
MetLife Choice Express というアプリをインストールして起動すると、「オドメーターの写真を撮れ」「故障箇所全体写真を撮れ」「ディテールの写真を 4 枚撮れ」との指示が。そのとおりすると、「24 時間以内に見積もり送るから待っとけ」というメッセージが。
修理の見積もりだって簡単に取れちゃうんです、そうアイフォーンならね。(注:android 用もあります)



2 時間後に notification があり、見積もり完了。これを修理屋に持っていって作業を依頼した。
「どのくらい時間かかるの?」「はっきりとしたことは言えないけど、今見えてる部分の修理だけでよければ、3, 4・・・」「(3, 4 時間か?)」「3, 4 日かな」「3, 4 日!!!」
そんなにかかるのかーーー。レンタカー必要じゃん。それも MetLife に連絡しなきゃ・・・。車の修理って時間かかるんだな・・・。数時間トンカンすれば直せるのかと思ってた。無知って怖いわ。

ちなみに、もし、実際の修理費用がこの見積もりを上回る場合は、修理屋が MetLife と話してくれるそうだ。まぁこれ以上面倒なことにならないよう祈るのみ。

2015年5月22日金曜日

アメリカで交通事故にあった話(その 1)

ベイエリアは公共交通機関が比較的発達している、とはいっても所詮アメリカなので、車を運転する機会が多いのですが、ついに昨日(軽い)交通事故に巻き込まれました。日米通算で初事故。私の過失ではありませんが。

この辺りで信号待ちで止まってたら、急に「ドン」という衝撃が。バックミラーには、「やっちゃた・・・」という顔の後続車のドライバーが映ってました。

「保険会社とかと話さないといけないのか。めんどくさー」と思いつつ、車をおりると、向こうのドライバーも降りてきた。
"Hey. are you ok? I'm so sorry."
えー「事故を起こした時に "I'm sorry" というと自分の責任を認めたことになるので、言ってはいけない。全部保険会社に任せること」が私の中での「アメリカでの交通事故」の常識だったのですが、ふつうに "I'm sorry" と言ってましたね。(後で調べたところ、California や Massachusetts には「"I'm sorry" は法廷での証拠として使えない」という法律があるみたい)
こういう "I'm sorry" には何て答えればいいんですかね? 普通なら "it's ok" とか "no problem" とか言うんだけど、この状況では明らかに使えないし・・・。

と困っていると、相手は事故慣れ (?) してるようで「免許証と自動車保険証ある? 交換しましょう」と促されるままに、免許証と保険証の写真を携帯で取り合う。
「事故初めてだから、どうして良いかわからないんだよね」と素直に伝えると「保険会社に連絡しても良いんだけど、保険使うとプレミアムが上がるかもしれないから、私が直接払っても良いよ。これは完全に私が悪いし。あと証拠にお互いの車の傷の写真を撮っておきましょう」と、やけに手際の良い相手。
車は軽傷だったし、プリスクールの迎えで急いでたので、「どうするかまだ決めてないけど、決めたらまずあなたに連絡するよ。連絡先教えて」とメールアドレスを交換して、その場は終わり。

振り返ってみると、写真撮るだけではどちらの責任かわからないし、今は「私が悪い」って言ってるけど、あとで態度変えられたら泣き寝入りのケースですね。会話を携帯で録音するべきだったけど、事故の直後はそこまで頭が回らなかった・・・。

今調べたところ、車後部の衝突 "rear-end collision" は "No-doubt liability" に該当し、大抵のケースでは後ろからぶつかった側の責任になるみたい。"A basic rule of the road requires a vehicle to be able to stop safely if traffic is stopped ahead of it." 「基本的には、前の車がいかなる理由で止まっても、安全に停止できなければならない」

あと「California では、軽微な事故で警察呼んでも来てくれない」という情報もあったんだけど、本当かな? 財政難だから? 複雑なケースだったら事実認定は誰がするんだろうか?

翌日(今日)近くの修理屋に行って車を見せて「こういう事故で、こういうダメージがあって、相手は直接払うって言ってるんだけど、どうかな?」と聞いてみた。
親切なお兄さんによれば、「保険会社に連絡したほうが良いよ。小さなダメージに見えるけど、マフラーがすこし曲がってるし、内部にも損傷があるかも。保険はどこ? MetLife と XXX だったら、MetLife の方が対応が良いから、オレならそっちに連絡するね。」とのことだったので、MetLife のウェブサイトの "file a claim" で事故を報告したところ。

ああー、やっぱりめんどくさい・・・。(続く

2015年5月21日木曜日

日本人におすすめの店 in Berkeley

Berkeley に引っ越してもうすぐ 1 年が経つ。日本人的には、Berkeley というと UC Berkeley が有名だが、私が住んでるのは North Berkeley と呼ばれるところで、UC Berkeley から車で 20 分ぐらい北西に行ったところ。Albany という町との境目に近い。Albany は日本では聞いたこともない小さな町だが、学区が良くて、不動産も高い。

San Francisco からの引っ越し先を探していた 1 年前、たまたま Albany の Marin Avenue を通ったときに、街並みが気に入ってこの辺に住むことに決めた。
引っ越してから気がついたが、日本人向けの店が多くて住みやすい。
ということで、まとめてみた。

North Berkeley 周辺の地図。自宅は中央のモザイクがかかってるエリア :)

Monterey Market
うちから歩いて 3 分のところにある grocery store。創業者が日本人だそうで、外壁にデカデカと家紋がついてる。安い。日本野菜(大根とか)も売ってる。

Tokyo Fish Market
これも grocery store。Tokyo という名前の通り、日本の野菜、お菓子、冷凍食品が売ってる。fish market というだけあって(日本ほどじゃないが)魚介類が多い。

Yaoya-San
「八百屋さん」という名前だけど、肉も乳製品もお菓子も売ってる普通の grocery store。
San Francisco 周辺で最も「日本のケーキ」っぽい Patisserie Norina のケーキが買えるのイーストベイではここだけ。毎週火曜日と土曜日。

Berkeley Bowl
大きな grocer store。どういう関係か知らないが、ここも日本野菜、冷凍食品が売ってる。他ではなかなか見つからない大豆の水煮缶も売ってる。

Whole Foods Market
みんな大好き Whole Foods。品質も値段も高い。ここに入ってるパン屋のブリオッシュがとても美味しい。

Kiku Sushi
寿司屋。今日初めて行ったら、美味しくてびっくりした。青魚もあります。5 月だから鯉のぼりが飾ってあった。

Ippuku
焼き鳥屋(日によってそば屋)。焼き鳥は普通に日本の焼き鳥。「ぼんじり」などもある。そばは食べたことがないけど期待できる。

Iyasare
おしゃれな日本食や。なんでも美味しい。ラーメンも美味しい。うな丼もあるので、いつか試してみたい。

Kirala
レストランと togo 専門店とがある。togo しかしたことないけど、カツ丼とか天丼がある。日本のコンビニぐらいの味。手っ取り早く日本の味が食べたくなったときに。

Kim's Cafe & Sandwich
ベトナムサンドイッチや。安くて美味しい。東南アジア系の店はハズレが少ない(= 日本人の味覚に合うことが多い)気がする。

Pedro's Brazil Cafe
ブラジルサンドイッチ(というジャンルがあるのか知らないが)や。タコスやブリトーの皮をパンに変えた感じ (?)。美味しい。

Zachary's Chicago Pizza
"deep dish" スタイルのピザ。「美味しんぼ」で見たときから一度食べてみたいと思ってて、ようやくここで食べれた。ものすごい量のソースが入ってるけど、しつこくなくて美味しく食べられる。

Gioia Pizzeria
もう一つのピザや。こっちは「一切れ $2」とかで買えるアメリカンスタイル。美味しい。

Philz Coffee
有名コーヒー屋。いつも「今月のおすすめコーヒー豆」を買ってる。ここのコーヒーは(新鮮な豆で淹れると)ちゃんと「豆」の香りがする。

Happy Donuts
よくあるドーナツやと思いきや、他のドーナツ屋(例えば T 社のとなりのとなりにあるドーナツ屋)より確実に美味しい。Krispy Kreme Donuts の方が好きだけど、こっちの方が安い(し、Krispy Kreme Donuts は近くにない)。


Berkeley にお越しの際は、食をご堪能ください。