diff options
Diffstat (limited to 'services/nuldoc/content/posts/2025-04-20')
| -rw-r--r-- | services/nuldoc/content/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award.md (renamed from services/nuldoc/content/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award.dj) | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/services/nuldoc/content/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award.dj b/services/nuldoc/content/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award.md index f51396f..f7f7679 100644 --- a/services/nuldoc/content/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award.dj +++ b/services/nuldoc/content/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award.md @@ -14,8 +14,7 @@ tags = [ date = "2025-04-20" remark = "公開" --- -{#intro} -# はじめに +# はじめに {#intro} 2025-04-16 から 2025-04-18 にかけて開催された [RubyKaigi 2025](https://rubykaigi.org/2025/) に参加した (私が参加できたのは 1日目の 2025-04-16 のみ)。 @@ -24,16 +23,14 @@ remark = "公開" この記事では、提出した作品の紹介と解説をおこなおうと思う。 -{#trick} -# TRICK とは +# TRICK とは {#trick} TRICK とは RubyKaigi で不定期に開催されているコンテストで、Ruby で書かれた「変わった」コードを表彰する。早い話が [IOCCC](https://www.ioccc.org/) の Ruby 版である。 存在を知ってから次こそは出したいと思っていたところ、ちょうど RubyKaigi の地元開催と被ったのでこれ幸いとエントリーした。 -{#my-work} -# 作品紹介 +# 作品紹介 {#my-work} 今回頂いたのは審査員賞の一つ eto award (公式の賞の名前に合わせて敬称略) で、"Most Ruby-on-Ruby" Award (『最もRuby on Ruby賞』) として受賞した (IOCCC と同じく、それぞれの賞に個別の名前が付く)。 @@ -41,7 +38,7 @@ TRICK とは RubyKaigi で不定期に開催されているコンテストで、 今回の TRICK では `ruby.wasm` の使用が認められている。 -> * *(NEW)* You can use [ruby.wasm](https://github.com/ruby/ruby.wasm). +> * **(NEW)** You can use [ruby.wasm](https://github.com/ruby/ruby.wasm). 適当に HTTP サーバを立てて [`index.html`](https://github.com/tric/trick2025/blob/main/10-nsfisis/index.html) を開くと、次のように [`entry.rb`](https://github.com/tric/trick2025/blob/main/10-nsfisis/entry.rb) の内容が表示される。 @@ -63,13 +60,11 @@ TRICK とは RubyKaigi で不定期に開催されているコンテストで、 順に使ったテクニックを解説していく。 -{#quine} -## Quine +## Quine {#quine} 改めて quine について説明する。Quine とは、自身のソースコードを出力するようなプログラムである。Ruby では様々な方法で quine を書くことができるが、この作品で使っている基本形は以下のようなものである。 -{numbered="true"} -```ruby +```ruby numbered eval $s=<<'EOS' print "eval $s=<<'EOS'\n" print $s @@ -79,8 +74,7 @@ EOS 変数 `$s` に 2 行目、3 行目、4 行目が入っており、それに加えて 1 行目と 5 行目を出力すれば元のソースコードが得られる。実際には `$s` を加工してシンタックスハイライトや振り仮名を振ることになる。 -{#syntax-highlight} -## シンタックスハイライト +## シンタックスハイライト {#syntax-highlight} シンタックスハイライトは、トークナイズとトークン種別に応じた色付けの2段階からなる。 @@ -130,8 +124,7 @@ Prism.lex($s).value[..-2].each {|t, *| トークン種別の列挙にはそれなりに文字数を使ってしまうのだが、今回の TRICK のレギュレーションでは `index.html` にサイズ制限がなかったので好きに色を付けることができた。 -{#ruby-text} -## 振り仮名 +## 振り仮名 {#ruby-text} それぞれの英単語や記号に対応した振り仮名のデータは、プログラム中に埋め込まれている。 @@ -190,8 +183,7 @@ end `kana()` 関数が多少長くはなるが、振り仮名データの数 x 2 バイト分サイズが減るのでこちらの方が短くなる。 サイズ制限の都合で振り仮名を振るのを諦めた記号もあったのでもったいない。 -{#outro} -# おわりに +# おわりに {#outro} 本っ当に取りたかったので心から嬉しいです。 全部で 3作提出したのですが、他の 2つも選外佳作として選出していただけた上、そのうちの "Least Truthful" については最後に Matz 氏から言及があり、審査員賞と合わせて望外の栄誉となりました。 |
