読者です 読者をやめる 読者になる 読者になる

セブ島で1ヶ月英語留学してみましたよの件とその後

ご存じの方もいらっしゃるかとは思いますが、4月から5月中旬くらいまでフィリピンのセブ島まで英語留学をしてきました。
「一回行ってみるとどんなもんかな〜」くらいの気持ちで行ってみたのですが「どんなもんかな〜」がなんとなく分かったのでここにご報告いたします。
http://farm6.staticflickr.com/5339/8835287149_78750a2b16_n.jpg

カリキュラム

初日になんかテストみたいなのやったあとで、それからそれぞれの目的や現在のスキルにあったカリキュラムを設定してくれました。
9時〜12時、13時〜18時、45分単位でマンツーマンの授業があり、あらかじめ教材が用意されていて、まあそれにしたがって会話したりする感じ。
この辺はまあSkypeでもいいんじゃねえのと思うね。

参加自由のグループレッスンが7時から2コマ。私はTOEIC対策のレッスンだけ受けてました。
これは文法とかも覚えられてなかなかよかったですね。

4週間たったらペラペラになるかなあ、とも思ったのですが、無理ですね。
先生も簡単な英語を喋ってくれてるときはいいんですけど、本気だされるともうアレですね。ダメです。
ただ英語を喋るときの恥ずかしさはほぼ無くなるし、「喋れなくても意味は通じるじゃん」的なゴリ押しマインドを培えるという意味でまあいいのかな。

先生の英語の訛り的なものはさほど気にならないですね。
ものすごい発音の綺麗な人もいれば、けっこうなまってる人もいたりしました。

費用

早めに飛行機を取れば、航空券は大体5万円台で取得できます。
学費がトータルで14,5万くらいだったから、生活費も合わせても25万あれば余裕という感じでしょうか。
食事は寮みたいなところで毎日三食でたので、基本的には食費0円でいけるっちゃいけるんですけど、飽きるので…。
私なんかは外食ばっかしてたんですが、物価がかなり安いので月1万もいってなかったですね。
http://farm8.staticflickr.com/7314/8835945786_857f74f717_n.jpg

生活スタイル

ほんとにやることがない(し、寮のネットがえらく遅かった)ので、帰ってからも大体勉強していました。
数えると百数十時間は英語を勉強していたわけで、これで上達しなかったらなんなのだという話ではあります。
もし行く人は日本から教材を持っていったほうがいいでしょうねえ。私はDuoを暗記しました。

DUO 3.0

DUO 3.0

あっ、あと携帯ウォシュレット!向こうはトイレで紙が流せないのでこれはマストアイテム。
TOTO 【いつでもどこでも】携帯ウォシュレット YEW350

TOTO 【いつでもどこでも】携帯ウォシュレット YEW350

週に1日だけは息抜きと称して、いろんなところに遊びに行ってました(ひとりでな!)。
移動手段はもっぱらタクシーですね。30分くらい乗っても数百円だし、タクシーが腐るほど道を通ってるのでかなりつかえます。
だいたいモールとか観光地とかビーチいってたら1ヶ月終わってましたねえ。
http://farm9.staticflickr.com/8134/8836039804_741dd73371_n.jpg

タクシーに乗ってる時、いきなり道端に止まってドライバーが外に出たので「えっなにごと!」とか思ったら、その〜道端で用を足してましてね。
あらかじめなんか言って欲しいですよね。

あと寮ね、これは相当つらかったです。もう1ヶ月が我慢の限界でしたね。
シャワーの水はけがわるくって、いろいろとびちゃびちゃなんすよ。
あああ、思い出さないでおこう……。
住まいは結構ツライところが多いと思うので、ある程度は覚悟しておいたほうがいいですね。

どんな生徒がいるか

真面目な人もいれば、自分探し君も多いです。
学校言った後にワーキングホリデーとか世界一周とか、そういう感じですね。
なのでそれほど真面目に勉強しないというか「おれはここにぃ〜出会いをぉ〜求めてるんでぇ〜」みたいな感じ? 「人生は一度きりだぁ〜」みたいな。
今後もがんばっていただきたいですね。

あとは年金を貰われてる方ですね。老後の楽しみなう、ですね。
ますますのご発展をお祈りしております。

あとは期間ですが、みなさん大体3ヶ月くらい居ます。
個人的には3ヶ月は長すぎるように思いました。
1ヶ月くらいの方が集中できていいんじゃないかなあ。ダラダラ勉強してもねえ。

成果

そのー、最後に英語でスピーチみたいなのするわけですが、私は真面目だし、いろいろ考えて3分くらい笑いの要素も盛り込みつつちゃーんと喋ったわけです。
でも、すべったよね。おすべりさまだったよね。
みんなのあの冷たい眼を想像すると死にたくなるよね。

帰ってきてからTOEICを受けてみたんですけど、500点台から600点台に100点くらいアップしてました。
リスニングとリーディング、まんべんなく上がった感じですが、特にリスニングはだいぶん上達したかなあとは思いますね。
http://farm4.staticflickr.com/3792/8836083430_782b644a32_n.jpg
セブ島で見つけたgemの本だよ〜(∩´∀`)∩ワーイ)

陽気ではないフィリピン人

フィリピン人というと全員陽気なイメージが勝手にあったのですが、まったくそんなことないですね。きっちり暗い人もいましたよ。
ただ底抜けに陽気なやつがいるのでそこは注意しないといけないですね。
まあ呑んでいるぶんには楽しいじゃんすか?(誰とも呑んでないけどな!)

最後に

会社からは1ヶ月の(GWもあったので15日くらい?)有給休暇をいただきました。
どうもありがとうございます。

別に英語留学を勧めるわけでもないですけど、本記事が興味のある方にとってなにかしら参考になれば幸いです。
勉強方法なんて人それぞれだし、英語というのは長く付き合っていかなければならないものです。
勉強と堅苦しく考えずに日々の生活で意識して英語を使うようにしたいですね(たとえば、こういう記事を英語で書くとかな!)。

ということで、おしまい。なんかあんまりまとまらなかったですね。
まあ海外長かったからしょうがないか〜海外〜。

RubyKaigi2013の動画を勝手にオススメ #rubykaigi

会議中に自分が聞けなかった講演、気分が悪くて(二日酔い)まともに聞けなかった講演を動画でみた。
もちろん会議中に自分が聞いた講演は大体オススメなのでそっちの感想はここの方で確認して欲しい。

Viemoの方にはまだちょっとしか上がってないので、それまではyharaさんのまとめからustの動画を見るのがよいでしょう。
List of ustream recordings and slides of RubyKaigi 2013 talks. (Videos will officially uploaded to vimeo) · GitHub

追記: Viemoの方にも上がったようです

scheduleの方から動画を見るのがよさそうですね。

えーっと、以下は単純に観た順です。コメントの興奮度で勝手にランキングしてください。
(ランキング付けして自由を感じなさい(この言葉、好きすぎて困る))

  • 'Ruby Archaeology'- Keiju Ishitsuka
    • Rubyが生まれる辺りの歴史の話。
    • 今現在、広く使われている言語がどのように誕生して、少年時代を迎えるか、というあたりの話は貴重だと思う
    • 石塚さんという客観的な視点から観た話なのがまたいいと思う。
      • ちょう楽しかったので見るべき。
  • 'The Future of JRuby?' - Thomas E. Enebo, Charles O. Nutter
    • いつものJVM速さ自慢が最小限に抑えられてて個人的にはたのしかった
    • 次のバージョン番号の話はウケた。バージョン9000になるんだってww
    • いままでASTだったんだけど、なんとIRを作って直接バイトコード吐いたりするのを作るんだそうな(カワイイLLVMみたいな感じ?)
      • アウトプットにひっそりとDalvikバイトコードと書いてあって、JRubyAndroidアプリを書ける日もあと数年で訪れるだろうのか?
    • JRubyの起動遅い問題にどうやって立ち向かうか、という話もあって胸熱
  • 'Ruby 'root'' - SHIBATA Hiroshi
    • hsbtさんの超偉い話
    • hsbtさんパワーでRubyの見える部分、(そしてこれは超大事な)色んな見えない部分が改善していることがわかる
  • '`bundle install` Y U SO SLOW: Server Edition' - Terence
    • bundle installがなぜ遅いのか?という話
    • 以前はrubygemsの全体のspecデータをぶんどってきてたから遅かったけど、サーバ側のAPIを変えてdependencyだけ取ってくるようにしたから速くなるよ、という話が前半の話(だとおもう)
    • もうrubygemsAPI使うのも限界なんで、bundler APIというものを用意。こっちがわでbundlerに特化したデータを返せるようにするのだとか
      • って、すごいふつうのはなしーーー!ズコーッ!
  • 'krypt. semper pi.' - Martin Bosslet
    • 暗号とかつまんないと思うから敬遠している人こそ見るべき(Martinも最初に「暗号は難しい」と言っている。そのためのソリューションがkryptなのである)
    • これはプロダクトのデザインの話が絡んでいてとても面白かった。で、説明を聞いていると、おお、使いてえ、みたいな感じがする。
  • 'Ruby on Your Rails' - Akira Matsuda
    • 前フリがやけに長い。資料づくりに困ったのかな…。
    • Railsのこれはちょっとダサい」といいつつ新しいデザインを提供していく話
    • ずっとこんなこと考えてるんだろうなあ、松田さんは。
    • 私なんかはあるものでだいぶ満足してしまうというか、これもっとかっこ良く書けるよね的なことはあまり想像できない。0から1は難しいのです。
    • ということで当然見ておくべき(前半は飛ばしても構わない)
      • 追記: 特筆すべきことを忘れていた。松田さんは全編英語でトークした唯一の日本人でした。偉業!!
  • 'Concerning `Applications'' - moro, Kyosuke MOROHASHI
    • Concern周りの話もかなり参考になる
    • 個人的にはRefinementsの使い方に痺れた。
      • これはmoroさんの新しい発見の話だと思う。見ておくべき。
  • 'Refactoring Fat Models with Patterns' - Bryan Helmkamp
    • 終わった後に人だかりができてた理由がわかったわ〜。よくできた構成で面白かった。
    • 何が面白いって実際のRailsコードでよくありそうなコードを見せつつ、それオレいつも綺麗に書けない奴…的な思いをさせ、ポンポンとそれらしいリファクタリングをしていく
    • しかもそのパターンの名前が一貫性があって(オブジェクトというくくり)になっている。よくできた話や〜。
  • 'Async programming is all about programming synchronously ' - Masatoshi SEKI
    • 当然見ておくべき、で終わらせたいけどちょっと説明しておく。
    • まず「非同期呼び出され」やタイトルの「非同期って同期を書くこと」という名前がとてもわかりやすくて素晴らしい
      • 「非同期呼び出され」の結果を知るときに同期が必要になって実はこれがめんどいんだよね、という話だったと思う
    • 即時復帰でもやはり「結果が気になる」というので「待つ」という話になる。
      • 二種類待ちたいときにどうするか(たとえばサーバ)。一度に待たないとだめだよね、みたいな。
      • それでselect属(これもいい名前ですね)を使う、と。
    • とても面白かったです。咳さんはこんなことをいつも考えてらっしゃるのだろうか。
  • 'Casual Log Collection and Querying with fluent-plugin-riak' - Kota Uenishi
    • MapReduceSQLであつかっちゃおうという自作プロダクトの話
    • Riakの話しもかなりRiakの話は7DB本で読んだので楽しめた。
    • Riak使ったら楽なプロダクトもあったのかなあと夢想した。
  • 'Complex Event Processing on Ruby and Fluentd' - tagomoris
    • Norikaというストリームでデータを受け取って集計し、その結果をどっかにアウトプットできる自作サーバの話。
    • これはスゴイ!と思いつつも、私とはあまりに関係のない分野過ぎてあまり凄さが実感できないので、まあ動画を見て判断してください。
    • Esperというのがあるんすね、Javaは裾野が広い(個人的にはEsperというのをもう少し説明して欲しかった)
    • こういう繋ぎっぱなしの用途だとGCは切りづらそう
  • 'Unfactoring' - Aaron Patterson
    • ポリモーフィズムで条件をなくして高速化しようず〜という話だった
      • 例としてRailsの内部の話が沢山
    • SQLからASTを作って、それはキャッシュしといて、パラメータだけバインドする〜みたいなやつがRails 4.1から入る(かもしれない)とのこと
  • 'Contributing to Ruby' - Zachary Scott
    • Rubyへの貢献の仕方。具体的にはドキュメントが足りないところがあるのでそれを書こうず、という話。
    • CRubyのChangeLogに名前を刻みたい方は見るべき動画
    • 30分書けて丁寧にわかりやすく説明してくれる。
      • 勉強会とかでこれを見たあとにRDoc書く、的なイベントがあってもいいくらい
  • Keynote 'Fight with Diversity' - Akiraakr” Tanaka
    • akrさんの苦闘の日々の話。でもなんか楽しそうだった。
    • これは謎の感動というか、見終わった後に「ふぅ、一息」みたいな感じというか。
    • なんだこれは、言語化できない。
    • 田中さんと苦闘が乗り移る感じで、なんか達成感がある。素晴らしい締めだったと思う。

上記以外にも面白かったトークがあれば@nari3まで。

RubyKaigiで出された問題

RubyKaigiでは、とある問題が出されていました。

decode the answer | Code Puzzle

実際に解いてみた(まだ表だけ)のですが、問題がとてもよくできていて解けた時には謎の感動が待っていました。いや、感動した。
これはRubyKaigi用に作られた問題なのだそうですよ。任天堂さんかっけー!!

ツイッターとか見てる限りまだの人もいるようなので、ぜひチャレンジしてみてください。
私のようなポンコツでもがんばれば解けるくらいのレベルなのがよかったですね。
あと最初の問題をクリアしたあとの『大きなNextボタン』を忘れずに押すようにしましょう。

次は裏の方も頑張って見つけてみようっと…(というかPythonの方もあとでやってみよう)。

追記

裏の方も解けました。
裏ルートへの行き方がわからなかったのだけど、今までURLの傾向を考えるとあっさりと。
最後の問題はけっこう苦労した(1日くらいかかった)けど、ちゃんと実装すれば解ける問題で絶妙な難易度でした。
本当によくできた問題。ありがとうございます!!
(うっかり任天堂の採用情報見るくらいたのしかったです!!)

TRICK 2013 at RubyKaigi

tric/trick2013 · GitHub
「最悪のゴミ屋敷(Worst house of garbage)」賞をいただきました。まさか貰えるとは。ありがとうございます。
あと変態の称号もいただきました。私なんぞが変態だなんて真の変態に申し訳ないですが、ありがたく頂戴いたします。
コードはここ: trick2013/nari at master · tric/trick2013 · GitHub

簡単な解説

trick2013/remarks.markdown at master · tric/trick2013 · GitHubからの引用)
CRubyのオブジェクト空間自体を無限のテープとして利用したBrainf*ckの言語処理系です。

ObjectSpace.each_objectのブロックにメモリアドレスの低い順にオブジェクトが渡される特徴を利用しています。
この特徴を利用すれば、each_objectに特定のクラスに属するオブジェクトが渡ってきたときに、より高位のアドレスにさらに特定のクラスに属するオブジェクトを無理やり配置することで、each_objectのループが継続する状態を作り出すことができます。

上記の仕組みを利用して、Brainf*ckを作ってみました。
each_objectでテープのそれぞれのデータを1つずつ読み取り、それをBrainf*ckの1命令実行後のテープの状態に変換して高位のアドレスに対して配置します。
これを繰り返していくことによって、一度のeach_object呼び出しで完結したBrainf*ck言語処理系が実装可能となります。

また、1命令毎のテープ・ヘッドの状態をすべてオブジェクト空間自体に保存しているので、1命令毎の挙動を簡単に調べることができ、デバッグも容易です。

なぜ作ろうと思ったか

ObjectSpace.each_objectで無限ループできるのは知っていたのでこれを使って面白いことができないかあと考えた。
無限のデータ…無限のテープ…というとBrainf*ckじゃね?ということで作り始めた。
ObjectSpace.each_objectってテープのヘッドが右方向にしか進めない縛りがあるわけなんで、これでどうやってBrainf*ck作ろうかなぁ、と…。
それで結局は1命令ごとの状態をコピーしていくという作戦を取っている。
(他にも方法があれば教えてください…)

ObjectSpace.each_object(Cell)って感じで、クラスを指定してるのがちょっといけてない。
本当はCellクラスを作らずに、Bignumとか使ってやりたかったんだけど、それが難しかった(関係ないデータが意図せずできてしまうので)。
でももう少し頑張ればよかったかな。そこを指摘する浜地さんはさすが…。

あと、1行目でGC止めてますが、この止め方はイイ止め方だと思う。
僕が一番うまくGCを止められるんだ!

受賞コメント

  • 「受賞者のうち二人が中村ということで、中村一族はかなり変態ってことがわかったと思います」
  • 「ObjectSpace.each_objectの使い方に警鐘を鳴らしたかった」
  • 「メモリをかなり食います。Fibを動かすのに2GBくらい必要」
  • 「Brainf*ckなので日頃の業務などにお使いください」

RubyKaigi感想

箇条書き

1日目

  • Openingの角谷さんの喋り方がエモくてグッと来た
    • いろんなアナウンスを英語でもされていてスゴイと思った
  • Rubyの歴史
    • イイハナシダナー
  • Keynote
    • 1人で開発してた時の話がとても重要だと思った
  • Inside RubyMotion
    • llvmあたりの話までしてくれて超楽しいトークだった
    • あとで聞いたらMacRubyの資産をかなり使ってるそうな(JITの部分)
      • だからC++で書かれてる
  • Two Legal Bodies about Ruby and its projects
    • 漫談よかった。Grantは今年もやるそうな
  • TWO CARTOON FOXES: the _why documentary (Japanese Subtitled)
    • _whyのプレゼン動画の最初と最後だけ使ってるのがいいなあと思った
      • _why自身に優しい作りというか。いっぱい本人シーンがあると_whyは嫌がりそうだよね。
  • Toward efficient Ruby 2.1
    • rgengcスゴイスゴイスゴイ!…はい。
  • Refining refinements
    • NaCl.rbで少し聞いた話も混じってた
  • unagi.rb
    • 大変おいしゅうございました。nagachikaさんとusaさんに感謝…。

2日目

  • High Performance Rails
    • 勉強になった。
    • link_toの話、遅い理由が気になった
      • 実装がタコなのかしら
  • Continuous gem dependency updating with Jenkins and Pull Request
    • Jenkinsにやらせるというのはかしこい
    • Github使ってない環境ではどうしようかな…
  • Shrink to Grow
    • 今年はmrubyネタないなあと思ったらdanielがやってくれた
    • あの3Dプリンタを動かすデモがキャッチーでよかった
  • Webruby: Now you can write your favorite Ruby code for the browser!
    • シンボルがjsだと文字列に、とかあの辺の変換はどうやってるんだろう
    • かなり面白かった
  • 通訳チームと打ち合わせ
    • かなり気を抜いてたので「これは幅優先探索ですか、深さ優先ですか?」と聞かれて焦った。ambushでした。
  • Ruby on Windows -- the past, the present, and the future
    • usaさんトーク貴重
    • 5人しかコミッタがいなかった時代があったんだ…
  • How NougakuDo connect Windows Azure and Rails Application
  • Ruby's GC 2.0
    • 緊張したあ。
    • zackたんと少し話した。想像通りナイスガイだったよ。
  • CRuby Committers Who's Who in 2013
    • nagachikaさん以外できない発表だと思う。crazy...
  • Ruby Committers vs. the World
    • the worldに怒られてるみたいだった
  • 懇親会
    • モリスさんとお話できたよ!咳さんとも!jugyoさんとも!
    • 高井さんと桐島の話した。高井さんの解釈も面白かったなあ。
    • june29さんに自由を感じるステッカーをいただいた!
    • いろんな人とお話しできてよかったです。Rubyist優しいお。
  • 2次会
    • だいぶ酔っ払ってたので海外のゲストに絡んでいた
    • MatthewにRuby5のお礼言えたのはよかった。収録は大変なんだって。
    • Konstantinに今好きな言語なによ、と聞いたらRubyって言ってた。ちょっと意外。
    • Charlsが僕のこと覚えてた。「松江は最高だった!」と言ってたのでぜひRWCなどで。
    • Laurentと話せなかったのは残念。
    • cuzicさんともいろいろ話したよー
  • 3次会
    • 同じホテルにKirillとAntonが止まってたので1階で呑んでた
    • Antonに「RubyKaigiに来た理由は?」って聞いたら「そもそもこない理由がないよね」だって。
    • 超盛り上がってスゴイたのしかった!
    • 飲み過ぎて部屋まで介抱してもらうなど…ごめんなさい

3日目

  • おきたら12時だった件。いろいろとご迷惑をおかけしました…。
  • 酔っ払っててまともにセッションを聞けなかった…
    • 実は途中の駅で吐いて、会場についてからも吐いたりして、死んでた
    • 2.times{ nari.reverse }
    • D言語本のビニール袋が大変役に立ちました。ありがとうD言語
  • TRICK
    • 今回のマイベストセッション
  • Fight with Diversity
    • あの話をキーノートでするというakrさんカッケー
    • 朦朧としてたのであとで資料読もう
  • ロビー
    • @ryudoawaruにLTの桐島ネタの件を聞いてみたらやっぱり俺の発表Effectでしたよ!どや!
    • ようやくshinhさんに挨拶できたよ!!やった!!
      • コードを読むのが大事なのだそうな。
    • このときもおれは二日酔いで死んでいた

おしまい

Ruby's GC 2.0 - #rubykaigi

あいかわらずRubyGCの話をしました。新規性のない発表でしたが、お楽しみいただけたでしょうか…。

GCの説明とアニメーションの相性がいいことがわかったので、今回はRabbitではなくimpressで資料を作りました。
わりと作るのに苦労したのでアニメーション付きの資料はGumroadで売ることにしました。
超わかりやすいと思うので買ってください!!

Ruby's GC 2.0 (with animation)

お金を払えばslideboomへのリンクがゲットできます。それつかむことに自由を感じなさい!!

桐島、Rubyやめるってよ #odrk03

大江戸Ruby会議03の招待講演として発表してきました。たのしかったです!!

「思いっきりエモい(emotional)、コードが一行も出てこないプレゼン」をRubyKaigi系列で一度やってみたいという思いがあり、上記のようなネタを考えてみました。
ただ、かなり幅広い層(古参Rubyist、初心者Rubyist、コミッタ)に見られることもあり、いずれの層にも楽しんでもらえる話にしなければ、と思って、だいぶネタを練りました。
特に超練度が高いRubyistたちにどのように受け入れられるか心配ではあったのですが、artonさんや咳さんに「面白かった」と言ってもらえてホッとしました。

懇親会等ではありがたいことにみなさんから絶賛系のコメントをいただくことが多く、逆に心配になるくらいだったのですけど、akrさんだけは「目的オリエンテッドも大事なんだけどね」と私がまさにそれは指摘されるだろうな、と思うところをおっしゃられて、舌を巻きました。

今回の発表で『桐島』に興味をもってくれた人がけっこう居て、やってよかったなあと思いました。
おまえらタイトル大喜利ばっかやってんじゃなくて、まずは観ろ。
http://farm9.staticflickr.com/8517/8562542105_312d1bc76a.jpg
http://www.flickr.com/photos/hsbt/8562542105/in/set-72157633013243016
上の写真は未開封のDVDを買って持ってきたの図。懇親会で配りました。

補足:「リーダー」こと「キャプテン」について

今回の発表でキャプテンの扱いが私の想定していた内容とは違って伝わっていそうなのでここで補足しておきます。
私の資料の中に登場する彼は流行りそうもないプロダクトを作っている、つまり、狙っているのにゴミみたいなものしかできないわけです。
私自身と重ねあわせているところでもあります。

それでも彼は深夜残業(素振り)を続けているのです。
傍目から見ると意味のないようにも見えると思いますが、リリースを続けるわけです。
その原動力はまさにGC研究部(映画部)と同じだと考えています。

だから実は全然、笑えないのです。でも笑っちゃいましたよね。
すいません、これは私の伝え方がまったくたりませんでした。ほんとうに申し訳ないです。
私の一番好きなキャラクタであったキャプテンをこのような形で扱ってしまった(そう見えてしまった)点についてはとても悔しい限りです…。なにやってんだ…。