たくあんメモ

だいたいプログラム開発のメモです

mecab-koで簡易的な韓日機械翻訳を作る

本件は ひとり開発 Advent Calendar 2019 - Qiita 7日目にエントリーしています。  

はじめに

私は海外野球のニュース記事を読みたいがために、自分用の機械翻訳を作ってます。
現在は韓国語のみで、あくまで野球ニュース用です。
f:id:gayou:20191207110840g:plain

まあ精度はよくないですが、野球用語や独特の表現を訳すところにフォーカスしており、
後述しますがmecab-koという韓国語用の形態素解析ツールを利用しています。
https://bitbucket.org/eunjeon/mecab-ko/

2月にとりあえず作って以降、定期的に辞書をいじっては訳を改善、、
また辞書をいじったり、追加したりして訳を改善している最中です。
正直言って、ルールベースはやるもんじゃないなと思いました


経緯

私は海外野球の情報(特に順位表や試合速報・結果)をよく見ていて、
主に以下のサイトをよく見ます。

サイト 国/地域 言語 URL
MLB アメリ 英語 https://www.mlb.com/
CPBL 台湾 中国語(繁体字 http://www.cpbl.com.tw/
KBO 韓国 韓国語 https://www.koreabaseball.com/
WBSC 国際大会 英語など6ヶ国語 https://www.wbsc.org/

ブログやtwitterなどで日本語で情報発信してくれている方もいて大変助かってますが、
なるべく一次情報を情報収集したい願望があります。

Google翻訳などのWEBサービスは野球に特化しているわけではないので、
ちょいちょい野球用語や独特の言い回しの訳が変なときがあって、
どうしても????ってなるときがあるんですよね。

たとえば以下、(自分で作った翻訳プログラムの運用中に書いたツイートしたものですが)

野球の試合中、しかも9回裏に試合の勝敗が決まる重要な場面でギターを出す人はいないです。
ここは「先発パク・ジヌの力投と9回裏ソン・シホンのサヨナラ打が出て~」と訳すのが的確です。

振り逃げホイル、、、なんて聞いたことないので、NAVERでダイジェスト映像を見たところ、
捕逸”(捕手がボールをキャッチし損ねて後ろに逸らすこと)でした。

※ダイジェスト映像はこちら(サムネに写っている選手は、元ソフトバンクイ・デホsports.news.naver.com

とまあ他にもありますが、”捕逸”のように一般的でない用語や表現はどのジャンルにもあると思います。

そんなこんなで、海外野球のニュース記事を日本語で読みたいがために、
野球ニュース用の機械翻訳を作ろうと思いたったのでした。


目標

自分で作るにあたって、ゆるっとした目標を立てました。

  • 野球独特の用語や表現はちゃんと訳したい
  • てにをは が多少おかしいのは気にしない
  • 野球ニュース以外の文章は正しく訳せなくていい

要はがんばりすぎないことです。はい。
こればっかりやってて家のこと何もしなかったら、うちの奥さんも黙ってはいないでしょう。


検討

韓国語を選択した理由

なんとなくですが一番難易度が低そうな予感がしたからです。

  • 英語は、、、読めないこともない(すみません嘘です)
  • 中国語は、、、漢字なので雰囲気で読んでる(読めてないです)
  • ハングルは、、、さっぱりわからない(自分の語学レベルでは暗号にしか見えない)
  • 英語と中国語の訳には言葉の並び替えが必要だ(どうしたらいいんだろう)
  • そういえば韓国語と日本語は語順が同じなので、並び替え処理とか書かなくてもなんかできそう
  • 形態素解析すれば、あとはそれを順に日本語に置換していくだけでできそう! *1

という風に考えてました。

で、どうやって作るのか

基本的には何の知識もないのでいろいろ調べたんですが、
以下の方法であれば自分でもできそうだと思いました。

  1. テキストをmeba-koで形態素解析する
  2. 形態素の品詞と訳語を順にくっつけていく
    • ※動詞を過去形や否定文にするなど、いくつか訳語調整
  3. 文章完成!

近年の主流はニューラルネットワークのようですが、
まずは上に書いたような簡単なルールで作ることにしました。 *2


詳細

mecab-ko

mecab-koはmecabを韓国語用にカスタマイズが入ったものです。
(本家mecabだと意図した分割ができなかったです)
辞書はmecab-ko-dicを使っています。
https://bitbucket.org/eunjeon/mecab-ko/src/master/README.md
https://bitbucket.org/eunjeon/mecab-ko-dic/src/master/README.md

mecab-koのインストール方法は、以前Qiitaに書いたことがあります。
qiita.com

事前準備

形態素解析の辞書(mecab-ko-dic)に各形態素の訳語を付加します。
辞書に訳語を持たせておくと、形態素解析と一緒に日本語訳の情報もくっついてきます。

訳語の収集にはGoogleスプレッドシートのgoogletranslate関数を使わせてもらいました。

元の辞書は品詞別の44ファイルに全部で81万word収録されているので、
スプレッドシートも1シートにおさまらないどころか、1ファイルに入りきれないので何ファイルかに分割する必要があるし、
あとgoogletranslate関数の戻りをひたすら待ちます(全word分実行し終わるのに待ち時間長め)。

スプレッドシートでひたすら単語の訳を収集 f:id:gayou:20191206002808p:plain

ただしスクショにあるように収集した訳語はよく分からないのが多く、、
訳語を集めるのには向いてなかったかもです。

形態素解析〜訳文生成

コマンド実行でやるならmecabコマンドです。

$ cat [テキスト] | mecab

私の場合は、

  • ブラウザでテキストを入力
  • AjaxでWEBサーバにテキストを送信
  • WEBサーバでテキストを受け取ったら、mecabへ渡して形態素解析
  • mecabの戻り値を取得し、行ごとにごにょにょ処理

なんてことをしてます。

たとえば以下の文章を形態素解析にかけると

두산 베어스가 1차전에서 짜릿한 끝내기 승리를 거뒀다.

以下のような結果が返ってきます。

두산    NNP,*,T,두산,*,*,*,*,斗山,トゥサン
베어스   NNP,인명,F,베어스,*,*,*,*,ベアーズ
가 JKS,*,F,가,*,*,*,*,が
1   SN,*,*,*,*,*,*,*
차 NNBC,*,F,차,*,*,*,*,次,回
전 NNG,*,T,전,*,*,*,*,戦,{multiple}
에서  JKB,*,F,에서,*,*,*,*,で,から,{multiple}
짜릿  XR,*,T,짜릿,*,*,*,*,ぴりっと,鮮やか
한 XSA+ETM,*,T,한,Inflect,XSA,ETM,하/XSA/*+ᆫ/ETM/*,した,な,{multiple}
끝내기 승리    NNG,*,T,끝내기 승리,*,*,*,*,サヨナラ勝利
를 JKO,*,T,를,*,*,*,*,を
거뒀  VV+EP,*,T,거뒀,Inflect,VV,EP,거두/VV/*+었/EP/*,おさめ
다 EF,*,F,다,*,*,*,*,た
.   SF,*,*,*,*,*,*,*,.,1794,3560,3518,SF,*,*,*,*,*,*,*,。
EOS

辞書にあらかじめ日本語訳の列を追加していたので、
形態素から日本語訳を取得することができます。

あとはこの日本語訳を順につなげていくだけです。
といっても↑の例は簡単なケースですが、動詞の変化系(〜した、〜できた、〜できなかった、〜して、〜しない、〜せずに などなど)の場合は愚直にロジックを書いて変形させてます(めんどくさいので他になんかいいやり方ないかなと、、)。

他にも同音異義語もあるので、これは今は前後の形態素の品詞などで判断して訳語を決めているものもあります。 *3  

運用:訳文の調整

ルールのロジックはいろいろ書いてますが基本的には辞書が重要だと考えてます。

たとえば、最初に例としてあげた以下のような文章。

形態素解析では「끝내」と「기타」の2つに分割されていますが、
ここでは「끝내기」(最後の、サヨナラ)と「타」(打)の2つに分割されて欲しいのです。
※いちおうmecab-ko-dicには「끝내기」「타」の2つの単語は定義されていますが

辞書で定義されているコスト値を調整することで意図したところで分割されるようにするのもよいのですが、 今回は「끝내기타(サヨナラ打)」を一語として新たに辞書に登録しました。

「끝내」という単語にはいろいろ意味を持っており、
”ついに”、”最後”、”終わる”、”素晴らしい”、”最高”、”サヨナラ”などの意味があるようです。
また「기타」という単語は、一般的には”その他”、”ギター”の意味のようです。
どうやら”犠打”は一般的ではなさそうです。
で、このケースの場合はもちろん「素晴らしいギター」ではなく、
最後の犠打→(試合を終える犠打)→サヨナラ犠打 という表現が適切です。
ただし「끝내」「기타」の訳を変えるのではなく、
「끝내기타(サヨナラ犠打)」を一語として新たに辞書に登録することで野球らしい訳になるようにしました。
※2020/10/22 サヨナラ犠打ではなかったので辞書を修正しました。  

他にも野球用語や、外国人選手名なども新しく辞書登録しています。 ※一部辞書抜粋

블론세이브,,,,NNG,*,F,블론세이브,*,*,*,*,(ブラウンセーブ),セーブ失敗
끝내기타,,,,NNG,*,F,끝내기타,*,*,*,*,サヨナラ犠打
굿바이 안타,,,,NNG,*,F,굿바이 안타,*,*,*,*,サヨナラ安打
끝내기쇼,,,,NNG,*,F,끝내기쇼,*,*,*,*,サヨナラ勝利

現在は300語ほど辞書に追加したり、既存の訳を修正したりもします。

単語の意味を調べるときは以下の2サイトを便利に使わせてもらってます。 www.kpedia.jp https://ja.dict.naver.com/main.nhnja.dict.naver.com

やればやるほどだんだんとルールが増えていっているので、
そのうち整合性が取れなくなりそうです。
というわけで、ルールベースはやるもんじゃないなと思いました


システム構成

基本的に自分が使いたいもの、慣れているものを使っています。

サーバ環境

サーバはGCPを利用しています。

基本的に月額費用ゼロです。*4
メモリが少ない(630MB)ですがmecab-koや後述のwebサーバを動かすには十分です。

アプリケーション

Nginx Unitは設定が簡単で素敵です。 www.nginx.com

今後

他言語への対応

韓国語のメンテはほどほどにして、中国語か英語に取り組みたいです。

ルールベースは正直しんどいので、統計的な手法を取り入れてみたいのですが、野球翻訳に向いてる?対訳データがない *5 ので、、、やっぱりルールベースなかあ、と。

また、ツールもいろいろあるのでどれを使うかは悩みます。
個人的には注目しているツールはJieba、Enju、StanfordCoreNLPです。

サーバはOracle Cloudへ移行したい

構文解析ツールを使おうとするとメモリが足りないので、
Oracle Cloudへの移行を検討中です。 Always Freeなインスタンス(メモリ1GB)は2つまで作れます。 www.oracle.com

それにしても無料枠があるなんていい時代になりました。
ケチなおっさんなんだと思われても仕方ないですが別にいいです。
きっちり使いこなしたいと思います。

開発言語はPythonJava

ライブラリが比較的そろっているPythonJavaで作れたらなと考えてます。
Goも気になります。

余談ですが、Nginx Unitはパスごとにどの言語で動かすかの設定が割と楽です。

今は試しにですが、

って設定をしています。以下がunit.jsonの設定内容。

{
    "listeners": {
        "*:8000": {
            "pass": "routes"
        }
    },
    "routes": [
        {
            "match": {
                "uri": "/api/ko/*"
            },
            "action": {
                "pass": "applications/translate-ko"
            }
        },
        {
            "match": {
                "uri": "/api/zh/*"
            },
             "action": {
                "pass": "applications/translate-zh"
            }
        }
    ],

    "applications": {
        "translate-ko": {
            "type": "php",
            "processes": 1,
            "root": "[path]",
            "index": "index.php"
        },
        "translate-zh": {
            "type": "python 3.6",
            "processes": 1,
            "path": "[path]",
            "module": "wsgi"
        }
    }
}

まだまだ雑な設定ですが、別途php-fpmとかuwsgiを準備、設定する必要がなくて便利です。

最後に

私がやっている個人開発は、
自分の困っていることを解決するための手段だったり、
新しいソフトウェア・ライブラリを試すためだったりします。

今回アドベントカレンダーにエントリしている都合、
他の方の個人開発の記事を見ていますが、
みんなそれぞれやっていることが違って楽しいですね。  

Qiita ひとり開発 Advent Calendar 2019は7日目はこれで終わりです。
明日8日目は u1and0さんの「開発環境の紹介 (VM->Docker with tmux, vim)」です。

qiita.com

*1:実際やってみるとそんなに単純にはいかないです

*2:一度、Tensorflowでseq2seqという手法でやろうとして、全然理解が追いつかなくて諦めました

*3:韓国語に詳しいわけではないので、正しいやり方ではないと思います

*4:10月にオーストラリアへの転送量で1円課金されたことあります

*5:WBSCのニュースが多国語配信なので集める手はありますが、見た感じ各国語それぞれ多少リライトが入っていることがあるので、データの整備には手間がかかりそう

phpbrewでPHP 7.4を入れるのにいろいろつまづいた

はじめに

2019/11/28にPHP 7.4正式版がリリースされた。
https://www.php.net/releases/7_4_0.php
https://www.php.net/ChangeLog-7.php#7.4.0

Macbook AirにphpbrewでPHP 7.4をインストールするのにいろいろ苦労したので、
記録を残しておこうと思う。

手順

うまくいったのは以下の手順。

1:openssl, libxml2, pkg-config入れる

  • OpenSSLのバージョンは1.1以上にする
  • libxml2も最新版にする
  • pkg-configも入れとく
$ brew install openssl
$ brew install libxml2
$ brew install pkg-config

OSデフォルトのOpenSSLが0.9.8の場合、1.0.2をインストールしてパスを貼り替えていても、PHP 7.4インストール時に1.0.2以上が必要って怒られた。
ビルドログに沿って.bashrcにOPENSSL_CFLAGS, OPENSSL_LIBSなど設定したが、うまくいかず。

途中でopenssl 1.0.2を強制削除する暴挙をとったところ、インストール済みのphp7.3が起動できなくなり、
さらにはphpbrewも使えない、7.3をuninstallできないなどなど環境を壊してしまったので、結局phpbrewを一度綺麗に削除して最初からやり直した。。
(※教訓:brew uninstall openssl --force とかやらない)

2:oniguruma(正規表現ライブラリ)

brewでインストールする

$ brew install oniguruma

3:パスの追加

openssl, libxml2のパスを追加

export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"
export PATH="/usr/local/opt/libxml2/bin:$PATH"

4:環境変数の追加

いろいろ苦労したが、以下の環境変数を追加したら7.4のビルドとインストールができた。

export PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig"
export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"
export PHP_BUILD_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl) --with-libxml-dir=$(brew --prefix libxml2)"

source ~/.bachrc を実行して設定を反映するのを忘れずに。

4:PHP 7.4をインストール

phpbrewでPHP 7.4をインストール

$ phpbrew update
$ phpbrew known
Read local release list (last update: 2019-11-29 12:36:17 UTC).
You can run `phpbrew update` or `phpbrew known --update` to get a newer release list.
7.4: 7.4.0 ...
7.3: 7.3.12, 7.3.11, 7.3.10, 7.3.9, 7.3.8, 7.3.7, 7.3.6, 7.3.5 ...
7.2: 7.2.25, 7.2.24, 7.2.23, 7.2.22, 7.2.21, 7.2.20, 7.2.19, 7.2.18 ...
7.1: 7.1.33, 7.1.32, 7.1.31, 7.1.30, 7.1.29, 7.1.28, 7.1.27, 7.1.26 ...
7.0: 7.0.33, 7.0.32, 7.0.31, 7.0.30, 7.0.29, 7.0.28, 7.0.27, 7.0.26 ...
5.6: 5.6.40, 5.6.39, 5.6.38, 5.6.37, 5.6.36, 5.6.35, 5.6.34, 5.6.33 ...
5.5: 5.5.38, 5.5.37, 5.5.36, 5.5.35, 5.5.34, 5.5.33, 5.5.32, 5.5.31 ...
5.4: 5.4.45, 5.4.44, 5.4.43, 5.4.42, 5.4.41, 5.4.40, 5.4.39, 5.4.38 ...

$ phpbrew install 7.4.0 +default

バージョン切り替え

$ phpbrew switch php-7.4.0
$ php -v
PHP 7.4.0 (cli) (built: Dec  1 2019 01:39:20) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

めでたしめでたし!  
 
 
 
 
 


※以下余談

以上、あっさり書いたけど、何かとインストールには苦労した。

インストール途中でいろいろつまづいたこと

元々OpenSSLはバージョン1.0.2rをインストールしていたのだが、
phpbrewでPHP 7.4をインストールすると今までに見たことないエラーが・・・

$ phpbrew install 7.4.0 +default

Error: Configure failed:
The last 5 lines in the log file:
installed software in a non-standard prefix.

Alternatively, you may set the environment variables OPENSSL_CFLAGS

and OPENSSL_LIBS to avoid the need to call pkg-config.

See the pkg-config man page for more details.

ググってみたところGithubのissueのページがヒット。

github.com

phpbrewのバグみたいなことが書かれているが、
ビルドログに出た内容を対策していけばなんとかならんかと。

OpenSSL

ビルドログを見たところ以下のようなメッセージが出力されていた。

checking for openssl >= 1.0.1... no
configure: error: Package requirements (openssl >= 1.0.1) were not met:

Requested 'openssl >= 1.0.1' but version of OpenSSL is 0.9.8zg

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables OPENSSL_CFLAGS
and OPENSSL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

いやいや、たしかにOpenSSLはOSデフォルトは0.9.8だが、今は1.0.2を入れてパスも通しているし。

$ openssl version
OpenSSL 1.0.2r  26 Feb 2019
$ which openssl
/usr/local/opt/openssl/bin/openssl

デフォルトで入っていたOpenSSLは以下。

$ /usr/bin/openssl version
OpenSSL 0.9.8zg 14 July 2015

ということなので Package requirements (openssl >= 1.0.1) were not met: なエラー出ても困る。
ログに出ている通り、OPENSSL_CFLAGSとOPENSSL_LIBSを設定すればいいんかなと。

~/.bashrc

export OPENSSL_CFLAGS=-I/usr/local/opt/openssl/include
export OPENSSL_LIBS=-L/usr/local/opt/openssl/lib

を追記して、 source ~/.bashrc で反映。 再びPHP 7.4をインストールする。

$ phpbrew install 7.4.0 +default

Error: Configure failed:
The last 5 lines in the log file:
installed software in a non-standard prefix.

Alternatively, you may set the environment variables ONIG_CFLAGS
and ONIG_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

今度は違うエラー。。ONIG ??ってなんだ?
ググってみたところ、onigurumaという正規表現ライブラリに関するものらしい。

↓の記事を見ている限りだと、onigurumaが今まで同梱されていたものが7.4から外部ライブラリ参照に変わった様子。(裏付け確認はしてない)

tekitoh-memdhoi.info

onigurumaインストール

これはbrewであっさりインストールできる。

$ brew install oniguruma

それにしても鬼車って名前いいな。

再びPHP 7.4をインストール開始したところ、今度はビルドが始まりそこそこ時間がかかり始めた。
これはうまくいくだろうと思い、うちの子を公園に連れて行くために小一時間ほど外出。

そして帰ってきて見ると、、

$ phpbrew install 7.4.0 +default

Error: Make failed:
The last 5 lines in the log file:
      _php_openssl_capture_peer_certs in xp_ssl.o

      ...

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [sapi/cli/php] Error 1

インストールできてないし、またみたことないエラーが。 ググって見たけどよくわからん。

途中、libxml2を更新してみたところ同時にOpenSSLが1.1に更新されたのだが事象は改善せず。
何かの記事でopensslを再インストールするとよい、みたいなのをちらっと見かけたので、 前述のbrew uninstall openssl --forceとかやってしまったところ、 phpが実行できなくなってしまい詰んだ。

$ phpbrew install 7.4.0 +default
dyld: Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib
  Referenced from: /Users/gayou/.phpbrew/php/php-7.3.3/bin/php
  Reason: image not found
Trace/BPT trap: 5

こうなるともうどうしようもなくなったので、
phpbrewを一度綺麗に削除してインストールし直す。

もう一度最初からphp 7.4をインストールしようとしたが、それでもエラーが発生。
ビルドログに以下のような情報が出ていたので、

 _php_openssl_capture_peer_certs in xp_ssl.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Warning: Refusing to link macOS-provided software: openssl@1.1
If you need to have openssl@1.1 first in your PATH run:
  echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.bash_profile

For compilers to find openssl@1.1 you may need to set:
  export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
  export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"

For pkg-config to find openssl@1.1 you may need to set:
  export PKG_CONFIG_PATH=/usr/local/opt/openssl@1.1/lib/pkgconfig

ログに書いているようにパスの設定や環境変数を設定しておくと、
PHP 7.4を無事にインストールすることができた。

Google I/O 2012 #4 初めてチップを払う

※2012/6/25〜6/30にかけて、Google I/O 2012に1人で行ったときのメモ。

現地6/26 行動概要

この日は外出してI/OのRegistrationをして、夜は日本人参加者の集いでカニを食べた。

ルノアールホテル

  • 時差ボケで寝れない。結局現地時間のAM5:00過ぎに寝た記憶が
  • AM10:00頃起床
  • 今日行くところやカニの集合場所の再確認をしてたらAM12:00になってしまった
  • まずはは本屋めぐり
  • 当初のルート
    • Van Ness Aveを北に歩いて、Book INCへ寄る
    • そのあと、Van Ness Avenueを北上してO'Farrel Stを左折→Geary Blvdを通ってジャパンタウンへ
  • 実際通ったルート(地図を見ないで歩いたので)
    • 全然手前のLarkin Stを北上(Book INC見つからず)、O'Farrel Stを左折
    • そのまま直進して、先にジャパンタウンへ
    • ジャパンタウンの帰りにBook INCへ寄る

ジャパンタウン

  • 日本食のお店、日本のお店(ダイソー紀伊国屋書店とか)、日本に関連するショップがたくさんある
  • 別に日本語が話せる店員がいるわけではない
  • 観光客に日本人がけっこういた(ざっと20人以上いたはず)
  • 紀伊国屋書店:7割くらいが日本の本だった。店員は日本人。サンフランシスコの絵本(英語)を2冊買う
  • アメリカに来てからジュースしか飲んでないので、いい加減腹減った
  • 「大阪屋」という日本食のお店に入り、KATSU-DONを頼んだ
  • アメリカ仕様なので、量が多すぎて気分が悪くなったので残した
  • 「Did you done?」でYesと答えたら、お会計のレシートとトレイが来た
  • トレイに代金とチップを入れればよいのかな?チップだけ入れて、会計はレジとかでやるんかな?
    • 店員が英語しか話せないので、あぁ苦労した。答えは前者。
  • 食いすぎて腹痛い
  • 他お店をぶらっと見て回る
  • 車関連のお店(車のおもちゃ[日本車]、リアル車のグッズ)は店員が日本人夫婦っぽかった
  • ここのWiFiはつながりにくい(IP取れたけど、結局WEBアクセスできなかった)

Book INC

  • MLBの選手名鑑的な本を探しに来たけど見つからず
  • 料理の本を探したけど、分厚くて重いので買うのやめた
  • やばい、買いたい本がそもそも置いてない
  • このあと、いったんホテルに荷物を置きに帰ることに

Google I/O会場下見

  • ホテルに荷物を置きに行ったら、おばちゃんが掃除中だった。
  • 「about 10 minites 何とか~」って言われたので、10分ロビーで暇つぶし
  • その後荷物を置いて、会場の下見へ
  • 行きはMarket St→6th St→Misson Stの経路で行ったっぽい
  • ほんとは4th Stに入るところを通り過ぎてしまった
  • とりあえずMoscone Westに到着
  • まだPre Registrationやってたのですることに
  • 英語苦手って言ったら、スタッフが全部やってくれた。すんません
  • で、会場の無線LANめっちゃ早い
  • 2階に上がれるんだー、と思ってエスカレーターで上がろうとしたらStaff Onlyって止められた。すんません。

カニ食べ集合

  • 集合まで1時間半ほどあるので、セントパウエル周辺をぶらぶら
    • Apple Storeがある
    • いわゆるドラッグストア的なものもある
    • Market St沿いにセブンイレブンまである
    • Disney STOREもある
    • 途中、意味もなくホテルに戻る
    • ホテルに戻る導入に携帯ショップに立ち寄る。HTC、Samsung製の端末が多い印象だった
    • ホテルに戻ってごろごろしてたら、集合時間が迫ってきた。まずい。置いてかれるとまずい
  • 早歩きでホテルに到着・ホテルの前に誰もいない
  • しばらく待ってたら日本人が話しかけてきた
    • カニ食べ集合の日本人だった
  • ちなみに待合場所は実はホテルの中だった
  • ちなみに話しかけてくれた方は、中国経由、22時間待ちでアメリカに来たらしい。強者、、、
  • とりあえず全員集合。これからタクシーを捕まえて移動します、と
  • でもタクシーが捕まらないから結局ホテルに戻って、ホテルマンに交渉してなぜかリムジンタクシーに乗る
  • お店へ移動
  • 途中、テンダーロイン地区を通ったのだが、あの通りは全然雰囲気が違ってた

カニを食べる

  • お店の名前は「Crustacean Restaurant」
  • 大きなカニ一匹を4人で×3匹出てきた
  • カニの甲羅にカニみそが入ってて、これにご飯を入れてかき混ぜてオリーブオイルをかけて食べるとおいしいよ
  • お題はチップ込で一人$90って高くね?
  • 現金そんなに持ち合わせてないよ。ちなみに持ち合わせてないのはおれ含めて二人
  • でもどうしても現金で払うので、ってことで、店の近くのATMに(危ないので3人で)行く
  • ATMでクレジットでキャッシング。ホテルにいっぱいお金あるのに、カードでキャッシングしてごめんなさい。
  • 帰りはみんなセントパウエル方面だというので歩いて帰るらしい
  • いや、おれだけCivic Center方面なんですが、って言うと、詳しい人が「歩いて帰るのはよくない」
  • 「Civic Centerの隣のホテル」って言うと、数人から「そこ危なくね?」的な反応が
  • ってことでタクシー呼んでくれた
  • タクシーの運ちゃんにホテル名行っても伝わらないので、ホテル名と地図書いた紙を見せた
  • ホテルに着いた。英語がわからない。チップのことを「tip」と言ってないようだ。
  • 英語苦手なんだよ、ごめんって言ったら、「tip」って言ってくれた。
  • あぁ、英語わからないから疲れた。。。

Google I/O 2012 #3 ルノアールホテル

※2012/6/25〜6/30にかけて、Google I/O 2012に1人で行ったときのメモ。

6/25サンフランシスコ国際空港

  • ひとまずBART(電車)に乗りたい
  • 「AirTrain」ってサインに惹かれてそっちに向かう(ほんとは違う)
  • AirTrain(ちなみに環状線)で、BARTに乗り換える駅があるらしい
  • ほぉここから3駅か。ちかいな。ふむふむ。で、間違って遠回りの電車に乗ってしまう
  • なんとかって駅で下車。BARTのチケットを買う。ぺらっぺらやな。
  • ようやくBART乗車。入口近くの座席に座る。あとで気づいたけど、お年寄りとかの優先席だった。
  • 優先席でのうのうと、国際ローミングでLINEとか、家族にメール・Civic Center駅下車

Civic Center

  • ストリートビューで見たのと同じ光景
  • 広場にはホームレスみたいなのがごろごろいる。なんだか怖い
  • まわりは皆外人。異国の地に1人で来て怖い
  • 誰とも目を合わさずにルノアールホテル到着
  • Market Street沿いの入口からは入れないので、裏口に回る
  • 裏路地の空気が若干違う

ルノアールホテル

  • 受付のおねえさんにホテルの予約の紙を渡す
  • 「Visa Please」の意味がしばらく分からず  →クレジットカードよこせって意味だったらしい
  • 「Can I use wiress LAN?」→「yes. it's free.」しか聞き取れず。部屋で自由に使えるもんだと思った
  • エレベーターで外人カップルと遭遇。ちゅっちゅちゅっつしてたぞ。同じフロアじゃなくてよかった。
  • 部屋に入って、さっそく無線LANに接続。つながらない。む。
  • よくよく調べてみると、1階のロビーみたいなところだけ無料LAN。部屋で使いたいなら、金払えと。
  • $9.9/1day or $49.9/7days。滞在日数を考えて後者を選択。
  • PCはつながりやすいけど、携帯はつながりにくい。電波を捕まえにくいのかな。。。
  • 外はなんだか物騒。パトカーがよく通るのでうるさい
  • お腹すいたけど夜遅いから外に出たくない
  • しかたなくホテル内の自販機で炭酸のジュースを買った

Google I/O 2012 #2 初アメリカ上陸

※2012/6/25〜6/30にかけて、Google I/O 2012に1人で行ったときのメモ。

6/26 00:05発 JL2便

  • 全然寝れない。途中うとうとしてた記憶があるけど寝た気がしない
  • たぶんAM2:00頃、音楽を聴こうと思って機内のやつ付けたら最初に流れた曲が「羞恥心」
  • 途中、美人CAさんが「USBケーブル落とされた方いますか?」っで見覚えのあるケーブル
  • いやおれのカバンに入れっぱなしだから違うわ。でCAさん2周
  • 気になって、天井からカバン引っ張り出して中身を見たら、無いよ!おれのケーブル
  • 結局CAさんのところ行って、「すんません。ぼくのです」
  • このまま寝た気がしないまま、9時間座りっぱなし
  • 6/25 17:15頃、サンフランシスコ着陸

6/25サンフランシスコ国際空港

  • まわりはみな外人
  • Visitorの入国審査の列に並ぶ→結局1時間近く並んだww
  • 入国審査で黒人のおじさんに「Hello」
  • ごめん。次からもう何言ってるか分かんないよorz 「Sorry, I am not good at English.」→「OK」
  • 以下、入国審査のおじさんが気を遣ってくれて日本語で質問してくれた 「目的は何?」→Pleasure 「何日間いるの?」→for 6 days
    • アメリカは初めて?」→yes
    • 「友達と来たの?」→いえ、独りです(これだけ日本語で答えた)
  • 滞在先のホテルとか帰りのチケット見せてとか言われんかったわ
  • 両手全指の指紋、網膜をスキャンして完了
  • 空港を出たあと、途方に暮れる。困った。
  • わけもなく国際ローミングでfaceboookとか見ちゃう。金かかってごめんなさい。

Google I/O 2012 #1 日本を飛び立つまで

※2012/6/25〜6/30にかけて、Google I/O 2012に1人で行ったときのメモ。

6/25福岡

  • 自宅→福岡空港へ家族3人で移動(車で送ってもらったった)
  • 3人で飛行機が見える店でご飯
  • 長男は飛行機を見るのが初めてで興奮気味
  • 空港2Fの店をぶらぶらして、21:00羽田行きの便に搭乗
  • これから1週間家族とは会えなくなるんだと実感

6/25羽田

  • 22:20頃に羽田着陸
  • 国際線ターミナルへバス移動。意外に時間かかる
  • 23:10頃に国際線ターミナル。あぁここからは未知の空間
  • 同イベント参加者の方を探してみるけど、やっぱりFacebookの顔写真だけじゃ分からんな
  • 事前に連絡取ってなかったことを後悔
  • 24:05に離陸へ