Arch on VirtualBoxのグラフィック周りでハマった話

トラックパッドトラックポイントもFull HDの画面内を動き回るには使いづらい(カーソルが遅いと移動に時間がかかる上に変に力をかけ続けないといけないので疲れるし、速いと目的の場所に止めるのが難しい)ので、タッチパネル装備のThinkpad X1 Carbonを買った。実際使いやすいかはまた別の機会に書くとして、例によってセットアップが辛い感じになったのでログを残しておく。

マシン:Thinkpad X1 Carbox Gen6 ホストOS: Windows10 Pro ゲストOS: Arch Linux on VirtualBox 5.2.16

Archなので、例によってArch Wikiを見るとvirtualbox-guest-utilsというパッケージを入れれば万事ok的なことが書いてある。しかしなぜかIntelliJの描画が遅く、カーソルを動かすだけでCPUを150%くらい食い始める。これはどうもグラフィックドライバが良くないっぽいぞと思ってとりあえずglxgearsしてみると、150fpsくらいしか出ない上に描写がなんとなくカクカクしている。FirefoxWebGLのページを見てみると動かない。また、glxgearsの起動時に以下のようなエラーが出る。

libGL error: pci id for fd 37: 80ee:beef, driver (null)
libGL error: No driver found
libGL error: failed to load driver: (null)

Xorgの起動ログを見ると、DRIのドライバが読めていないように見える。

glados% grep EE .local/share/xorg/Xorg.1.log.old
[  1771.207] Current Operating System: Linux glados 4.17.9-1-ARCH #1 SMP PREEMPT Sun Jul 22 20:23:36 UTC 2018 x86_64
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[  1771.217] (EE) Failed to load module "vboxvideo" (module does not exist, 0)
[  1771.217] (EE) Failed to load module "fbdev" (module does not exist, 0)
[  1771.218] (EE) Failed to load module "vesa" (module does not exist, 0)
[  1771.298] (EE) modeset(0): [DRI2] No driver mapping found for PCI device 0x80ee / 0xbeef
[  1771.298] (EE) modeset(0): Failed to initialize the DRI2 extension.
[  1771.298] (II) Initializing extension MIT-SCREEN-SAVER
[  1771.438] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:06.0/usb1/1-1/1-1:1.0/0003:80EE:0021.0001/input/input5/event4"

こういう系のエラーは例によってぐぐってもまったく情報が出てこないので苦戦を強いられることになる。2時間ほど検索してもそのものズバリという回答は見つからなかったが、glxinfo | grep rendererするとllvmpipeというのが出てきて、これがどうやらソフトウェアレンダラらしい。つまり、VirtualBoxのグラフィックドライバが読まれていない。

もしかしたらVirtualBoxOpenGLドライバなんてものは存在せず想像上の存在に過ぎないかもしれないので、一応確認しておく。

glados% pacman -Ql virtualbox-guest-utils
virtualbox-guest-utils /etc/
virtualbox-guest-utils /etc/xdg/
virtualbox-guest-utils /etc/xdg/autostart/
virtualbox-guest-utils /etc/xdg/autostart/vboxclient.desktop
virtualbox-guest-utils /usr/
virtualbox-guest-utils /usr/bin/
virtualbox-guest-utils /usr/bin/VBoxClient
virtualbox-guest-utils /usr/bin/VBoxClient-all
virtualbox-guest-utils /usr/bin/VBoxControl
virtualbox-guest-utils /usr/bin/VBoxService
virtualbox-guest-utils /usr/bin/mount.vboxsf
virtualbox-guest-utils /usr/lib/
virtualbox-guest-utils /usr/lib/VBoxOGL.so
virtualbox-guest-utils /usr/lib/VBoxOGLarrayspu.so
virtualbox-guest-utils /usr/lib/VBoxOGLcrutil.so
virtualbox-guest-utils /usr/lib/VBoxOGLerrorspu.so
virtualbox-guest-utils /usr/lib/VBoxOGLfeedbackspu.so
virtualbox-guest-utils /usr/lib/VBoxOGLpackspu.so
virtualbox-guest-utils /usr/lib/VBoxOGLpassthroughspu.so
virtualbox-guest-utils /usr/lib/security/
virtualbox-guest-utils /usr/lib/security/pam_vbox.so
virtualbox-guest-utils /usr/lib/systemd/
virtualbox-guest-utils /usr/lib/systemd/system/
virtualbox-guest-utils /usr/lib/systemd/system/vboxservice.service
virtualbox-guest-utils /usr/lib/sysusers.d/
virtualbox-guest-utils /usr/lib/sysusers.d/virtualbox-guest-utils.conf
virtualbox-guest-utils /usr/lib/udev/
virtualbox-guest-utils /usr/lib/udev/rules.d/
virtualbox-guest-utils /usr/lib/udev/rules.d/60-vboxguest.rules
virtualbox-guest-utils /usr/lib/virtualbox/
virtualbox-guest-utils /usr/lib/virtualbox/mount.vboxsf
virtualbox-guest-utils /usr/lib/xorg/
virtualbox-guest-utils /usr/lib/xorg/modules/
virtualbox-guest-utils /usr/lib/xorg/modules/dri/
virtualbox-guest-utils /usr/lib/xorg/modules/dri/vboxvideo_dri.so
virtualbox-guest-utils /usr/share/
virtualbox-guest-utils /usr/share/licenses/
virtualbox-guest-utils /usr/share/licenses/virtualbox-guest-utils/
virtualbox-guest-utils /usr/share/licenses/virtualbox-guest-utils/LICENSE

よくわからんが、VBoxOGL.soというのがそれっぽい。じゃあ今のlibGL.soはなんなんだ?

glados% pacman -Qo /usr/lib/libGL.so
/usr/lib/libGL.so is owned by libglvnd 1.0.0-1

どうやらベンダのOpenGL実装を発見して動的にディスパッチしてくれるやつっぽいが、君動いてないよね?とりあえずこいつを無視してそれっぽい感じにしてみる。

glados% ln -sf /usr/lib/VBoxOGL.so /usr/lib/libGL.so.1.0.0

こうすると、glxgearsが300fpsくらい出るようになった。glxinfoも確認しておく。

glados% glxinfo | grep renderer
OpenGL renderer string: Chromium

Chromiumっていうのはブラウザではなく、他のレンダラにプロキシするレンダラらしい。あとxf86-video-fbdevとxf86-video-vesaもロードに失敗しているっぽいので入れておく。こうするとWebGLが動くようになった(俺達は雰囲気でLinuxをやっている)。

しかしIntelliJは依然としてアホみたいにCPUを食っているので厳しい……。レンダリングじゃなくて純粋にJavaVMと相性悪いのか?

ICFPC2018

ICFPC2018にチームmanarimoとして参加しました。マナリモとは何か一応説明しておくと、東北地方以北に分布するナリモ科の藻です。水質のきれいな湖にしか生息せず、「自然の水質管理官」と呼ばれることもあります。

メンバーは去年と同じく

  • mkut
  • osa_k
  • pepsin_amylase
  • y3eadgbe
  • yuusti
  • kawatea

の6人でした。僕はアメリカの自宅から、他の5人は日本のIndeedオフィスから参加しており、コンテスト中はHangoutでビデオチャットしてコミュニケーションを図っていました。

リポジトリ

github.com

1日目

開始と共に問題を読み始める。今年は問題文が整然としていて読みやすい。どうやら3Dプリンタ的なものを実装するゲームらしい。あと公式が必要そうなツールを一通り提供してくれていてありがたい。

問題文を一通り把握したので、インフラのセットアップを始める。とは言ってもJenkinsはコンテスト開始前にサーバを立てて入れてあったし、ポータルサイトもしばらく必要にはならなそうな上作ろうと思えばすぐ作れるので、公式のビューワを使って問題のサムネイルを生成することにした(2016年にサムネイル生成が遅れて進行が詰まったことの反省)。ビジュアライザがJSで実装されているのでseleniumとかで叩けば簡単にできそうだったが、あまり自動化の経験がないので、mdlファイルを順番に読みながらcanvasに描画されたものをcanvas.toDataUrl()で画像に変換し、手元に立てたExpressサーバに送りつけるという方法を取った(f58a9b)。画像を保存するツールなので名前はSaver Wingにした。モデルの描画が思ったより遅くてウエイトを調整したりする必要があったものの、しばらくして無事に生成できた。

サムネイルの公開や、今後割とすぐに発生するであろう改造版公式ツールの公開をどうするか考えて、git pushに反応して即座にサーバ上でリポジトリをpullするようにして、nginxでリポジトリのルートを配信するようにした。これは結構便利だった。

そんなことをしていたらid:pepsin_amylaseがnanachiという名前のポータルサイトを生成したため、systemd化してnginxから配信するようにして、ついでにサムネイルもナナチから見れるようにした。あとモデルビューワを改造してファイルをセレクタから選ばなくても見られるようにしたり、マウスで回せるようにしたりした。

f:id:osa_k:20180725145833p:plain f:id:osa_k:20180725145851p:plain

採点部分も公式がそれなりに速そうなものを提供してくれていたものの、本体がSMLをコンパイルしたやばそうなJSになっていて人が触れる感じではなかったのでNodeで動かすのは諦め、公式のシミュレータで走った結果を自動でナナチにサブミットすることでDBにログを残すようにした (8fe362)。しかしコンテスト終わってからnya3氏のコードを見たら割とお手軽にNode.js対応できたっぽいのでやればよかった……。ダミーのDOM実装を生やして無理やり動かすのはアイデアとしてはあったけど、何が呼ばれているのかちゃんとログする方法を思いつかなかったのと、DOM周りのAPI(特にファイルセレクタ)の挙動を理解している自信がなかったので諦めてしまった。次は大丈夫です。

その間にmkutがアセンブラを完成させ、kawateaとyuustiがそれを利用してAIを書いたり、y3eadgbeがモデルの解析をしたりしていた。非自明なAIが完成するのが思ってたより早かったので、これは流石に自動で採点する仕組みがないと後々困るなと思い、シミュレータの実装を始める。仕様がかなりはっきり書かれていて、特にinvariant周りが充実していたので、とりあえず書いてある通りに頑張って実装すればまあ動くだろうみたいな安心感はあった。久々にC++を書いたら細かい文法とかメソッド名とかかなり忘れていてエラー出しまくったのでつらい(JavaScriptを書きすぎてconst hoge = ...とか書いて、型名がないことで長大なエラーを生成したりしていた)。自動で採点するやつなので、名前はオートスコアラーにした(3a4a08)。結局4時間くらいかかって、書き上げた当初はあまり自信がなかったけど、一部アサーションが間違っていたり、最後にモデルとの形状一致を判定するのを忘れていたりした以外には、結局致命的なバグは最後まで見つからなかったので良かった。

オートスコアラーの導入で機械的に提出を評価する目処が立ったので、とりあえずその時点で存在していたAI全部を全ての問題に対してぶん回してトレースを生成し、後からオートスコアラーで点数を付けるというパイプラインを構築した。APIエンドポイントはJenkinsで、c5.18xlargeをSlaveにして186個のジョブをリモートトリガでキューに突っ込むことで、お手軽並列実行環境にした。これをやった結果、yuustiのAIがバグっていることを発見したりした(「大体正の点数を取る.cpp」というAIなのに正の点数を取れておらず、おもしろコミットが生えたりした)。

このへんで朝の6時(開始から19時間)になり、流石に眠くなってきたので、186個並列キューのやり方をy3に託して寝た。

2日目

ずっと眠くてあまり覚えてない。こういうときオンラインだと人と話してモチベーション高めつつ眠気を飛ばすみたいなことがやりにくくて不便。とりあえず起きたら昼の12時で、寝てる間に来ていた更新をmkutがまとめていた。モデルを壊す問題と作り変える問題が増え、更に範囲コマンドも追加されたらしい。範囲コマンドの実装やばそうだけど、まあこれ以上変更が来ないならアドホックに行けるかなぁと思いつつ昼飯を食べに行く。

とりあえず面倒くさそうなシミュレータ実装は後回しにして、新しく増えた問題を確認してみる。すると、どうもほとんどのモデルがLightningそのままっぽいことが分かった。再構築問題はいくつか新しいモデルがあったものの、密度の高い立方体を切り出して彫刻するやつとか、逆にモデルを埋め立てて立方体にするやつとかで、Lightning以上に見た目がやばそうな問題は増えてなさそうだった。

新しく増えたVoidコマンドの実装はしばらく考えたものの、voxelを削除すると地面に結合している判定に使っていたUnion Find木が壊れるためどうもうまい方法が思いつかない。結局Voidは後回しにして、簡単なGFill対応とDisassembly, Reassembly問題の対応を先にやって、うまい実装をもう少し考えることにした(後から考えると、ここでAIに時間を割いとけばよかったかもしれない)。

結局Union Find木が壊れるのは防げなさそうだが、kawateaが作ったAIはGVoidを使っていっぺんに大量のvoxelを消すものだったので、じゃあ普通のVoidはあまり使わなくて大半がGVoidになるだろうし、GVoidで最大303とか消されたら流石に1からUF木を再構築するしかないだろうと思って、とりあえずVoid系が来たらUF木を作り直す実装を書いた(127541)。その後しばらくして、消されたvoxelの隣接6セルがVoid後も連結ならUF木をアドホックに修正するだけでいいことに気がついて、枝刈りを入れた(4c1723)。

その後はy3がDBの変更をしたのでオートスコアラーを追随させたり、AIのコードを読んだりしていたら寝落ちしていた。

起きたら8時くらいだった(確か)。公式のStandingsをインポートして内部ランキングに表示したり(437646)、評価がまだ終わっていないtraceを採点するために、接地判定をスキップしてオートスコアラーを高速化したりしていた。

3日目

そのまま3日目に突入。Voidを入れると接地判定をスキップしても構築モードよりえらく遅くなるのでなんでだろう、と思って調べていたら、Union Find木を再構築するときに無とブロックをuniteしていたのを発見して直した(2729ce)。

id:pepsin_amylaseがこの辺りでアセンブラの最適化を行っており、結構な成果を残したっぽい。詳細は以下のブログを読もう。

pepsin-amylase.hatenablog.com

この頃になると結構サーバの稼働率も上がってきて、それに伴ってナナチが謎の死を遂げたりするようになったので、プロセス数を増やしたりしてアドホックに対応していた。あとyuustiのAIが無限にログを吐いて、300GB割り当てたはずのEBSをまるまる食い尽くしていたりした。ログ問題はともかく、ナナチはよくMySQLのコネクションが取れないと言って死んでいたので、これMySQLに1MBくらいのBlobを突っ込んでるのがよくないんじゃないの、という話から今までMySQLに保存していたtraceをS3に移行する作業をしたりして、当面はなんとなく安定している風になった。

日付が変わる頃になって、オートスコアラーにアホみたいな最適化漏れを仕込んでいたことに気がつく。GVoidはどうせUF木を再構築するから接続判定とかいらないじゃん、と言ってたのに、普通のVoidとコードを共有したせいでGVoidで消される各セルごとに接続判定が走っていた。これを消したらめちゃくちゃ速くなって、今まで大きいマップで3分以上かかっていたスコアリングが30秒くらいで終わるようになった(([9d8025]https://github.com/osak/ICFPC2018/commit/9d8025b609515c5d99743d0e6e029f9710b7ecb2))。

しかしこの高速化でサーバへのアクセス頻度が上がったせいか、ナナチがまた不安定になり、解答のSubmitがコケまくるという非常事態が発生した。ログを見たところ、またMySQLのコネクションが取れなくて死んでいるっぽい。PythonMySQLコネクタのドキュメントを調べてコネクションプールを有効にしたが、それでも改善しない。結局MySQLとコネクタの気持ちになって考えたところ、毎リクエストごとにmysql.connector.connect()を呼ぶ必要があるっぽいという気持ちになったので、試してみたところそれ以降全然落ちなくなったので正解だったらしい(53a2eb)。仕事ではJDBCに飼い慣らされているので、クエリごとに裏で勝手にコネクションプールしてくれるだろみたいな雑なイメージを持っていたが、どうもそんなに甘くはないらしい……。

サーバが一段落して、残り12時間を切ったけど誰もReassembly問題を解いていないっぽいので聞いてみると、全消しと普通の構築を組み合わせてReassembly問題の解にするという案があるらしい。やるだけっぽいので書いた(a2d7b6)。なんかファンシーな名前にしたかったが、3日目の脳は限界だったので安直にcombinerという名前になった。これを走らせると、自分は何も賢いことをしていないのにReassembly問題が次々と埋まっていってかなり面白い。一部のモデルはそもそも単純な構築や破壊問題になっていないので、これらに対して良い解を見つけるためにダミーの問題を追加したりした。

Jenkins上でyuustiのAIが延々と走りながらログを吐いてディスクを食いつぶしていくことに文句を言ったところ、どうやら中が空洞のモデルを作ろうとして、中にNanobotがいるのにGFillでフタをして脱出不能になることがあるらしく、労災と呼ばれていた。このままだと色々と不便なので、労災者が出たら心中することになった

終了3時間前くらい、y3が色々なものを手動で解いてSubmitし始める。やばい。kawateaも当然のように文字の形をした問題を手動で解いている。やばい。

スコアボードを見てUnagiの強さに絶望したりしつつ、特にドラマチックな逆転とかはなく終了。最終提出一覧

総評

インフラ構築は一部トラブルが起きてつらい気持ちになったものの、全体的には悩むことなくスムーズに構築できたので良かった。インフラができた後はちょいちょい管理業務があったものの、総じてちまちまと余裕はある感じだったので、もっとAI構築に時間を割くべきだったと思う。しかしHangout参加だと人と議論するのが難しいのでうまくできたかは謎……。そもそも例年だと、暇になったらAI作ってる人に欲しいものがないか聞いて回ってたんだけど、今回はそういうのできなかったし、遠隔のコミュニケーションは難しい。

MySQLのBlobをやめてS3に移行したのが正しかったのかは謎。実際Blobが大量に詰まってるテーブルにカラムを追加しようとしたら激烈に遅かったので何かまずい使い方ではあるっぽいが、最終的にはコネクションプールの仕方を間違っていて死んでいただけだったので、Blobがどれくらい悪いのかは分かっていない。ただ、最初の方でid:pepsin_amylaseがファイルをS3に上げることを主張していたのに、自分がS3にファイルを置くと取り扱いが面倒くさそうだしBlob突っ込めばいいでしょみたいに言ったのは良くなかったと思う。フタを開けてみれば、S3はpublicなhttpのURLも取れるし、権限付与もEC2インスタンスにIAMロールをくっつけるだけなので、超簡単だった。

シミュレータは、この記事を書きながら、そもそも各人のマシンで公式JSを走らせてもらう手もあったなあと今更ながらに思った。ファイルを複数選択してもらえるので、適切にmdlとnbtをシミュレータに突っ込んでいけば半自動でサブミットできたはず。大きい問題に対してどれくらい公式シミュレータが対応できていたかよく分からないが、その方針で一度は実装するべきだった。

チームでAWSを使うにあたって、Organizationを使って支払いは自分のメインアカウントでやりつつ、IAMにしか実体のないサブアカウントでまっさらなAWS環境を作り、そこから更にIAMユーザをぶら下げるという環境を作った。これはかなり勉強になった。

チームでコンテストやるならやっぱりリアルで集まったほうが楽だし楽しいですね。しかしUnagiに勝ちたかったなあ(勝てなかったと会社のマネージャー氏に報告したら「また勝てなかったの???」みたいな感じで煽られた)。

補足

マナリモの話はid:pepsin_amylaseのでっち上げです。

アメリカで生活基盤を整える

アメリカで生活基盤を整えるためにやったことと必要だったもの。今後アメリカに移ってくる人は参考にしたりしなかったりしてください。

参考文献

ktdisk.hatenablog.com 家や車の契約、SSNの申請などかなり細かくログを書いてくれているブログで、かなり便利なので読んでおいたほうが良い。

移住時の自分の状況

  • 到着日:2018年1月6日(土)深夜
  • 移住先:Austin, TX
  • ビザ:L-1 Blanket
  • 勤務先:Indeed.com
    • リクルートホールディングス籍で2015年4月に入社し、2017年6月まで勤続した後に2017年7月にIndeed Japanへ移籍。子会社なのでL-1 Blanketの要件を満たしている(ということになった)。
  • 住所は決めず、ホテルに泊まりつつアメリカに着いてから探す戦略
  • 三井住友銀行Visaカード所持(口座にくっついてるやつ)
  • 未婚

日本を出る前にやったこと

  • 国際運転免許を取得する(正確には、昨年の出張時に取得したやつが有効なのでそのままにしている)。
  • SIMフリーの携帯を用意する(Google Pixel北米版を上述の出張時に買った)。
  • ANA Card USAを契約する(Mailing Addressは会社の住所を入れた)。

アメリカ駐在の方へおすすめ。アメリカのクレジットカード - ANA CARD U.S.A.

電話番号の取得(重要)

どうせPixelなんだしProject Fiでもいいかと思ったのだが、SIMが到着するまで1週間くらいかかるらしく、そんなに待つのもなぁと思って近所のBest Buyに行ってVerizonのSIMを買って挿した。説明書のとおりにWebで色々手続きすれば開通するが、iPadで進めていたらクレカ認証のところでJavaScriptがうまく動かず詰まった。PCを使おう。

電話が使えるようにしておくのは重要。アメリカの人々は雑で色々な手続きが行き当たりばったりで行われることや、こちらも日本から移動してきたばっかりで社会的な保証がなく、通常のフローで事務処理できないことが多いため、電話で相談したり確認したりということが多くなる。

銀行口座

必要だったもの:パスポート、国際運転免許証、(クレジットカード)

週末は開いてなかったので、平日を待ってから近くのWells Fargoに行った。Checking AccountとSaving Accountを両方開くことを勧められるので、そのようにした。Checking Accountは小切手やデビットカードの引き落としの対象となる口座で、Saving Accountは普通の預金口座らしい。

住所はホテルの住所を差し当たり書いておいて、後で変更するということですんなり通った。あと外国人なので日本での住所(信用情報の代わり?)を聞かれて、実家の住所を書いた。住民票を実家に移さずに直接海外転出の手続きをしたため、国際免許証に書いてある住所と違って少し揉めたが、そんなん言われても実家の住所とか今すぐ証明できんし……と言ったらまあしゃあないねという感じで通った。クレジットカードも一緒に作れないかなと思ったが、流石にSSNもなしで作るのは厳しいっぽく、代わりにデビットカードを作ってもらった。ANAカードがちゃんと届けばまあ問題はないはずだけど、念の為。

デポジットが各25ドル、合計50ドル必要だが、クレジットカードでも払えるので日本のカードで支払った。

口座さえ開いておけば日本からオンラインバンキングで送金できるかと思ったものの、三井住友銀行は日本で別途申し込みをしておかないと海外送金はできないようで、後述の家を借りるときに詰んだ。結局親に頼んで海外送金してもらったものの、資金の出処の証明だの、海外での受取人が存在する証明だのを要求されてかなり面倒だった。そもそも三井住友銀行も、送金先口座を登録するときに審査が入るなどと怪しい文言が書かれているため、一度海外に移住してしまったら日本の大手銀行はほぼ便りにならないと思ったほうがよさそう。楽天銀行新生銀行はマシなサービスを提供しているらしい。

必要だったもの:パスポート、銀行口座、雇用契約書(雇用証明のため)、最新の給与明細

ルームシェアする予定の同僚が一週間遅れでくるので、それを待って家探しをした。条件を指定して物件を検索できるZillowというサービスを教えてもらっていたので、このサービスで適当に当たりをつけて内見を申し込んだ。

www.zillow.com

1/14(日)に2件ほど回った後、実際に見るまで判定が難しいのと意外と時間がかからないことに気付き、翌日は5件の予約を入れた。いくつか良さそうな物件があったのだが、結局一番最後に行った一戸建てが一番住みやすそうだったので即決した(余談だが、ここは内見の予約をWebで飛ばしても返事がなく、電話を掛けたら折り返しのSMSで根掘り葉掘り情報を聞かれて辟易し、途中で投げ出そうかと何度か考えた。実際に会ってみたらエージェントもオーナーもいい人だったので、SSNも持たない外人は色々難しいんだろうなぁと思った)。

家賃は月$2,750で、通常は家賃と同額をデポジット(敷金のようなものだけど、基本的には家賃が払われなかったときのための保険)として払うところ、クレジットヒストリーがないため倍の$5,500を払うことになった。これが意外と面倒で、銀行に相談しても通常の手段では送れないと言われ、結局Bank Checkという引き出した額を直接小切手にしたものを発行して支払った(後で調べたところ、Wire Transferという仕組みを使えば支払えるっぽく、こっちの説明が悪かったか、銀行員がポンコツだったかのようだ)。

電気、ガス、水道、インターネット

必要だったもの:パスポート、賃貸契約書

家を借りた後、インフラの契約をすることになった。電気と水道は同じAustin Energyという会社がやっており、ガスはTexas Gas Service、インターネットは複数あるものの、家主にGrandeという回線を勧められたのでそれにした。一番簡単だったのはガスで、住所とパスポート番号だけですんなり契約できた。Austin EnergyはSSNがないと電話では契約できず、オフィスまで出向くことになったが、特にトラブルもなくすんなりと終わった。GrandeもWebフォームからだとSSNか運転免許証番号を求められたが、電話したら別になくてもいいよということになり、無事に開通できた。

社会保障番号(SSN)

必要だったもの:住所、パスポート、I-94(入国証明書)

晴れて住所を取得したため、社会保障番号が取得できるようになった(ホテルの住所でも可能かもしれないが、ダメという記述をどこかで読んだので見送っていた)。Webサイトを見るとBirth certificateを出せなどと不穏なことが書かれているが、パスポートが大体のことを証明してくれるので特になくてもよい。必要な書類を持ってSocial Security Officeに行き、フォームを記入して待っていれば番号を呼ばれるので、適当に提出して終わり。1時間半くらい待ったが、提出自体は書類を全部見せたら何一つ質問されず、7〜10日でSSN Cardが届くよと言われて終わった。

提出が1/24(水)だったので届くのは2月かなぁと思っていたら、1/30(火)にはもう届いていた。こういうのにしては早い。

自動車

必要だったもの:住所、パスポート、SSN、国際免許証、最新の給与明細、賃貸契約書

家もSSNも揃ったので次は自動車を手に入れる。あまり自動車のスタイル等には興味がないので、適当にいくつかのディーラーで試乗して良さそうなものを買おうと思っていた。ところが近所にあるMazdaのディーラーで、3年くらいしか住むつもりがなくて、そんなに長距離を運転するのでもないならリースの方がいいよと言われたので、まあ確かになぁと思い、試乗したMazda 3のリースを組むことにした。メンテナンスも無料で受けられるし、アメリカを離れるときに売却のことを考える必要もない(買い取りたければ買い取ることもできる)。

試乗は国際免許証で問題なくできた(テキサスの法律や保険の関係で、テキサスの運転免許を持っている人が同乗する必要はある)。リースの開始にあたっても、冒頭で紹介したブログの人は国際免許証ではダメだったようだが、テキサスはゆるいのか国際免許証で問題ないと言われた。自動車保険は適当に検索して出てきたProgressiveという会社を使った。オンラインで申し込んで即日有効になる。運転歴がほとんどないので、半年で約$1,600というめちゃくちゃ高い金額になってしまったが、日本でも運転してないしどうしようもないだろうと思って諦めた。

www.progressive.com

クレジットカード

必要だったもの:(SSN)

上述の通り、クレジットカードは日本を出る前にANA Card USAを契約しておいた。入国予定日として連絡しておいた1/6(土)にはメールで審査開始の案内が届き、1/17(水)に受け取った。会員用ページにアカウントを作る際にはクレジットカード番号に加えてSSNの下4桁を本人確認のために要求されるが、登録時にSSNを渡していない場合は0000を入れると通る。最初から限度額が$10,000あり、現在まで半月で$3,500程度使っているが、つつがなく支払えている。

SSNを取得したら、ANA Card USAのサポートフォームからSSN Cardのスキャンを送ると登録してくれる、

2018年の目標

去年は怠惰すぎた。

アメリカで生き残る

早々にオースティンへ行ってしまうので去年とかなり状況が違う。生き残りたい。とりあえずライフラインの整備でミスらないといいですね……。あと英語がもっとうまくなりたい。

アメリカで太らない

最近太ってきたので、このままアメリカでさらに運動しなくなるとヤバい。ちゃんとジム行くとかして太らないようにする。

アニメや映画を10本見る

映画館に行かずとも、何らかの動画サービス等でちゃんと映像作品を見たい。教養。

本を読んでログを残す

小説10冊は達成できなかったものの、なんか漫画は結構読んでたなぁと思ったので、ざっくりと本をたくさん読むという感じにしておく。あとちゃんとログを残さないと後で見返すときに不便なので、読書メーターにログをこまめに残しておきたい。シリーズ物の漫画を一気読みすると面倒で登録をサボりがちなんだけど、別にページ数や冊数のカウントに強い興味があるわけではないので、最終巻だけ登録しとけばいいんじゃないかと気がついた。

旅行に5回行く

せっかくアメリカにいるんだし、アメリカの各地を旅行したり、南アメリカへ旅行したりしたい。

公開できるWebサービスをなんか作って運営する

仕事でしかWebアプリケーションを作っていないため、仕事に直接関わらない範囲の知見が全然たまらない。特にインフラ周りは分業によりあまり触らない&触るとしてもめちゃくちゃ時間がかかって厳しいので、趣味で触って知識を蓄えておきたい。

ICFPCで1位を取る

まあ言い得だよね。打倒UnagiとDiamondPrincess。しかし今年はICFPC開催時に日本にいない気がするけど、どうやってチーム組もう?

ゲームで遊ぶ

11月ころからゲームのボイロ実況を見ていて、楽しそうだなあと思っているのでちゃんとゲームで遊ぶようにする。去年は全然やってなかった。とりあえずSteamやMagic Online用にWindows機を買う必要がある。できたらボイロ実況も作れるといいね。

osak.jpを作り直す

放置しすぎなのでなんとかする。サーバもったいないし……。

今年の振り返り

人生三万日しかない。今年は有意義だったか?

今年の目標はこちら

ライブに10回行く

3/10。正月明けに行った水樹奈々、オースティンで行った謎バンド(名前忘れた)、同僚に誘われて行った分島花音の3回。12/30の夜になって原田ひとみの年末ライブに行きそびれていたことを思い出したりした。

映画を10本見る

たぶん6/10。最初の方はちゃんと記録を残していてるけどそれ以降が曖昧なので、覚えている限り書いてみる。

飛行機に乗ったことで、見たかったけど見れてなかったインセプションベイマックスを見られたのが良かった。一方映画館に行く気力はなんか消えてしまった……。なのはReflectionもガルパンもアニゴジも見ていない。

小説を10冊読む

たぶん8/10。

野崎まど劇場は、以前にTwitterで流れてきた、将棋の大盤解説の話が面白かったので読んでみた。純粋なシュールレアリスムで攻めると言うよりは、小説本という体裁を保ったままいかに見た目を破壊できるかという点に賭けたような作風で、ストーリーそのものは薄味だった。文字で構成された絵本だと思う。

戦闘妖精雪風シリーズは、最初はファンタジー寄りのSFで面白かったが、巻数が進むにつれて哲学的思索を中心にしたハードSFになっていってしまい、読むのが辛かった。

アリスはICFPCの運営がジャバウォッキーを引用したものをツイートしており、そういえば原典を読んだことないなと思って読んだ。言葉遊びが中心なので、英語で読まないと面白さが分からなさそう。

旅行に10回行く

アメリカ出張に行ったせいで数え方が謎だが、少なくとも10回は行ってない。7/10ということにしとこう。

  • 大阪(OSC大阪)
  • アメリカ(Austin, TXに出張した後、@draftcodeさんに会うためSan Jose, CAに行った)
  • メキシコ(メキシコシティ
  • 越後湯沢(ICFPC合宿)
  • 城崎温泉(mikutter合宿)
  • 舞鶴天橋立城崎温泉の後に@brsyweの案内で一泊した)

ICPCの手伝いでつくばも行ったけど、本当にイベント運営してただけなので旅行ではないカウントにする。あんまり旅行っぽいことしてないしね……。

連休とか、家でグダグダしてるくらいなら旅行行ったほうがいいなあと思った。OSCは各地でやってるし、今年は梓川もあず誕も行ってないし……。あと台湾行きたいですね。

Webサービスを3個作る

そんなものはなかった

mikutterのプラグインリポジトリを作ろうとしていたけど、1年経ってもできていない。厳しい。

ゲームを1本作る

そんなものは(略)

作るどころか、全然プレイしてすらいないな……。ワイルドアームズ2も途中で放置してしまったし……。

GitHubに200 Contributionsする

216っぽい。大半はICFPCのコミットなので、この数値に意味があるかはかなり謎。

ICFPCで1位を取る

6位だった。Unagiはあまり奮わず倒せたものの、他の競プロ勢チームであるDiamondPrincessは2位だったので国内1位にすらなれなかった。

Magic: the Gatheringをプレイする

定期的にドラフトをプレイしていた。しんでれら・まじっくは全部見た。MOはWindows機を買っておらず結局やってない。あまり勝ててないので強くなりたい。

MtG CardSmithをベースに色々切り貼りして、Unstableの拡張カードAzusa, The Angelic》を作った。結構気に入ってるんだけどTwitterであまりウケてない。というか自分が本当に面白いと思ったネタはあまりウケない。

f:id:osa_k:20171231003906p:plain

はてなブログのデザインを直す

は?

ブログで目標のトラッキングをする

アメリカ出張に行く前はちょいちょいトラッキングしていたけど、途中から面倒になってやめてしまった。やっぱり他人に何かを伝えたいというモチベーションがないとブログを書くのは難しい。単純にトラッキングしたいだけならもっといい手段があるだろうと思った。

その他

結構ボードゲームをやった。とりわけ、11月から12月にかけて遊んでいたパンデミック・レガシーは面白かった。ボードゲームのボードにシールを貼っていったり、カードに書き込みをしたりしていくキャンペーン型のゲームで、その新鮮さはもちろん、ゲームとしても頭を使うのが好きなメンバーでうんうん唸りながら最適手を考えていく過程はかなり楽しかった。

総括

アウトプット系の目標はおろか、インプット系の目標もまったく達成できてないのが辛い。仕事をして家に帰ってきた後は大抵ダラダラと時間を過ごしており、ニコニコ動画を延々と見たりTwitterを延々と眺めていたりした。休日もそんな感じで、あまり積極的に動こうとしなかった。アニメもけものフレンズシンフォギアを見たくらいだし、全体的に無気力に過ごしていたように思う。仕事の方はそれなりにうまく行ったものの、人生的には1年を無駄に使ったような気がする……。 特にプログラミングに関して体系的なインプットをサボっているのがかなり怖い。プログラミングで生きていきたいと言っているのに勉強を怠ったら死んでしまう。

来年からはアメリカに移住するし、もっと有意義に人生を使うようにしたい。

海外引っ越しの手順

引っ越しに限った話ではないけど段取りが悪く、面倒なことが起きたり無意味にストレスを溜めたりしていたので、次回以降の引っ越しと他の人のためにメモしておく。 大まかに締め切りの早い順から書いていくので、上から順に消化していくとつつがなく引っ越せるはず。国外から戻ってくるときは適当に逆操作を取れば良いのでは(未検証)。

何か思い出したら追記される可能性があります。

  • 食品の処分
  • 粗大ごみの処分
  • 退去の連絡
  • 使える大型家具の処分
  • 引っ越し業者の手配
  • 不燃ごみの処分
  • リサイクルショップに託す
  • NHKの解約
  • 可燃ごみの処分
  • 郵便・宅配便の転送設定
  • 銀行口座・証券口座等の住所変更
  • 送るものの梱包
  • インフラの解約
  • 転居届の提出
  • Tips
  • あとがき
続きを読む

アメリカ移住します

2018年1月の第2週あたりから、アメリカはテキサス州のAustinで働きます。会社はIndeedのままです(一応日本法人のIndeed Japan KKからUSのIndeed Inc.へ移ることにはなる)。まあAustinに永住するつもりはないので、2〜3年で帰ってくるとは思います。

用がある各位はアメリカ行く前に会いましょう。あとシンフォギアライブのため、3月頃に一旦帰ってくるかもしれません。