フォーチュンクッキーは恋をしない

ジョジョのサブタイトル風に。

 

中華料理屋でもらえるフォーチュンクッキーマジでいらないんだけど捨てるほどではない。で、ほっとくとパンダエクスプレスヘビーユーザーの私の机の上には一生食われないフォーチュンクッキーがうず高く積み上がってそのうちカリン塔に届きそうである。

 

f:id:fushiroyama:20180526072702j:plain

 

これ何かに似てるなと思ったら、サービス開発時にユーザのことをよく考えずに"良かれと思って"機能を付け足しまくった挙げ句、捨てるには惜しいからそのまま残した結果、本当に必要な機能がウォーリーをさがせになるあの状況だ。要らないものは最初から付けないのがベストなのである。

 

サービス開発でもっとも重要なことは「足す」ことではなく「引く」勇気だ。従ってこれから僕は要るかどうか疑わしい自称・付加価値のことをフォーチュンクッキー・フィーチャーと呼称して、積極的に排除するキャンペーンを実施する。みんな積極的に使ってくれよな!

ドアは正面についてるとは限らない

siliconvalleyrw.com

を読んで「波が来たときにそれに乗れる準備をしておく」という部分に非常に共感したのでチャンスに対する自分の考えを残しておく。

ドアは正面についてるとは限らない

自分はこの事実に気付くまでに30年を要したが、物事を達成するために正面から玄関をノックしてお邪魔していく必要はない。自分がバカ正直に入り口の行列に並んでいる横で、風呂場の窓からひょいっと中に入っていく人を横目で眺めていた。昔は「あれは行儀が悪い。自分は絶対に待機列で耐える」と思っていたけど最近は違う。人生は短い。

 

これは架空の話だが、ある男がどうしても米国に行きたかったとする。会社でその枠を掴み取れるのは1名だとする。それに選ばれるにはどうするかという話だ。くじ引きで当選するのを待つ?いやいや。

自分が米国に行きたいことを1on1の度に、雑談の度に伝えるのだ。それだけじゃなくて、これこれしかじかのスキルを持つ自分を送り込むのがどれだけ会社にとって自然なことであり、将来的な利益になるのかストーリーを作るのだ。

エンジニアなら分かるだろう、

f:id:fushiroyama:20180519202721p:plain

こんなん理由がないとブロックするだろう。

で、後はそれがどのくらい真剣で深刻で他に選択肢がないことなのか伝えるのだ。たとえば米国企業の内定がもうあるとか、ね。これはすべてフィクションだけど、そういうことだ。

 

で、これだけだと自分の都合だけを考えたクソ野郎なのでもちろんそんな幸運は降ってこない。やっぱり自分が何かを求めるからには、それと同等以上のことを相手に与えなければならない。普段から自分の責務を果たし、相手が困っているときにはそれを助け、言い方は悪いけど「貸し」を作っておくといざ自分がどうしても何かを相手にしてもらいたい時に利子つきで返ってくることもある。

 

で、冒頭の話に戻るんだけど、やっぱりチャンスというのは与えられるものじゃなくて自分からわしづかみするもんだと思うんだよね。みささんが

やっぱり波が来たときにちゃんとそれに乗れる準備をしとかないといけないと思うんですよね。

 といみじくも仰ってるように、やはり帆を張ってるからこそ追い風は吹くのである。

 

ここまで書いたところで寝室のドアから愛娘がうなされる声が聞えるので添い寝してきます…じゃあの

拠点間VPNで日米それぞれのネット環境を活用する

様々な理由で日本経由でインターネットに接続したいケースがある*1
ここでは日本(Bフレッツ)と米国(Xfinity)間でVPN接続し、ユーザは接続するWiFi SSIDを変えることで透過的にそれぞれの経路でインターネットに出ていけるようにすることをゴールとする。

なお、自分がたまたまYAMAHA RTX1100を2つ持っていたという理由だけでこれらを日米に配して拠点間VPNを構築したが、RTX1200以降のモデルは2つの拠点間で同一セグメントを構築できるらしい*2ので、もう少し簡略化できる可能性がある。また、最近はEdgeRouterXというルータが低価格かつ高性能らしいので、そういったものを使ったほうが近代的かも知れない。
ただ、基本的なルーティングの考え方は製品に依らず普遍的なので、同じようなことを検討している方には参考になるかも知れない。

Xfinity設定

Xfinity(Comcast)は本質的にケーブルテレビ網を使ったインターネット接続なので、WAN側アドレスはDHCPで割り振られる。そこを押さえておけば設定は容易い。

ComcastモデムのBridge Modeを有効化

Comcastのモデム(兼ルータ+WiFiスポット)はデフォルトで 10.0.0.0/24 のLANなので 10.0.0.1 でモデムの管理画面に入る。認証は初期状態で admin/password

Bridge ModeEnable へ。
Turn Bridge Mode On and Off on Your Wireless Gateway

この時点でモデムはグローバルIPを失う(当然)ので注意。

ルータをとりあえずネット接続

前述の通りWAN側アドレスをDHCPでもらう。ここではLAN2ポートをモデムのLAN1*3に接続する。
LAN1の4ポートを室内LANとしてこのセグメントを 192.168.22.0/24 ゲートウェイ192.168.22.1 とした。

ip lan1 address 192.168.22.1/24
ip lan2 address dhcp
ip lan2 nat descriptor 1
ip route default gateway dhcp lan2
nat descriptor type 1 masquerade
nat descriptor address outer 1 primary
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.22.100-192.168.22.199/24 expire 12:00 maxexpire 12:00
dns server 8.8.8.8 8.8.4.4 1.1.1.1
dns server dhcp lan2
dns private address spoof on

Bridge Modeを有効化した直後は設定が合っているのになぜかうまくWAN側アドレスをもらえなかったのでモデムを再起動したりしてるうちに5分ほどで降ってきた。

拠点間VPN設定

ネットボランチDNS

YAMAHAが無料で提供するDDNSサービス。VPNを利用するためには両拠点にグローバル固定IPが必要だけどこれでほぼ解決できる。
僕がYAMAHAのルータの大ファンなのはこのネットボランチDNSも理由のひとつ。

[PPPoEの場合]
netvolante-dns hostname host pp [希望するアカウント名]
netvolante-dns go pp 1
[CATVの場合]
netvolante-dns hostname host lan2 [希望するアカウント名]
netvolante-dns go lan2

振り出されたホスト名をメモしておく。

VPN設定

ここではまず簡易的にIPSecトンネルで設定しているが、適宜L2TP等利用して欲しい。
なお日本側LANは 192.168.11.0/24 ゲートウェイ192.168.11.1 とした。

[米国側]

tunnel select 1
 tunnel name VPN-USA
 ipsec tunnel 1
  ipsec sa policy 1 1 esp 3des-cbc sha-hmac
  ipsec ike hash 1 sha
  ipsec ike keepalive log 1 off
  ipsec ike keepalive use 1 on
  ipsec ike local address 1 192.168.22.1
  ipsec ike pre-shared-key 1 [passphrase]
  ipsec ike remote address 1 tokyo.foo.netvolante.jp
 tunnel enable 1

nat descriptor masquerade static 1 1 192.168.22.1 udp 500
nat descriptor masquerade static 1 2 192.168.22.1 esp
ipsec auto refresh on

ip route 192.168.11.0/24 gateway tunnel 1
[日本側]

tunnel select 1
 tunnel name VPN-USA
 ipsec tunnel 1
  ipsec sa policy 1 1 esp 3des-cbc sha-hmac
  ipsec ike hash 1 sha
  ipsec ike keepalive log 1 off
  ipsec ike keepalive use 1 on
  ipsec ike local address 1 192.168.11.1
  ipsec ike pre-shared-key 1 [passphrase]
  ipsec ike remote address 1 usa.bar.netvolante.jp
 tunnel enable 1

nat descriptor masquerade static 1 1 192.168.11.1 udp 500
nat descriptor masquerade static 1 2 192.168.11.1 esp
ipsec auto refresh on

ip route 192.168.22.0/24 gateway tunnel 1

これでトンネルと相手側LANとのルーティングは完了。対向側にpingを投げてみて応答があるか確認する。
うまく通らない場合は show status tunnel 1 でトンネルインタフェースの状態確認してみたり nslookuptraceroute でどこに問題ががあるか切り分けていこう。
後述するが、フィルタの設定が不適切でネットボランチDNSで相手側ホストが名前解決できなかったりしたので、VPN対向側のネットボランチDNSホスト名と解決後のグローバルIPに対してそれぞれpingを打ってみても良い。
syslog debug on して show log すると名前解決ができなかったような事情もログに出ている。

VPN(IPsec)接続ができない

米国のLAN3セグメントを日本経由にする

さて、VPNトンネル越しにお互いのセグメントを行き来できるようになったら、いよいよ本題の「特定のSSIDWiFiに接続すれば何も考えずとも日本経由でインターネットに出ていく」件を設定する。

  1. LAN3セグメントを 192.168.33.0/24 ゲートウェイ192.168.33.1 とする
  2. ソースアドレス 192.168.33.0/24 はトンネルインタフェースをゲートウェイとしてインターネットに出る

これを念頭に設定する。繰り返しになるが最近のルータは拠点間で同一セグメントを利用できたりするらしいので、その場合はこの設定は必要ない可能性がある。

[米国側]

ip route default gateway dhcp lan2 filter 1 2 3 4 gateway tunnel 1
ip lan3 address 192.168.33.1/24

ip filter 1 pass * * udp * 500
ip filter 2 pass * * esp * *
ip filter 3 pass * * udp,tcp domain *
ip filter 4 pass 192.168.22.0/24 *

dhcp scope 2 192.168.33.100-192.168.33.199/24 expire 12:00 maxexpire 12:00
[日本側]

ip route 192.168.33.0/24 gateway tunnel 2

見ての通り、フィルタ1, 2でVPNネゴシエーション用のパケットを、フィルタ3でDNS問い合わせのパケットを、フィルタ4でソースアドレス 192.168.22.0/24 のパケットをComcast側に通し、それ以外は全部トンネル経由で日本側から出すルールを書いた。
当初DNSを見落としており、なぜかVPN接続が確立できなくてログをみていたら、対向側ホスト名の名前解決に失敗していた^^;

あとは適当な無線LANルータを買ってきて米国側LAN3ポートにぶらさげれば*4、このWiFiルータに接続した端末は特に何も意識しなくても日本経由でインターネットに出ることができる。この方法だとデスティネーションアドレスごとにルーティングの設定を変えたりする必要がなくて非常に楽である。めでたしめでたし。

全体像

一応全体を見渡せるように。
言うまでもなく、これは必要な部分だけを抜粋しているので、実際の運用はご自身でルールを追加してください。当方は結果に一切責任を負いません。

[日本側]

login password *
administrator password *
login user foo *
security class 2 off on
timezone +09:00
console character ascii
console prompt [RTX]
login timer 3600
ip route default gateway pp 1
ip route 192.168.22.0/24 gateway tunnel 1
ip route 192.168.33.0/24 gateway tunnel 1
ip lan1 address 192.168.11.1/24
pp select 1
 pp name [Provider]
 description pp [Provider]
 pp always-on on
 pppoe use lan2
 pppoe auto connect on
 pppoe auto disconnect off
 pp auth accept pap chap
 pp auth myname *** ***
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ppp ccp type none
 ip pp mtu 1454
 ip pp nat descriptor 1
 netvolante-dns hostname host pp server=1 japan.foo.netvolante.jp
 pp enable 1
tunnel select 1
 tunnel name VPN-USA
 ipsec tunnel 1
  ipsec sa policy 1 1 esp 3des-cbc sha-hmac
  ipsec ike hash 1 sha
  ipsec ike keepalive log 1 off
  ipsec ike keepalive use 1 on
  ipsec ike local address 1 192.168.11.1
  ipsec ike pre-shared-key 1 ***
  ipsec ike remote address 1 usa.bar.netvolante.jp
 tunnel enable 1
nat descriptor type 1 masquerade
nat descriptor address outer 1 ipcp
nat descriptor address inner 1 auto
nat descriptor masquerade incoming 1 discard
nat descriptor masquerade static 1 1 192.168.11.1 udp 500
nat descriptor masquerade static 1 2 192.168.11.1 esp
ipsec auto refresh on
telnetd service off
dhcp service server
dhcp duplicate check 100 off
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.11.100-192.168.11.199/24 expire 12:00 maxexpire 12:00
dns server 8.8.8.8 8.8.4.4 1.1.1.1
dns server pp 1
dns private address spoof on
httpd host lan
sshd service on
sshd host 192.168.11.1-192.168.11.254
sshd host key generate *
[米国側]

login password *
administrator password *
login user foo *
security class 2 off on
timezone -07:00
console character ascii
console prompt [RTX]
login timer 3600
ip route default gateway dhcp lan2 filter 1 2 3 4 gateway tunnel 1
ip route 192.168.11.0/24 gateway tunnel 1
ip lan1 address 192.168.22.1/24
ip lan2 address dhcp
ip lan2 nat descriptor 1
netvolante-dns hostname host lan2 server=1 usa.bar.netvolante.jp
ip lan3 address 192.168.33.1/24
tunnel select 1
 tunnel name VPN-USA
 ipsec tunnel 1
  ipsec sa policy 1 1 esp 3des-cbc sha-hmac
  ipsec ike hash 1 sha
  ipsec ike keepalive log 1 off
  ipsec ike keepalive use 1 on
  ipsec ike local address 1 192.168.22.1
  ipsec ike pre-shared-key 1 *
  ipsec ike remote address 1 japan.foo.netvolante.jp
 tunnel enable 1
ip filter 1 pass * * udp * 500
ip filter 2 pass * * esp * *
ip filter 3 pass * * udp,tcp domain *
ip filter 4 pass 192.168.22.0/24 ***
nat descriptor type 1 masquerade
nat descriptor address outer 1 primary
nat descriptor masquerade static 1 1 192.168.22.1 udp 500
nat descriptor masquerade static 1 2 192.168.22.1 esp
ipsec auto refresh on
telnetd service off
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.22.100-192.168.22.199/24 expire 12:00 maxexpire 12:00
dhcp scope 2 192.168.33.100-192.168.33.199/24 expire 12:00 maxexpire 12:00
dns server 8.8.8.8 8.8.4.4 1.1.1.1
dns server dhcp lan2
dns private address spoof on
httpd host lan
sshd service on
sshd host 192.168.22.1-192.168.22.254
sshd host key generate *

その他

久しぶりにRTXを触ったのと、シリアルクロスケーブルとかも忘れてきたので、その状態で設定をリセットしてIPを振ってファームウェアを更新するまでにちょっと苦労した。
自分のためにメモを残す。

リセット

背面INIT近くの穴をピンで推しながら電源を入れる。LAN側IPアドレスも失うので注意。

IPを振る

シリアルクロスケーブルがあれば最も話が早いんだけどそれがない場合、RARPを使って設定してもいいんだけどこれが結構面倒くさいのでIPv6マルチキャストを使う。
RTX1100と自機をLANケーブルで接続して

# eth0はケーブルを挿したネットワークインターフェース名

ping6 -I eth0 ff02::2

すると 64 bytes from xxx::xxx:xxx:xxx:xxx%eth0: icmp_seq=1 ttl=64 time=1.00 ms みたいに応答があるので telnet xxx::xxx:xxx:xxx:xxx%eth0 するだけ。あとは好きなように設定できる。超簡単!

ファームウェア更新

tftpを使うのが簡単。

  1. firmware release for Yamaha Network Products ここからファームウェアをダウンロード。md5sumを取って念の為確認。
  2. ルータで tftp host any or tftp host クライアントPCのIP で許可
  3. 次のコマンドの通り
tftp ルータのIP
tftp> mode binary
tftp> put rtx1100.bin exec

mode binary がミソ

僕が2005年ぐらいにプロになって初めて使ったルータなのでつい思い入れを持って10年以上愛用してしまっている。まあ良いルータですね!

*1:理由は察して欲しい

*2:2つの拠点間で同一セグメントのネットワークを構築する

*3:どこでも良い。ただし接続するのは1ポートのみ。

*4:VLANをサポートするWiFiルータを持っていればハードウェアを買い足す必要もないとの指摘を受けた。

Burlingameで子育て世代と友達になりたい

カリフォルニア州バーリンゲームに引っ越した。

f:id:fushiroyama:20180518085404j:plain (庭にリスが住んでる)

主題

最初に最も伝えたいことを書く。
バーリンゲーム近郊で子育てをしている日本人の親御さんがいらっしゃったら是非友達になってください。
妻と子供は英語がまだ苦手で何をするにも苦労をしています。とにかく似たような境遇の友人を求めています。
https://www.facebook.com/fumihiko.shiroyama
当方連絡先です。よかったらメッセージください!ご連絡いただけたらこちらから遊びに参ります。

バーリンゲームについて

バーリンゲームはサンフランシスコ半島の中程にあるサンマテオ郡を構成する市のひとつで、北はミルブレー市、南はサンマテオ市に隣接している*1
仕事柄オフィスのあるパロアルト市に週3ほど、コワーキングオフィスのあるサンフランシスコ市内に週2ほど行く必要があるので、ちょうど中間地点のこの街を選んだ。
ダウンタウンは美しく、小学校の学区は非常に良く*2、カルトレインも利用できるのでとても良い街だと感じる。

新生活

とにかくこのひと月はひたすら引っ越しと住環境の構築をしていた。

f:id:fushiroyama:20180518085436j:plain

こちらはユニットバスなのでどうやってアカチャンを風呂に入れてよいかも分からない。
とりあえずシャワーヘッドは手に持って使えるタイプに交換した。一体こちらの人はどうしているのか。

f:id:fushiroyama:20180518085504j:plain

お尻に致命的な脆弱性を抱えているので便座はもちろんウォシュレットに交換した。
電源はドライヤー用のものを延長コードで引きつつ、管理人さんには便器裏にアウトレットの増設を相談したが、水回りに近すぎるということであっさり断られた。

f:id:fushiroyama:20180518085521j:plain

キッチンも勝手が全く違う。電熱線はすぐに温まって便利かと思ったが、火力を半分に調整してみたら熱源の出力が半分になるのではなく、フルパワーの電熱線が定期的にON/OFFを繰り返すことで結果的に半分の出力を実現していた。そんな設計ある…?

f:id:fushiroyama:20180518085537j:plain f:id:fushiroyama:20180518085559j:plain

リビングは一般的にどの物件も広い。2 Bedroomで探すとだいたい日本の2LDKに相当する。

f:id:fushiroyama:20180518085645j:plain

こちらでは相当小さいうちから子どもたちだけで寝るらしい*3が、我々は日本人なのでキングサイズベッドに家族4人でねんねすることにした。

f:id:fushiroyama:20180518085841j:plain

車も2台買った。
うちは駅から徒歩3分ぐらいなんだけど、やっぱり東京とはまったく勝手が違ってJR予讃線ぐらいの頻度でしか電車が走ってないので、どうしても大人の人数ぶん車が必要になる。
それだけ燃料代も維持費も保険料もかかるわけで、正直ベイエリアで16万ドルぐらいもらっても東京の年収800万ほどの暮らししかできないと感じる*4。だからインターネッツで「シリコンバレーのエンジニアはこんなに給料をもらっている!」みたいな記事を見かけてもハイハイワロタと思って流して欲しい。そのぐらいもらわないと生きていけないのだから。

雑感

ベイエリアで暮らしていてこれだけは文句なしに良いなと思うことが2つある。
1つは「天気」、もうひとつは「起業と成功のサイクルが確立されていること」

f:id:fushiroyama:20180518090651j:plain

天気は本当に素晴らしい。この地で家賃40万も毎月払って歯を食いしばって暮らしているのは天気に課金しているといっても過言ではない(過言)。

もうひとつは「起業と成功のサイクルが確立されていること」
ベイエリアの成功者が自分の母校−たとえばスタンフォードやUCバークレーの後輩に積極的にカネを出し、のみならずアドバイスやネットワーキングなど全面的にサポートする土壌がある。
これが次の成功者をうみ、次のエンジェルをうみ、彼らが大学に寄付をし…そうやって回っている*5

僕は起業したいという気持ちはさっぱりないんだけど、この地で自分のソフトウェア技術者としての可能性を試したいし、その旅はまだ始まったばかりで何も達成していない。
とにかくまずは最初の一年をしっかり過ごしたい。色々ご指導ください!

*1:サンフランシスコ国際空港から南に車で10分という方が伝わりやすいかもしれない。

*2:「学区が良い」というのは意味が分からん日本語かもしれないが、カリフォルニア州では学区を超えて勝手に公立小学校を選ぶことができないため、学区内の小学校がどれも成績優秀な地域は子育て世代に大変人気となる。

*3:ただし情報ソースはモンスターズインク

*4:家賃も医療費も東京の4倍ぐらいかかる。保育園もこども1人につき20万以上/月かかる

*5:尤も、これも表の面と裏の面がある。実際には「白人」「男性」「スタンフォードコンピュータサイエンス卒」みたいな判を押したようなパターンしか舞台に上らせてもらえないという批判もあるようだ。

妻子と合流した

米支社赴任にあたって離れ離れになっていた妻子と合流した。

とにかく楽しみなのと無事に着くか不安で、前夜は1時間毎に起きてはFlight Statusを確認してしまった。妻はSIMも持ってないのでとりあえず集合時間に到着ゲートに向かって人混みの中を不安な気持ちを堪えながら凝視して待った。

長女が僕を見つけた時、柔らかく微笑んでこっちに歩いてきた。僕は、ひと一倍甘えん坊さんの長女が長旅でもう歩けない姿だとか、パパを見つけて走ってきてそのまま抱きついて離れない姿だとかを想像していたが、実際の長女は自分でスーツケースをひとつ持ってお母さんと次女を助けながら、もう小学生のお姉さんのように落ち着いて過ごしていた。その姿が却って胸を打った。

ただお父さんがいると自分は歩かなくても抱っこしてもらえるんだと15分かけて思い出し、そのまま僕の首にしがみついて離れなくなってウトウトし始めたときに、改めて涙がこぼれそうになった。このふた月本当によく頑張った。

妻にも苦労をかけた。夫婦でよく話し合ったこととはいえ、いきなり決まった米国赴任で家族全員が右も左も分からない状態で同時に行くか、それともパパが先に行って生活の地盤をすべて立ち上げてから合流するかで、我が家は後者を選んだ。長女が生まれ、次女が出来て以来ずっと苦楽をともにしてきた生活を一時的にでもひとりで受け持つことは並大抵のことではなかったろう。ありがとう。

 

自分で米国に来たかった父とは違い、自分の意思とは裏腹に異国の地にくることを余儀なくされた妻子はやはり、新しい暮らしに不安とフラストレーションを早くも募らせている。娘は毎夜「アメリカあんまり楽しくない…」「早く(日本の)お家に帰りたい…」とシクシク泣いている。長女は2歳のころ入院して、しかも折悪しく個室がいっぱいで一般病棟に夜間置いて帰られた*1のがあまりのトラウマになってしまい、いまも夜暗いところで不安になると色んなことを思い出してさめざめと泣く。自分の意志に反し、言葉も通じぬ異国の地に連れてこられる不安はいかばかりだろうか。面目ないとしか言いようがない…

8月末からはTKで小学校にいくのだが、その前に3ヶ月だけでもバイリンガルのPre Schoolに入れてあげたほうが意思疎通のできる同年代のこどもたちと触れ合えて良いかも知れない。この辺りは経験者のご意見をあおぎたい。

とにかく、父親としては色んな所に連れて行ってやる、美味しいものを食べさせるぐらいしかやらせてあげられることがないが、この2ヶ月分いっぱい抱っこしてあげて少しでも不安を取り除いてあげたい。

 

employment.en-japan.com

 

そういえば子育てつながりで、こんな記事をかいた。もう2ヶ月も前に書いたのだが色々大人の事情があって公開が遅れたようで、写真にある梅の季節からこいのぼりの季節になってしまった😅

記事には色々知ったふうなことを書いてあるが、僕も所詮n=2のサンプル数しか知らないわけで、結局のところ育てやすい子供にあたった生存者バイアスであるのは間違いない。しかしまあ、加齢と向き合うお父さんプログラマの生き方と思って夜間授乳中の暇つぶしに読んでいただければ幸いである。

 

そういえば10ヶ月の次女は、このふた月弱会わなかっただけで、お父さんの顔を完璧に、非常に、絶対的に忘れてしまっていた。誕生以来、晴れの日も風の日も毎日一緒にお風呂に入り、夜間断乳のためにママのパイパイが恋しくないようにパパとふたりだけで寝た日もずっと一緒に過ごしてきたのでさすがにショックだったが、よく考えたら2/10ヶ月は35歳の7年間に相当するので、そら忘れてもしゃーないわという感じである…

 

いずれにしてもこれからがまたお父さんとしての名誉挽回の数年間になると思うし、頑張っていきたいと思う。差し当たっては諸先輩方はサンフランシスコ・ベイエリア周辺で4〜5歳が楽しめる施設をたくさん教えてください!これからも宜しくお願い致します。じゃあの。

*1:一般病棟では夜間の付き添いが許可されなかった。翌日から個室に移動したが本人にはいまもトラウマになっている。

カリフォルニア州の運転免許を取得するまでのツライ道のり

前回までのあらすじ

カリフォルニア州の運転免許を取得した。端的に言って非常に苦労した。

この物語はゴールデンステートカリフォルニアと、彼を取り巻くDMVの、愛と絶望とUnprotected Left Turnが満載のアニメであーるぅ(CV若本規夫)

 

Social Security Number取得までの道のり

入国

僕はE2ビザで米国就労している。

f:id:fushiroyama:20180503131209j:plain

入国審査で「ビジネス目的での滞在」と答えるのは初めてだった。

職業はプログラマでありこの国でもソフトウェア開発をすると伝えたが、職員に平衡二分探索木の実装を求められることはなかった。この日が3/19日

 

I-94入国記録

入国した直後から、I-94というウェブサイトから入国記録を参照することができる。できるだけ迅速にこれを印刷してソーシャルセキュリティーナンバー(以下SSN)という社会保障番号の取得に備える。

f:id:fushiroyama:20180503133048p:plain

 

SSN申請

SSNは米国で暮らす上で必要不可欠だ。携帯電話の契約、アパートの契約、ガスや電気(PG&E)の開通、運転免許証の取得など。そう、免許を取るための重要な依存関係である。

申請にはパスポートと前出のI-94入国記録を印刷してSocial Security Administrationのオフィスに持参する必要がある。いくつか選択肢があるが、僕はサンフランシスコのチャイナタウンにあるオフィスに出向いた。ここは職員が親切で仕事が早いと有名だが事実であった。およそアメリカの公的な機関でこれほど気持ちのよい対応を受けることはまずない。

住所は会社の住所で良いのでとにかく早くSSNの申請を済ませること。なんせこれがないと何にもできない。2週間ほどで無事到着。この日が4/2日

f:id:fushiroyama:20180503133209j:plain

 

筆記試験とINSTRUCTION PERMIT

アパートの契約

2016年7月1日より、カリフォルニア州の免許を申請する者は居住を証明する書類の提出が必要になった。例えば、

  • アパートの契約書
  • 銀行やComcast(ネット)の郵送の文書
  • PG&E(電気やガス)の郵送の文書

が必要だが、郵送の文書はアパートを契約したはるか後にしか手に入らないのでアパートの契約書が最も難易度が低い。

SSNを取得するとアパートが借りられるようになるので、まずは一刻も早くアパートを契約する。本来は居住を証明できないといけないのだが、DMVの人もそこまで細かくは見ていないので、契約書にサインしてまだ入居してなくても受理されるかも知れない。推奨しているわけではまったくない。

筆記試験対策

SSNカードの到着を待ちつつアパートを探しつつ、この間に並行して運転免許の筆記試験の対策をする。先にカリフォルニア州の免許システムについて説明すると、

  1. 筆記試験に合格するとINSTRUCTION PERMITと呼ばれる仮免が発行される
  2. Behind-the-Wheel Drive Testという実地試験を合格すると晴れて免許が発行される

という仕組みになっている。民間の教習所は存在するが、これらに実技試験の合格を与える能力はなく、単に練習と実技試験の車を貸してくれたりするのみである。

実技はすべてDepartment of Motor Vehicles(自動車両局。以下DMV)で受ける一発試験のみである。

 

話が逸れた。試験対策でオススメの教材はズバリ、DMV Handbook(PDF注意!)という公式PDFである。日本語版(PDF注意!)もある。

なんでこれがオススメかというと、結局法律は時々刻々と変わるので最新の公式情報にあたるのが最も正確だからだ。技術者はこの辺の感覚は痛いほど分かるだろう。

あとDMVが出している公式アプリもオススメである。模擬試験が受けられ、ほとんど同じまたはまったく同じ問題が本番でも出題されたので当日朝にやればより盤石だろう。

f:id:fushiroyama:20180503135007j:plain

 

筆記試験

筆記試験はDMVでしか受けられない。公式サイトからOffice Visit Appointmentで予約する。ただ予約は随分先まで取れない。僕の知っている範囲で、San Jose DMVはwalk-inつまり予約なしでも朝イチで並べば筆記試験を受けられる。過去2回程walk-inで行ったが、7時半に現地に到着するように行くとほとんど待つことなくあらゆるサービスを受けられた。DMVの中では比較的職員の対応も良いのでオススメのDMVのひとつである。

 

DMVに着いて新規に免許を申請しに来たと伝えると、申請用紙を渡されるので記入する。頭髪や目の色、身長をフィート・体重をポンドで書かされたりする。かなり慌てるので自分の身長が何フィート何インチなのか事前に調べておくと良い。

 

試験は日本語でも受けられる(紙らしい)が、英語で受ける場合は備え付けのタブレット端末で受けることになる。試験対策をちゃんと英語でやっておかないと交通の専門用語のオンパレードで厳しいが、タブレットで受けた場合は自信のない問題を3回までパスできる(不正解にならない)ので少し有利になる。

ただ僕はパスした2問が2問とも再出題された(再出題はパスできない)うえに両方果たして間違えたのでかなり納得いってない。ただ30/36問正解すれば良いので比較的楽勝。僕は4問も間違えてしまったが一発で合格。この日が4/3日

 

合格するとINSTRUCTION PERMITという仮免許に相当する紙切れがその場で発行される。これは助手席にカリフォルニア州の正規の免許保持者が乗っている場合にのみ公道を走れるという許可証である。あとはひたすら友人や同僚に協力してもらって運転の練習をするしかない。

2015年までは日本の免許証を持っていれば筆記試験のあとTEMPORARY LICENSEが発行されて1年間は自分ひとりで運転の練習ができたらしいが、法律が変わって厳しくなっている。単身で来ている場合には非常に厳しい足かせとなる。

 

国際免許証

ちなみに日本の免許証を持っていれば国際免許証を発行できて1年間は米国で合法的に運転できるのでは?と考える人もいるだろう。これは間違いだ。

f:id:fushiroyama:20180503141833j:plain

 

DMVハンドブックにあるカリフォルニア州法の説明を引用する。

カリフォルニア居住者となりカリフォルニア州内で車両を運転する場合には、10日以内にカリフォルニア州免許(DL)の申請を行わなければなりません。居住は以下を含むさまざまな形態で立証されます:

(中略)

・その他の非居住者は対象とならない権限/恩恵を受ける。

この、「非居住者は対象とならない権限/恩恵」にVISAを取得して就労している者が含まれるとの見解が一般的だ。つまり国際免許証は短期滞在者にしか適用されない可能性が高い。

 

Behind-the-Wheel Drive Test

予約

まず、実技試験の最大の難関は「予約」である。Behind-the-Wheelテストは事前に予約をした上でしか受けられない。walk-inは一切できない。この予約がとにかく取れない。

DMVの公式サイトの「Behind-the-Wheel Drive Test」から好きなDMVを選んで予約する。

実技試験はそのDMVの周りのコースを使って行われる。DMVの存在する街の人口、道幅、試験官等々、合否を左右する要素は多分にある。次のDMVは、複数の知人によって難易度が低いと言われているDMVである。

  • LOS GATOS
  • SANTA CLARA
  • SAN JOSE

しかしながら、僕はこれらのいずれでも試験を受けていないので真偽についてはノーコメント。

 

必要書類の準備

試験を受けるには次のすべてが必要

  • INSTRUCTION PERMIT(仮免)
  • 有効な車両とそのREGISTRATION登録証
  • 有効な保険

f:id:fushiroyama:20180503143652j:plain

f:id:fushiroyama:20180503143711j:plain

 

そもそもBehind-the-Wheelテストでは車両を自分で用意する必要がある。

僕は友人に車を売ってもらってそれを自分で名義変更(Title Transfer*1)してそれで試験を受けたが、自分の車がない場合は友人やレンタカーで借りる必要がある。

また車両には任意保険が必須となっている。仮免の状態では通常自分の名義で保険を掛けることができないので、僕は保険屋に直接電話をして国際免許証でも掛けられる非常に割高な保険に入った。免許を早く取れば取るほど差額を多く返金してもらえる。

 

出発前の対策

DMVにはカリフォルニア州の免許保持者と一緒に向かう。窓口でアポイントで来たと伝える際にちゃんと同行者の免許証をチェックされるのでテキトーな替え玉ではダメ。受け付けが終わると実技試験用の通路に行くように指示されて試験官が来るのを待つ。

試験官が来ると、先ずは車両そのものの保安部品のチェックをされる。

  1. 左ウィンカー、右ウィンカー。ライトは前後とも点くこと。
  2. ブレーキを踏んでブレーキ灯が点くこと。
  3. クラクションを鳴らせること。

ライトがひとつでも切れていたらその時点で不合格で試験終了。非常に時間の無駄なので事前にチェックしておくこと。

なおこの時の指示は当然英語なので知っておかねばならない。ウィンカーは英語ではblinker, signalなどと指示がある。ブレーキはfoot brake。クラクションはhorn*2

 

次に、各保安部品を知っているか聞かれる。

  1. ワイパーを動かすレバーはどれか。
  2. ヘッドライトを点ける部品はどれか
  3. くもり取りはどれか
  4. ハザードはどれか
  5. サイドブレーキはどれで、どのように使うか
  6. 手信号で左折、右折、ストップ(減速)を示せ

保安部品がまた、和製英語だらけで日本人殺しの罠になってしまっている。フロントガラス(和製英語)ワイパーはWindshield wyper, くもり取りはDefroster, ハザードはemergency flasher, サイドブレーキはemergency brake / hand brakeなど。余談だけどバックミラーも和製英語で本当はrear view mirror

 

手信号(Hand Signals)はYouTubeを確認して欲しい。

www.youtube.com

 

実技の対策

出発前チェックがOKならば、いよいよ道路に出て走ることになる。道路では主に次のことが問われる。

  • 正しく右折(Right Turn)できる
  • 正しく左折(Left Turn)できる
  • 車線変更(Lane Change)が正しくできる
  • 道路標識(制限速度、STOP他)に正しく従える
  • 路肩に駐車(Pull Over)とバック(Pull Back)が正しくできる

基本的にはこれだけ!なんだそんなことかと思われるかも知れない。ただ日本と違う部分で注意する必要がある。

赤信号で右折できることがある

アメリカでは特に禁止されていない限り赤信号でも右折(日本でいう左折)できるケースがある。一時停止して左からくる車も対向から左折/Uターンしてくる車もいなければ曲がれちゃうのだ。ただしNO TURN ON REDと書かれていると違法。これが非常に分かりづらい交差点が存在したりして罠になっている。

Left / Right Arrow

赤矢印信号の場合はどんな場合も右左折禁止。

4 Way Stop

信号のない交差点は全方向STOPサインが出ており、これは停まった順に動きはじめる。同時の場合は右優先。

Center Left Turn Lanes

f:id:fushiroyama:20180503151550g:plain

初めて見た時は衝撃だったけど、道路の真ん中に左折のために両方向から入れる道路が存在することがある。FREMONTDMVだとこれを実際に試験で走らされたので心の準備が必要。

School Bus

スクールバスが赤ランプを灯しているときは反対車線の車も*3一時停止して絶対に追い越してはいけない。試験でも違反するともちろん一発アウト。

 

他にも山ほどあるんだけど全部は書ききれない。オススメの動画を貼っておくので見て欲しい。

www.youtube.com

www.youtube.com

 

合否判定

試験官は減点方式で候補者を採点する。15個までのMinor Errorは許される。

その他に、それを犯すと1発アウトのCritical Errorが用意されている。代表的なものをいくつか書くと、

  • 右左折前にウィンカーを出し、ミラーを確認し、最後に肩越しに死角(Blind Spot)確認をしなかった
  • 著しいスピード違反
  • 一時停止をしっかりしない
  • バック時に肩越しに後方確認しなかった
  • バック時に路肩に乗り上げる
  • 左折時に指定されたレーンから外れる
  • その他試験官が危険だと判断した場合

等々。

 

試験1回目

初めての試験はFREMONT DMVで4/10に行われた。結果は不合格。

f:id:fushiroyama:20180503152949j:plain

曰く、左折時に前方から車が来ているにも関わらず強引に左折(Illegal Unprotected Left Turn)した危険運転(Dangerous Maneuver)。Critical Error1発アウト。ペーパーを見ても分かるように、全コースを回りきったあとDMVに入る最後の左折であった。

Google マップ

ここから左前方のDMVへの左折。

 

この時の状況はよく覚えていて、前方の車は明らかに200フィートは離れていたので抗議したのだが実らず。これはわざわざ日付が近いからとFREMONTまで遠征したので最初から落とすつもりだったのではと今でも胸くそが悪い。

 

試験2回目

奇跡的に同じくFREMONT DMVが4/19に取れたので2回目の挑戦。結果はまたも不合格…

f:id:fushiroyama:20180503154622j:plain

これもコースを全部回りきってDMVに帰ってくる手前の左折。

Google マップ

この位置で左折するように言われてそのまま点線に沿って曲がったのだが、DMVに帰ってきてからホントは居ちゃいけないところから線をまたいで車線をズレたと言われてこれもCritical Error一発アウト。

これも何度Mapを見返しても納得できなくて、2連続の仕打ちにFREMONT DMVの試験官にむちゃくちゃ悪いイメージを持ってしまった。

 

試験3回目

まさか3回目までもつれ込むとは思ってもみなかった。大体1回ぐらいはみんな落とされても不思議じゃないと励まされるんだけど、2回も落ちてる人は周りにほとんどいなくて、この歳になっても何かに2回連続で落ちるという事実に単純にもの凄いヘコんだ。

ちなみに3回連続で落ちると筆記試験からやり直しで、これまでかかった手間と費用がまたそのままかかる。これだけは絶対に避けたい。

この辺りで「すごい簡単だという噂のLOS GATOSにDMVを変更しようか…」などと悩んだが、LOS GATOSは人気で7月まで予約が取れない。妻が再来週渡米するので彼女の免許は僕がサポートする必要があり、7月まで待っていては生活がままならない。ということで、DMVにしつこく予約確認をして、4/26に最難関と言われるSAN FRANCISCO DMVを予約した。

 

f:id:fushiroyama:20180503155416j:plain

結果はようやく合格。

SAN FRANCISCO DMVはめちゃくちゃ酷い坂道がいっぱいあるし、人も自転車も信じられないほどいるし、違法な2重路駐とかが平気でしてあるし、間違いなくこれまでのFREMONTとはコース的な難易度では比べ物にならないぐらい大変だった。なので初めて受ける人には全然オススメできない。

 

SAN FRANCISCO DMVで興味深かったのは、市内はあまりにも路駐が多いので公道で路肩に駐車&バックの試験が事実上不可能なので、DMVの敷地内であらかじめこの試験をしてから公道に出るスタイルだった。

 

それからひとつ事件が起こって、僕の試験官が直前に担当した16歳ぐらいの少年が速攻で不合格になってたぽかったんだけど、そのお母さんが試験官にクレームを言いに来たのだ。

母「ちょっといい?息子がどうして落ちたか説明してもらえる?」

試「試験中に起きたことは守秘義務があるのです(極めて紳士的に)息子さんには車中でしっかり説明し納得してもらえました。特にあなたにお話しすることはありません」

母「守秘義務だと、Bullshit!! 彼が素晴らしいドライバーなのはよく知っている。彼が落ちたのはお前がレイシストだからだ」

試「レイシストだとBitch!! 俺はメキシカンだ。差別してるのはお前らWhiteじゃないのか」(ここで同僚が止めに入る)

 

ぼくはもうホント勘弁してください俺の試験どうなるの…干し芋みたいに縮こまって運転席に座ってたんだけど、帰ってきた試験官はもう陽気なお兄ちゃんに戻っており、朗らかに試験をしてくれたのでした。

 

f:id:fushiroyama:20180503160432j:plain

これがTEMPORARY LICENSE。2週間から2ヶ月で本物が届くそうな。楽しみだね。

 

結論

DMVは地獄

*1:この時売却額に応じた税金をカリフォルニア州に納めるのだが、なんと売却額の8-10%ぐらい取られる。すっごい高い!

*2:鳴らすはhonk。honk the horn!とか指示される

*3:ただし片側2車線ずつの反対車線の場合は停止しなくてよい

35歳

ついに35歳になってしまいました。

35歳というともう少しちゃんとした大人を想像していたけど、結局のところ人間というのは突如成熟したりなどせず、過去の自分の積み重ねの写像でしかないのであります。

この2年ぐらいは自分の貯め込んだ知識をすべて会社のプロダクトと若手の成長のために注ぎ込んで参りました。ただもうちょっと僕自身も成長できるのではないかと考え、色々画策した結果幸運にも恵まれ、今こうしてアメリカ合衆国の大地を踏みしめております。

 

率直に言って老いは悲しいです。僕自身は正直500歳ぐらいまで生きたいです。たかだか80年というのは、僕がやりたいことを全て叶えるにはあまりにも短い。自分の人生が巡回セールスマン問題というのは中々皮肉なものです。しかしまあ、時というのは誰にも平等でありますから、定められた枠の間でベストを尽くすしかありません。

 

そういった中で、子供の存在というのはやはりかけがえのないものだなぁと感じます。僕が35になるのは悲しいですが、子供がその分ちゃんと5歳になるのだからまあ良かろうと思えるのであります。

子供とつなぐその手のひらが、小川をとびこえるその足が、パパにしがみつくその腕が毎日少しずつ少しずつ大きくなるたび、君の存在はこの世界の中にたしかに広がってゆき、僕はその分少しずつ小さくなりながらやがて大地に還って、そのまま風となって流れてゆくのだろう。千の風n…おっとJASRACがくる。

 

子供たちに会えてよかった。そして妻に会えてよかった。少し前は高校生ぐらいに戻って勉強をやり直したいと思っていたけど、妻と会ってやがて子供たちと出会うという、この書き換え不可能なコミットを見てしまった以上、そこに至らない歴史になんの興味もない。

 

35歳というかこれから2年ぐらいの抱負はやはり米国に来なければなし得なかった達成を遂げることです。この国と向き合い、この国の人々と向き合い、この国の問題に向き合って情報科学の力でこの世を少しでも良くしたい。我々プログラマはその力を持ってこの世に降り立った。幸運なことです。頑張ろう。

 

最後に、誕生日プレゼントはカリフォルニア州の免許が欲しいです…

というのは冗談で、本を書きます。Androidのテストの本です。とても良い本になる確信があるので是非買って下さい!ほいじゃあの!

 

peaks.cc