Commits · ruby/typeprof
An experimental type-level Ruby interpreter for testing and understanding Ruby code - Commits · ruby/typeprof
https://github.com/ruby/typeprof/commits?author=k-nasa&since=2024-05-15&until=2024-05-18
こんにちは。STORES, Inc.でソフトウェアエンジニアをやってる@nasa です。
本記事ではRubyKaigi2024に参加して何に触発されたか、また触発されて何をしてみたのかまとめます。まあ、RubyKaigi2024参加記録になります。
初日Keynoteのスライドが上がっていないので代わりにぺんさんのツイートを載せます。
KeynoteではRubyで実装されたトリッキーなプログラムについての話でした。↓の他にも多くの作品があるので興味がある人は覗いてみてください。
上記の文字列は一見プログラムには見えませんが、このまま実行することのできるRubyコードです。しかもお魚が泳ぐきれなアニメーションになっています。しかも!アニメーションの途中で文字列(プログラム)をコピーして実行すると、その時点からのアニメーションを再開することができます。(このコードはクワインと呼ばれるものです。クワインは実行するプログラム自身のと完全に同じ文字列を出力するプログラムです)
文字で説明するのは難しいので動画を見て欲しいのですが、僕からするとかなり意味不明な事をやっていて凄いのです。凄いだけでは無く興奮しましたし、理解してみたいと強く思いました。
そこで僕もやってみました! https://twitter.com/nasa_desu/status/1790751831674810715
これはアスキーアートでnasaを表現している文字列 && Rubyプログラム && クワインです。
keynoteのプログラムと比べてしまうとかなり見劣りしますが頑張ったで賞くらいはもらえる出来かなと思っています。これをウキウキで自慢したところ「でも、アニメーションは無いですよねー」と言われたのでv2を鋭意開発してまいります!
二日目で印象に残っているのは@mame さんのTypeProfの話です。
これは、Rubyの型を記述せずに補完、定義ジャンプ、型エラーの表示といった機能を提供するためのソフトウェアです。今はVSCodeのプラグインという形で提供されているようです。型を記述せずに推論で頑張る!というのが個人的には魅力的です。
本発表はざっくりいうと「手が足りていないのでコントリビュートしてくれ!」という発表でした。
ということでRubyKaigi二日目の夜はtypeprofにパッチを投げることにしました!
大きな改善ではありませんが、このような小さな改善を積み重ねることが大切だと思っています。えらいですね(自画自賛)
RubyMusicMixinというPixivさん主催のイベントで盛り上がっていました。
初クラブでしたがめちゃくちゃ楽しかったです
で、3日目の僕のアウトプットはというと。。。。。。
ありません。。。。。。でもイベントを楽しむこともRubyKaigiの醍醐味ですよね!!ね!
TypeProfにもっと貢献するもよし、クワインを進化させるのもよし、その他もよしって感じでRubyKaigiで得たパッションを放出していこうと思います。
とりあえず今の勢いのままLT大会に申し込んでみました。皆さんも発表駆動開発どうですか?