give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

【ネタバレなし】映画「ボヘミアン・ラプソディ」を観て、生まれて初めて泣いた話

はじめに

昨日、映画「ボヘミアン・ラプソディ」を観てきました。
本当は公開されてすぐ観に行きたかったんですが、予定がいろいろ詰まっていて1ヶ月近く観に行けませんでした。
しかし、クイーンファンの僕としては「なんとしても映画館の大スクリーンで観たい!」と思っていたので、昨日妻と二人で観に行きました。
ドラえもんやクレヨンしんちゃんなど、子ども向けの映画を除けば自分で映画館に足を運んだのは5〜6年ぶりかもしれません(もはや最後に何を観たのか思い出せない)。

「すごく良かった」という感想はネットでも僕の周りでも聞いていたんですが、実際に観てみたら・・・本当に良かったです!!😭

というわけで、このエントリでは映画「ボヘミアン・ラプソディ」の感想をネタバレなしでお送りします。

クイーンと私

映画の感想を語る前にまず、僕とクイーンの関係についてお話しさせてください。

僕が生まれたのは1977年で、クイーンのボーカルのフレディ・マーキュリーが亡くなったのが1991年。
その当時、中学生だった僕はまだ洋楽に目覚めておらず、フレディについても「なんか外国のミュージシャンがエイズで亡くなったらしい」という程度の話しかしりませんでした。
もちろん、1985年のライブエイドを実際にテレビで観た、などということもありません。

「クイーン=変なおっさんが歌うエキセントリックなロックバンド」?

そんな僕がクイーンを聴き始めたのは高校時代です。
まずビートルズから洋楽にハマり、その次にハマったのがクイーンでした。

最初にクイーンを知ったのは楽器屋で見かけたこのバンドスコアです。

バンドスコア/クィーンベスト (バンド・スコア)

バンドスコア/クィーンベスト (バンド・スコア)

タンクトップ一枚で熱唱するフレディが載っているこの表紙を見て、僕はクイーンのことを「口ヒゲを生やした変なおっさんボーカルが歌うエキセントリックなロックバンド」という勝手なイメージを持っていました(ひどい)。

ですが、「なんか有名なバンドみたいだし、1回聴いてみるか」と思って、ベストアルバムを借りて聴いてみました。

Greatest Hits 1 & 2

Greatest Hits 1 & 2

僕がクイーンにハマったのはそこからです

クイーンの影響を受けまくった高校時代。

フレディのルックスはいろんな意味でインパクトが強いですが、変な先入観が一気に吹き飛ぶくらい、彼らの音楽は驚くほどカラフルかつキャッチーで、僕は一気にクイーンにハマりました。

当時やってたコピーバンドではWe will rock youをコピーして学園祭で演奏しましたし、「フレディが履いてた靴だから」という理由でアディダスのスニーカーを買って通学用に履いてたりしました。

Untitled

英語の発音について学んだのもクイーンの音楽からです。
(楽曲の方の)「ボヘミアン・ラプソディ」をヘッドホンで聴くとわかると思うのですが、歌の一番最後に出てくる"Anyway the wind blows"という歌詞。
この部分にじっくり耳を澄ますと、「エニウェイザウィンブロオ〜〜〜〜〜ウz」と、最後の最後に、ノイズのような小さな音で、"blows"の"s"の音が聞こえます。

カタカナではよく「ブロウズ(またはブローズ)」と書いたりしますが、「ズ」じゃないんですよね。
"blows"の"s"はまったく喉を動かさず、口の中で息だけをもらして作る雑音のような「z」なんです。

「なるほど、日本人は必ず"zu"のように母音を付けて発音するけど、ネイティブの人たちは母音を付けずに"z"だけで発音するんだ!」ということに気づいたのはクイーンのおかげです。

・・・などなど、クイーンについて語り始めたらキリがありません。

だけど、フレディはもういなかった

残念だったのは僕がクイーンにハマったころにはもうフレディはいなくて、クイーンの活動が止まっていたことです。
ですが、残ったメンバーがフレディのボーカルを編集して新作として1995年に発売した「メイド・イン・ヘブン」だけは、唯一僕がリアルタイムで体験できた新作アルバムの発売です。
もちろん、当時は発売されたその日に買いに行きました!

メイド・イン・ヘヴン

メイド・イン・ヘヴン

このようにクイーンは僕が青春時代にダダハマりしたバンドなので、映画化の話を聞いたときは「うおー、絶対に観に行く!!」と思いました。
しかも予告編の動画からして「これはかなり期待できるのでは?」と思っていました。


映画を観て生まれて初めて泣いた

さてさて、前置きが長くなりましたが、ここからがようやく映画の感想です。

映画の感想は・・・泣きました。

映画を観て泣いたのは生まれて初めてかもしれません。

今までは多少ウルッとくることはあっても、涙までこぼれることはありませんでした。
ですが、今回は生まれて初めて涙が出ました。

映画の前半、4人が初めてライブをやったシーンを観たときは「ああ、クイーンだ。フレディが生き返ってくれた。生まれて初めてクイーンのライブが観られた」と、それだけで目頭が熱くなりました。

そして映画のクライマックス。
・・・うーん、これはもはやうまく言葉にできません。

「フレディはそこにいたんだ。こんなふうに懸命に生きてきたんだ」ということを知って嬉しくなった気持ちと、「でも、今はもういないんだ。目の前でこんなに元気に歌ってくれているのに」という寂しい気持ちが入り混じって、映像を見ながら涙が出てきました。

いや、そんな理屈は抜きでもう純粋に、

「やっぱりフレディが好きだ、ブライアン・メイが好きだ、ジョン・ディーコンが好きだ、ロジャー・テイラーが好きだ、クイーンのみんなが大好きだ!!帰ってきてくれてありがとう!!ずっと会えなかったけど、やっと会えた!!本当に嬉しい!!!」

という思いだけでもう勝手に涙が出てきました。

僕個人のいろんな想いが折り重なって、心の底から感情移入できた

前述のとおり、僕はこれまで映画を観て泣くことは滅多にありませんでした(というかたぶんゼロ)。
それはどこかで「いや、だってこれはフィクションだし」という冷めた自分がどこかにいるからです。
特に感動を誘うために重要人物が突然死んだりする安易な演出が嫌いで、「あ、やっぱり誰か死んだ。誰も殺さずに感動させてよ」と心の中でツッコんだりします(性格悪い)。

今回「ボヘミアン・ラプソディ」を観て気づいたのは、「自分が映画を観て泣けなかったのは、心の底から感情移入できなかったからだ」ということです。

僕はクイーンが大好きですし、この映画もノンフィクションです(演出のために多少事実と異なる設定がある点には目をつむります)。
なので、まるで自分がタイムマシーンで当時に戻ったかのように、もしくは大好きだった人が突然生き返ったかのように、自分の気持ちが映画の中に引き込まれていくのがわかりました。

ビックリするぐらい、クイーンの4人がソックリ!

それにしても、この映画は本当によくできています。
特に、クイーンを演じる4人の役者さんが本当にソックリです。
見た目しかり、話し方やしぐさしかり、そして楽器の弾き方やステージ上でのパフォーマンスまで!!

たとえば、ベースのジョン・ディーコン(上の写真でいうと右下の人)は年代によって髪型がいろいろ変わるのですが、その変遷もしっかり再現されていて「うわー、めっちゃ細かいわー」と一人でうなってしまいました。

顔は似ていても楽器を弾くシーンだけ別カットになっていたりすると、「あー、やっぱり役者さんに楽器は弾けないよなー」と思ってそこで急に現実に引き戻されてしまいますが、この映画では役者さん本人が楽器を弾く姿も映っています。
しかもその弾き方まで非常によく似ているので(たとえばブライアン・メイがジャーンとギターをかき鳴らすときのポージングとか)、まったく現実に引き戻されることなく、むしろ逆に「そこにクイーンがいる!」としか思えませんでした。

クイーンファンでない妻も「面白い」と言ってくれた

今回は妻と一緒に観に行ったのですが、妻は別にクイーンファンではありません。
「とりあえず一緒について行くけど、退屈になったら寝ちゃうかも」とまで言ってたのですが、最初から最後まで妻は目を開けてちゃんと観ていました。
しかも、「クイーンファンじゃないけど、めっちゃ良かった!また観たい!!」とまで言ってくれました。

妻は映画に退屈したり、ストーリーが小難しくなってきたりすると本当に寝てしまう人なので、「今日も絶対に寝るだろうな」と思ってたのですが、上映中に一睡もしなかった上に「面白い」という感想まで出てきたのはとても意外でした。

映画を観てからは、妻もSpotifyでクイーンの音楽を自らすすんでかけたりしています。
なので、クイーンファンならずとも、かなり楽しめる映画になっているんじゃないかと思います。

まとめ

というわけで、今回は映画「ボヘミアン・ラプソディ」の感想について、あれこれ熱く語ってみました。

今の若い人はクイーンのような古いロックバンドにはあまり興味がないかもしれません。
ですが、同じように興味がなかった妻も「面白い」と太鼓判を押していたので、純粋に「普通の映画」を観に行く気持ちで足を運んでも十分楽しめるかもしれません。

そして、僕みたいにクイーンが大好きな方は、絶対に観に行くべきです!!
いや、わざわざ僕が言うまでもなく、すでに観に行った人も多いと思いますが、本当によくできているので、まだ観ていない人はぜひ映画館へ観に行きましょう!

ボヘミアン・ラプソディの評価:⭐️⭐️⭐️⭐️⭐️

www.foxmovies-jp.com

ボヘミアン・ラプソディ(オリジナル・サウンドトラック)

ボヘミアン・ラプソディ(オリジナル・サウンドトラック)


映画『ボヘミアン・ラプソディ』日本オリジナル予告編解禁!


映画『ボヘミアン・ラプソディ』メイキング映像「クイーンになるまで」”本物”ブライアン・メイ、ロジャー・テイラーらも絶賛!

パターンマッチ&コピペプログラミングと、塾講師時代の思い出

はじめに

最近ネットを見ているときに知ったのですが、世間には「パターンマッチとコピペ」と呼ばれるプログラミングスタイルがあるそうです。

これはあまり深く考えずに、

困ったらググる
 ↓
とりあえずそれっぽいコードを見つけてコピペする
 ↓
動けばOK、動かなければ他のコードを探してコピペする

という手順を繰り返してプログラムを完成させるプログラミングスタイルなんだそうです。

「パターンマッチとコピペ」というプログラミングスタイルが語られたのは、僕が知る限りこちらのツイートが最初です(もしかすると、もっと昔からあるのかな??)。

このスタイルを良しとするかどうかは人によって意見が分かれるようですが、僕自身はあまり良くない考え方だと思っています。

余談:本来のプログラミング用語としての「パターンマッチ」とは

ご存じの方も多いと思いますが、「パターンマッチ」とは関数型言語でよく使われる言語機能のことです。
たとえば、以下はパターンマッチを使ったF#のコード例です。

type Color =
    | Red = 0
    | Green = 1
    | Blue = 2

let printColorName (color:Color) =
    // パターンマッチで処理を分岐させる
    match color with
    | Color.Red -> printfn "Red"
    | Color.Green -> printfn "Green"
    | Color.Blue -> printfn "Blue"
    | _ -> ()

printColorName Color.Red
printColorName Color.Green
printColorName Color.Blue

出典: パターン マッチ (F#) | Microsoft Docs

注意していただきたいのは、関数型プログラミングにおける「パターンマッチ」はただの言語機能(またはプログラミングテクニック)であり、それ自体にまったくネガティブな意味はない、ということです。
ですので、関数型プログラミングを学んでいるときに「パターンマッチ」という言葉に出会っても、「これって使わない方がいいのかな?」とか思ったりしないようにしてください。

塾講師時代の生徒にも「パターンマッチ」で解こうとする子がいた

ところで話は変わりますが、僕は大学時代、塾講師のバイトをやっていました。
成績のいいクラスも成績の悪いクラスも、どちらも受け持っていましたが、今考えると「あー、あれは一種のパターンマッチだったのかもしれない」と思うことがあります。

たとえば、成績の悪い子のクラスを受け持っていたときによく見られたのが、こんな光景です。

Aくん、ここの式はどうなるかわかる?
 ↓
う〜ん、y=3?(と言って、僕の顔を見る)
 ↓
(僕が首をかしげたのを見て)いや、違う違う、y=5分の3?(また僕の顔を見る)
 ↓
(相変わらずダメそうなのを見て)あー、そうそう、y=8!!なあ、そうやんな!?(と言いながら、また僕の顔を見る)
 ↓
(以下これの繰り返し・・・)

このとき、Aくんは問題文に載っている数字を適当に組み合わせ、僕が「うん、そうだね」と言うまで、それらを足したり引いたり掛けたり割ったりし続けます。
ですが、本質的なことは何も分かっていないので、そう簡単には正解にたどりつけません。
もし仮にパターンマッチに成功して正解が得られたとしても、それはただの偶然なので、本番のテストではまったく点が取れません。

一方、成績のいいクラスではこういう光景はほとんど見られませんでした。
同じような質問をしても、成績のいいクラスの子はすぐには答えず、じ〜っと問題文を見つめて頭の中で何かを考えます。
そして、しばらく経ってから静かに自分の答えを口に出します(で、だいたい正解します)。

三つ子の魂百まで?(パターンマッチ魂も百まで?)

プログラミングを学んでいる人の中にも、このように「じっくりとロジックを追いかけて正しいコードを見つける人」と、「とりあえずググる!コピペする!ググる!コピペ!ググる!コピペ!を延々と繰り返す人」に大きく分かれるのではないでしょうか。
そして、後者の人はもしかすると、小さい頃からパターンマッチで勉強の答えを見つけようとしてきた人なのかもしれません。

ただし、学校の勉強や入試とは違い、コードを書くときは「ググる」というオプションは禁じ手ではありません。
また、正直に白状すれば、僕自身もたまに「パターンマッチ&コピペ」で動くコードを探してくることがあります。
ですので、「パターンマッチ&コピペ」が100%ダメだとは言いません。

とはいえ、ググって答えが見つからなければそこで詰んでしまいますし、たとえ答えが見つかっても自分が書いたコードを自分が理解できていないので、それ以上自分のコードをどうすることもできません。
そう考えるとやはり、「パターンマッチ&コピペ」プログラミングは害悪の方が大きいと言えるでしょう。

もしあなたが「パターンマッチ&コピペ」ばかりを繰り返してコードを書いているプログラマなのであれば、一度立ち止まって、じっくりと順序立ててロジックを追いかける練習をしてみてください。

2018.11.29追記:「パターンマッチ&コピペ」で帰納的に学習する?

「パターンマッチ&コピペ」は害悪が大きいと書きましたが、次のような場合は例外かもしれません。
それは「パターンマッチ&コピペ」でプログラムを目的通りに動かしたあと、自分が書いた(というかコピペした)コードをふりかえって、コードの意味や構文を理解しようとした場合です。

つまりこれは「パターンマッチ&コピペ」を利用して帰納的に学習するスタイルです。
この方法であれば「パターンマッチ&コピペ」でプログラムを書いたとしても、結果的にはきちんとプログラミングスキルを向上させたことになるはずです。

ですが、このやり方はイージーではなく、むしろ高度な学習方法だと思います。
そして、「パターンマッチ&コピペ」を多用するプログラマで毎回この手順を踏んでいる人は、おそらくごく少数ではないかと推測します。

まとめ(と宣伝)

・・・などと、なんか偉そうにつらつら書いてしまいましたが、もともと言いたかったことはなんてことはありません。
「あー、最近よく目立つコピペプログラマと塾講師時代に見てきたあの子たちは、きっと同じ部類なんじゃないかなー」とふと思ったので、それが言いたかっただけです(笑)。


ちなみに、僕が執筆した「プロを目指す人のためのRuby入門」は読者のみなさんが「パターンマッチ&コピペ」プログラマにならないよう、しっかり順序立てて体系的にRubyプログラミングを説明しています。

本書を読めば「今まで呪文のようにしか見えなかった不思議なRubyの構文」や「実はあまりよくわからないまま、見よう見まねで書いているRubyコード」も自信をもって読み書きできるようになるはずです。

「パターンマッチ&コピペ」プログラマから脱却したい人はぜひご一読くださいませ!(という宣伝でなぜか締めくくりますw)

初の海外カンファレンス参加&初のRubyConfをできるだけ詳しくレポートします #RubyConf2018

はじめに

このブログで先日お伝えしたとおり、2018年11月13日から15日にかけてロサンゼルス(LA)で開催されたRubyConf 2018に参加してきました。

このエントリではRubyConfに行っていない人にも雰囲気が伝わるように、現地の写真やセッションの感想、英語の難易度といった観点で参加レポートを書いてみようと思います。

f:id:JunichiIto:20181126115456p:plain

とりあえず、めちゃくちゃ長くなってしまったので、先に目次を載せておきます。

ちなみに、出発前の準備については以下のエントリにまとめてあります。海外カンファレンス参加時に必要な準備等については、こちらのエントリを参照してください。

それでは以下が本編です!

写真で見るRubyConf

まずは現地で撮った写真をいろいろと紹介していきます。

会場になっていたのはミレニアム ビルトモア(Millennium Biltmore)というホテルでした。

会場に着くとこんなしっかりしたネームカードがもらえます。ちなみに立場によってカードの色が違っていて、スピーカーの人やスポンサー関係者は別の色のネームカードになっています。
f:id:JunichiIto:20181124080809j:plain

各ルームを移動する際に通るスポンサーギャラリアです。スポンサーブースがいろいろ並んでいます。てか、由緒あるホテルなので内装が豪華!!

Matzさんのキーノートなど、全員が集まるセッションではこの一番大きいルームを使っていました。RubyConf 2018の参加者は800人だそうです。

各セッションは4トラックに分かれていました。すなわち、4つのルームを使ってセッションが同時並行するわけですが、そのうちのひとつがこれです。日本ならもうこのルームだけで、中規模なITイベントが開催できそうなレベルです!

1日目の終わりには会場の2階でNationBuilderというスポンサーが主催するアフターパーティがありました。こちらはそのパーティの様子です。

会場内に(つまりホテル内に)NationBuilderのオフィスがあったのでそこも見学することができました。Apple Thunderbolt Displayとアーロンチェアがたくさん並んでいます。

ランチは3日間とも会場内でビュッフェ形式のランチが提供されました。メニューは3日間とも違っていました。これは2日目のランチです。

ランチの席がいっぱいで、どこに座ろうかな〜と思って探していたら、たまたまMatzさんの横が空いていたので座らせてもらいました。こんな感じで、Ruby界の有名人と気軽に話せるのもRubyConfのいいところですね。
f:id:JunichiIto:20181124094136j:plain

「たこ焼き仮面」の二つ名でも有名な、Aaron Pattersonさんとも記念写真をパシャリ。他にも「あっ、この人Railsのリポジトリでよく見かける人だ!!」みたいな有名なエンジニアさんがたくさんいました。海外エンジニアさんは実写アイコンの方が多く、こういうときにすぐ分かるので良いですね。(ただ、Aaronさん以外の人と写真を撮らなかったことをちょっと後悔・・・)

「私を代名詞で呼ぶときは、"HE / SHE / THEY / (聞いてくれ)" で」という、4種類の小さなバッジが配られていました。ジェンダー問題やポリティカル・コレクトネスに敏感なアメリカらしい配慮かもしれません。

毎日3時頃には30分ほどの小休憩があり、各種スイーツが食べ放題でした。ちなみに写真は撮っていませんが、水やコーヒーや紅茶は随時飲み放題になっていました。

RubyConf 2018のスポンサー企業の一覧です。日本でお馴染みの企業もあれば、初めて名前を聞いた企業さんもありました。真ん中あたりにはCookpad社の名前も見えますね。

3日目の最終セッションは「Matzに何でも聞いてみよう」的なQ&Aコーナーでした。「Ruby 3はいつ出るのか」「型チェックは導入されるのか」みたいな質問がたくさん飛んでいました。それにどんどん英語で答えていくMatzさんはさすがです!
f:id:JunichiIto:20181125145114j:plain

RubyConfで印象に残っていることベスト3

海外のカンファレンスに参加するのは今回が初めてでした。RubyConfに参加するのも当然初めてです。実際に参加してみて感じたことはたくさんありますが、その中でも特に印象に残ったことを3つ挙げます。

1. 日本のIT系イベントや勉強会に比べて女性の参加者が多い

会場内にはぱっと見て、女性の参加者が3割ぐらいいました。
また、参加者だけでなく、スピーカーにも女性の方がたくさんいました。

RubyConfでは1日目の最初と最後、それと2日目と3日目の最初と、計4回のキーノートがあったのですが、トップバッターのMatzさん以外、全員女性のスピーチだったことにも驚きました。

以下はその女性キーノートスピーカーの面々です。

f:id:JunichiIto:20181124090909p:plainf:id:JunichiIto:20181124090920p:plainf:id:JunichiIto:20181124090926p:plain

個人的には日本のIT業界はもっと男女比率が均等になってほしいと考えている人なので、日本のITイベントや勉強会でもこんなふうに女性の参加者やスピーカーが増えたらいいのになあ、と思いました。

2. 想像していたほどテクニカルなカンファレンスではなかった

RubyConfに参加する前は、RubyConfはRuby界の天下一武道会(注:ドラゴンボールのネタです)みたいなイベントだと思っていました。
登壇者はGitHubのリポジトリにスターが1000個以上付いていることが必須条件で、セッションの内容も「ひゃー、こりゃまったく付いていけねーなあ!もっと勉強せなあかんわ〜」みたいなものばかりだと想像していました。

が、そんな予想に反して、セッションのレベルは全体的にマイルドでした。
もちろん、ハイレベルなものも中にはありましたが、それはどちらかというと少数派で、各セッションは初心者向けのものだったり、組織運営に関わるものだったり、いわゆる「エモい系」というか、コードの話がほとんど出てこない自分語り的なものだったり、かなりバラエティに富んだ品揃えになっていました。

例えるなら、絶対に激辛カレーが出てくると思って覚悟して有名店に入ったのに、実際に食べてみたら「あれっ、辛くないぞ??いや、むしろ甘いのでは!?」と肩すかしを食らったみたいな、そんな感じです。

聞くところによると、今年だけが特別そういう傾向にあるわけではなく、去年もだいたいこんな感じだったそうです。

ただ、そういうバラエティに富んだセッションを取りそろえて敷居を低くしてあるからこそ、初心者や女性の方も比較的参加しやすいイベントになったのかもしれません。

また、日本人はハードウェア業界、ソフトウェア業界を問わず、何かと「技術力至上主義」に陥りやすい印象があります(かくいう僕自身も「プログラマは技術力が重要」と考えていた人間の一人です)。
ですが、今回RubyConfに参加してみて、こういう懐の深さというか、多様性を認める文化やおおらかさみたいなものが、実はアメリカという国の強さの根源なのでは?と漠然と考えていたりしました(何の根拠もない個人の感想です)。

3. 海外でもRubyが愛されていることを肌で実感できた

日本生まれのRubyが海外でも多く使われていることは以前から知っていましたが、それはあくまでネット等の情報を通して聞いた話ばかりでした。
ですが、今回RubyConfに参加してみて、Rubyが海外の人たちにも愛されていることを肌で実感できました。

言葉にしたり、定量化したりすることは難しいのですが、会場の熱気や参加している人たちの表情やリアクション、雰囲気等で「Rubyが好き!」という気持ちが伝わってきました。
パーティ等で個人的にしゃべった人たちからも「いやー、本当にRubyっていいよね」みたいな感想を聞いたりしました。

たくさんの人たちから記念撮影を求められるMatzさんを見て、「あー、Matzさんって本当にすごいんだなー」と思うと同時に、同じ日本人としてちょっと誇らしくなりました(僕の功績では全くないですが)。

初の海外カンファレンス参加でしたが、Rubyが日本生まれ&自分も日本人ということで、海外でのアウェー感をちょっとだけ軽減できたような気もします(ただの思い込み?)。

印象に残っているセッションの感想等

RubyConfでは本当にたくさんのセッションがありました。一つずつ丁寧にレポートするとなかなか終わらないので、その中から印象に残っているものをピックアップして駆け足で説明します。

ただし、どれも英語だったので僕の理解が不完全なところがあるかもしれません。
近日中に全セッションの動画がYouTubeに公開されると思うので、気になるセッションがあればそちらを見て内容を確認することをお勧めします。

■ 1日目
OPENING KEYNOTE - Yukihiro Matsumoto (Matz)
  • Rubyにおけるコミュニティの重要性をお話しされていました。
  • Rubyはハイプ・サイクルでいうところの流行期が数年前にやってきて、現在は幻滅期にある。しかし、もうすぐ回復期に入って安定期になるはずだから、投資するなら今!みたいな話をして会場を盛り上げていたのが印象的でした。

f:id:JunichiIto:20181125192334p:plain
出典: ハイプ・サイクル - Wikipedia

  • ちなみにMatzさんが英語で話すときは知性が30%ダウンするそうです(笑)。

動画: RubyConf 2018 - Opening Keynote by Yukihiro Matsumoto 'Matz' - YouTube

Graphics and Simulations (and Games), Oh My! - Ryan Davis
  • Minitestの開発者やSeattle.rbのファウンダーとしても有名なRyan Davisさんのスピーチでした。
  • 今回は現在開発中のgraphicsというライブラリを紹介していました。
  • グラフィックスは自分の専門分野ではないと言いながらも、Rubyでこんなライブラリが書けるというのはさすがスーパーハッカー!という印象でした。

動画: RubyConf 2018 - Graphics and Simulations (and Games), Oh My! by Ryan Davis - YouTube

Building for Gracious Failure - James Thompson
  • マイクロサービスを運用する際のエラー処理の対処方針が説明されていました。
  • スピーカーのJamesさんいわく、サービス間でリクエストやレスポンスを受け取ったときは、多少おかしなデータがあってもシステムエラーを起こして処理を止めるのではなく、おかしなデータは無視してそれ以外の正常なデータを可能な限り受け入れることが大事なんだそうです。
  • すなわち、マイクロサービスの運用においては、システムエラーを発生させてサービスの流れを止めるよりも、可能な限りデータのバケツリレーを進める方が吉、ということのようです(という話だったと思うんですが、ちょっと自信がないです)。

参考: 発表スライド
動画: RubyConf 2018 - Building For Gracious Failure by James Thompson - YouTube


■ 2日目
Let's subclass Hash - what's the worst that could happen? - Michael Herold
  • Hashie gemのメンテナさんによる講演でした。
  • HashieはHashのサブクラスとして実装しているが、そうするとHashが持っている170ものメソッドを全てサブクラスでも適切に処理することが期待される。報告されるのissueの中にはかなりレアなエッジケースも含まれることがあるが、Hashのサブクラスである以上、それにもがんばって対処した、というような苦労話が語られていました。
  • Hashie gemには僕もよくお世話になっているので、スピーカーのMichaelさんに「いつもお世話になってます!」とあいさつしておきましたw

参考: RubyConf 2018: Let's Subclass Hash - What's the Worst That Could Happen? | Michael Herold
動画: RubyConf 2018 - Let's subclass Hash - what's the worst that could happen? by Michael Herold - YouTube

Pointers for Eliminating Heaps of Memory - Aaron Patterson
  • さっき「一緒に写真を撮ってもらいました」と紹介した、Ruby/Rails界の超有名人、Aaron Pattersonさんの講演です。
  • セッションの出だしでは「僕はGitHubの社員なんだけど、GitHubはMicrosoftに買収されたでしょ?だから、今の僕のMacの壁紙はWindows XPの草原の壁紙なんだよ〜。HAHAHA!!」みたいなジョークを連発して、会場を爆笑の渦に巻き込みました。
  • しかし、いったん本編が始まるとRubyのメモリを使用量を減らすというテクニカルな話題を説明するために、「Cで書くとわかりにくいだろうから」という理由でRubyで書いた擬似コードを使ったり、図やアニメーションをふんだんに使ったスライドで説明したりと、随所に聴衆が理解しやすくするための工夫を凝らされていました。
  • 技術力が抜群なのはもちろんのこと、難しい話題をわかりやすく説明し、なおかつユーモアを交えて笑いも取れる、「超一流のエンジニア、マジすげー」と驚嘆したセッションでした。

f:id:JunichiIto:20181126090639j:plain
たこ焼きではなく、ハンバーガーの帽子を頭にかぶって登壇するAaronさん

動画: RubyConf 2018 - Pointers for Eliminating Heaps of Memory by Aaron Patterson - YouTube

Parallel programming in Ruby3 with Guild - Koichi Sasada
  • Ruby 3での導入を目指して現在開発が進められている、並列プログラミングのための新しいメカニズム、Guild(仮称)を説明するセッションです。
  • Guildが別々であれば、2つのGuildはGVL(Giant VM Lock)の影響を受けずに完全に並列でプログラムが実行可能になります(ただし、1つのGuild内にある複数スレッドの実行はGVLの影響を受ける)。

f:id:JunichiIto:20181124190421p:plainf:id:JunichiIto:20181124190432p:plain

  • Guild間では"shareable object"としての条件を満たさない限り、データを共有することはできません。

f:id:JunichiIto:20181124190447p:plain

  • GVLの影響を受けないプログラムの並列実行はとても魅力的ですね。Guildのリリースが非常に楽しみです。
  • あと、笹田さんとはこのRubyConfで初めてお話しさせてもらいましたが、物腰柔らかな方でとてもお話ししやすかったのが印象的でした。

参考スライド: http://www.atdot.net/~ko1/activities/2018_rubyconf2018.pdf
動画: RubyConf 2018 - Parallel programming in Ruby3 with Guild by Koichi Sasada - YouTube

The secret power of Ruby 2.6: JIT - Takashi Kokubun
  • Ruby 2.6で導入される、JITコンパイラを説明するセッションです。
  • JITコンパイラはRubyの実行速度を速くするために導入されるものですが、速度改善が見られるケースとそうでないケースがあり、それぞれどういう理由で速くなったり、遅くなったりするのかが説明されていました。
  • セッションの内容とは直接関係ありませんが、国分さんの英語は日本語と同様非常に早口で、「あー、これは頭の中も英語で考えながらしゃべっているなー。すごいなー」と驚きました。

参考スライド: Ruby 2.6 JIT / RubyConf 2018 - Speaker Deck
動画: RubyConf 2018 - The secret power of Ruby 2.6: JIT by Takashi Kokubun - YouTube

LIGHTNING TALKS(LT大会)

先着順で登壇者が決まるLT大会です。このLT大会ではなんと、僕も14番目のスピーカーとして発表させてもらいました。
この話は別のエントリで詳しくご紹介したいと思います。

2018.12.17追記: LTの話を詳しく書きました

LTの準備の進め方や、発表内容の詳しい話はこちらのエントリに書きました!


■ 3日目
Branch in Time - Tekin Suleyman
  • 「なぜこんな実装になってるんだろう?」と思ってgitの変更履歴を追いかけたときに、どういうコミットになっていればその理由がわかりやすくなるか、という「コミットのお作法」を説明するセッションでした。
  • 前半で「よくありがちな問題」として説明された架空の事例では「あー、それ、めっちゃよくわかる!!」と大きく頷くと同時に、自分も結構いい加減なコミットをして「悪い例」になってしまっていることを反省しました。
  • ちなみに、スピーカーのTekinさんは1日目のアフターパーティで一番長くしゃべったエンジニアさんです。易しい英語でわかりやすく話してくれたので、非常に話しやすかったです。

参考スライド: Branch in Time (a story about revision histories)
動画: RubyConf 2018 - Branch in Time by Tekin Suleyman - YouTube

Hijacking Ruby Syntax in Ruby - Tomohiro Hashidate, Satoshi "Moris" Tagomori
  • BindingやTracePoint、Refinementsといった「素のRuby」の機能を使って、"final"や"abstract"、"override"といった「他の言語にはあってRubyにはない構文」を導入するという、非常にマニアックな発表でした。
  • そして、このマニアックな発表をしたのが、著名な日本人エンジニアである@joker1007さんと@tagomorisさんのお二人でした。
  • たまたま僕の席の隣にはMinitest開発者のRyan Davisさんが座っていたのですが、横の席でずっと「Oh...」とか「Wow!」といった独り言をつぶやいていたのが非常に印象的でした。そして最後のQ&Aタイムでは、「お前たちは最悪だ!!(You are terrible!!)」と最大級の褒め言葉(笑)を贈っていました。


ちょっと分かりづらいかもしれませんが、発表開始直前の会場の様子です。

参考スライド: Hijacking Ruby Syntax in Ruby (RubyConf 2018)
動画: RubyConf 2018 - Hijacking Ruby Syntax in Ruby by Satoshi "Moris" Tagomori & Tomohiro Hashidate - YouTube

Building Serverless Ruby Bots - Damir Svrtan
  • 最近話題になっているサーバレスアーキテクチャで、Rubyを実装言語として使うための工夫や情報源を紹介するセッションでした。
  • 今のところ(2018年11月時点)、Rubyをそのまま実行できるのはIBM Cloud Functionsというクラウドサービスだけだそうです。ただ、今後はAWSのような他のクラウドサービスでも対応する可能性がないわけではないので、急いでIBM Cloud Functionsを使うべきかどうかは微妙なところかも、という話をされていました。
  • 必ずしもRubyでなくてもいいはずなのに、あえてRubyでサーバレスなプログラムを実行しようとするDamirさんの姿勢に強い「Ruby愛」を感じました。

参考スライド: Building Serverless Ruby Bots @ Ruby Conf 2018 - Speaker Deck
動画: RubyConf 2018 - Building Serverless Ruby Bots by Damir Svrtan - YouTube

現地ではどれくらい英語に苦労するのか

さてさて、ここまであたかも何の苦もなく、現地でコミュニケーションしていたかのように書いてきましたが、RubyConfはアメリカで開催されたカンファレンスなので、当然英語が共通語です。参加者もおそらく現地のアメリカ人が大半だったと思います(見た目だけでは国籍を特定するのは難しいので正確な比率はわかりませんが)。

ここからは初の海外カンファレンスで英語でどれくらい苦労したのか(またはしなかったのか)を語ってみようと思います。

英語でも発表内容は5〜6割はわかる(ただしテーマやスライドのテキスト量による)

平均すれば発表内容は5〜6割ぐらいは理解できたと思っています。
特に、次の条件が揃ったときが理解しやすいです。

  • スライドにテキストや図、コードが多い(つまり、視覚情報が豊富)
  • 発表テーマが自分に馴染みのあるものである(つまり、発表のコンテキストが既知のものである)

この条件を満たしていれば、英語の細部が聞き取れなくてもスピーカーの身振り手振り、表情、声のトーンなどからだいたい内容を理解することができます(誤解している可能性が絶対ないとは言い切れませんが)。

逆にスピーカーの中には、スライドにほとんどテキストが登場せず、ひたすら口頭で説明していったり、Rubyの話がほとんど登場しない(つまり、コンテキストを僕が十分に理解していない)、本人の社会貢献活動を語ったりする人もいました。
こうなると、「うーん、わかったような、わからんような(でも理解できた自信がまったくない)」という感想になりました😓

ライブキャプションはありがたいけど・・・

一部の発表ではライブキャプションという字幕サービスが提供されていました。
これは下の写真のように、スライドの上部に(ほぼ)リアルタイムでスピーチの内容を表示してくれるサービスです。

f:id:JunichiIto:20181126182237j:plain
Photo by @Codingmamakaz

これは一見すごくありがたいのですが、仕組みとしては裏で人間が頑張ってタイピングしているので、どうしても数秒のタイムラグが発生してしまいます。こうなると、スピーカーが今喋っている内容と目で追いかける英文が食い違ってしまうので、逆に混乱してしまいがちでした。

また、ときどきタイピングが追いつかず(もしくは専門用語を正しく聞き取れずに?)に内容が抜け落ちるときもあります。「そこが知りたかったのに!」という部分が抜け落ちると少し残念な気持ちになりました。

もちろん、ライブキャプションのおかげで聞き取れなかった部分を理解できたことも多少ありましたが、そういう機会は数える程度だったので個人的には「最悪なくても大丈夫かな」という印象でした(せっかく提供してもらったのにごめんなさい🙏)。

共通の話題がないと初対面の人に話しかけるのは困難

前述の通り、RubyConfに参加していた日本人は参加者全体から見ると少数派です。会場にいた日本人はおそらく20人前後だったんじゃないかと思います。

ずっと日本人同士で固まって日本語でしゃべっていると、日本の勉強会に来たのと変わらなくなってしまうので、僕は「できるだけ現地の人とコミュニケーションを取ろう」と思ってRubyConfに臨みました。

・・・が、実際やろうと思うとめちゃくちゃハードルが高かったです。

そもそも、初対面の人に話しかけようと思っても共通の話題がないと話しかけるきっかけがありません。
最初は僕が英語があまり得意じゃないからハードルが高いんだろう、と思っていたんですが、これってよく考えると日本の勉強会でも同じなんですよね。

同じ勉強会に来ているからといって、いきなり見ず知らずの人に「どうも初めまして!」と声をかけるのは日本人同士でもハードルが高いはずです(陽気なアメリカ人同士ならできるのかもしれませんが・・・)。
なので、こっちが相手のことを前から知っていたり、その人の発表を聞いたあととかじゃないと、なかなか話しかけられないなー、と思いました。

Ruby界の有名人やスピーカーの人であれば比較的話しかけやすい

逆にいうと、そういう条件が揃っているときは、あまり躊躇なく話しかけることができました。

たとえば、Ryan Davisさんに「Minitestよく使ってます!(RSpecも使ってるけど😅)」と話しかけたり、スピーカーの人が歩いていたら「さっきの発表聞いてました。すごく良かったです!」とフィードバックを返したりすることができました。

ちなみに、活発にOSS活動をしている@koicさんや@284kmさんは、OSS活動を通じて交流があるエンジニアさんたちとたくさんお話をしていました。
なので、OSS活動をたくさんしている人であれば、もっとRubyConfを楽しめるかもしれません。(僕も頑張らないと!)

一緒にご飯を食べてくれる人は確保しておいた方が良い

僕はあまり後先考えずに一人でRubyConfに乗り込んだのですが、前述の通り「面識や共通の話題がない人と、いきなり仲良く」というのはなかなかハードルが高いので、日本人であれ、現地の知り合いであれ、一緒にご飯を食べてくれる人は確保しておいた方がいいと思いました。

周りの人がみんなわいわい仲良くおしゃべりしている中で、一人だけぽつーんと「ぼっち飯」になるのはちょっとつらいです(しかも異国の地で)。

僕の場合は幸い、ランチや晩ご飯は日本人エンジニアの中に混ぜてもらったのでつらい思いはせずに済みましたが、ここはちょっとノープラン過ぎたかな、と反省しました。

英語ネイティブ同士の雑談はまったく意味不明(汗)

1日目のアフターパーティでは何名かの現地エンジニアさんたちとお話をしました。
ですが、4人以上のグループになると現地エンジニア同士の雑談が始まって完全に取り残されることがよくありました。
英語ネイティブ同士の雑談はさすがにほぼ聞き取れなかったです。

また、1対1でしゃべっているときも、こちらのレベルに合わせて易しい英語で喋ってくれる人と、情け容赦なく話してくれる人の2通りに分かれていました(いや、後者の人も実際は気を遣ってくれていたのかもしれませんが・・・)。

僕はリスニングがそこまで得意ではないので、容赦なく話されると会話を楽しむよりも、相手が言っていることを聞き取るだけで精一杯になってしまい、精神的にちょっと疲れました。

こんな経験を何度かしたので、「海外のIT企業に勤めたりすると、こんな感じになるのかなあ。現地で働いている日本人はすごいな〜」と、僕は海外在住の日本人エンジニアの苦労を勝手に想像したりしてしまいました。

その他、感想もろもろ

最後に、RubyConfに関するその他の感想を書いておきます。

  • スポンサーブースでたくさん無料Tシャツ(またはトートバッグ)をもらいました。あまり知らないサービスもありますが、デザインがオシャレなので普段着として着ることができそうです。

  • RubyConfの記念Tシャツプレゼントもありました。こちらがそのTシャツです。

  • 4トラックあるセッションのうち、どのセッションを見るのかはその日の朝までに決めておきました。会場で考えているとちょっと余裕がなくなるので、事前に決めておいて正解だったと思います。
  • 現地のエンジニアさんたちはスライドにやたらとアニメーションGIFを盛り込んでくるな〜という印象があります。目の前の大きなスクリーンで、ガチャガチャと同じ動きが繰り返されるのはちょっと目障りで、個人的にはあまり好みではありませんでした😔
  • 雑談をしてると、たまに簡単な日本語を話してくれる海外エンジニアさんがいました。「この間日本を旅行したよ」と言ってくれる人もいました。アウェー感を感じがちな異国の地で、日本や日本語に興味を持ってくれている人がいると、すごくホッとしますね。
  • 日本のIT系イベントでは出版社や書店がスポンサーブースを構えていることがありますが、RubyConfでは出版関係のブースや関係者は見かけませんでした。チャンスがあれば「プロを目指す人のためのRuby入門の英語版を出しませんか?」みたいな営業活動をしたかったのですが、あえなく失敗に終わりました(苦笑)。
  • Rubyエンジニアの@igaiga555さんがおっしゃっていたとおり(参考)、会場内は冷房が効きすぎてめちゃくちゃ寒かったです!上から羽織るパーカーを持っていって正解でした。この寒さのせいか、2日目や3日目に体調を崩す日本人エンジニアさんも中にはいたようです。

おまけ:個人的に嬉しかったこと

私事ながら、拙著「プロを目指す人のためのRuby入門」に「本書の刊行に寄せて」の文章を書いてくれたMatzさん本人に対して、ようやく感謝の言葉を述べることができました。
それと同時に、僕が持っている「プロを目指す人のためのRuby入門」にMatzさんのサインを書いてもらいました。

Matzさん、どうもありがとうございました!

まとめ

というわけで、このエントリではRubyConf 2018の参加レポートを長々と書いてみました。

行く前は「一人で海外旅行なんてしたことがないけど大丈夫かな」とか「まったく英語が通じずに撃沈して帰ってきたらどうしよう」みたいに心配していましたが、なんとか無事にRuby Confに参加して帰ってくることができました。

実際に海外のカンファレンスに参加し、いろいろなものを見たり感じたりすることで、ネットの向こうにしかない、漠然としたイメージでしかなかったアメリカのIT業界が、自分の中で少しだけ具体的でリアルな存在に変わったように思います。

みなさんがもし、RubyConfや海外カンファレンスに初めて参加する機会があれば、このエントリを参考にしてもらえると幸いです😃

ちなみに来年のRubyConfはテネシー州のナッシュビルで開催されるようです。
(ナッシュビルといえばギブソンの本社がある街!ギター工場に行ってみたい!!)


謝辞

RubyConf参加に関わる渡航費や宿泊費、参加費等を補助してくれた、勤務先の株式会社ソニックガーデンに感謝します。どうもありがとうございました!

また、「ぼっち状態」でRubyConfに乗り込んでいった僕に仲良くしてくれた日本人エンジニアのみなさんもどうもありがとうございました。
海外のカンファレンスで完全に単独行動するのは時期尚早だったということがよくわかりました😅

最後に、RubyConfを運営してくれたスタッフのみなさんと興味深いお話を聞かせてくれたスピーカーのみなさん、それに現地で雑談したエンジニアのみなさん。
みなさんのおかげで「人生初の海外カンファレンス体験」を楽しいものにすることができました。Thank you very much!

次回予告?

RubyConf関連で書きたい話はまだ書き切れていないので(まだあるんかい)、このあとのエントリで以下のような内容も書いてみようと考えています。興味がある方は後日またこのブログをチェック(または、読者登録)してみてください!

  • 英語でLTをするための準備やポイント → 書きました!

  • Los AngelesやSan Diegoの観光レポート → これも書きました!

あわせて読みたい

他の方が書かれたRubyConf 2018の参加レポート

RubyConf 2018の参加レポートは他の日本人エンジニアの方々も書かれています。
それぞれまた違った角度からRubyConfの様子を知ることができるので、こちらもあわせてご覧ください。
techblog.zozo.com
blog.agile.esm.co.jp
joker1007.hatenablog.com
tech.speee.jp

「初の海外カンファレンス参加」というテーマで書かれた他の方のブログ等

初めて海外カンファレンスに参加する際に気を付けるべきことは何か、ということを調べていたときに参考にさせてもらった情報源です。
www.daiwa-computer.co.jp
chiiia12.hatenablog.jp
qiita.com