Shinjuku.rs #18を開催しました
第1旅行プラットフォーム部 エンジニアの高橋です。
この記事では10/26(火)に開催したShinjuku.rs #18の様子についてご紹介します。2人の方にLTをしていただき、入門者から上級者まで聞きごたえのある内容となりました。
過去のイベントの様子についてはこちらからご覧ください。
Shinjuk.rs イベントレポート
LTの内容
LT1 | 【超初心者向け】Rustを勉強するためのコンテンツ紹介 | matsu7874さん(フォルシア)
LT1人目は弊社エンジニアの松本から、Rust入門者に向けてRustを勉強するためのコンテンツの紹介でした。
環境構築から勉強の仕方、詰まった時に役に立つ資料集など、フロチャートに沿ってRustを学習する際に便利な情報をまとめて紹介していただきました。
Rustはライフタイムや所有権などの概念が初学者にはとっつきにくく、言語の習得が難しいイメージを持たれる方も多いかもしれませんが、最近は日本でもコミュニティが充実しており様々な役立つツールや資料があるようです。紹介していただいた中だと、py2rsというPythonユーザーのためのPython <-> Rustの対応表が興味深かったです。
LTで紹介されたリンクは以下の記事にまとまっていますので、ぜひご覧ください。
Rustを始めるためのフローチャートと学習資源
LT2 | allocを使えるようにする | garasuboさん
二人目はgarasuboさんより、Rustで作成した自作OSでallocの処理を実装してみたという内容でLTをしていただきました。
Rustが提供する基本機能をまとめた std
ライブラリは、OSの機能を呼び出すことでその処理を実現しています。そのため、OSを自作する場合はstdの機能を使うことはできません。このようなstdライブラリを使用できない環境のことを no_std環境
と呼びます。OSの実装ではOSの機能を利用するライブラリは使用できない、というのは言われてみれば確かにと思いますが、個人的には盲点でした。
今回のLTのテーマであるallocクレートは、no_std環境でもグローバルアロケーターが定義されていれば使うことができます。グローバルアロケーターの実装方法について、LTで紹介していただきました。アロケーターは、C言語でのmallocとfreeに当たる処理を実装してメモリを管理する機能を持つ必要があります。alloc::alloc::GlobalAlloc
トレイトを実装した構造体をグローバル定数として宣言することで実現可能とのことです。
アロケーターはOSの基本機能であり、処理にバグがあるとプログラムも自分もパニックになるので、注意が必要です。
懇親会
LT後の懇親会ではLTに登壇していただいた方を含めて、以下のような話をしました。
- OSを作るにはどのくらいの文量のコードを書く必要がありますか?
- OSの機能によります。自分は電子機器に組み込むようなOSを作ろうとしているので、例えばデスクトップシステムは必要ない分コードも少なくなります。
- 組み込みのRustを書く際は、基礎から学ぶ 組込みRust がとても分かりやすいです
- 著者の方は以前Shinjuku.rsにも登壇いただきました!
- その時のイベントレポートはこちら: https://www.forcia.com/blog/001635.html
- RustAnalyzerは便利ですが、OSの実装だとうまく型推論できない場合がありました
- IDEだとボードと固定化されてしまう場合があるので、組み込み系の実装の時はいまいち使いにくいです
- vimとmake fileで十分開発できます!
次回のShinjuku.rs #19は 12/21(火)に開催予定です
次回のイベントへは以下のページからお申込みいただけます。
RustのLT会 Shinjuku.rs #19 @オンライン
Rustを商用利用した話、Rustでこんなものを開発した、Rustの面白い仕様を紹介したい、Rustにcontributeしたなど、Rustに関連する内容ならなんでもWelcomeです。皆様からのLTをお待ちしています!
髙橋 優樹
2019年新卒入社エンジニア。
寒くなるとより一層サウナに行きたくなります
フォルシアではフォルシアに興味をお持ちいただけた方に、社員との面談のご案内をしています。
採用応募の方、まずはカジュアルにお話をしてみたいという方は、お気軽に下記よりご連絡ください。
※ 弊社社員に対する営業行為などはお断りしております。ご希望に沿えない場合がございますので予めご了承ください。