Microsoftの年次イベントBuild 2020でメモリーセーフなプログラミング言語Rustを紹介

2020年6月19日(金)
松下 康之 - Yasuyuki Matsushita
オンライン開催となったMicrosoft Build 2020におけるRust関連のセッションを紹介する。

Microsoftが年次カンファレンス、Build 2020を開催した。新型コロナウイルスの影響でオンラインイベントとなった今年のBuildだが、特徴的なのは5月19日と20日の2日間に渡って同じコンテンツがストリーミングされたことだろう。これは世界各地、さまざまなタイムゾーンから視聴することを考えた施策であろう。通常はリアルタイムで視聴、その後YouTubeなどにアップロードされたコンテンツを数日後に視聴するというスタイルになるが、北米、ヨーロッパ、アジアなどタイムゾーンの異なる地域であっても、リアルタイムに近い感覚でセッションに参加することができることになる。

コストを考えれば、1回だけのストリーミングと動画のアップロードは妥当な方法だが、Microsoftは異なるタイムゾーンの参加者を意識した構成を採用したというわけだ。この辺りは、さすがにパブリッククラウドのNo.2であるMicrosoftらしい大盤振る舞いと言える。

CEOのSatya Nadella氏のスピーチは、GitHubを使うデベロッパーが350万人を超えたことやAzureの成長などを紹介し、巨大なMicrosoftのポートフォリオを駆け足で紹介する内容となった。

今回の記事ではBuild 2020の中でもRustに注目してセッションを紹介しよう。RustはCやC++とも比較される低レベルのプログラミング言語だが、メモリーセーフであることを徹底した仕様となっており、高速な実行速度やビルドシステムが標準で用意されていること、メモリーリークなどのバグが起こらないことなどから、今注目されている開発言語だ。

セッションを行うRyan Levik氏

セッションを行うRyan Levik氏

Build 2020のセッションの中でRustに関するセッションはわずか4つほどと少なめであったが、そのうちのMicrosoft Security Research CenterのRyan Levik氏が解説している動画では、MicrosoftがRustに取り組む姿勢が明らかになった。

このセッションでは比較対象としてGoogleが開発したGo言語にも言及し、「GoもC++も素晴らしい言語だが、Microsoftの開発するソフトウェアで発生するバグの70%がメモリーセーフティに関するもので、それを確実に解消でき、しかもガベージコレクションがないというのがRustの一番の優位点」であると説明した。

何度もGoとの比較がコメントされたが、「ガベージコレクションが許されないシステムレベルのソフトウェアを書くならRustである」と結論付けられていることが印象的だ。

動画:Microsoft's Safe Systems Programming Languages Effort

他にStudent Zoneという、より若いオーディエンスを対象にしたセッションでは、Intro to Rustと題したRustのイントロダクションが行われた。このセッションでは単にスライドを使って説明するだけではなく、実際に簡単なプログラミングをライブコーディングして実行するという方法でソースコード編集から実行までを行ってみせた。

Meaghan Lewis氏によるRustを使う理由

Meaghan Lewis氏によるRustを使う理由

Rustを使う理由というスライドでは、「最も愛されている言語であり、ツールが完備していること」そしてシステムレベルのソフトウェアを開発するのに最適であることが紹介された。

動画:Intro to Rust

またデモとして、数値を予想させるプログラムを例題にRustによる開発の一連の流れを紹介した。これはランダムな数値をプログラムの中で発生させ、キーボードから入力された値と比較し、最終的に同じ値が入力されれば、そこで「You Win」と表示させて終了するという簡単なループのロジックだが、Cargoというパッケージマネージャーを使ってプロジェクトを作成し、Visual Studio Codeで編集、その場でビルドから実行、という一連の流れが理解できるものだった。

Rustのビルドツール、Cargoのヘルプを紹介

Rustのビルドツール、Cargoのヘルプを紹介

ただ、Rustのメモリーセーフな仕様として特徴的な所有権や変数束縛などについては詳しく解説されず、その部分では多少物足らないものになった。しかし時間も限られた中での発表であるため、あえてその部分を飛ばして紹介するという構成は妥当なものだろう。

Rust Extensionを使ってコーディング

Rust Extensionを使ってコーディング

Visual Studio Codeでコードを編集し、ターミナルからコードCargoを実行してビルド、Runまでをデモ

Visual Studio Codeでコードを編集し、ターミナルからコードCargoを実行してビルド、Runまでをデモ

最後に紹介したいのは、30分でコードを書くというチャレンジを行ったセッションだ。これは前出のRyan Levik氏がリードして行われたもので、単に実行するだけではなく、より効率的なコードを書くという部分を実演する内容となった。

動画:The 30 Min Beginner Rust Coding Challenge

ここで登場するのが、LeetCodeというサイトだ。これは「A New Way to Learn」というキャッチコピーが示すように、プログラミングを学ぶ新しいサイトである。ポイントは「expand your knowledge and prepare for technical interviews」とあるようにGoogleやMicrosoftなどのテクノロジー企業が行う面接(実際にプログラマーにコーディングを行わせるというのが最近の傾向)に対応できるような知識を得ることに特化していることである。

参考:LeetCode

「The 30 Min Beginner Rust Coding Challenge」と題されたこのセッションでは、このLeetCodeにある「ある配列から任意の範囲の数値の合計を計算する」という問題を、Rustでコーディングするという課題が提示された。これを30分以内に行うだけではなく、完成されたコードをさらに最適化するという部分までを実演した。

LeetCodeで表示された例題

LeetCodeで表示された例題

例題に対してVisual Studio Codespaces(旧Visual Studio Online)を使ってソースコードを書いて実行、その結果を元にさらに改善するという流れをスムーズに見せた点も、Microsoft狙いの一つだったのではないだろうか。

Visual Studio Codespacesを使ってRustのコーディング

Visual Studio Codespacesを使ってRustのコーディング

このセッションでは、単にRustでコードを書くだけではなく、どうすればより高速化ができるかまでを見せたところがポイントだろう。

LeetCode上で実行すると、コードの可否だけではなく実行速度まで評価される

LeetCode上で実行すると、コードの可否だけではなく実行速度まで評価される

このようにRustのコーディングだけではなく、LeetCodeというサイトの紹介も兼ねたセッションとして強い印象を残した内容となった。

プログラマーの評価については、オープンソースソフトウェアへの貢献をGitHubで可視化することで、チームワークやコミュニケーション能力を評価する方法がある程度、客観的な物差しとして認知されている。その一方で、コードの書き方の良し悪しについては客観的な評価は難しかったと言える(例外はLinus Torvalds氏から「パッチの書き方が悪い」として罵倒されるぐらいのものだろう)。プログラマーの面接で、GoogleやMicrosoftなどの企業が実際にコードを書かせて評価する方法を採用しているのはそのためだろう。

LeetCodeのように課題をコンテスト形式でこなしていくことで自分のプログラミングスキルを伸ばすサイトが登場したことで、これからはGitHubで他のデベロッパーやコントリビューターとの調整能力を評価し、LeetCodeでプログラミングスキルを評価する、というように変わっていくだろう。

Rustに関してはMicrosoftの内部でも評価が高いようで、これからも開発が続いていくだろう。Meaghan Lewis氏のQ&Aにもあったように、現状では「学習コストが高い」という評判を気にしているデベロッパーはまだ多いようだ。LeetCodeや今回のライブコーディングのデモなどで実際にソースコードや開発ワークフローに触れることで、学習コストの障壁も徐々に下がっていくことが予想される。

多くのバグがメモリーセーフティに起因しているという点がもっと認知されること、このことがRustの追い風になることを期待したい。

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

連載バックナンバー

システム開発イベント

OpenShift Commons Gatheringで語られたOpenShiftに最適なCI/CDとは

2021/3/2
レッドハット株式会社のクラウドソリューションアーキテクト、北山晋吾氏によるCI/CDのセッションを紹介。
働き方イベント

オンラインならではの工夫でリアル開催を凌ぐ盛り上がりに! 「3年後の未来を描け! 悩み爆発 クリエイター1000人祭り」レポート

2021/2/9
2020年12月にオンラインで開催された「3年後の未来を描け!悩み爆発クリエイター1000人祭り」を紹介します。
ITインフライベント

ビルドからリリースまでを抽象化するWaypointにディープダイブ

2021/2/4
HashiCorpがリリースしたWaypointの内部構造など詳細について解説されたセッションを紹介する。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

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