FORCIA CUBEフォルシアの情報を多面的に発信するブログ

Shinjuku.rs #6を開催しました

2019.09.16

Shinjuku.rs Rust エンジニア

 プロダクト部の松本です。フォルシアではShinjuku.rsというRustのLT会を隔月開催しています。今回、6度目となるShinjuku.rs #6を9/3(火)に開催し、多くの方々にご参加していただきました。

 過去の様子はこちらをご覧ください。

 今回から勉強会の様子をブログにしていただくブログ枠を用意しました。ブログ枠で参加いただいた方ありがとうございます。

今日はRustのLT会 Shinjuku.rs #6 @FORCIAの日です - 北海道苫小牧市出身の初老PGが書くブログ

発表内容をサマリー的に書いてくださっているので、今回は感想を多めに当日の様子をお伝えします。

LTの様子

LT1 Rust初心者がRay Tracer書いてみた | keisukefukudaさん

keisukefukuda_1.jpg

 新しい言語を使い始めるときは、競技プログラミングの問題を解いてみたり、Lispの処理系を実装してみながら言語仕様を勉強していく人が多いと思います。今回の発表ではRay Tracerも新しい言語を学ぶ時の実装課題としていいよという紹介をしていただきました。

 Ray Tracing in One Weekendという書籍をRustに移植しながら進めているそうです。

 Ray Tracingの良いところとして、「出入力の簡単さ」や「成果物の分かりやすさ」と並んで、「発展性」が上げられていました。モジュール化などある程度の規模になって初めて現れる問題があるので、初めからそこを意識して始められるのは素晴らしいなと感じました。

LT2 ネタがないので盛り上がるプログラムを作った | てくのたのしーさん

 HTTPクライアントreqwestとHTMLパーサーscraperを使って、映画タイトルを収集し、タイトルを100倍にするという内容でした。ソースコードは techno-tanoC/hundredで公開していただいています。半角で書かれていれば *100をして、全角で書かれていれば 00 を追記するという実装がネタプログラムっぽくて好きです。

techno_2.jpg

 漢数字には対応されていないということでしたので、アンサーLT的に漢字で書かれた数をBigIntに変換するcrate kanji-number-parserを作ってみました。

LT3 最近お仕事で使ったcrateの話 | yukiさん

yuki_3.jpg

 Rust.Tokyo 2019のオーガナイザーであるyukiさんからは業務としてRustでツール作成をした際に便利だったcrateを紹介していただきました。ちなみに弊社はRust.Tokyo 2019のスポンサーです。

 小規模ツールであれば、所有権などのRustの書くのが大変なところは意外と面倒くさくないというのは激しく同意です。私も最近はlogファイルの前処理にRustを使っています。まだPythonよりは書くのに時間がかかりますが、コンパイルがあるので終盤の処理で落ちた......が少なくて便利です。

 実際に紹介されたTraitは下記の通り。

  • ogham/rust-ansi-term: Rust library for ANSI terminal colours and styles (bold, underline)
    • ターミナルで色をつけるやつ。
  • rust-itertools/itertools: Extra iterator adaptors, iterator methods, free functions, and macros.
    • イテレーターの操作に便利なものを追加する。 enumerateも便利。
  • seanmonstar/reqwest: An easy and powerful Rust HTTP Client
    • HTTPクライアント
  • programble/scraper: HTML parsing and querying with CSS selectors
    • HTMLパーサー
  • chronotope/chrono: Date and time library for Rust
    • DateTimeを提供するcrate
    • タイムゾーンを追加で実装してみた。

     会場から「crateはどうやって探しているか」という質問に対して、「"awesome ~~"で調べると良いですよ」 「Rustだとrust-unofficial/awesome-rust: A curated list of Rust code and resources.があります」とレベルアップに繋がる回答が。こういう話はすることが少ないですが、大事ですね!

    LT4 Rustで10日でwebサービスつくった話 | ryusukefudaさん

    ryusukefuda_4.jpg

     TRUNK社では10日間の夏合宿で、使ったことのない技術を使ってWebサービスを作るのだとか。2018年の夏合宿でプロトタイピングをしたWorkschool(ワークスクール)がつい先日リリースされたばかりということで会場からは拍手がありました。ちなみにWorkschoolはGolangとVue.jsで書かれているらしいです。

     今年はRustとWeb Componentsで自問自答QAサイトの開発に取り組んだということで、開発にも慣れていない言語なのですぐに詰まるし、情報が少なく救いがないとおっしゃっていました。Rust JPのSlackチームがあるので、これからRustを始める人は入るといいと思います。

     また、Goに比べてRustのデプロイは時間がかかるということで、これから取り組んでいく課題とおっしゃっていました。うまく行けば次回ということで、よろしくお願いいたします!

    LT5 What is std::sync::atomic | matsu7874

    matsu7874_5.jpg

     私です。データ競合と対策としてのAtomic型、実装Tipsとして外部crateで定義された型に別のcrateで定義されたTraitをimplするためにnewtypeパターンが使えるという話をしました。

     紹介しているスライドは "Performance Comparison of Mutex, RWLock and Atomic types in Rust"です。

     懇親会でunsafeを使って、複数ソケットのサーバで試すと観測できるかもというお話をスパコン開発者の方に教えていただきました。

    LT6 WebSocketで人生アガります | 宇宙ツイッタラーXさん

    x_6.jpg

     最後枠はライブコーディング限定という訳ではないのですが、ライブコーディングをしていただきました。

     人生アガるためにbitcoinを自動取引したいというモチベーションで、bitFlyer Lightning Realtime APIを叩いて値を得る部分まで。独特の軽妙な調子でスムーズなコーディングを見せていただきました。

    codingx_7.jpg

     「JSONオブジェクトから型定義を自動で書いてくれるWebサービス(transform)があります」と会場から援護があったりと一体感のあるLTでした。

    懇親会

     今回もピザを片手に懇親会を行いました。Rustは実務で使えるのか、crateのバージョンアップはいつするのか、Rust.Tokyoの話、なぜRustに興味を持っているのか、他の勉強会にも行っているかなど、楽しくお話を聞かせていただきました。

    次回、1周年記念となるShinjuku.rs #7は11/19(火)に開催予定

     さて、既に次回の募集を始めています。ご興味を持っていただけた方は下記connpassページから参加登録をお願いいたします。

     RustのLT会 Shinjuku.rs #7 @FORCIA

     Rustを商用利用した話、Rustの面白い仕様を紹介したい、Rustにcontributeしたなど、Rustに関連する内容ならなんでもWelcomeです。皆様からのLTをお待ちしています。

この記事を書いた人

松本 健太郎

フォルシア4年目のエンジニア。
Rustでインメモリデータベースの開発を行っている。