Rust でライブコーディングをした
これの LT 枠でライブコーディングをした。
動機
Rust は比較的難しい言語だと思う(ふわっと書いてふわっと動くタイプの言語ではない)ので、聴衆が自分でもできそうと思えるようなパフォーマンスをしたかった。
問題選定
Rust の標準ライブラリの公式ドキュメントにはダイクストラの実装が載っているので、これをコピペするだけで動くのを見せたいと考えた。 AOJ にはダイクストラをそのまま実装するための問題が用意されているが、それではあまりに味気ないので、本質的にはダイクストラをやるだけだが表面的には面白そうに見える問題を頑張って探した。
(探しても見つからなかったので、結局自分の印象に残っていた問題を思い出した)(僕が初めてダイクストラ法と出会った問題)
練習
本番前に練習をし、いくつかの問題点を見つけた。
- この問題では全ての頂点への最短距離を求める必要があるが、公式ドキュメントのものは終点までの最短経路のみを求めるので、微修正する必要がある。
- AtCoder のジャッジの Rust は 1.15.1 なので、そのままコピペすると
then_with
でコンパイルエラーになる。 - Edge が Clone を継承する必要がある。
- さり気なく
[#derive(Clone)]
を足す。
- さり気なく
- 標準入力が面倒。
- グラフが連結でないケースがテストに入っている。
本番
kenkooさんだ #rust_jp
— κeen (@blackenedgold) August 1, 2018
— Tsuzu (@Wp120_3238) 2018年8月1日
「どうせ自分の発表時間なくなるだろと思ってたので…」
— κeen (@blackenedgold) 2018年8月1日
#rust_jp
立川シネマシティの宣伝がwww #rust_jp
— Satoshi Kojima (@skoji) 2018年8月1日
— 電波椅子🐱 (@dempacat) 2018年8月1日
kenkooさんだ!!#rust_jp
— hello (@yomicerisier) 2018年8月1日
— hsjoihs@数情物化語 (@hsjoihs) 2018年8月1日
— おおた (@ota42y) 2018年8月1日
— おおた (@ota42y) 2018年8月1日
— えまのん (@emanon_was) 2018年8月1日
「今日家に帰ったら使える話をします」
— κeen (@blackenedgold) 2018年8月1日
#rust_jp
— なっぱ@パーフェクトドブマスター (@b7472) 2018年8月1日
「今すぐ5分以内にここでRustを使う話をします!!」 #rust_jp
— Satoshi Kojima (@skoji) 2018年8月1日
「スライドはない」「5分以内に使うRustを話します」 #rust_jp
— tjmmm (@norikakip) 2018年8月1日
— yuki (@helloyuk13) 2018年8月1日
— κeen (@blackenedgold) 2018年8月1日
「webアプリとか作るだけならPythonでいいんですよ!!」 #rust_jp
— Satoshi Kojima (@skoji) 2018年8月1日
— Tsuzu (@Wp120_3238) 2018年8月1日
atcoderの問題をライブコーディングして解くwwww #rust_jp
— おおた (@ota42y) 2018年8月1日
— 名有りさん (@naari_) 2018年8月1日
— κeen (@blackenedgold) 2018年8月1日
LTでAtCoderのC問題をライブコーディング。新しい #rust_jp
— 電波椅子🐱 (@dempacat) 2018年8月1日
ちゃんと時間は確保しますよ😅 #rust_jp
— どらやき (@dorayaki_kun) 2018年8月1日
「だいくすとら」を #rust_jp
— 目指せ黄色 (@matsu7874) 2018年8月1日
AtCoderのC問題をライブコーディングwww #rust_jp
— なっぱ@パーフェクトドブマスター (@b7472) 2018年8月1日
最強最速アルゴリズマー養成講座 プログラミングコンテストTopCoder攻略ガイド | 高橋 直大 |本 | 通販 | Amazonhttps://t.co/EOUsiDiXa7#rust_jp
— κeen (@blackenedgold) 2018年8月1日
Atcoderのライブコーディングは面白すぎる#rust_jp
— hello (@yomicerisier) 2018年8月1日
標準入力の受け取りめんどいよねw #rust_jp
— yuki (@helloyuk13) 2018年8月1日
ダイクストラ弊社社員うるさいです。僕はうるさくないですが。 #rust_jp
— どらやき (@dorayaki_kun) 2018年8月1日
マイクOFF!! #rust_jp
— なっぱ@パーフェクトドブマスター (@b7472) 2018年8月1日
標準入力を受け取るのもコピペでやっていくことにした
「標準入力受け取るのはRustだとめんどくさいのでコピペします!!」 #rust_jp 勢いがある
— Satoshi Kojima (@skoji) 2018年8月1日
「標準入力を受け取るのがRustは面倒なのでコピペでいきます」 #rust_jp
— 電波椅子🐱 (@dempacat) 2018年8月1日
AtCoderライブコーディングが始まったw #rust_jp
— Tsuzu (@Wp120_3238) 2018年8月1日
ガルパンの宣伝からガチライブコーディングw テンションぱねーw #rust_jp
— えまのん (@emanon_was) 2018年8月1日
「みなさんも実装してください僕といっしょに!!!」 #rust_jp
— tjmmm (@norikakip) 2018年8月1日
「みなさん、今、僕と一緒に、実装してください!!!」 #rust_jp
— Satoshi Kojima (@skoji) 2018年8月1日
喋りながらコード書ける技術何気にすごいと思う #rust_jp
— Yuli Inoue (@iyunoriue) 2018年8月1日
「皆さん、今、実装してくださいね?!僕といっしょに!!」
— κeen (@blackenedgold) 2018年8月1日
#rust_jp
「みなさんも一緒に実装してくださいね!!!」 #rust_jp
— なっぱ@パーフェクトドブマスター (@b7472) 2018年8月1日
「ダイクストラは実装しやすいんですが、ここはコピペでいきます」
— κeen (@blackenedgold) 2018年8月1日
#rust_jp
Rust公式ページにダイクストラが乗っている #rust_jp
— u+ (@uplus_e10) 2018年8月1日
「ダイクストラ法の実装はRustのbinary_heapのドキュメントに乗っている。それをそのままコピペします!!!」 wwwwww #rust_jp
— Satoshi Kojima (@skoji) 2018年8月1日
rustの公式ドキュメントにヒープを使ったダイクストラ法の実装があるwwwwwwwww #rust_jp
— おおた (@ota42y) 2018年8月1日
「RustのBinaryHeapのドキュメントにダイクストラ法のコードが乗っているのでコピペします」 #rust_jp
— 電波椅子🐱 (@dempacat) 2018年8月1日
「Rustはなんと標準ライブラリのBinaryHeapのドキュメントにダイクストラの実装が載ってます!!!これをコピペして使います!!!!」
— κeen (@blackenedgold) 2018年8月1日
#rust_jp
コピペによるライブコーディングが始まった #rust_jp
— soebosi (@ebosi38051) 2018年8月1日
— Satoshi Kojima (@skoji) 2018年8月1日
迷いなく書いてるあたり手慣れてるな〜
— κeen (@blackenedgold) 2018年8月1日
#rust_jp
— yuki (@helloyuk13) 2018年8月1日
— 電波椅子🐱 (@dempacat) 2018年8月1日
話しながら書くの難しそう #rust_jp
— mizdra (@mizdra) 2018年8月1日
公式docsにダイクストラの実装サンプルあるのかhttps://t.co/OTUeX1Jimc
— わさん (@wasanx25) 2018年8月1日
#rust_jp
「提出していきましょう」 #rust_jp
— なっぱ@パーフェクトドブマスター (@b7472) 2018年8月1日
ちゃんとコンパイルエラーになるところも見せた
AtCoderのRust古くなかったっけ・・・ #rust_jp
— Tsuzu (@Wp120_3238) 2018年8月1日
「AtCoderのRustのパージョンが古い!!」
— κeen (@blackenedgold) 2018年8月1日
#rust_jp
みっちり練習した痕跡よww #rust_jp
— えまのん (@emanon_was) 2018年8月1日
— なっぱ@パーフェクトドブマスター (@b7472) 2018年8月1日
AtCoderのRustコンパイラのバージョンが古いので、コピペしたところが動かない #rust_jp
— 電波椅子🐱 (@dempacat) 2018年8月1日
コーナーケースで不正解になるところも見せた
これはあまり伝わっていなかったかもしれない。
Rustの話じゃなくて問題の解説始まった #rust_jp
— 目指せ黄色 (@matsu7874) 2018年8月1日
「結局何をやったかというと、1行目〜84行目までコピペ」 #rust_jp
— 電波椅子🐱 (@dempacat) 2018年8月1日
「ほぼコピペなので自分で書いたコードはこれだけなんですね。なんかできそう!」
— κeen (@blackenedgold) 2018年8月1日
#rust_jp
「速さを享受できるアルゴリズムの問題を解くのがいいのでは」 #rust_jp
— 名有りさん (@naari_) 2018年8月1日
コンパイラのバージョンが古くてストレスが溜まったりしませんか #rust_jp
— Tsuzu (@Wp120_3238) 2018年8月1日
実装する方法は得てないぞwwww #rust_jp
— 電波椅子🐱 (@dempacat) 2018年8月1日
喋りながらのライブコーディングも良いし、まとめもとても良かったw #rust_jp
— わさん (@wasanx25) 2018年8月1日
「みなさんは今日帰ったらダイクストラを実装できます。」
— κeen (@blackenedgold) 2018年8月1日
#rust_jp
けんこーさんうまいなぁ #rust_jp
— Tsuzu (@Wp120_3238) 2018年8月1日
疾走感ある発表だった #rust_jp
— なっぱ@パーフェクトドブマスター (@b7472) 2018年8月1日
プロ #rust_jp
— Ryota Sakamoto (@ryota_sakamot0) 2018年8月1日
ライブ・コーディング面白かった #rust_jp
— Yuli Inoue (@iyunoriue) 2018年8月1日
話しながら実装してミスしないのすごかった… #rust_jp
— おおた (@ota42y) 2018年8月1日
感想
自己顕示欲の満たされ方がすごい。