東京とボストン(シアトル含む)の比較

海外で働くエンジニア(or Webの人) Advent Calendar 2014 - Adventarの3日目が空いてたので、とりあえず過去記事で。


東京は生まれてから30数年、シアトルは6ヶ月、ボストンは3ヶ月での比較。 いずれの場所も合法的な住人として住んでの感想。個人の感想です。

安全さ、人々の親切さは同じくらいと感じている。こうして書き出してみると、日本は物質面、アメリカは精神面がそれぞれ優れていると感じているのだな。

日本の長所

食費が安い

外食費が顕著。アメリカの外食は、持ち帰りでなければ、昼でも安くて$15くらい(チップ込みで)からかかる。持ち帰りなら$6くらいからか。

日常的に食べる食材では、野菜、魚介なんかは日本のが安くておいしい。アメリカでも安いものを探せばあるけど、価格と品質は正比例しており安いものは傷んでいたりする。
パンは日本のほうが圧倒的においしい。アメリカだと気の利いたおかずパン、おやつパンみたいなのは$3くらいする。

アメリカのほうが安いものに、果物、チーズなどがある。贈答用くだものなどを比較にいれるのは公平ではないが、日常の果物でもリンゴやチェリー、ザクロはアメリカのほうが安くておいしい。チーズはアメリカのほうが多少安いくらい。牛肉も安いけど普通のアメリカ牛。そういうものと思えばおいしい。

アメリカのほうがおいしい料理は、ステーキ、サンドイッチ、ピザなど。Peter Lugar Steak Houseの熟成肉ステーキはステーキ革命が起きるほど美味しかった。焼き加減は絶対にミディアム以上。ミディアムレア以下で食べたら旨さが半減する。Wolf Gang's Steak Houseでミディアムで頼んだらミディアムレアで出てきて悲しくなった。

チップが不要

アメリカにいると慣れるけど、どう考えてもまったく合理的じゃない。早く廃止すべき。

住居が探しやすい

ホームズとか正確な情報と写真がたくさん掲載されていて、スクリーニングがとてもやりやすい。 ボストンの住宅事情はまったく腐っていて、基本craigslistか使ってもpadmapperくらいで探すしかなくて、ざっくりした広さとピンぼけした写真が数枚あるだけ。階数、築年数、間取り、sqftなどはエージェントにメールしても不明なケースが多い。実際に訪問しないとスクリーニングできない。 あと、日本だと30日前通告で退去できるけど、ボストンだと基本、1年契約なので、1年経つ前に出たい場合は、残りの家賃を払う!か、subletという又貸し相手を探さないといけない。また、たいてい、9/1が契約の開始日なので、9/1はそこら中で引越してて、U-HAULの予約も大変みたい。

家賃が安い

東京なら通勤時間40分圏内で40平米10万くらいとかは見つかると思う(もちろん場所による)。 ボストンの事情だけど、異常に家賃が高い。Tのグリーンライン沿いで60平米で$2000とかそんな感じ。ボストン、ニューヨークシティ、あと、サンフランシスコ辺りが突出してるんだろうけど。

医療費が安い

アメリカの最大の問題。健康を維持できるのは最低限の権利のはずだけど、こちらでは基本的に医者に行きたくない。

公共交通機関が便利

ボストンはだいぶ発達してるほうだけど、東京には敵わない。でも、東京は複雑過ぎて、乗換案内アプリを使わないと活用できないのが短所か。ボストンの公共交通機関は時間が適当だけどもう慣れた。

雪のときの可用性が低いのはマジ困った。記録的大雪だったというのがあるけど、すぐ止まる。日本だともっと頑張るだろう(けど、頑張り過ぎるからみんな出社しちゃうのかも。適度に止まった方がいいのかな)。

住んでるところと違うけど、ニューヨークメトロが$2.75に値上げしててマジ萎えた。すぐ止まるし。

サービスのレベルが高い

なにも言わなくても高いレベルのサービスを提供してくれるのでそれを当たり前と思ってしまう。これもある種、同調圧力が働いているということなんだろう。

接客はたいてい笑顔でしっかり働いてるし、物流・宅配の早さはすごい。首都圏ならAmazonの通常配送で翌々日とかに届くとか、アメリカにいると異常に感じる。
アメリカは接客はやる気の無さを隠さないひとも多いし、宅配は通常は玄関先に放置されてる(直接受け渡しは追加サービス)。Amazonは発送まで数日かかることはザラだし、発送されてからも一週間弱かかることが多い。でもそれって致命的なの?というのが根底にあるんだろう。止めたサービスのクレジット引き落としが止まらないとか、ギフトカードの残高がレジスターの操作ミスでロストするとか、本当に止めてほしいけど。

参照: アメリカは声をあげないといないのと同じ国なんだなあとシミジミ思った - Bouldering & Com.

ボストン(シアトル含む)の長所

同調圧力が低い

自分にどえらい迷惑がかからない限り、みんな大して周りを気にしてなくて、もし、言いたいことがあったらさらっと言える。周りがこうだからこうでなければならない、という同調圧力がとても低い。学校ではまた別なんだろうけど。
アメリカ人が日本で息苦しさを感じるのはわかる。

勤務形態が柔軟

同調圧力の低さと同義なんだけど、場所や時間がわりと柔軟で成果さえ出せば自由にやれる。
僕の周りではだいたい40時間弱/週くらいで家とオフィスを半々くらいで働いてるひとが多い。もちろん、長時間働くひともいる。

生活空間に余裕がある

電車のなか、レストランのテーブル、住宅地などなど、東京と比べると密集度が低い。
通勤時間帯の電車でさえ、そこそこ混雑したらそれ以上、誰も乗らない、乗りたがらない。そりゃ通勤時間帯の山の手線を見てInsaneと言うはずだよ。アメリカ人のほうが、限界密集度の閾値が低いんだろうね。

気軽に挨拶、コミュニケーションができる

こんにちは、ありがとうを気軽に言える。
バスで隣のひとに軽く話しかけたり、レジのひとと軽く話したりするのに、バリアを感じない。

コミュニケーションを始めるコストがとにかく低いので、苦情の場合でも軽く言えて軽く受け止めてくれる。なので、クレームとかが言いやすくて、企業のサービスも文句があるひとはクレーム言ってくるだろう、というのに起因したサービスレベルになってるのだと思う。

効果の低い厳密さを求めない

公共交通機関の時刻表がきっちりしてなかったり、厳密にやる意味のあることとないことを区別している。平均のサービスレベルが低いのもこれに起因してて、宅配便が玄関先に放置されてるのはたいていなくなったりはしないからだし、Amazonの配送が遅いのも、すぐ欲しいならPrime入れということなんだろう。

サマータイムがある

日が長いので夜に帰ってから明るい外をランニングできたりしてとてもよい。
時間なんていうのは肉体の外の概念なので、サマータイムの切替は大して苦にならない。

暑すぎない

東京の多湿な夏は、それだけで住みたくなくなる。ボストンはたまに湿気が少しあるなと感じるくらい。とても快適。
ボストンの冬は、札幌出身者に言わせると、札幌より少し過ごしやすいくらいらしい。
ちなみに、シアトルはもっといい気候だった。曇りがちだったけど、寒すぎず、暑すぎず。

セントラルヒーティングが快適

アパートによるけど、大抵のアパートはセントラルヒーティングでお湯を作ってて暖房もそれでまかなってる。お湯がすぐ出るし、真冬でも部屋は暖かいし、とても快適。日本の集合住宅もそうすればいいのに。そっちのが発熱効率良さそう。

アルコールが安くておいしい

税金の違い。500ml缶のラガービールが6本で$6とか。日本の安いアルコールは気持ち悪くなるけど、こっちのは安くてもそれなりにおいしい。

喫煙者が少ない

シアトルでは郊外に住んでたのでほとんどみかけなかった。吸ってるとしても、屋外で吸う人はほとんどいない。ボストンだと多少いるけど、東京ほどではない。

ガソリン、高速道路が安い

アメリカだと地域によってだいぶ違うけど、ボストンだと$3.4/1ガロンくらい(2015年4月で$2.35/ガロンくらいまで下がってる)。円/リットルに直すと(109円/$換算)、97.6円/リットル。3分の2くらい?
ハイウェイは基本無料で有料のところも増えてきたけど、それでも一回$2~5くらい。安い。

アメリカでの銀行口座、クレジットカードの遍歴

気づいたら渡米してから8ヶ月も経っており、ついさっきAlly Bankの口座開設に成功したのでまとめを書いておきます。

参考

[アメリカ生活ガイド] クレジットヒストリー構築の記録 | Shota Soetani

2013年11月 ユニオン・バンク口座開設

日本にいるあいだに銀行口座を作っておきたかったので、いろいろ調べて西海岸に行くので、MUFG Union Bankで口座を開いた。

三菱東京UFJ銀行に口座を開設して、以下の手順通りに申し込み、一ヶ月くらいでカード等一式が届いた。

http://www.bk.mufg.jp/tsukau/kaigai/kouza/cali/moushikomi.html

2014年1月 渡米、SSN取得、小切手取得

1月前半、近所のUnion Bankの支店で

  • 住所変更
  • Secured Cardの申し込み (管理会社はFirst bankだった)
  • Check bookの申し込み

を実施。

2014年2月 クレジットカード取得

2月後半にようやくクレジットカードが届いた。

2014年3〜5月

クレジットカードの限度額近くまでけっこう使ってた。当然、支払い遅延はなし。

2014年7月 東海岸へ引っ越し

東海岸へ引っ越し。Union Bankの支店、ATMがなくて不便。Bank of Americaにしておけばよかったと少し後悔。が、同僚からAlly Bankというのが便利だしコストもかからなくていいよと教えてもらう。

1度めの申し込み。 妻との共同名義のJointで申し込むも、妻のクレジットヒストリーがないため、作れず。

2014年8月 Ally Bank申し込み

2度めの申し込み。 今度は単独名義でChecking and Savingで。申し込みして数日後、電話がかかってきてフォトIDを送れと言われるも、よくわからんかったのでやることを郵送してくれとお願い。が、音沙汰なし。

3度めの申し込み。 ダメ元でCheckingで申し込み。あっさり申し込みはパスしてアカウント作成できた。ヤッター

2014年11月 Discoverの年会費$0のカード作成

DiscoverからAnnual fee $0, APR 0% until Feb. 2016のオファーレターがきたので申し込み。でさっくり通った。DiscoverからのステートメントだとFICOクレジットスコアが出てるので、毎月見ておこう。今は700らしい。

2014年12月 "Chase Freedom Credit Card: Spend $500 in First 3-Months and Earn $200 Cash Back"で申し込んだけどreject

マジか、超おトクやんと思って申し込んだけど、rejectされた。理由はじゅうぶんなヒストリーがないため、といういつものやつ。

参考

X509Certificateはjavax.security.certとjava.security.certのどっちを使えばいいのか問題

APIリファレンスにちゃんと書いてありました。
java.security.cert.X509Certificateを使うべき。

Note: The classes in the package javax.security.cert exist for compatibility with earlier versions of the Java Secure Sockets Extension (JSSE). New applications should instead use the standard Java SE certificate classes located in java.security.cert.

http://docs.oracle.com/javase/8/docs/api/javax/security/cert/X509Certificate.html

Postgresqlで16進数のシリアル番号を10進数に相互変換するファンクションを書いた

X.509証明書のシリアル番号を10進数でDBに保存しようかと思ってたけど、bigintの範囲も超えちゃうのでけっきょく16進数の文字列のまま保存することにした。
いちおう、相互変換できるファンクションは書いたので、もったいないので残しておく。
PL/pgSQLは初めて書いたけど、マニュアルみながらでもけっこう書けるもんなんだね。わりといろいろできて面白い。

PL/pgSQL書いてるときにフムフムと思ったこと

http://www.postgresql.jp/document/9.3/html/plpgsql.html

制御構文はひと通り用意されてる。

SQLの実行結果を変数に入れる場合はEXECUTE sql INTO varが使える。

他には実行結果をRECORD型で受けるLOOPを回してるのもあったけど、1件取るだけなら、EXCUTE使うほうがいいと思った。

CREATE FUNCTION from_hex(t text) RETURNS integer AS $$
  DECLARE
    r RECORD;
  BEGIN
    FOR r IN EXECUTE 'SELECT x'''||t||'''::integer AS hex' LOOP
      RETURN r.hex;
    END LOOP;
  END
$$ LANGUAGE plpgsql;

serialnumber_hexのほうはもともとsepの型をcharでやってたんだけど、これだと空白渡すと自動でトリムされて困った。varcharならトリムとかされない。

あと、substrは1オリジンだった。このへんて言語によっていろいろな気がしたりするけど思い込みかも。

sbtでtestを実行したらjava.net.UnknownHostExceptionのエラー吐いた

http://biomedicalontologies.com/2012/11/14/fixing-java-net-local-host-name-unknown-error-on-mac-os-x/

をみるに、hostnameの設定が/etc/hostsに書いてないものになっているとjava.net.UnknownHostExceptionになるみたい。

> test
[info] Generating PROJECT_HOME/target/scala-2.10/resource_managed/main/rebel.xml.
<snip>
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[trace] Stack trace suppressed: run last cert_safe/*:testListeners for the full output.
[error] (PROJECT/*:testListeners) java.net.UnknownHostException: foo01: foo01: nodename nor servname provided, or not known
[error] Total time: 1 s, completed 2014/07/30 16:03:41
> 

hostnameの出力のサーバー名を/etc/hostsに書いて解決。

Time Machineバックアップの信頼性向上云々がでても諦めるな

2015-09-17追記

以下の対処でも全然直らないケースが増えてきたので、諦めてAirMac Extreme買ってそこに付けたUSB HDDでTimeMachineを使うようにしました。白旗。

事象

Macのバックアップが始まったと思ったら、こんなメッセージが。

「Time Machine でのバックアップの検証が完了しました。信頼性を向上させるには、Time Machineによって新しいバックアップが作成される必要があります。」

新規でバックアップsparsebundleを作る以外の選択肢が出てこない。

環境

UbuntuNetatalkを動かして、TimeMachineのバックアップ先にしている。

原因

Opensslのアップデートも兼ねてapt-get updateしたときのサービス再起動中に、Mac側のバックアップが始まったらしく、sparsebundleの不整合が発生したようだ。

2015-09-17追記

サービス再起動とか関係なくバンバン発生する。ツライ

調査

less /var/log/fsck_hfs.log

/dev/rdisk3s2: fsck_hfs started at Fri Apr 11 00:31:00 2014
/dev/rdisk3s2: /dev/rdisk3s2: ** /dev/rdisk3s2 (NO WRITE)
/dev/rdisk3s2:    Executing fsck_hfs (version hfs-226.1.1).
QUICKCHECK ONLY; FILESYSTEM DIRTY
/dev/rdisk3s2: fsck_hfs completed at Fri Apr 11 00:31:04 2014

FILESYSTEM DIRTYやと。

手動でfsck_hfsしてみる

fsck_hfs -drfy /dev/disk3s2

こんな感じのログを残して止まる。

/dev/rdisk3s2: fsck_hfs started at Fri Apr 11 09:00:36 2014
/dev/rdisk3s2: /dev/rdisk3s2: Unable to open block device /dev/disk3s2: Permission denied/dev/rdisk3s2: journal_replay(/dev/disk3s2) returned 13
/dev/rdisk3s2: ** /dev/rdisk3s2 (NO WRITE)
/dev/rdisk3s2:  Using cacheBlockSize=32K cacheTotalBlock=32768 cacheSize=1048576K.
/dev/rdisk3s2:    Executing fsck_hfs (version hfs-226.1.1).
/dev/rdisk3s2: Journal is empty
/dev/rdisk3s2: ** Checking Journaled HFS Plus volume.
/dev/rdisk3s2: ** Detected a case-sensitive volume.
/dev/rdisk3s2:    The volume name is Time Machine バックアップ
/dev/rdisk3s2: ** Checking extents overflow file.
/dev/rdisk3s2: ** Checking catalog file.
/dev/rdisk3s2: ** The volume Time Machine バックアップ was found corrupt and needs to be repaired.
/dev/rdisk3s2:  volume type is pure HFS+ 
/dev/rdisk3s2:  primary MDB is at block 0 0x00 
/dev/rdisk3s2:  alternate MDB is at block 0 0x00 
/dev/rdisk3s2:  primary VHB is at block 2 0x02 
/dev/rdisk3s2:  alternate VHB is at block 2737107966 0xa324f3fe 
/dev/rdisk3s2:  sector size = 512 0x200 
/dev/rdisk3s2:  VolumeObject flags = 0x07 
/dev/rdisk3s2:  total sectors for volume = 2737107968 0xa324f400 
/dev/rdisk3s2:  total sectors for embedded volume = 0 0x00 
/dev/rdisk3s2:  CheckHFS returned 7, fsmodified = 0
/dev/rdisk3s2: fsck_hfs completed at Fri Apr 11 09:00:42 2014

corruptやと。

対策

Time Machineのディスクをマウント

Finderから。

ロックフラグを外す

chflags -R nouchg /Volumes/{name of your network share}/{name of}.sparsebundle

sparsebundleをマウント

hdiutil attach -nomount -readwrite /Volumes/{name of your network share}/{name of}.sparsebundle

fsckでリペア

対象ボリュームはApple_HFSのやつ。

fsck_hfs -rf /dev/disk3s2

実行後のログは以下。 終わるまで3時間くらいか。

** /dev/rdisk3s2
   Executing fsck_hfs (version hfs-226.1.1).
** Checking Journaled HFS Plus volume.
** Detected a case-sensitive volume.
   The volume name is Time Machine バックアップ
** Checking extents overflow file.
** Checking catalog file.
** Rebuilding catalog B-tree.
** Rechecking volume.
** Checking Journaled HFS Plus volume.
** Detected a case-sensitive volume.
   The volume name is Time Machine バックアップ
** Checking extents overflow file.
** Checking catalog file.
** Checking multi-linked files.
** Checking catalog hierarchy.
** Checking extended attributes file.
** Checking multi-linked directories.
** Checking volume bitmap.
** Checking volume information.
   Invalid volume file count
   (It should be 2314545 instead of 2108959)
   Invalid volume directory count
   (It should be 328860 instead of 308933)
   Invalid volume free block count
   (It should be 250732702 instead of 282939599)
   Volume header needs minor repair
(2, 0)
** Repairing volume.
** Rechecking volume.
** Checking Journaled HFS Plus volume.
** Detected a case-sensitive volume.
   The volume name is Time Machine バックアップ
** Checking extents overflow file.
** Checking catalog file.
** Checking multi-linked files.
** Checking catalog hierarchy.
** Checking extended attributes file.
** Checking multi-linked directories.
** Checking volume bitmap.
** Checking volume information.
** The volume Time Machine バックアップ was repaired successfully.

あとからログをみたい場合は以下を参照

less /var/log/fsck_hfs.log

フラグを編集

vim /Volumes/{name of your network share}/{name of}.sparsebundle/com.apple.TimeMachine.MachineID.plist

RecoveryBackupDeclinedDateのエントリ自体を削除と、VerificationStateを0に戻す。

デタッチ

hdiutil detach /dev/disk3s2

以上の対応で、正常に差分バックアップを続けることができるようになった。

参考

H2O Wirelessの月額プランから従量プランへはチャットで変更可能

H2O Wirelessの月額プラン(monthly plan)から従量プラン(minute plan)へ変更したいと思ったけど、webのインタフェースは当然そんな口はない。 なので、とりあえずチャットで訊いてみたら、その場で変更できた。 即時の変更になるので、契約期間が残ってたらもったいないので、なるべく月額契約が切れてからのほうが損がない。