「PerlCon 2019」に参加しました

Webアプリケーションエンジニアの id:papix です. Perlは主に5が大好きです. 先日, ラトビアのリガにて開催された「PerlCon 2019」に参加してきましたので, その様子を共有させて頂きたいと思います.

f:id:papix:20190807092823j:plain
PerlCon 2019のロゴ. 猫です.

PerlCon 2019について

perlcon.eu

PerlCon 2019は, 毎年ヨーロッパで開催されるPerl 5とPerl 6のカンファレンスの第20回目にあたります(かつてはYAPC::EUという名前で開催されていました). 8月7日〜9日にかけて, リガのRadisson Blu Daugavaにて開催されました. 3つのキーノート, 30近いセッションと1つのワークショップ(今回は, Perl 6の並行処理/並列処理に関するワークショップが開催されたようです)に, ヨーロッパを中心に200人近い参加者が集まりました.

私個人としては, 前職の頃にスペインのグラナダで開催されたYAPC::EU 2015に参加して以来, 久々の海外カンファレンスへの参加ということで, 正直に言うと結構緊張しましたし, うまくコミュニケーションが取れず, 少し気まずい気持ちになってしまった場面も何度かありました. とはいえ, 様々なセッションを眺めたり, 拙い英語でのコミュニケーションを通して, いろいろと良い知見や経験を得ることができたと思っています.

会場

f:id:papix:20190807092714j:plain
会場のホテル "Radisson Blu Daugava"

ラトビアはバルト三国の1国で, 北にエストニア, 南にリトアニアが位置します. 日本からの直行便はないので, 今回はヘルシンキを経由して向かいました. ヘルシンキからラトビアまでは飛行機で1時間程度ですが, 東京からヘルシンキまでの移動時間を考えると, 片道10時間を越える旅路となりました(往路で少しフィンランドに滞在して, 休日を使って観光したりしていました).

f:id:papix:20190805130627j:plain
ヘルシンキ大聖堂

さて, ラトビアの首都, リガはバルト海にそそぐダウガヴァ川が流れ, その右岸に旧市街が広がる, 「いかにもヨーロッパ」な景色が広がる町です. 今回のPerlConの会場, そして宿泊先(PerlConがホテルの部屋をいくつか予約して提供していたので, 今回はそれを利用しました)のRadisson Blu Daugavaは, 旧市街を挟んでダウガヴァ川の向かい側(左岸)にあったので, ホテルの窓からはこれらが織りなす美しい風景を眺めることができました.

f:id:papix:20190808055838j:plain
宿泊した部屋から望む, ダウガヴァ川と旧市街, そして朝日 (午前6時頃)

カンファレンスのセッションは, ホテルの会議室を3部屋利用して実施されました. 一番大きい部屋は全参加者が収容可能な大部屋, そして残りの2部屋は30〜40人程分の座席が用意された小部屋... という構成です. Perlのカンファレンスということで, それぞれの部屋の名前がシジル($, @, %)だったのが面白いです.

f:id:papix:20190809091107j:plain
ホテル内にあった会場案内. $が一番大きな部屋

印象的だったのは(YAPC::EU 2015の時もそうでしたが)セッションとセッションの間の休憩時間が非常に多く(長く)取られていることです. 今回PerlConの場合, 10時から始まるキーノートが終わったら30分のコーヒーブレイク, お昼には1時間のランチ休憩, そして午後のセッションが1時間程度行われた後に再び30分のコーヒーブレイク... といった感じ. コーヒーブレイクでは, コーヒーとともにサンドイッチなど軽食が振る舞われ, 参加者同士のコミュニケーションの場になっていました(自分も何名か声をかけてもらったのですが, 英語スキルが高くないのでうまくコミュニケーションが取れない場面も多く, 悔しい思いをすることになりました...).

f:id:papix:20190808095947j:plain
一番大きな部屋, $の様子

また, カンファレンス2日目の終了後には, ラトビア料理のレストランの一角を貸し切って「Attendees Dinner」が開催されました. お酒の力も借りて, ブルガリアから参加していたエンジニア(現地でカジノサイトを運営しているそう)に, はてなブログのインフラ構成について英語で説明したり, デンマークから参加していたエンジニアと日本のこと, 自分の国で流行しているプログラミング言語のこと(PHP, Python, 学校ではCやJavaなどがよく使われているそうです)などを話したりしました.

f:id:papix:20190808202136j:plain
Attendees Dinnerで振る舞われた料理の様子. ピラフのようなご飯料理もあって, 食に困る事はありませんでした

現地の様子

途中経由したフィンランドもそうですが, ラトビアも緯度が高い場所に位置する国です. 時期は夏なので昼がとても長く, 夜明けは午前5時頃で日没は21時頃という状態でした. カンファレンスは18時頃には終わるスケジュールになっていたので, 一通り終わってもまだまだ外は明るく, 夕飯を食べに行くついでに旧市街を散策... といったことができて, とても体験が良かったです.

f:id:papix:20190810103821j:plain
旧市街にある「ブラックヘッドハウス」

気温も, 特に朝方は長袖のシャツや上着がないと寒く感じる程の気温で, 日が高くなると多少は暑くなりますが, 湿度が高くないためとにかく非常に過ごしやすかったです. 正直, 「夏は暫くここで仕事したい!」という気持ちになりました. 日本との時差が(サマータイムが有効な場合)6時間程度あるので, 日本の一般的な業務時間と完全に同期して作業をするのは難しいという点(日本の10時がラトビアの午前4時)は課題となりそうです.

興味深かったセッション

日本のPerlカンファレンス, YAPC::Japanにおいては, Perlの話題としてはPerl 5が主で, Perl 6については時折扱われる... という状況ですが, PerlConの場合はPerl 6のセッションがかなりの割合を占めているのが印象でした. 前述のように, Elizabeth Mattijseの「DeMythifying Perl 6」とJonathan Worthingtonの「Perl 6 Concurrenc」という2つのキーノートがPerl 6に関する話題でしたし, それ以外にもPerl 6のパフォーマンス改善(Jonathan Worthington, 「Perl 6 performance update」)や, 初心者向けの発表(Jens Rehsack, 「Perl 6 for beginners」)がありました.

個人的には, 業務でPerl 5を使っているということもあって, Perl 5のアプリケーションをDockerやKubernetesでデプロイするというThomas Klausnerの「Deploying Perl Apps using Docker, Gitlab & Kubernetes」や, Perl 5を利用したジョブキューをスケールさせるDiego Kupermanの「Growing our workforce」など, Perl 5にまつわるセッションを中心に聴講していました.

domm.plix.at

diegok.github.io

一方, 今回PerlConに参加して一番凄いと思ったセッションは, Hauke Dämpflingの「WebPerl - Run Perl in the Browser!」でした. この発表は, 本当に凄かったです.

docs.google.com

WebPerlは, PerlをJavaScriptに変換するのではなく, WebAssemblyやEmscriptenを利用して, Perlのコードをそのままブラウザで実行することができる, JavaScriptのライブラリを提供します.

webperl.zero-g.net

...これはWebPerlのデモの1つですが, HTMLのソースを見ると唐突に<script type="text/perl"> が登場し, それ以降にずらずらっとPerlのコードが書かれています. これがそのままブラウザで解釈され, 実行されています. また, Perlのコードの中では, jsという関数が利用でき, これを利用して

js('window')->addEventListener('message', sub { ... });

といったコードを書くこともできるそうです. 本当に凄い... 速度に関しては, 普通にJavaScriptを書いた時と比べると数倍遅いとの事でしたが, 「Perlをブラウザで動かす」をここまで(実際に利用できるレベルで)成し遂げた所に対して, 本当に感動の気持ちを覚えました.

自分のセッション ─ Perl in Japan

今回, PerlConに参加するにあたって, 「せっかくだから!」ということで, 「Perl in Japan」というタイトルでproposalを提出しました. ありがたい事に採択頂いたので, 日本におけるPerlやそのコミュニティの近況や, はてなでの活用事例を中心に便利なモジュール/ツール群の紹介といった話をしてきました.

部屋は@で, 前述の通り30人前後の座席がある部屋でしたが, ありがたい事にほぼ満員という状況で発表することができました. YAPC::Asia 2014やYAPC::EU 2015でもお世話になった, Perl 5のコア開発者の1人であるSawyerも聞きに来て下さっていました.

後々話を聞くと, どうやらヨーロッパや北米で開催されるPerlのカンファレンスには, 余り日本のPerl Mongerが参加しないので, 彼らも日本におけるPerlの活用事例や, そこで使われているツールやモジュールなどについて, 深い関心を持っているそうです. そういうこともあってか, 発表後には「面白かったよ!」, 「興味深かった!」といった声をかけて頂いた... と思っています(自分が理解した英語が正しければ). 反省としては, 20分の発表枠に内容を詰め込みすぎたので, 質疑応答の時間が取れなかった所ですね..

次のカンファレンスは...?

YAPC::Japanと同じように, PerlConも各日程の最後にライトニングトークがあります. 2日目のライトニングトークでは, 次のカンファレンスの開催場所を決める催しが行われました. 候補はオランダのアムステルダムとキプロスのリマソール(Limassol)で, それぞれの代表によるプレゼンの後に, PerlCon参加者による決選投票(!?)が行われました.

f:id:papix:20190808171501j:plain
投票の様子. 箱にガラス玉のようなものを入れていく...

...集計の結果, 数票差でアムステルダムが選ばれました. 来年夏頃の開催に向けて, 今後情報が発表されていくと思うので要注目ですね.

f:id:papix:20190808171857j:plain
集計の様子

まとめ

はてなでは, 現在でもはてなブログ(このブログです!)などでPerlを活用しています. 日本国内にはJapan Perl Associationというユーザーコミュニティがあり, Perlを活用しているエンジニア同士の交流も盛んです. とはいえ, 日本という国の枠に閉じずにPerlについての情報を交換し, 知見を得ていくことは, Perlを活用しているはてなという会社(もちろん, GoやScalaなど, Perl以外の言語も活用しています!!! 最近だと, Mackereの異常検知などでPythonなども使われ始めています!!)にとってはもちろんのこと, 日本のPerlコミュニティとしても得るものが多く, Perlやそのエコシステムを発展させていくにあたって, 今後ますます重要になってくると思っています.

振り返ってみると, YAPC::EU 2015に参加した時と比べて, より多くの事を伝えられたし, より多くの事を知って持ち帰る事ができたように感じました. そして, Perlのカンファレンスに初参加したYAPC::Tokyo 2011の中で感じた, 「この参加者達と話したい! 情報交換したり, ディスカッションできるようになりたい!」という気持ちを, PerlConの中で感じることができました. そのためには英語の勉強なども必要になってきますが, そういった学習にもしっかり取り組んでいって, またヨーロッパや北米で開催されるカンファレンスに参加したい!!!! と強く思いました.

【PR】

ところで今回, PerlConに参加するにあたっては渡航費や宿泊費について, はてなからサポート頂き, 業務として参加することができました. はてなでは国内で開催される勉強会やカンファレンスはもちろんのこと, 今回のPerlConのような海外で開催されるカンファレンスへの参加, 登壇のサポートも積極的に取り組んでおり, 過去にはWWDCやre:Inventといったカンファレンスに複数のエンジニアが参加しています.

developer.hatenastaff.com

developer.hatenastaff.com

はてなでは, 日本国内はもちろんのこと, 海外にも視野を向けてインプットやアウトプットをしたいエンジニアを募集しています!

hatenacorp.jp