月が綺麗ですね

新しい職場で仕事がはじまって、毎日英語に悩まされています。必要とされる会話能力にここまでギャップがあるとは…もはやチームでは僕だけ小学生扱いです。何とか技術の方で信頼をリカバリするしかありません。

もっと早くこう、人類が第2・第3言語を覚えることなくコミュニケーションを取れる時代は来ないものでしょうか。ほんやくコンニャクというんですか?令和時代にはもっとよい例えがあるかも知れませんが、とにかくお互いにそれと意識しなくとも意思疎通を図りたい。

もっと言うなれば、それぞれの言語でそのまま伝えてそれを各自翻訳というのがそもそもまどろっこしい。言葉として伝達する以上、情報のロスや誤解の余地があったりするわけですね。なんとか意思というか情念そのものを伝えられないだろうかと思います。これは適切な喩えではないかも知れませんが、プログラミング言語にも抽象構文木というものがありますね。各言語の細かい文法や作法を取り払い、意味情報のみを抽象化した木構造です。これをそのまま伝えてそのまま解釈してもらえたら誤解の余地はかなり減るのではないか、などと思うわけですね。

凄く古いのですが、僕が高校生のときにファイナルファンタジーXというゲームがありました。そのエンディングで、主人公ティーダが消えてしまう前に、ヒロインのユウナに向かって

「ザナルカンド案内できなくて、ごめんな」

っていうと、ユウナが

「…ありがとう」

って答えて、そのまま抱きしめるシーンがあるんですが、制作陣のインタビューによれば、北米版が出る際にアメリカ人スタッフに

「ここは "Thank you" はおかしいです」

と指摘されて "I love you" と訳されるんですね。これに対してプロデューサーが

「あの『ありがとう』はそういう意味なので、これでよい」

とOKを出すんです。これは僕の中で非常に強い印象として残っています。言葉や表現はまったく異なるのに、伝えたい情感は同じなんですね。 この「ありがとう」から "I love you" は、2020年の素晴らしい機械翻訳をもってしても出てこないのではないかと考えます。

qiita.com

何年か前にこの記事を拝読して、最近ではディープラーニングを使った機械翻訳がホットな話題であると知りました。 僕は自然言語処理はまったく専門ではないので、正しく理解できているか甚だ疑問ではありますが、色々なサイトを読む限り、このRNNというのは入力層と出力層の間の中間層の結果も一緒に次の入力に伝えることで、いわば「コンテキスト」を理解した上で次に出現する可能性の高い単語を選ぶことができるものなのかなと考えました。

そうするとやはり、このAIから "I love you" を引き出すためには、この会話をしている二人の関係性、話している状況、お互いの感情の高まりなどをコンテキストとして伝えなくてはなりません。そのようなことは現実的に可能なのでしょうか。それともすでに先行した研究があるのだろうか。

折しも、大学院の単位はほとんど取りきってこれから1年と数ヶ月使って修士研究に取り掛かるところで、出願時に教授と話したテーマとこの1年弱で学んできたことを総合してテーマを絞ろうかという時期であります。かねてより機械学習にも自然言語処理にも興味があったので、当初考えていた研究テーマにこのような要素を加えてみても面白いかもしれないな、などと考えておりました。気になったキーワードで論文を調べてみようと思います。

コンパイラ自然言語処理ディープラーニングも専門ではない大学院生の妄想でした。おかしなことを申していたらご指摘ください。ほいでは。

AmazonのSoftware Development Engineerになった

AmazonのSoftware Development Engineerになりました。

久しぶりにプログラミングが職責の第一義であるロールに戻ってまいりました。クビにならないように必死で頑張りたいと思います。詳しいことはまた追々。

コープデリの宅食よいです

TL;DR

コープデリデイリーコープとてもよいので、ごはんを作る暇がない人、外に出たくない人は活用しまくるとよいと思いました。

ロックダウンやばい

緊急事態宣言からひと月が経ちました。我が家は6歳と2歳のふたりの子供の面倒をみながら、夫婦とも在宅勤務しています。これがまあヤバイ。成立してないです。気が狂いそうです。

在宅勤務それ自体は問題ではありません。我がチームは元々裁量労働で、特に必要性のないときは1年前から積極的にWFHしていました。ただそれは、あくまで子供たちが家に居ないから成立していたわけですね。いまは、早起きして人気がまばらなうちに子供らを散歩につれていき、日中はひたすら仕事。夕方早めに切り上げられる日には夕食前にもう一度お散歩にいく。それ以外はひたすら家にこもる生活です。

子供たちも不満ですね。「はい!起きて!走って!(パッジェーロ…パッジェーロ)」って、犬じゃないんだから。もっとこう、ムードってもんがあるでしょうと。なので折角外出しようと言っても「今日は行かない!」とヘソを曲げ、案の定2時間後には「おぞどいぎだああい😭」と発狂するわけです。ところがどっこい、我らは勤務中なんですよね。以前と変わらぬお給料をいただいているので必死です。子供らにいちいち構っていられないので、求められるままに、YouTubeで誰かがアンパンマンを動かすだけの虚無を一日中流すことになります。うーん、困った。

子供らのごはんがやばい

不思議でしょうがないんですが、完全WFHになったことで以前より却って忙しくなりました。これは仮に子供らがいなくても、です。

なんででしょうね。起きて即始業して終業時間ギリギリまで働けるから?MTG10秒前まで前のMTG出られるから?とにかく忙しい。そこで困るのが子供たちのごはんです。とにかく針の穴を通すようなスケジュールで仕事をしているので、子供たちのごはんを作る暇がありません。毎日西友のみなさんのお墨付きカップ焼きそばを食わすわけにもいきません。Uber Eatsでもいいんですが、ファミレスやマクドばかりは飽きちゃうし、塩分とか心配です。何より時間が非常にコントロールしづらい。

コープデリ

はい!前置きが長くなりました。そこでコープデリです。簡単にいうと、生協の宅食サービスです。これがすごい。

f:id:fushiroyama:20200505142012p:plain
デイリーコープ

これが実際の画面です。見てください。いくつかあるメニューから、好きなおかずやお弁当を、好きな日(月〜金)、好きな個数で選んで注文することができます。 お気づきかもしれませんが、今週はゴールデンウィークであるにも関わらず月〜金ならいつもどおりお弁当を届けてくれます。

これが実際のお弁当です。おかずが多い!野菜が多い!てかうまい! 我が家では「デイリーコープ」という、毎日でも注文できる1プランを使っています。お弁当は「舞菜おかず」「舞菜しっかりおかず」「舞菜御膳」「生野菜サラダ」をそれぞれ1つずつ、計4種類を月〜金までお願いしています。我が家では取っていませんが、減塩メニューもあるので嬉しいですね。うちは毎日午前11時ごろ届けに来てくれるので、お弁当の数を×2にしたら晩ごはんも作らなくてよいかもしれません2

お値段は、おかずが500〜600円ほど、これにサラダで一日あたり2000円ぐらいです。これを高いとみるか安いとみるかはご家庭によると思いますが3、我が家には非常にありがたいです。これで、夫婦共働きしつつ栄養バランスも塩分濃度もきちんとしたものをチンするだけで出せるわけですから。お昼ごはんを食べさせるときの罪悪感がなくなりました。

加入が鬼門

ということで興味を持った人は是非利用してみてください。共働きに限らず、このご時世ひとり暮らしでもガンガン利用すべきだと思います。

で、加入がちょっと面倒です。僕は次のステップで加入しましたが、これより効率的なフローももしかしたらあるかもしれません。

  1. デイリーコープの「組合員でない方へ」から資料請求へ飛んで、コメントに組合員になりたい旨書いて送信する4
  2. 電話がかかってくる。「ご自宅に伺って説明を…」と言われるので拒否すると加入フォームが送られてくる
  3. 500円組合費をデポジットし、数日すると組合員カードが送られてくる
  4. インターネットから注文するためにeフレンズに加入する
  5. ログインしても、なぜか数日間デイリーコープにジャンプできない5
  6. デイリーコープが押せるようになっても、そこから資料請求のページにしか行けないので、今度は組合員番号を入れてデイリーコープに加入したいとコメントを送る…
  7. 電話がかかってくる。「ご自宅に伺って説明を…」と言われるので拒否すると「じゃあこれで加入としますね」と言われる。良いのかよ。
  8. 翌週になるとeフレンズから注文ができるようになっている
  9. 翌々週から届く

一応公式のフローはこれっぽいです。

とにかく、2回も電話がかかってきて飲みサーの大学生ばりに直接会いたがってくるので、それは「時勢柄、対面で人と会うのを避けておりますので…」とか何とか言っておくと次のイベントに進むことができますので耐えましょう。

まとめ

とにかく、届き始めたら大満足です。最初に一週間の配送スケジュールを立てると、特に変更がない限りそのスケジュールで次の週からずっと届きます。お弁当は発泡スチロールに保冷剤入りで、さらに発泡スチロールを保冷バッグで保護した上で届けられます。うちはオートロックですが、管理人さんに声をかけて玄関先に前日の発泡スチロールを出しておけば、勝手にコミュニケーションして玄関先で交換しておいてくれます。お弁当を作ってくれている方、配送員さんに感謝ですね!

望むらくは、コープデリのシステムを運営しておられる方がこれを目にしたら、すべてのフローをオンライン化してくださるとありがたいです。


  1. 毎日注文しなければならないわけではありません。週3から利用可能と書いてあるようです。

  2. 何時に来るというのは保証されていないそうです。飽くまでサービスとしては「夕食宅配」らしいので注意してください。

  3. 正直、マクドすき家でも家族分注文すると2600円ぐらいかかっていたので、金銭的にも普通に安いと思っています。

  4. どうしても直接加入申し込みをする手順が見当たらなかった…

  5. FAQによると加入直後に選べないのは仕様っぽいので、週次バッチが走っているのか、ひょっとすると人力で有効化しているのかもしれない…

ネットが遅いのでIPv6 IPoE + DS-Liteにした

TL;DR

BB.exciteコネクト(IPoE接続プラン)1DS-Lite対応ルータで月額700円(税抜)でインターネットが速くなったのでフレッツ光が遅い人は試してみてください。

IPv4 PPPoEが遅い

本格的に在宅勤務が始まったが、自宅のネットが遅すぎて業務に支障をきたしていた。

どうもIPv4 PPPoEが詰まっているようだ。PPPoEはネットワーク終端装置という部分で輻輳しやすいらしい。 いまはIPv6 IPoEというものが利用可能で、これはGWR(GateWay Router)を介してインターネットに出ていくいわばLANそのものであり高速だとか2。 "PPPoE IPoE" とかでググるとそれっぽいポンチ絵が出てくるので見てみてください。

IPv6 IPoEを契約する

電話したり契約書を郵送したりしなくてもIPoEを試せるプロバイダはBB.exciteINTERLINKを見つけた。他にもあると思うので自分だけのプロバイダを見つけるんじゃ。

PPPoEのように接続認証が利用できないのでどうするのかと思ったら、フレッツ光ネクストが開通したときに郵送されてくる「お客さまID」と「アクセスキー」をプロバイダに通知することで直接接続できるようだ。的外れな例えかもしれないけど、CATVインターネット接続はWAN側インタフェースに直接IPが割り当てられるのでプロバイダにMACアドレスを通知すると思うんだけど、あんな感じのイメージで捉えた。 で、郵送でしか送られてこない書類なんてもちろん失くしてしまったので116116に電話して再度郵送してもらった。今度はちゃんとスキャンしてDropboxに保存しておいた。

無事お客さまIDとアクセスキーが届いたらプロバイダでIPoE契約をする。1時間〜半日ほどで使えるようになるようだ。待っている間も開通後も既存のPPPoE接続に一切の影響がないので気軽に申し込むことが可能。

DS-Lite (IPv4 over IPv6)でIPv4も利用する

IPoEが開通した時点でIPv6でサービス提供しているサービスはすべて利用できる。YouTubeNetflixIPv6で利用できるし凄く速い。 ただ、IPv4でしか利用できないサービスは一切利用できない。ここでDS-Liteという技術を利用して、IPv6パケットはそのままIPv6インターネットへ、IPv4パケットはIPv6カプセル化されてAFTRと呼ばれる出口でNAT変換されてIPv4インターネットへ出ていくようにすることができる。つまりきちんと設定さえしてしまえば、利用側はIPv6だのIPv4だの意識することなくインターネットに接続できるわけだ。これはGeekなページのDS-Liteの仕組みが図もあってわかりやすかった。

DS-Liteを利用するには対応ルータが必要となる。プロバイダのIPoE契約時に必ず対応ルータの一覧があると思うけど、手持ちのRTX1100/RTX1200ともにDS-LiteのためのIPIPトンネル設定が可能だったので追加コストゼロだった。まだ持ってなくてYAMAHAルータの設定に抵抗がない方は、RTX1100は中古で3000円ほど、RTX1200は中古で10000円ほどで手に入ったりするのでオススメ(ホンマか?)

ということで非常に速くなりました!朝から晩まで、これまで特に使い物にならなかった夜9-12時ぐらいのピークタイムも含めて上下とも安定して70Mbps以上出ます3

RTX1100/RTX1200でDS-Liteの設定

以下、RTX1100/RTX1200での設定例。いずれでも動作確認した。非常に簡単。

[RTX1200] # show config
# RTX1200 Rev.10.01.78 (Wed Nov 13 16:29:42 2019)
# Memory 128Mbytes, 3LAN, 1BRI
# main:  RTX1200 ver=b0
# Reporting Date: Apr 7 23:35:59 2020
administrator password *
login user xxxx *
security class 2 off off off
console character ascii
console prompt "[RTX1200] "
ip route default gateway tunnel 1
ipv6 prefix 1 ra-prefix@lan2::/64
ip lan1 address 192.168.11.1/24
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
ipv6 lan2 secure filter in 1010 1011 1012 2000
ipv6 lan2 secure filter out 3000 dynamic 100 101 102 103 104 105 106
ipv6 lan2 dhcp service client ir=on
tunnel select 1
 tunnel name DS-Lite
 tunnel encapsulation ipip
 tunnel endpoint address 2404:8e00::feed:100
 tunnel enable 1
ipv6 filter 1010 pass * * icmp6 * *
ipv6 filter 1011 pass * * tcp * ident
ipv6 filter 1012 pass * * udp * 546
ipv6 filter 2000 reject * * * * *
ipv6 filter 3000 pass * * * * *
ipv6 filter dynamic 100 * * ftp
ipv6 filter dynamic 101 * * domain
ipv6 filter dynamic 102 * * www
ipv6 filter dynamic 103 * * smtp
ipv6 filter dynamic 104 * * pop3
ipv6 filter dynamic 105 * * tcp
ipv6 filter dynamic 106 * * udp
telnetd service off
dhcp service server
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 dhcp lan2
sshd service on
sshd host lan1
sshd host key generate *

ほとんどそのままフレッツ光ネクスト インターネット(IPv6 IPoE)接続 : コマンド設定DS-Lite(transix)でインターネット接続 : コマンド設定あたりから持ってきただけ。例によって、これは情報提供のみを目的としているので自己責任でご利用ください。

「AFTRのアドレス」という部分はインターリンクのFAQが参考になるけど、NTT東日本エリアかNTT西日本エリアかによって接続先が違う。このIPv6アドレスからInternet Multifeedのtransixを経由してIPv4に出ていく。診断くんとかで確かめるとtransixのsharedなIPv4アドレスに変換されていることが確認できる。

AFTRのアドレスは2つ掲載されているが、RTX1100とDS-Liteで高速化(ひかり電話なし)というサイトでkeepaliveを使って8.8.8.8へのpingの反応をみてもう片方にフォールバックする方法が書かれていて、これはオシャレだと思った。まあ片方だけでも特段困ることはないでしょう。

拠点間VPN自宅サーバをどうするか

で、今更気付いたけど、IPoE + DS-LiteではこれまでのようにネットボランチDNS4を利用できない。

これまではPPPoE接続してWAN側にIPv4グローバルIPを割り当てるppインタフェースをnetvolante-dnsでホスト名に紐付けることで名前解決していた。このホスト名をCNAMEレコードでエイリアスし、ルータの内側にあるホストにStatic NATでパケットを向けてやると、あたかも固定IPの自宅サーバのようなことが安価に実現できていたのだ。

ところが前述の通り、DS-LiteではtransixのNAT経由でIPv4インターネットに接続するので、サーバとしてIPv4の接続を受け入れるのが不可能になる。素晴らしいことに、ネットボランチDNS自体はすでにIPv6対応をしているが、利用できるのはRTX1210等の一部ルータのみに限られる。手持ちのRTX1100/RTX1200とも非対象機種となっている。誠に残念だ…

あいや、IPoEだけではなくてPPPoE契約も残して、IPoE + DS-LiteしつつPPPoE接続もして要するにこれまと全く同じ方法でネットボランチDNSを利用することは可能だ。ただ、自宅サーバの目的のため"だけ"にPPPoEの料金を支払いつづけるのはちょっともったいない気がする。とはいえ、自宅サーバはどうでもいいとして、実家と東京、東京と米国の拠点間VPNは紛れもなくこのネットボランチDNSを使って互いのホストを指定していたので、これが利用できなくなるのはかなりの痛手だ。

IPv6の固定IPを利用できるサービスなどもあるらしいと教えていただいたので、良い方法がないかもう少し色々考えてみたい。いいアイデアがあったら是非教えてください。


  1. 別にINTERLINKのZOOT NATIVEでもよい。こちらは月額1000円(税抜)

  2. 結局今は利用者が少ないから速いだけということなのか?専門家ではないので細かいところは許してくだされ。

  3. うちはVDSLなので100Mbpsで頭打ちになっている。その分安いので不満はない。

  4. YAMAHAが提供するDynamic DNSのようなサービス。これを無料で使わせてもらえるのもYAMAHAルータを使う大きな魅力。

AWS Japanで1年経った

4月1日でAWS Japanに入って1年が経ちました。とても早かったです。

ネットワークエンジニアとしてキャリアが始まり、自宅サーバに固定IPを8本引いてXenKVMで仮想インスタンスをホストして知人に有料で貸してたら海の向こうからやってきたEC2の登場に腰を抜かし、その後バックエンドエンジニアになり、Androidエンジニアになり、10年の時を経てAWSを使ったお仕事をしているのは感慨深いものがあります。

AWS Japanで働いていてよかったことは沢山ありますが、これまでとは比較にならない深度でAWSのことを理解し、様々な生のユースケースに触れられるところです。AWSのスキルは言ってしまえばいちクラウドベンダの知識に過ぎませんが、それが世界中で使われているので事実上世界で通用するスキルを身に着けていることになるのは素晴らしいことです。

僕のキャリアはスタートアップといわゆるウェブ系企業を渡り歩いてきたので、比較的シンプルな構成のアプリケーションに関わることが多かったですが、AWS Japanの技術者として色々なお客様と仕事をしていると、かつての自分には想像もつかなかったような難しい要件を求められることが少なくありません。その時に、どんな難しい場所にもぴったり合うブロックのピースを見つけられるのは、今なおAWSをおいて他にないというべき境地にあると感じます。

21世紀も20年代に突入し、エンジニアとクラウドの関わり方もまた少しずつ変わりつつあります。今年はぜひとも、自分の最大の強みであるモバイル開発の観点からもAWSの良さを伝えていけたらなと考えています。今年も宜しくお願いいたします!

そうそう、僕のチームは次の2ポジションを熱烈募集しています。ご興味のお有りの方は是非お声がけください!それでは。

www.amazon.jobs

www.amazon.jobs

心のローパスフィルタ

地殻を毛細血管のごとく駆け巡る光ファイバが空間の垣根を取り去った結果、四半世紀前なら触れることすらなかった情報に晒されるようになった。 これは幸福でも不幸でもある。

観測する限り、多くの人は自分の置かれている環境の平均値で構成されている。朱に交われば赤くなるというやつだ。 これは環境のお陰で自分が周りのレベルまで引き上げられる例も、自分自身がいわば浸透圧の合った塩分濃度に自然と落ち着く例もあるだろう。 とにかく、環境から著しく外れた存在に触れるには周囲の人間を何ホップもしなければならなかった。

ところがインターネットが魔界の界峡トンネルのように突然1ホップで次元の違う人々に出会うことを可能にしてしまった。その結果、ブラウザ越しの玄関先にはS級妖怪がゴロゴロ歩いている。テクノロジーの進化はいつも喜ばしい。問題はこれにどう向き合うかだ。

ある種の人間にとって―まあこれは僕のことなのだが―半径30m以内にいる*ように見える*人たちは、自分が到達すべき平均目標に見えてしまうことがある。こうなると不幸だ。本来は界峡トンネルを越えないと出会うことすらできなかった文字通り次元の違う存在が当然にできることを、僕はどうして努力してもなお達成できないのだろうと思い悩むことになる。立っている土台も、越えてきた屍の数も、これから対峙する課題のスケール感も違うにも関わらずだ。

結局の所、昔からお母さんに言われる「他所はよそ、家はうち」に行き着く。どこかで心のローパスフィルタで余りにも高い理想をカットしないと自分の足元もおぼつかない。インターネットは簡単に他人の人生を摂取することができ、それはアルコールのようなエンターテインメント性と常習性をもたらすが、あくまで他人の物語だ。慎ましくも愛らしい自分の人生を、諦めるのではなく、前向きに受け入れなければならない。自分の他に自分の人生の面倒を見てくれる人はいないのだから。そんなことを考えていた。

肉体と精神の不可分性

一週間ほど出張で非常に寒い地域にいて、不運にもインフルエンザに罹患してしまい寝込んでいた。ようやく帰国できたが、身体的にも精神的にも参ってしまった。

 

元々体力には自信があって、この10年ぐらいインフルはおろか風邪で休むことすら稀だったし、昨年9月で酒もやめたので「二日酔いで翌日を棒に振る」みたいな現象もまったくなくなって、健康とは完全にコントローラブルなものになっていたはずだった。

 

ところがいざ39℃の熱で数日間夢うつつの生活を送ると、健康というのがどれほど得難いものであったかという当たり前の事実を思い知らされた。とりわけ、肉体的健康とは完全に独立して存在していると思っていた精神的健康というものが、肉体的な衰弱によりあっさりと共倒れになったのは大きなショックだった。知力は体力に依存しているのだ。考えもしなかった。

 

久しぶりに出社して懸垂機にぶら下がってみると、果たして体が持ち上がらない。あれだけ毎日取り組んでいたことが、砂上の楼閣ように一夜にして失われてしまった。また、毎朝3時に起きてコツコツつづけていたアルゴリズムクイズと数学も、いまは何をやっていたのか思い出せないほどだ。特に極度に頭を使う作業が先々週ぐらいから絶不調で、一体どうなってしまったのか自分でも呆然としていたのだが、思えば病気の兆候だったのだろう。体力的にはようやく回復したが、まだ頭の中は蜘蛛の巣がかかったように茫漠としている。いまも言葉がうまく出てこない。

 

これまで、自分に対する投資はもっともROIが高いという信念をもって絶えず勉強し続けてきた。結果的に、努力はすべてを叶えないが、自分がなりたいソフトウェア技術者ぐらいはかならず努力でたどり着けるという確信を持つに至った。ところが、このような前提は肉体的な健康というものに大きく依存していることに図らずも気付かされた。これから30代後半を過ごし、40代に突入するにあたって、この基盤はますます脅かされる可能性が高い。これまでのように、ただ盲目的に自分のやれることをやってさえいればどこかにたどり着けるという確信がすこし揺らいでしまった。自分がいまの状況にあるのは、単に幸運だったのだ。慎まねばならない。

 

また近い将来、怨念にも似た執念の火が自分の中で燃え始め、再び元の自分に戻れる日がくると信じているが、それまではほんの少しだけ無茶な早起きをやめてしばらく自分の健康と向き合いたいと思う。命あっての物種。人生は長く短い。このバランスが最も難しい。それでは、近いうちにまた。