イベントで喋ってきました!!!
下記イベントに参加してきました!hikaliumさんと一緒にわいわい非同期について学ばせていただきました!めちゃくちゃ楽しかった〜〜!!
Rustで書いて学ぶ非同期のしくみとは?
非同期処理をRustを使って学んじゃおう!というイベントです。
詳細な目的や目指す状態はリンク先にもあるので省きます!
喋る側になって感じたこと
意外に合いの手やリアクション、アドリブのトークがいい感じだった?
対談しながらの勉強会、確かに私もあんまり知らないので、今回できてよかったです! 単純にもう私がめちゃくちゃ楽しくて、それが視聴している側の方々にも楽しさ、Rustの面白さが伝わっていたなら嬉しいです!
今回得られた学び(一番大事!!!!!)
受ける前の私
- 俺たちは非同期を雰囲気でやっている
- async / await、なんとなくで使っている
- 順番に行うことはイメージできるけど、非同期って何がどうなっているの?
- というか、非同期ってどんなメリットがあって開発されているの..?
受けた後の私
- 非同期処理:処理するタイミングも、実行する順番も自由(違うタイミングでやりたい、というのは認識していたけど実行する順番も自由なの知らなかった...!)
- 他のことを実行している間に別のことを実行できるのは良さそう!
- awaitなんとなく使ってたけど、完了を持つのがawaitだったのか...!
future(非同期処理が完了したら返す値を抽象化したもの)とfeature(機能)は別です本当にすみませんでした
- mainはasyncにできない
— ふみふみ (@2323_code) June 10, 2025
- でもtokio::mainを使えばできる!
- sleepには同期用(stdのsleep)、非同期用(tokioのsleep)がある
- cargo add は Cargo. tomlに追記するだけ(ダウンロードしたりするのはビルドのタイミング)
- Rustのコンパイルエラーはスパダリ(大好き)
#wakecareer_勉強会
ありがたいことに資料も公開されている
おまけにこれ、今回御質問をいただいた方の疑問を解消するためのライブコーディングが急遽行われ、そこで使われた非同期処理をループした結果panic!()を起こすことがわかったコードもサンプルに入れてくださっています!!!!ありがたすぎる!!!!!
今日のスライドです!
— hikalium (@hikalium) June 10, 2025
最後の質疑応答パートで勢いで書いてみたpollしまくるコードも末尾に掲載しましたので、自分でpanic試してみたいかたはぜひ!https://t.co/lY6z8y3bL9
#wakecareer_勉強会
本当にね...この時にとてつもないスピードでContextを作り、Pollがわかるようにログを書き、ものの数分で見事サンプルコードを仕上げてくださったhikaliumさんが本当に、本当にかっこ良くてですね..........。
答えるだけではなく、実際に試してみる。それをすぐ行うだけではなく楽しんで行っていらっしゃって...。
私もこんな技術者でありたい、と感じました。貴重なライブコーディングを最高の特等席からみられて本当に幸せでした!!
本日の学び:async関数が生成するFuture, Poll::Readyが返ってきたあとにもう一回poll()するとpanic!()する!
— hikalium (@hikalium) June 10, 2025
#wakecareer_勉強会 pic.twitter.com/WQjeYo0Ee6
お話ししながらのハンズオン楽しかった
今回の流れとしては30分座学、30分ペアプロ、という流れで行いましたが、当日まで非同期の知識がにわかすぎて「大丈夫か!?」となっておりました。
(プログラミングRustで簡単に予習したものの、やはり雰囲気からは抜け出せず)
しかし、当日hikaliumさんの丁寧で簡潔な説明、細かな部分についても適宜補足もしてくださりながら進めていただいたおかげで、安心して、楽しく私もコーディングすることができました。
Rustを始めて触った時の興奮を再度感じた
これは終了後に運営のみゆきさん、hikaliumさんとお話ししていたことなのですが、はじめてRustを触った時の感動を今回のハンズオンで改めて感じることができました。
具体的にいうと、そもそも私は3年ほどPythonを使ったWebアプリケーション開発をしていました。(型の概念が皆無だったにも関わらず、動的型付け言語に触れてしまった。それでもPythonは思い入れのある言語。)
その際、例えばAPIとの連携をすると返り値はどんなものを期待し、入出力はどんなふうになっていて、期待する型が得られない場合はどうすべきか... が、動かしてみてもわからない、ということがちらほらありました。 もちろん当時開発者としても今以上に未熟であったこと加味したとしても、やはり型由来の期待しない動作にとても苦労したのを覚えています。
周りの勧めでRustのHello, world!や数当てゲームを作ったところ、Rustコンパイラの賢さに本当に感動!!
今回のハンズオンでもちょっと触れましたが、useされていないクレートについてはそのままコピペできるような状態でhintを出してくれたり、下記のツイートのでスクショされているように該当の関数についてヒントをくれたり。
実行時にバグが出ることを、実行する前に教えてくれる、というのは本当に嬉しいです。 私がRustについて語るたびに「Rustはスパダリ」「Rustを書くと心が穏やかになる」と言っているのはこのような背景があります。
デモパート突入!
— 【公式】WAKE Career (旧Waveleap)|女性エンジニア向けハイスキル転職🌊 (@WAKE_Career) June 10, 2025
Rust製のエディタZedを使って、async/awaitを書いて実行しています!
#wakecareer_勉強会 pic.twitter.com/PiGDIo30RF
そんな感動を、また今日の非同期処理が最終的にうまくいったターンでまた味わえるなんて!!!!! 本当に嬉しかったです。Zoomで一緒にハンズオンをしてくださったり、コメントで盛り上げてくださった方々とも共有できて大変嬉しかったです。
あとhikaliumさんが教えてくださったこの記事。またゆっくり読みます!
Rust書いててよかったし、RustLadiesやっててよかった
今日ほどRustをやっていてよかったと思った日はなかったですし、そのご縁のおかげでみゆきさん、hikaliumさんという素晴らしいお二人とこんな素敵なイベントを、一緒に行うことができました。ありがとうございました!
また、今回私が登壇するにあたり、参加してくださった友人や同僚の皆様、参加申し込みをしてくださった方々、これからアーカイブを視聴してくださる皆様、本当に本当にありがとうございました。
またアーカイブも公開される予定なので、そちらもぜひお楽しみに!
(あとhilkaliumさんが作ってくださったpanic!()するサンプルコード、今度私も触ります!)
大変貴重で楽しく、学びになる90分間でした!ありがとうございました!!!!