Google翻訳でとても仕事で助かった話

Google翻訳がニューラルネットワーク応用で「さらに進化」。翻訳ソフト感うすれ、流暢さを身につける - Engadget 日本版にもあるように、新しいNMTのGoogle翻訳はこれまでの機械翻訳とは段違いの性能で評判だ。わたしも少しずつ使ってみたりしていたのだが実際に職務でインパクトがあったのでここに記録しておこうと思う。

...

ご存知の方もいると思うが、わたしはApache Mesosを使ったソフトウェアの開発を仕事にしている。これは単体のサーバーでも動作するので、開発するときはほとんど1台または2台くらいのサーバーを使っている。しかしながら、実際の環境ではもっと多くのサーバーがクラスタとなって動作する。当然、複数のサーバーで動作するときしかでない問題は多い。詳しくは省略するが、今回もその件に漏れず複数サーバーないと出ない問題に当たって、それ自体はMesosの仕様を見逃していたせいなので修正はすぐできたのだが、再現試験などの環境が家になかった(オフィスにはあったのだが)。

で、Debian上のVirtualBoxVMを4台上げて手元で再現させようとしたのだが、このとき4台のVMをNATネットワークでつなごうとすると、そもそもゲストVMがネットワークにまったく接続できない。ポートフォワードも設定したのだが、ホスト側からもゲストにTCPで全くアクセスできない(VirtualBoxGUIからはアクセスできた)。オフィスにあるMacOSのNATネットワークなら動くのなぁ、困ったなあ…。で、こりゃVirtualBoxのバグだろといろいろ調べていたのだが全然でてこない。こまった、この問題の再現と修正確認ができないとリリースできない。でも調べるの時間かかりそうだなあ…OSSだから仕方ないんだけど、ヤダなぁ…ちゃんとやったら1週間でできるかなぁ、オフィスいってMac使った方が早いんだろうけどなあ…などと逡巡していた。

いろいろやって、それっぽいエラーメッセージが出たのでそれで検索すると、次のページが引っかかった。

gist.github.com

はい全然わかりませんね。同じ漢字文化圏といってもこんなもんです。で、これを精度がよいと評判のGoogle翻訳にかけてみた。そのまんまかけてみただけなのだが、結構英語が読める。まあ英語といっても大概なんだが、よく訓練された俺達は、同じ意味不明なら日本語よりも英語の方が理解できるのだ。どうも asciidoc aware ではないらしいが、日本語に訳してもこれは全然わからない。

しかしVirtualBoxのは、名前を見て、この問題は、それがすべての可能性のリードにであることであると推測関連1 Virtualboxのゾンビがあり、例外、ないモニタポート2204がありませんログインします。
[ソース、コンソール]

まとめると、

  • VBoxNetNAT というNATネットワークを管理するプログラムはroot権限でしか動かないようだ (ユーザー権限でやると になってしまってにっちもさっちもいかなくなる→コレがだんまりの原因っぽい)
  • "VBoxNetNAT: Effective UID is not root (euid = 1000 egid = 100 uid = 1000 gid = 100)" というメッセージからわかる
  • ps してみてもわかる
  • そのあたりのコマンドに +s 権限をつけたら動くようになる(実施前にみたら、たしかに s ついてないやつが多かった)
for bin in VirtualBox VirtualBoxVM VBoxNetAdpCtl VBoxNetDHCP VBoxNetNAT VBoxHeadless; do
    chmod u+s /usr/lib/virtualbox/${bin}
done

これでVirtualBoxをふつうに再起動するとなおる。で、ポートフォワードもゲストOSのネットワークアクセスも普通にできるようになった。

まとめ

  • VirtualBoxOSS なので問題は自己解決するのが原則
  • ネット上に同じ問題でハマってる人は少なかったが、答えが中国語で書かれてていた(私は中国語が読めない)
  • Googleの自動翻訳(中→英)が自然すぎて解決策を正しく理解できた
  • 結果、自分で調査したら解決できたかどうか分からない問題が半日というか数十分で解決した
  • 仕事ができて身長が5cm伸びた