PR

RustConfで見えてきたRustプロジェクトが最も大事にする価値とは?

2020年9月17日(木)
松下 康之 - Yasuyuki Matsushita
RustConf 2020が開催された。オープニングキーノートで見えてきたRustが最も大事にする価値を解説する。

Rustコミュニティは、年次カンファレンスRustConf 2020をオンラインイベントとして開催した。今回の記事では、そのセッションの中からオープニングキーノートとクロージングキーノートをまとめて紹介する。

盛りだくさんなオープニングキーノート

オープニングキーノートは約1時間の中でRustのコアチームのメンバーが入れ替わりでプレゼンテーションを行った。内容は過去5年の振り返り、コアとなる価値観、ガバナンスに関する考え方、そしてこれから強化されていく機能までをカバーするセッションとなった。クロージングキーノートでは日本人にはなじみのあるゲーム、ポケモン「青」の「けつばんポケモン」のバグを例にとって、メモリーセーフであることの意義を語るものとなった。

参考:RustConf 2020 Opening Keynote

RustConf 2020の最初のキーノート

RustConf 2020の最初のキーノート

最初に、この8月に発表されたMozillaのレイオフに触れ、Rustのコアチームがこの事態を悲しんでいること、そしてRustのプロジェクトはこの中には含まれていないことを語った。冒頭にこのトピックを語った辺りに、Mozillaの今後を憂いる参加者に対してポジティブなメッセージを与えようとしていることが見て取れる。

コアチームが伝えるRustプロジェクトには影響がないという内容

コアチームが伝えるRustプロジェクトには影響がないという内容

そしてコアチームの紹介に続いてNiko Matsakis氏が登場した。Matsakis氏はMozillaのエンジニアであり、Rustコアチームのメンバーだ。2020年1月9日に「Rust Foundationを年内に設立する」というブログ記事が公開されたが、2020年1月の段階で個人のブログの中でRust Foundationについて解説されていることからも、Rustのガバナンスに関する中心人物であることがわかるだろう。

Niko Matsakis氏のブログ:Towards a Rust foundation

過去5年の振り返りとして2015年のRust 1.0のアナウンスを紹介し、この時のRustは「低レベルの制御と高いレベルの便利さ、そしてメモリーセーフを保証すること」を目的として開発されたことが紹介された。

Rust1.0のアナウンス

Rust1.0のアナウンス

そして最新のキャッチコピーを紹介。ここでは「A Language empowering everyone to build reliable and efficient software.」、日本語にすれば「誰もが信頼できて効率的なソフトウェアを書くことを助けるためのプログラミング言語」と言ったところだろうか。このキャッチコピーに以前には存在していた「システムプログラミングのための言語」が含まれていないことに注目して欲しい。

また、Mozillaの6百万行のC++のコードをリプレースすることを目標としていたことも紹介された。

Mozillaの開発したコードの種類。C++が約6百万行存在する

Mozillaの開発したコードの種類。C++が約6百万行存在する

またKubeConで非常に印象的なキーノートプレゼンテーションを行ったJulia Evans氏も、2016年のRustConfで登壇していたとしてその時のスライドを紹介。ここでもRustでこれまで書けなかったソフトウェアが書けるようになると語られている。

Julia Evans氏のスライドを紹介

Julia Evans氏のスライドを紹介

参考:KubeConでStripeのエンジニアが語ったインフラ移行の現実 Julia Evans氏は2018年のKubeCon NAのキーノートで登壇。記事の後半に出てくる。

またRustを語るうえで欠かせないビルドツールであるCargoやCrates.ioについて、その成長を解説。Crates.ioからは34億回以上Rustのソフトウェアがダウンロードされていること、そしてCargoとCrates.ioが評価されていることを紹介した。

RustのリポジトリーであるCrates.ioを紹介

RustのリポジトリーであるCrates.ioを紹介

興味深いのは、オンラインフォーラムに投稿されたRustを使ってみたエンジニアのコメントを紹介したことで、「Rust自体は好きではないというこのエンジニアもツールとしてのCargoを評価している」という内容のコメントを取り上げたことだろう。

Rustは好きになれなくてもCargoは好きというエンジニアのポストを紹介

Rustは好きになれなくてもCargoは好きというエンジニアのポストを紹介

また開発のためのツールはCargo以外にも存在しており、ドキュメントを生成するrustdoc、コードの書き方をチェックするClippy、RustからC言語のライブラリーを呼び出すためのインターフェースを自動生成するBindgenなどが紹介された。

Rustの開発用ツールを紹介

Rustの開発用ツールを紹介

またRustのコンパイラーが持つ非常にデベロッパーフレンドリーなエラーメッセージについても、当初の素っ気ないメッセージから、どの行のどの変数でエラーが起こっているのかを明示するように改善されたことを紹介した。2016年8月のブログポストでRustコンパイラーのエラーメッセージの改善が解説されていることを紹介し、いかにデベロッパーをエンパワーしているかを示した形になった。

2016年8月のブログポストを紹介

2016年8月のブログポストを紹介

改善前のエラーメッセージ

改善前のエラーメッセージ

新しいエラーメッセージはよりわかりやすくなった

新しいエラーメッセージはよりわかりやすくなった

テクノロジー以外のガバナンスについても、Rustプロジェクトは初期の段階からCode of Conductを持っていたこと、ガバナンスのために機能追加などの議論に透明度の高いRFCを採用して議論していることなどが紹介された。

プロジェクトとしてエンパワーするための努力を紹介

プロジェクトとしてエンパワーするための努力を紹介

コミュニティ全体として、2020年に623名の新規のユーザーからのコミット、1467名のユーザー新規登録があったことを紹介。

Rustに対する新規ユーザーの増加を紹介

Rustに対する新規ユーザーの増加を紹介

またRustのリポジトリーであるCrates.ioについても、約34億回というダウンロード数に加えて、5815人がソフトウェアをリポジトリー上に公開したことが紹介された。ここでは主に人に注目した内容になっているが、次のスライドでは組織について触れ、コアチーム以外にも多くのチームが構成されていることがわかる。

特徴的なのは「Rust Team Alumni」という、すでにチームを離れてしまった人にも枠を設けて紹介していることだろう。エンジニアを単なる歯車のように扱うのではなく、個人として尊重していることの現れだろう。

Rustプロジェクトのチーム構成

Rustプロジェクトのチーム構成

そして人を重視するプロジェクトとして余裕を持たせること、権限を与えることが重要という考えを紹介した。

RFCやCode of Conduct、そしてチーム構成にみる「人」重視の姿勢

RFCやCode of Conduct、そしてチーム構成にみる「人」重視の姿勢

コアチームのAshley Williams氏は説明の中で「A Language empowering everyone to build reliable and efficient software.」というキャッチコピーの中の“empower”に注目する。その元となった“power”には「権限を使う」という意味があり、その権限はすなわち“political”である、つまり権限を行使しようとすれば最終的に政治的になってしまう、しかしRustはその意味では最初からpoliticalであったし、これからもそうだろう、と解説した。

折り合いのつかない複数のステークホルダーを納得させるための行為を「政治」だとすれば、メモリーセーフ、スレッドセーフを実現するために所有権と厳密なタイプ付けを導入したRustは、紛れもなくpolitically correctなプログラミング言語だろう。

Rustは常にpoliticalだった

Rustは常にpoliticalだった

Rustはシステムプログラミングが仕事ではない人をもエンパワーする

Rustはシステムプログラミングが仕事ではない人をもエンパワーする

最後に紹介された今後の予定については、「コアチームの議論をすべて公開すること」「async/waitの機能強化」などが予定されていることを解説した。最後にRustが人を重視しているひとつの証として「素晴らしいRustのメンターたち」というサイトを紹介して、プレゼンテーションを終えた。

メンターシッププログラムを紹介するサイト

メンターシッププログラムを紹介するサイト

参考:Awesome Rust Mentors

ちなみにRustのキャラクターであるカニは「Ferris」という名前で、非公式ではあるものの多くのRustファンに愛されていることがわかる。Ferrisについては、作者であるKaren Rustad Tolva氏がまとめたページを参照されたい。

Ferrisのホームページ

RustのマスコットはFerrisという名前のカニ

RustのマスコットはFerrisという名前のカニ

ポケモンでメモリーセーフを学んだクロージング

最後に、このオンラインカンファレンスのトリを飾ったクロージングキーノートを紹介する。これはゲームボーイのゲーム、「ポケモン青」をベースにしてメモリーセーフなシステムについて考察するという内容だ。プレゼンターはSian Griffin氏だ。

参考:RustConf 2020 Closing Keynote

ポケモン青からメモリーセーフについて学ぶというセッション

ポケモン青からメモリーセーフについて学ぶというセッション

ポケモン青での「けつばんポケモン」の発生がなぜ起きたかについて、再現方法、レジスターのサイズなどから「推理」して、アセンブラーのコードをRustで再現してメモリーセーフであることの難しさを解説するというものだ。

題材となったポケモン青

題材となったポケモン青

実際にゲームボーイ上で確認できたけつばんポケモン

実際にゲームボーイ上で確認できたけつばんポケモン

ポケモンのIDがバッファオーバーフローしたことで、予期しないデータが利用されたことがけつばんポケモンの原因だったという推察を紹介し、コードをRustで表現した。ここで注目したいのは、Unsafeキーワードがつけられていることだろう。バッファオーバーフローするようなコードはコンパイラーでチェックされることになるのだろう。

Rustでバッファオーバーフローを再現

Rustでバッファオーバーフローを再現

そして最後に「もうアセンブラーでコードを書く必要がなくなって嬉しい」というスライドを示し、アセンブラーでメモリーセーフなコードを書く難しさを表現した。

アセンブラーを扱う必要がない現代のプログラマーは幸せ

アセンブラーを扱う必要がない現代のプログラマーは幸せ

Griffin氏はポケモンに愛着があるようで、氏のTwitterでは以下のようなツイートでポケモンへの愛をRustへの愛と合わせて語っていたのが印象的だ。

Rust! キミにきめた! ここでもポケモン愛が

Rust! キミにきめた! ここでもポケモン愛が

引用元のツイートはこちら:https://twitter.com/sgrif/status/1299130857534492672

RustはMozillaの危機を乗り換えてRust Foundationという独立の組織により維持されていくことで、今後のオープンソースプロジェクトの模範となる可能性がある。そしてCNCFなどに比べて規模は小さいものの、革新と独立、透明性、そして人を重視することを掲げて、これからどうやって続いていくのか注目していきたい。

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています