MatsushitaTweet2019年4月に行われたカンファレンスからRustの概要を紹介する。Nichols氏による解説動画を紹介したい。Klabnik氏によるWebAssemblyとRustに関するセッション、DropboxがPythonからRustに書き換えた事例、Microsoftが開発したKubernetes上でWebAssemblyのコードを実行するKrustletの記事、IBMが社内システムをNode.jsからRustで書き換えた事例などによってRustがモメンタムを獲得しつつある大きな流れを紹介してきた。2019)というカンファレンスで行われたものだ。Nicholsこのセッションで使われたさまざまなデータは、以下のGitLabのリンクから参照することができる。冒頭からアメリカにおける鉄道を例に挙げ、「いかに危険な仕事をなくしてきたのか?」を解説するNichols氏。ポイントは、当初アメリカの鉄道は、ブレーキのシステムを備えておらず、専任の技師がその都度、列車の屋根に登ってブレーキを掛けていたという点だ。そのため多くの技師が転落して怪我をしたり、命を落としたりしていたという。Westinghouseである。鉄道のエアブレーキが開発され、法制度としてすべての鉄道に装備されるまでに約30年が必要だったというのが、このパートでのメッセージだ。いうセッション最後の部分の問い掛けの伏線となる。約11分後辺りから実際にRustに関する解説が始まるので、動画を視聴する際はそこから開始しても構わないだろう。ここからは比較対象となるC言語について解説が始まる。メモリーに対して安全でないのがC言語C言語はメモリーアンセーフ、つまりメモリーセーフではないということが最初に強調されたが、具体的にはメモリーの解放、メモリーリーク、バッファーオーバーフロー、ヌルポインター、データレースなどの問題点が発生することを指摘した。メモリーに対して安全ではないということで起こり得る問題点を列挙そしてここでもMicrosoftが行った調査、これまで開発したすべてのソフトウェアにおける脆弱性の約70%がメモリー関連であるという調査結果を引用している。このスライドで引用されている記事は、以下のZDnetの記事だ。issuesC言語は書いてからメモリーセーフにするやり方C言語でもメモリーセーフなコードを書くことは可能だが、それは常にコードを書いた後にチェックを行い、それを直すというものである。本質的にメモリーセーフなコードを書くという目的にC言語はまったく該当しないというのが、この部分のキーメッセージだ。メモリーセーフなRust次にRustの解説に移ったNichols氏は、ここまで解説してきた最大の問題点、メモリーセーフをどうやってRustが解決したのかを説明する。メモリーセーフを実現するのがRustの最大の目的ここではメモリーセーフにすることがRustの最大の目的であるとして、コンセプトとしての「オーナーシップとボローイング(所有権と借用)」を解説する。オーナーシップは文字通り、「変数がどこに属しているか?」を厳密に定義することで、メモリーセーフを実現するものだ。ボローイングとは、所属を変えずに借りる(Borrow)ことで変数へのアクセスを可能にするというものだ。例として挙げられたソースコードではmainの中で使われたxという変数に格納されたhiという値は、その関数(ここではmain)の実行が終わると同時に解放されることを示している。簡単なRustのコードで解説また次の例ではxをyに代入することでオーナーシップが移ってしまうために、その後で参照しようとしてもエラーになるということを示している。オーナーシップの移動。エラーメッセージが実に細かいのもRustの仕様と言っていいだろう。エラーメッセージにオーナーシップとボローイング(所有権と借用)が明示されるまた次の例では「&x」という書き方で外部の変数からxへの参照を行う記述が示されている。別の例で所有権と借用を説明ここではxがスコープから抜けた瞬間に変数自体がクリアされており、それ以後の利用はできない。この辺りの所有権と借用についてはRustのメモリーセーフの根幹に関わるコンセプトである。深く知るためには以下のドキュメントを参照されたい。参考:プログラミング言語Rustもう一度、Rustのメモリーセーフティーについてスライドでまとめているが、変数に対する不変/可変の扱いやnullがないこと、所有権と借用などの概念が他の言語と比べてユニークであるために、理解するための学習時間が必要であることは理解できる。Rustのメモリーセーフティーのまとめシステム記述言語としてのRustそして2番目に挙げたRustの特徴として「システムを記述する言語としてのRust」という側面だ。Rustの特徴の2番目はシステム記述用言語としての側面ここではメモリーセーフティーであること以外にパフォーマンスが高いことが挙げられている。これは実行時に型チェックやガーベージコレクションなどが発生せずに、すべてがコンパイル時に行われることでデベロッパーが書いたコード以外のオーバーヘッドがないことに由来している。高いパフォーマンスを誇るRustただ、弱点としてシンプルでないことを挙げている。これは前にも言及した所有権と借用のコンセプトを理解した上で、Rustに向いた書き方をしなければいけないという部分にも関わってくるポイントだ。欠点はシンプルに見えないこと。GatewayのGlooが最新バージョン1.3をリリース次の記事IBMがRustを使ってNode.jsのプロジェクトを書き換え。この著者の記事一覧フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。Gatheringで語られたOpenShiftに最適なCI/CDとは2021/3/2レッドハット株式会社のクラウドソリューションアーキテクト、北山晋吾氏によるCI/CDのセッションを紹介。クリエイター1000人祭り」レポート2021/2/92020年12月にオンラインで開催された「3年後の未来を描け!悩み爆発クリエイター1000人祭り」を紹介します。続きを読むITインフライベントビルドからリリースまでを抽象化するWaypointにディープダイブ2021/2/4HashiCorpがリリースしたWaypointの内部構造など詳細について解説されたセッションを紹介する。Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。2020でメモリーセーフなプログラミング言語Rustを紹介IBMがRustを使ってNode.jsのプロジェクトを書き換え。ITがお届けするポッドキャストです。