Don't Repeat Yourself

Don't Repeat Yourself (DRY) is a principle of software development aimed at reducing repetition of all kinds. -- wikipedia

Rust.Tokyo 2021 を開催しました

9/18 に Rust.Tokyo 2021 を開催しました。2020年はコロナの影響が読みきれずキャンセルとしたので、2019年以来2度目の開催です。この2年間で Rust そのものやコミュニティイベントに関してさまざまなことがあったような気がしますが、それは後ほど書くことにします。

今年は2020年に引き続き世の中ができるだけ対面を避けよう、という状況の中行われたカンファレンスとなりました。したがって Rust.Tokyo そのものもオンラインで行いましたし、今やカンファレンスでよく見かけるようになった YouTube Live を使ったよくある形式を採用しました。もうかれこれこうした世の中になって1年半以上経つわけですが、オンラインカンファレンスは市民権を得ているように感じます。

今振り返ってみると、実はオーガナイザー側も一度も対面で会うことなく開催したカンファレンスとなりました。結局今年のミーティングは、キックオフから開催に至るまで、一度も対面で会っていません。なんだか不思議な感じがします。

この記事の免責事項ですが、私の意見を多く含みます。私の意見は必ずしも他の Rust.Tokyo チームメンバーの意見を代表するとは限りません。

今年のカンファレンス

  • 1トラック6セッション
  • 字幕を入れてみた
  • ほぼ事前録画のセッションに

少ない・短いと感じた方も多かったかもしれませんが、1トラック6セッション(スポンサー含め8セッション)としました。単純に運営のリソースと体力の制約です。RustFest Global で初のオンラインカンファレンスを経験したのですが、そのとき5時間1トラックではあったものの、疲労感があったように思いました。私は表にはほぼ出ないので、どらやきさんや同時通訳役をする chiko さんほどではないとは思いますが、それでも疲れました。

今年の試みとして、日本語発表には英語字幕を、英語発表には日本語字幕を入れました。翻訳は我々が行ったわけではなく、プロの翻訳業者を通しています。動画の字幕テロップ編集はどらやきさんが行いました。

字幕をつけたのには理由があります。英語セッションになるとリアクションがとても少なくなるというのを RustFest Global で思っていたのと、オンラインカンファレンスの時代になったので、時差の問題さえなんとかなれば世界中から参加者が来るためです。

英語セッションになるとリアクションが少なくなる問題は前から気になっていて、なので字幕を入れる提案しました。というのも、日本語話者は英語の発表の聞き取りが難しいことが多く*1リアクションを残せず、発表者はがんばって発表したもののなんだかリアクションが少ないぞ、という状況が発生するのは、お互いにとって不幸なのではと思っていたためです。結果はどうだったでしょうか?

Rust.Tokyo をはじめた2019年とは時代が大きく変わり、今やオンラインカンファレンスということで海外からも気軽に日本のカンファレンスに参加できるようになりました。私自身も先日の RustConf に少し参加していたのですが、現地に行かずとも発表を聞ける時代になりました。なので、できる限りそうした参加者のアクセシビリティを確保するためにも、英語の字幕はとくに必要です。

字幕や海外からも参加者を募る関係で、動画はできる限り事前録画を推奨することにしました。発表者の方の負担は正直なところ増えてしまったとは思いますが、結果字幕を埋め込むことができました。みなさんありがとうございました。

今年の担当

今年は下記を担当しました。

今年は新しくデザイナーさんが参加した初めてのカンファレンスとなりました。実は去年の1月か2月くらいに対面で一度お会いし、「今年もがんばるぞ」なんて話をしていたと思うのですが、2020年の Rust.Tokyo はキャンセルになり、RustFest Global には参加されなかったので、今年初めて彼女が参加したカンファレンスとなりました。

2019年はデザインを担当していたのですが、以前 Web デザイナーとして少し仕事をしていたことがあったとはいえ、さすがに私はもうソフトウェアエンジニアです。とくに意識的にデザインについてインプットしているとは言えず(デザインを見るのは好きなんですが)、実際いろいろデザインしてみて、引き出しの量にもちょっと限界があるなと思っていました。新しく入ってきていただいて非常に幅が広がりました。

今年できあがったロゴは下記のようになりました。当初の案ではお正月のようなベージュと赤の組み合わせのものもあったのですが、遠くから見た際の視認性の関係で今年は紫と赤の対比を選びました。デザインはできるだけ中性的になるように以前よりこだわってはいて、masculine *2になりすぎないように日本語を使った柔らかい表現を追加して調整してもらいました。

Rust.Tokyo 2021のロゴ
Rust.Tokyo 2021のロゴ。
中央の東京タワーは認知が取れていそうだったので残しつつ、
これまでとは少しバランスを変えました。

Twitter の広報の文章は(半ば勝手に)英訳を担当しました。まず英語でバーっと書いて、それを日本語で考え直してもう一度書く、というスタイルで書きました*3。ただたまにどらやきさんが英語を書いてくれるときもありました。セッションの広報用ツイートが主な仕事です。

Twitter の広報については、Rust.Tokyo は、最初から登壇者や参加者を日本語話者に限らないために日英両方を用意するようにしています。これには理由があり、今回のように中国や、韓国、そしてたとえばインドネシアベトナム、オーストラリアなどの地域からも参加できるようにするためです。Rust.Tokyo は RustFest のチームからは、どうやら APAC で連絡が取りやすいチームとして認識されているところがあり、そうした役割も少しだけ担っていると思っています。

私の個人的なカンファレンスの感想

私の感想は下記です。

  • 懇親会をしたかった
  • Web サービスのサーバーサイドのセッションなかった

懇親会がしたかったですね。oVice や remo など、懇親会をしやすいツールはいくつか存在しており、他のカンファレンスや学会では懇親会をそうしたツールを使って行うことがあります。頭の中からだいぶ抜けていて、Rust.Tokyo 開催の1週間前くらいからそうしたものをやりたいなと思い始めていました。時はすでに遅しですが。

最近の Rust コミュニティはほぼオンラインで LT 会などが開催される上に、1時間以上ある雑談がメインの懇親会がセットなものは少なく(ないんじゃ?)、Rust コミュニティにいる人の顔をほぼ知らないという寂しい状態になっています。私自身は、2018年〜2019年頃は登壇していたので、その際に多くの方と交流できてとても楽しかったのですが、最近はそうした機会がなくなってしまいました*4

Web アプリケーション開発に関連するセッションは今年は選出できませんでした。スポンサーセッションの Node.js 関連の発表がその一つだったかもしれません。が、Web サービスの Rust によるサーバーサイド開発のセッションがなかったのは、正直な気持ちを言うと少し寂しかったです。記憶では、CFP の時点でもなかったように思います。来年以降に期待です。

日本の Rust の流行について

せっかくですので、Rust のはやりについて少し言及しておこうと思います。私の観測範囲ですので、一般的な話にはできませんが。

  • 個人で触っている方は増えているように感じる
  • SNS での言及は増えているように感じる
  • ただ、企業での採用は増えてそうでしょうか?ちょっとわかりません

いつの間にか Rust のコミュニティに参加するようになって、もう3年〜4年くらい経ちます。2018年の頃と比べると、Rust への関心の高まりは非常に大きくなってきていると思います。私自身も Rust に関する講演を依頼されることが増えましたし、そうした講演が行われているのを見る機会も増えました。

また、私は実はよく新卒面接に出席し面接を行うのですが、学生さんが「Rust を書いています」と言っている確率がとても高くなってきているように感じます。3, 4年前は、それは Go でした。それが今は Rust に変わってきているように見受けられます。

数年前と比べると、明らかに認知度は高まってきています。

一方で SNS だけを見ていると感覚がおかしくなるのですが、とくに私のいる Web 系の会社に限っていうと、 Rust はまだ「これ、(どこで)使えるの?」というフェーズかと思っています。よく聞かれる質問は、「Go と Rust の違いは?」「Go のメリット/ Rust のメリット」といったところでしょうか*5。関心はあるが、導入には及び腰/ユースケースを思いつかないというのが現状かなと思っています。

そういった意味で、今回 PingCAP 社がスポンサーセッションで発表されたような、実際に会社の主軸となるプロダクトに Rust を使用した事例や Tips といった話はとくに貴重です。利用を迷っている方には、実際に入れた話が一番よい特効薬になるからです。

Rust.Tokyo では引き続き、そのような企業での導入事例もたくさん取り上げていきたいと思っています。普段の LT 会ではなかなか難しい話も、カンファレンスであれば可能なはずです。普段の LT では少し尺が足りない話を、ぜひ積極的にカンファレンスの場に出してもらえるととても嬉しいです。

最後に

カンファレンスやコミュニティは、プログラミング言語の「よさ」を支える柱の一つだと思っています。友好的で初心者にも親切なコミュニティには、多くの人が集まってくるはずです。Rust は、言語が主戦場とするフィールドは高度で、コンパイラは鬼教官でありながらも、豊富な機能でユーザーに力を与える (empowerment) 言語だと思っています*6。Rust の友好的なコミュニティは、今のところユーザーの empowerment に一役買っていると思います。

みなさんは Rust のどんなところが好きですか?

私は Rust コミュニティが友好的であり、多様な人の意見をそう簡単には排除しないというのはとても重要で好きだなと思っています。たとえば機能追加に関して言えば、Rust は RFC などを通じて、ユーザーが提案したものを一旦ディスカッションの対象としてくれる傾向にあると思います。「言語の機能がなぜこうなのか?」といった疑問をフォーラム等に書くと、RFC なり経緯を含む GitHub 上の URL なりが必ず返ってきて、理由を説明してくれます。「道を外れるな」「やめろ」といったパターナリスティックなコミュニケーションではなく、そもそも議論がオープンなところが好きです*7

Rust.Tokyo 2019 で、 Florian という元 Rust コアチーム(当時はそうだった?)の人がキーノートで言っていましたが、「『Rust が好きです』ということを発信することも立派なコントリビューションのひとつだ」と言っていたのを思い出しました。Rust を好きと言っていくだけで、あなたはもうコントリビュータなのです。好きをたくさん発信していきましょう。Rust.Tokyo をはじめとするカンファレンスをそのためにぜひ、今後ともご利用ください 🙋🏻‍♀️

*1:日本国内で英語を使う機会はほぼありませんから、こればかりはどうしようもありません。

*2:適切な日本語を思いつかず…

*3:英語を使っている時と日本語を使っている時で別の思考回路になってしまうのです…

*4:登壇していないというのもある。オンラインでの発表はどうも好きではなく、収まるのを待っています。ただ、懇親会のある LT 会がほぼなくなったのは事実だと思います。

*5:ちなみに私はこの手の質問には、「まずは実際に作ろうと思っているアプリケーションを作って動かしてみましょう」と答えます。たとえば、よくある Web アプリケーションのサーバーサイドで、よほどどちらかを積極的に採用できる理由がない限りは、書いてみて好きな方を使ったらよいと思うからです。「どちらを採用しても大して実利に差はない」局面において、両者を区別する大きな差異は書き味と、プログラミングという行為そのものに対する哲学だからです。これはもはや言ってしまえば好き嫌いの問題に換言されると思います。ただ現状だと Rust を使うとエコシステムが未成熟で適切なものがない可能性はありますが。

*6:Rust の根本哲学は empowerment です。公式ガイドにも言及があるくらいには、この言葉を大切にしています。

*7:他には、変数宣言が let で始まるとか、コンパイルさえ通れば書いたとおりに動く(そして書いた以上のことはしない)とか、強く型付けできるし強く型付けしたほうが静的ディスパッチになって速度的にもよいとか、あとはそもそも言語仕様からちょっと小難しく、そこに知的好奇心がくすぐられるところも含めて好きです。