pty crate を作って Rust of Us へ行った
PTY に触るための crate を作って、その翌週に Rust of Us - Chapter 2 へ行き、そこで知見を共有したり Rust について教わったりしてきた。
pty crate
さいきん調べた PTY を使ってシェルの入出力を好きなようにする ための処理を Rust で簡単に書けるようにしたいという動機で作った。
この crate が提供する pty::fork()
は、新しい疑似端末 (PTY) を割り当てた子プロセスをつくる。Ruby の PTY.spawn
に似ている (exec はしない)。
次のように呼び出すと、疑似端末の割り当てられた子プロセスの入出力を pty_master
越しに読み書きできる。
let (child_process, mut pty_master) = pty::fork();
Rust of Us
crate を公開することはできた。でも、API や実装の出来にはそれほど自信が持てない。最低限の動作はするものの、改善できる余地がありそうな気がする。限られた時間の中で、もっと効率よく「Rust らしいやり方」を知りたい。けれど、一人で調べているだけでは限界がある。だから、Rust について他の人の話を聞きに行くことにした。
話を聞いた内容のうちのいくつかは次のようなことだった。自分からの視点そのままなので偏りがあるのと、資料を見つけられなかった分は抜け落ちている。
- エディタの話
- rust-lang/rust.vim: vim のシンタックスハイライトとか。
- Racer: 各エディタで使えるコード補完とかジャンプとか。
- 食事する 哲学者の問題
- Dining Philosophers について @tanaka51 が調べた話。
- モニタの話をしているところで dRuby 本 を思い出した。もう一度読もう。
- ライフゲーム
- ふらなんとかさん がライフゲームを実装する話。
- 画面にコードを表示しながらみんなで読んだ。
- Rust と Web
- @hrysd の話。
- DockerでHerokuでRustが動いたぞ!!!
- hyper: HTTP ライブラリ。Sinatra みたいな記法のサンプルコードがあった。
- Rust と MessagePack
- 使い慣れていないものについて雑談
- マクロ, テスト, References and Borrowing
- rust_fluent: crate の話をしていたときに参考にした。
- @takkanm が全体的に詳しくて色々教えてもらった。Book 読もう。
- ささださん が目をつける部分が興味深くてためになった。マクロの記法とかメモリ管理とか、自分一人だったらそこまで深く考えなかった気がする。
- プロセスの入出力を好きにする話
- Pseudo を適当に「プセウドオ」とか読んでいたけど正解は /ˈsjuːdəʊ/。
- Ruby 2.0.0 の DTrace の紹介: システムコールを監視するという文脈で DTrace が出てきた。
今回、参加者の中に Rust にとても詳しいという人はいないということだった。それでも、みんなそれぞれ何かしら有益な情報を持っていて、互いに自分の知っていることを発表したりツッコミを入れたりすることで得られるものがあった。
発表の後はその場で出た疑問について考えを述べ合ったり、実際にコードを書いて確認したり、参考になりそうな記事を探したりした。その結果、(少なくとも自分のなかの) いくつかの疑問や誤解が解消できた。ありがたい。また行きたいと思う。
自分はというと、 Rust について話せることはまだ少なくて、主に PTY についての話をした。
Google Docs と Chromecast の組合せだと、スマホ片手にメモを見ながら話ができて楽だった。たとえ少人数でも人前は緊張してしまうので、なるべく楽にできるのがいい。