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月頃に一旦帰ってくるかもしれません。

ICFPC2017

ICFPC2017にチームAdlersprungで参加しました。Adlersprungとはドイツ語でEagle Jumpという意味です。どこかで聞いたような名詞ですね。メンバーは

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

の6人でした。去年は8人いたけど、人数が多すぎて話がまとまらなかったりして面倒だったので少なくしました。それでも一般的なICFPCチームよりは多いという説があります。

リポジトリはこちら: github.com

概要

今年の問題は、対戦型ゲームのAIを作るというものでした。グラフGが与えられ、一人ずつ交互に辺を取って自分の色で塗っていきます。Gに含まれる頂点の部分集合L (Lambda Mine)ではラムダが産出するため重要度が高く、この頂点を起点としたパスを作るのが目的となります。具体的には、∀(l, v) ∈ L×V(G)について、(lからvまで自分の色の辺だけを通って到達できるか ? 1 : 0) × (lからvまでのG上での最短経路長)2を合計したものが点数となります。mkutがTicket to Rideだと言ってたけど、自分は1回しかこのゲームをやったことがないので、どれくらい似ているかは不明です。

自分はAI作成にはほとんど関わらず、ひたすらインフラをいじって遊んでいました。第一目標はもちろん優勝ですが、裏目標として

あたりを想定していました。

以下作ったものと知見です。

Ka Dingel

先史文明期の遺産であるところのJenkinsです。なんだかんだ言ってプロセスをWebインターフェースから走らせられたり、手軽にログの残るcronを仕掛けられたりするので重宝します。中にはたくさんのフレンズと数人のイーグルジャンプ社員が住んでいました。

f:id:osa_k:20170813220137p:plain

GitHubにpushされた変更はとりあえず自動でビルドしておくという運用になっていたのですが、ビルド結果をコミットメッセージとともにSlackで通知するようなスクリプトをpepsin_amylaseが書いたところ、Slackの治安が終わりました。

f:id:osa_k:20170813225054p:plain

Sandstar

AI担当のyuustiとkawateaはC++しか書かずJSONを読めない(boostがあるので頑張れば読めるはずだけどよく知らない)ので、触れたJSONをいわゆる競プロ形式に変換するRubyスクリプトが生まれ、Sandstarと名付けられました。いろいろな仕様をこのスクリプトで巻き取った(頂点IDは0〜N-1の連番とは限らない、ゲームの状態はシリアライズして保存する必要があるためグラフの管理をする等)ので地味に面倒くさく、Rubyで書き始めてしばらくしてから後悔しました。一度書き終えてからは大きなバグもなく安定していたものの、終盤ではこいつのI/OがボトルネックになってTLEする可能性を指摘されて冷や汗をかいた(結局AI側の高速化によって回避された)ので、こういう用途にスクリプト言語を使うべきではないなぁと思いました。Rustで書いていれば……。

Alpaca

ジャパリカフェ前に生えている草をむしることで、対戦結果を可視化してくれるフレンズです。Sandstarを書いていたらpepsin_amylaseが対戦をぶん回すためのスクリプトFennecと呼ばれていた)を書き上げていたので、じゃあ後はビジュアライザだなーということで書きました。Riot.jsがSVGを特殊なやり方でハンドルする(riot-cxのようなattribute名にしないとコンソールがエラーで溢れる)ので少しハマったものの、概ねサクサクと書き上がりました。Riot.jsいいですね。Intellijで正しくハイライトできないけど……。

AIをあまり触らなかったことの弊害で、あると超便利系の機能がAI班に言われるまで実装がほったらかしになっていたりして、相変わらずうまく行かないなぁと思いました。ユーザが6人であってもドッグフィーディングしないと分からないものですね。

f:id:osa_k:20170813221806p:plain

Time Vault

ターンを溜めるすごいアーティファクトです。2日目が終わるあたりでSplurgeというルールが追加され、Sandstarの修正は済んだもののあまりやることがなくて暇だったので、機能テストがてらSplurgeを使うAIを実装しました。これは通常1ターンに1本しか辺を塗れないところ、直前Nターンをパスしておくと最大N+1本からなるパスを一気に塗れるというもので、一気に高得点が入るのでロマンがあります。本物のTime Vaultは自力では1ターンしか溜められないけどゆるして。

基本的には一番遠いLambda同士を一気に繋げるようになるまでターンを溜めて解放するというAIです。無理だったら一番点数の増えそうな辺を取ります。当時はすでにmkutのArtemis(めっちゃつよい)とkawateaのkawatea-v3(めっちゃつよい)が争っている魔界になっており、疎なグラフでターンを溜めていると橋を取られて死ぬという状況だったのであまり成果は残りませんでした。

Kaban

知能が発達しているためMySQLを読み書きできます。2日目の半ばあたりまでは対戦のログはすべてFS上に生のJSONメタデータの組み合わせで保存されていたのですが、ランダムで大量のマッチをスケジュールするFennecが現れて、これAlpacaのトップページを表示するたびに数千ファイルを舐めることになるけど大丈夫か、みたいになったのでログをMySQLに突っ込むことになりました。最終的にMySQLだったから良かったという処理はしなかったので、かなり無駄だった気がします。MySQLにするとローカルでのデバッグがクッソ面倒くさくなるし……。あとgo getがちゃんと動くようなディレクトリ構成がわからずハマりました。今も良く分かっておらず、雰囲気でディレクトリを決めてGOPATH=pwd go getしたら動きました。

総括

やったことはこんな感じです。1日目はひたすらインフラを整えていて、3日目はやることないのでTime Vaultを強くしていたのですが、2日目に何やったか完全に覚えていません。pepsin_amylaseから飛んでくるインフラの拡張要求に対応してたのかな……。

目標は概ね達成できたと思います。自己対戦インフラがちゃんと組めたので2015年よりは成長してるかなと思いましたが、Unagiは数百CPUとか回してたらしいので、まだ思い切りが足りなかったかなと思います。 あっ思い出した、CPUめっちゃ増やそうとしたらGCPのQuotaにぶち当たって諦めたんだった。増やして〜ってリクエスト送ったら増やしてくれたんではないかとは思いますが、そんなにたくさんいらんやろと言われたのでそっか〜と思って16CPUで満足してしまった。

Riot.jsはいいですね(2度目)。個人プロジェクトでWebpackなんか使いたくないし、なんならBabelとかBrowserifyも使いたくないので、ファイル1個置いておくだけでお手軽にWeb Componentsライクなタグとかモジュール化の恩恵を受けられるのはかなり良い。

インフラはやはり日頃から慣れ親しんでいるかによって、ハマったときの対応力が全然違うなぁと思いました。Jenkinsからnohupでdaemonを起動しようとしたら普通に殺されるという現象もしばらく気付かなかったし、気付いてからsystemd対応するのも結構時間がかかった。ユーザ単位のsystemd使おうとしてsudoするとXDG_RUNTIME_DIRが定義されなくて死ぬのとか、前もやったのに全く覚えていなかった。

コンテストそのものは、問題文を読んだ瞬間はLambda Lifterの再来かと思って身構えたけど、やってみると意外と面白かったです。AIに関わってないとはいえ、mkutやkawateaやyuustiが書いたAIの挙動を見比べているだけでも楽しかった。ただ、公式のスコアボードがないのはコンテスト感がないというか、何と戦っているのか分からないし自分がどれくらいうまくやっているのかも推測できないので、ゲーム性を下げてしまっていたと思います。

退職しました

f:id:osa_k:20170630235314p:plain

6月30日付で2年と3ヶ月勤めたリクルートホールディングスを退職しました。7月1日からはグループ会社のIndeed Japan勤務になります。

そもそも元がリクルートに籍を置きつつIndeedでコードを書くという雇用形態だったので、何が変わるかというと何も変わらないと思います。給与は上がった。リクルートで加入していた諸々について、転籍に伴って書類を処理する必要が生じて精神が終わった。それくらいです。あとこれからは、勤めてる会社を説明する時に無駄なステップが省略できるようになる(籍はリクルートだけどIndeedで働いてるみたいな意味不明なマクラがいらなくなる)ので会話が楽になりますね。

せっかくだし退職エントリを書こうと思ったけど、想像以上に書くことがなかった。

メキシコに行った

今年の目標1.5/10。

せっかくアメリカへ出張したので、帰りがけにメキシコシティへ旅行した。

治安

街は汚いけど治安が悪いということはなく、夜に歩いていてもスリに遭ったり事件に巻き込まれたりということはなかった。Doctres等の危険と言われているエリアは避けていたものの、観光地なだけあって、普通に生活する分には大きな問題にはならなそうだと感じた。 交通マナーは悪い。自動車から20cm程度離れていれば安全だと思っているのか、ギリギリの間隔で追い越しや割り込みをかけてくるし、曲がっている途中の車を曲がりながら追い越したりする。対象が人間でも同じで、横断歩道を渡っていても歩行者ギリギリまで寄って止まったり、歩行者のすぐ側を徐行しないで走り抜けていったりする。また、小さい交差点や夕方のラッシュ時はめちゃくちゃに混んでおり、交差点の中まで自動車がひしめき合っているため、歩行者は車の間をぬうように横断する必要がある。その状態でも少し隙間が開くと平気で間隔を詰めてくる。最初はかなり怖かったが、現地の人の真似をして2,3日過ごしていたら慣れた。

生活

言葉はほぼスペイン語しか通じない。英語と似ているので、単語をいくつか覚えれば喋ることはそんなに難しくないが、聞き取るのは付け焼き刃ではなかなか難しい。会計等で数を聞き取ることはできるようになったが、ちょっと複雑なことを言われるとすぐに会話できなくなる程度にしかならなかった。 とにかくどこでもチップを払う必要がある。例外はコンビニや観光地の物売りくらいで、だいたいの場所では会計の後にチップを置いて出るか、レジに置いてあるチップ入れにチップを入れる。クレジットカードだとアメリカと同じでチップ欄を埋めれば良いのだが、メキシコはクレジットカードを使えないところが多いと聞いていたので基本的に現金で払うようにしていたため、最初は払い方が分からずに戸惑った。常に小銭を持っておく必要がある。 移動はUberが便利だった。タクシーはスペイン語が話せないとトラブルになることが多いらしいので、全く喋らなくても良いのは安心感がある。

例によってホテルのクリーニングは高いので、洗濯は洗濯屋を使った。コインランドリーの文化はないらしく、代わりにあちこちに洗濯屋がある。自分の使ったところは3kgで65ペソだった。洗濯物を渡して料金を先払いすると引換券を渡してくれて、指定の時間以降に引き取りに行けばよいの で、これもスペイン語が怪しくても使える。早めにやってくれとか交渉したいんだったら別だけど……。

街中

ビジネスエリアは近代的なビルが建っており、街も比較的きれいに保たれている。それ以外の箇所はあまりきれいではなく、屋台が至るところに出ていることもあり、生ゴミのような臭いがある。道路や歩道は質が悪く、よく凸凹や割れ目があったり、砂利がむき出しになっていたりする上、場所によっては水はけが悪く、雨の後は巨大な水たまりができていたりする。また、雑に道路を掘り返して工事している光景をよく見た。中でも街中の細い道をまるごと掘り返して通行止めにし、自動車はおろか歩行者も横断できなくなっているのはメキシコならではの雑さを感じた。

食事

街中の至るところに屋台が出ていて、10〜50ペソ(1ペソはおよそ6円)で大体のものが食べられる。建物に構えている店はもう少し高く50〜150ペソ程度、もっと高級なレストランでは300〜500ペソが相場になる。味付けは全体的に素材の味+強めの塩味というものが多く、サルサ等で味を調整することが想定されているように感じる。実際、食事をすると必ず数種類のサルサが器に入って出てくる。食事を頼むと大抵トルティーヤが付いてくるので、適当に丸めてパンのように食べる。

タコス

アメリカのタコスと異なり、大抵具は1種類しか入らない。任意で玉ねぎ、レタス、パクチー等をトッピングできることもある。

ポゾーレ(大粒のとうもろこしの入った、ダシの強いスープ)

モーレ(カカオのソース)料理

エンチラーダ

目玉焼き

サルサソースがかかっていて、半熟の黄身とよく合う。

2枚目は小さい鉄鍋に目玉焼きが入っていて、その上から鍋いっぱいにソースがかけられている。

プルケ

東日本大震災の影響でまどか☆マギカの最終話が3話連続放送になった当時、「謎の白い液体」としてCMで流れまくり深い印象を残したアレ。これを蒸留するとテキーラ(メスカル)になる。味はマッコリやどぶろくのクセが強くなった感じで、蜂蜜酒やワインに方向性が似ている。

個人的にはあまりメキシコの味付けが舌に合わず、Tex-Mexのようにアレンジされているものの方が食べやすいと感じた。

また、数日滞在していたら下痢になった。日中は活動できる程度には収まっていたのでしばらく様子を見ていたのだが、夜ごとに腹痛と水下痢を繰り返すようになり、流石にまずいと思って薬局でTredaという薬を買った(下痢の薬をくれと言ったらこれが出てきた)。この薬はよく効いて、飲みながら1日安静にしていたら完全に治った。後で調べたところ、外食の生野菜は飲用不適の水道水で洗ってある可能性があり、食中毒の感染源になるらしい。発症した日は生の玉ねぎの入った屋台のタコスや、レタスとトマトの入ったハンバーガーを食べていたので、疲労と重なって発症したのではないかと思う。

観光

宿泊していたホテルが提携している観光ツアーがあったので申し込み、周辺都市を観光した。

テオティワカン遺跡

謎の滅亡を遂げた古代文明の遺跡。どことなくイタリアのポンペイ遺跡を思い出す。

でかいピラミッドがあり、登ることができる。

遠くの火山(名前不明)がたまに噴火し、白煙を噴き上げているのが見えた。

プエブラ

メキシコシティ周辺もいろいろある。

ろう人形館

歩いていたら見つけた。結構リアルな上、量があるので面白い。

人類史博物館

アステカやマヤ文明を初めとした、メキシコの歴史を所蔵している博物館。

チャペルテック城

城。英語の案内がなく、歴史的な位置付けはよく分からなかった……。

ルチャリブレ(メキシコのプロレス)

30分弱の3本先取マッチが6本あった。日本のプロレスは知らないが、あまりガチンコ感がなく、殴りも受けもかなり手加減しているように見えた。でも面白い。

まとめ

国内旅行と同じようなノリで雑に歩き回ったり歩き回らなかったりしたが、スペイン語が話せるともっと楽しめると思った。食事が合わないのは少し辛いけど、人によるのかもしれない。