よもやま話β版

よもやま話を書きます。内容はぺらぺら。自由に書く。

祝・Rubyリリース30周年

Rubyリリース30周年パーティーに参加しました。

rubyassociation.doorkeeper.jp

以前、25周年*1の時に行った記憶があるのですが、振り返ると、その時はあんまりまだRubyコミュニティのことを知らなかったです。

RubyKaigiにも全然行っておらず*2、高橋さんが高橋メソッドの高橋さんであるとは知らなかったし、MINASWANという言葉も知らなかったし、Rails Girlsにも参加しておらず、 Kaigi on Rails はまだ始まっていない時でした。

思えば色々あったな…。と感慨深くなりつつ、今後のRubyの展望がたのしみになる会でした。

以下、会を思い出すための自分用メモです〜

  • Ruby コミュニティの30年
    • Rubyの歴史を今年は聴く機会が多かったなと感じましたが、自分が足繁くRubyイベントに行ったのと30周年というのが重なったという要因がありそうです。リリース時のやりとりが残っている、とてもロマンがあるなぁ…。「側で見てるより参加する方がたのしい」、まさにそうで、何かしら自分もトライをしていきたいなと思いました。
  • ZJIT: The Ruby 4 JIT Compiler
    • 日本語で聞けるZJITの話! やはり難しかったですが少し輪郭が捉えられたような気がします。CとRubyの行き来のないほうが良いとのこと、2026年Cをちょっと書きたい気もしているので、ちょっと意識しておきたいです。
  • お楽しみコンテンツ その1
    • なんとDHH氏からのお祝いメッセージ!ヒアリングを頑張ったところ、知っているフレーズがいくつか聞こえてきて、これはRailsDoctrineで読んだやつ…!となりました。読んでてよかった。
  • 歴代リリースマネージャ座談会
    • リリースの変遷が、その時々の開発ナレッジの変遷と並行している様子から、歴史を感じました。紡がれてきたリリースが今も定期的にあるからこそ、安心してRubyを使えています!感謝…!🙏
  • Unboxing Ruby Box
    • 大注目の機能ですね!特にテストでの利用シーンが自分も恩恵を受けられそうな身近な例だなと思いました。困ったシーンで積極的に活用したいです。ふわふわクマちゃんがBoxを持っていてカワイかったです。
  • お楽しみコンテンツ その2
    • なんとhttps://www.ruby-lang.org/ のページのデザインが一新とのこと、スペシャルサプライズでした。モダンで、Rubyコミュニティの「たのしさ」を感じる素敵なデザインですね!
  • 日本Rubyの会: これまでとこれから
    • Ruby周辺のコミュニティ関係の人をどんどん壇上にあげてコメントをもらうスタイル。改めてRubyコミュニティの活発さをひしひし感じました。
    • (関ヶ原の将は誰になるんだ…!?気になりすぎる)
  • たとえばこんな Ruby の未来
    • まだまだ新規アイデアがこんなにもたくさんあるということは、進化の余地があるということで、素晴らしいことだなと思いました。ボッチ演算子&&.は魅力的だなと思いつつ、そんなにつなげるなら何かしらメソッドにするか処理を見直したほうがいい、という話にも納得。

めでたいね30th

島田さんの発表のなかで one of KoR オーガナイザーとしてコメントさせていただくシーンがありました。ド緊張して前もって考えたセリフしか言えませんでしたが、お祝いを伝えることができて感無量でした。ありがとうございました!

Ruby30周年スタンプの押されたミニ封筒とお祝いメッセージのカンペ便箋
頭真っ白になるとおもってお祝いの言葉は便箋に書いてました。封筒に現地でスタンプを押させていただきました!

会の中で、ところどころ「狂気」というキーワードが出てきたのがとても印象的でした。自分も2025年を振り返ると、TRICKだしたり、RubyRFIDタグを読んだりしてましたが、我に返ってたら立ち止まってしまっていたシーンが多かったような気がします。いろんなことに取り組むコツは、うまく正気を失いつつ(?)走ることかもしれません。

来年も健康に気をつけつつ、後ろ向きな正気を減らして、前向きな狂気に還元していきたいなと思いました。がんばっていくぞ💪よろしくお願いします!

*1:https://25.ruby.or.jp/ 2018年の25周年記念イベント。25周年は「Rubyという名前が決まった1993年2月24日」(https://xtech.nikkei.com/atcl/nxt/column/18/00001/00110/) が起点となっており、今回の30周年は「バージョン0.95がリリースされた1995年12月21日」が起点になっている。なので"リリースパーティー"なのですね!

*2:実は京都にだけ行ったけど、色んなインプットをして混乱しながら帰ってきた覚えが少しある、うーん初学者だった…。

北陸Ruby会議01 備忘録

北陸Ruby会議01 に参加しました!

regional.rubykaigi.org

自分は実家が石川県にあるので、宿泊先の実家からイベントに行くというのがなんだか不思議な感覚でした。会場の図書館は自分が実家を出た後にできた(2022年夏に開館)したため、初来訪でした。車で送っていってくれた母、感謝🙏

石川県立図書館の内部
うわーっ利用者登録したい(いまは近隣住民じゃないのでダメ)

北陸内外から多くの発表が集まり、たのしく拝聴させていただきました。純参加者として1トラックに集中できた体験、久しぶりかもしれない…。

以下は簡易に、自分用メモです。

セッション感想メモ

  • 日本Rubyの会の構造と実行とあと何か: 日本Rubyの会の在り方そのものがRubyっぽい、ということに大納得。普段からたのしさを享受させてもらっていますが、そのための土台の大変さにありがたみを改めて感じました。あと何か、の訳が "And Something Nice" なの、カッコよすぎるな〜。
  • Ruby で作る大規模イベントネットワーク構築・運用支援システム TTDB: Interop Tokyoの話はチラと聞いたことはありましたが、支援のためのシステムがRails製というのは知りませんでした!ネットワーク構成図と数字に圧倒されました。
  • 計算機科学をRubyと歩む 〜DFA正規表現エンジンをつくる~: 正規表現は普段からもちろんお世話になってる仕組みではありますが、自作できるという発想自体が目からウロコでした。学習ツールとしてのRuby、手に馴染んでるということはおだいじ。
  • Ruby DSLMinecraftを改造できるようにする 〜パパのRuby、娘のMinecraft: 衝撃のプレゼンツール、マイクラ!「透明化ポーションを飲みます」面白すぎました。具体で提示されたコード例にもメタプロのエッセンスが詰まっており、大変勉強になりました。
  • Rubyで鍛える仕組み化プロヂュース力: 仕組み化を趣味で!?一発で格好良くきめない、実利を得る…という言葉は何かに拘泥しそうになった時に思い出していきたいです。「レビューの隙間」埋め、とっても大切。
  • Rubyで作る静的サイト: 並べて語ってもらうと、色々と選択肢があるんだなぁと改めて驚きました。自分はJekyll派ですが、Digital Garden とか Obsibianが気になってるのでやはりBridgetownにも着目というところです。
  • Kaigi on Rails 2025におけるsubscreenの実装について: KoRで大変そうだなと思ってはいましたが、改めて具体話を聞いて脱帽。QRコードでのデモ、技術選定、命名…あらゆるところに粋を感じました。流石です。
  • Ruby受託事業マネジメントの10年: 平田さんには実はお仕事でもお世話になったことがありまして…その節はありがとうございました…! また、Rubyのイベントで必ず目にする提供画面といえば永和さんですね。語っていただいた10年の厚み、しみじみ感じ入りました。引き続きよろしくお願いします!
  • Rubyで守るわが家の安心:IoTセンサーネットワーク『ゆきそっく』の実践」: 9年の実績!?システムもバチバチに実用的で感服しました。ウチにもつけたほうがいい気がする…。
  • 猫の健康を見守りたい!実践 Raspberry Pi + Ruby: 猫写真をみなさんに大画面でお見せできて満足しました!詳しくは別記事で。
  • 与信管理を形にする:Rubyの柔軟性が支える高速データ収集・自動化基盤: 表記揺れのツラさ、自分も心当たりがあるので頷きの連続でした。ビジネスロジックに注力できるRubyはやっぱりイイネ…!
  • rack-attack gemによるリクエスト制限の失敗と学び: 実はタイムリーに困ってるシーンがありまして…。故郷で解決案に出会えるとは!実務的にガチで勉強になりました。感謝!
  • Rubyで楽してタスクを書きたい!: タスクランナーって作れるんだ…!?と本会何度目かの驚きと発見がまたしても。タスクと襷のかかったネーミングtaskiが素敵です。新たな知見がまたひとつ…。
  • STYLE: タイトル通り、聴講者各々の「スタイルの違い」強く実感しました。違いを理解しつつ、受け入れて進んでいこうと思いました!圧巻のツアーファイナルでした。
  • 30歳を迎えたRubyの魅力と僕たちの今、そしてこれから: RubyRailsだけでなく、いろんな周辺世界を見つめながら活動されてきたからこその視点のお話でした。自分がまだ北陸にいたころと変わらぬwtnabeさん節、堪能させていただきました。「やってみよう!失敗しよう!笑おう!」、勇気づけられました!

楽しかったです!感謝!

自分はまあまあ出不精なので、実はなかなか関東以外の地域rbに行けていません。しかし今回なんと故郷方面、これは行くしかあるまい、ならば憧れのCFPも出したい出すぞぉ、エイエイオウ。の心持ちでトライしたところ、なんと発表の機会までいただくことができ、思い出深い1日になりました。

引き続き、たのしいRubyの使い方を研究していこうと思います💎

開催してくださった北陸rbのみなさま、参加してくださったみなさま、どうもありがとうございました!

おまけ・ふるさとはいいぞ

東京に出てきちゃってますが、地元大好きなので、翌日は満喫して帰りました。

8番らーめんの「唐麺」
東京に8番は無いので1回の帰省につき2回以上は8番に来店しないと満足できない。なんなら季節限定の酸辣湯麺を食べ損ねたので満足していない。

尾山神社の「神門」
尾山神社(の門の写真)。前田利家公とお松の方を祀っている 。初詣のときはハチャメチャに混むけど普通の土日はゆっくり見れる。近隣の小学生の写生大会のテーマにされがち。

池にかかった橋の様子
尾山神社境内にある神苑。昔こんなんやったっけ…?いいがになった気がする。

落ちた紅葉が溜まった池
神苑・別アングル

日本庭園を望む風景
尾山神社の裏手から鼠多門橋を渡ると玉泉院丸庭園に出られる。コロナ禍後に帰ってきたときにイイ庭園が出来ててビックリした。(2015年完成)

建物の上に設置されている、定規を天に向かって掲げる男のブロンズ像。
兼六園の真弓坂口と向かい合うように建つ21世紀美術館もオススメスポットです。これは常に21美のてっぺんに居る「雲を測る男」。

天井に穴が空いている石造りの部屋
21美内の無料区間にある部屋、ブルー・プラネット・スカイ(通称:タレルの部屋)。本当は雪が積もった日にくると一番面白い。静かで落ち着く。これがチルいというやつなのか。

石畳と土塀の路地。土塀には藁で編んだ覆いがかかっている様子(こも掛け)
香林坊からはバスに乗って近江町市場へ直行する人が多いかもしれないが、西側にちょっと足を伸ばすと長町武家屋敷跡があり、かつての城下町の面影をみることができる。そぞろ歩きが好きな方にオススメ。

発表補足余談「猫の健康を見守りたい!実践 Raspberry Pi + Ruby」

2025/12/06、北陸Ruby会議01にて5分LT「猫の健康を見守りたい!実践 Raspberry Pi + Ruby」を発表させていただきました。今回のテーマは「みんなのRubyの使い方」ということで、Rubyのtech寄りな話でなく、使った成果物にフォーカスした発表とさせていただきました。 聴いてくださったみなさん、ありがとうございました!

https://regional.rubykaigi.org/hokuriku01/

(発表資料URLが後日ここに入ります)

speakerdeck.com

5分に精一杯詰め込みましたが(※早口で喋った結果30秒くらい余ったけど)、時間都合上細かい余談が入らないと判断し、ブログ記事に逃しました。 超ド級の初心者がIoTをやろうとして困ったことの備忘録として記します! ご笑覧いただけますと幸いです。

これは発表スライド内のBESTオモシロ&&キュート画像・猫の後頭部

買ったはいいがラズパイの電源が無い

一念発起した際に、以下のアイテムを購入しました。

  • Raspberry Pi Zero 2 W
  • NFCタグ(10枚入り)
  • micro USB - USB A のアダプタ
  • USBカードリーダー

いざ届いて Raspberry Pi Zero 2 W に繋ごうと思った時、電源を供給する microB のアダプターが無いことに気付きました。改めて振り返ると、初心者うっかりでございました。

USBのリーダーモジュールは未対応

すでに上記の買い物リストでお察しですが、最初はUSBのカードリーダーを購入しまして、ラズパイに接続→動かない・なぜならWindowsとかMac向けなので…、ということがありました。そもそもリーダーとして何を購入するかというのがド素人としては第一関門でした。選択肢として、今回発表に使用した PN532 とは別に RC522 というモジュールもありましたが、ChatGPT曰く猫首輪につけるタグとの相性としてPN532が良い、というアドバイスに従って再購入をしました。

このラズパイにはピンが無い

さて PN532 が届いたことで意気揚々と繋ごうと思った段で、今度はラズパイにピンが無いことに気づきました。

  • Raspberry Pi Zero 2 W → GPIOピンヘッダーが無い(最初に買ったやつ)
  • Raspberry Pi Zero 2 WH → GPIOピンヘッダーがある

Wireless の W、そして Header の H らしいですね、なるほどな。 ピンヘッダー単独で売ってたのでそれを買いつつ、はんだ付けの過程で壊したらどうしようという気持ちがあり、おとなしく WH のほうを買い直したりしました。(なので今、家に遊ばせてるラズパイがもう1台あるんですよね。ピンのハンダ付けは必要だけど…さてどうしようかな…。)

ラズパイ <-> PN532 の接続

線を繋ぐところも分からなかったので、ChatGPTに画像を出してもらったりしたのですが、まるきり嘘の画像を出してきたので配線にはちょっと難儀しました。Webで改めてピン配置図を探し、接続しました。

  • ( ラズパイ ←→ PN532 )
  • 1 (3.3v) ←→ VCC ※5v(2番)のほうがいいのかも?(未検証)
  • 3 (GPIO 2) ←→ SDA
  • 5 (GPIO 3) ←→ SCL
  • 6 (GND) ←→ GND

また、PN532上のスイッチは「1」のみON ( I²C モード ) としています。スイッチはめちゃくちゃ小さいので、ピンセットでカリカリして動かしました。

Raspberry Pi Zero 2 WH と PN532 が接続されている様子
配線の様子

大きく接写したPN532と、サイズ比較用の1円玉
この小さいスイッチを I2Cモード にする必要がある

買ったはいいがタグが使えない(周波数)

色々買い足す時に、タグも急ぎ2〜3種類ゲットしたのですが、いざ試す時になって使用不可のタグがあることに気付きました。 リーダーが出す周波数に合うタグでないと読み取れないためです。(よく考えてみると当たり前…。)

Amazonで「RFID タグ」のようなキーワードで出てくるタグでは、次のようなものが見られます。

  • 125kHz, 134kHz → LF帯 ( Low Frequency: 低周波 ) → 猫の登録に使われるマイクロチップはこれらしい
  • 13.56MHz → HF帯 ( High Frequency: 高周波 ) → 交通系マイナンバーカードなど。 ※PN532にはこれ。
  • 860〜960MHz → UHF帯 ( Ultra High Frequency: 超高周波 ) → 倉庫とかで使われてるタイプ

何も分からず適当に買ってしまったタグが 125kHz のもので「わ〜なんでや動かん」と困っていた時がありました。勉強になった。

必要なライブラリとか環境構築

備忘録ですがこんな感じでした。※要らないものも入れてたりするかも…。

$ sudo raspi-config
# → Interface Options → I2C → Enable

$ sudo reboot
$ sudo apt-get install -y i2c-tools
$ sudo apt install libnfc-bin
$ vi /etc/nfc/libnfc.conf
device.connstring = "pn532_i2c:/dev/i2c-1"

$ sudo apt-get install -y libusb-dev
$ wget https://github.com/nfc-tools/libnfc/releases/download/libnfc-1.8.0/libnfc-1.8.0.tar.bz2

$ tar -xf libnfc-1.8.0.tar.bz2
$ cd libnfc-1.8.0
$ ./configure --prefix=/usr --sysconfdir=/etc
… 
$ make
…

#  ※ruby-nfc > ffi が、C拡張のコードを含むので、ruby3.1-dev が必要。
$ sudo apt install -y ruby3.1-dev build-essential libffi-dev libnfc-dev pkg-config

$ sudo apt install -y libfreefare0 libfreefare-dev
$ sudo ldconfig   # 念のためライブラリキャッシュ更新

$ sudo gem install ffi --no-document
$ sudo gem install nfc --no-document

読み取り距離の対処

読み取り精度の工夫が一番難しかったです。

(1) コンデンサをつける

コンデンサをつけ、電圧の変動を防ぐと安定するという記事を見かけ、つけてみました。 47μFの電解コンデンサと、0.1uFのセラミックコンデンサをハンダづけしました。

コンデンサをはんだ付けした後のPN532のウラ・オモテ
はんだ付けの苦労の跡がおわかりいただけるだろうか

発表でMAX3cmとお伝えしましたが、コンデンサをつけた上でのMAXなので、つけない場合はもうちょっと読み取り距離は短いかもです。(つける前の動作をもっと確認しておけばよかった…。)

コンデンサはネットで買おうとすると100本単位とかのレベルで注文になってしまうので、秋葉原千石電商でお買い物しました。 47μF * 3個、0.1uF * 3個 で合計135円税込。安い…! 一桁数レベルのコンデンサはインターネットで買うのは良くないなと学びました。

(2) ひたすら首輪にお裁縫

発表準備の内容としては、ひたすらタグを縫い付けるためのお裁縫をしていた記憶が多いです。タグは真ん中に配線のないエリアがあるので、そこに針を刺し、チクチク縫います。すあまの首輪はCatlogのシュシュ生地を使っているので、縫い付けやすいのですが、サラさんの首輪がフェルト製で硬いので縫い付けが難しかったです。また塗ってるとタグのシートが裂けてしまい、破損して読み取れなくなるということもありました。もう一工夫、なにかできないものだろうか…。

シール上のNFCタグを猫の首輪の内側に縫い付けている様子
ひとつ縫っては猫の為…。

裏側に6枚のNFCタグが縫い付けられた猫首輪
サラさん用の首輪はオモリが無く、首すじカイカイの動きですぐ回転できるのでほぼ全周取り付け

白猫のバストアップ写真。迷子札カプセルとCatlogをつけているのがわかる。
すあま(白猫)は迷子札カプセルとCatlogを装着させてるので、重みで首輪位置が固定されている。ので、PN532設置方向にのみタグをつけている。

(3) 猫たちの姿勢を観察

読み取り距離MAX3cmの範囲で、2匹の猫を検知可能にするというのも難易度が高かったです。 観察の結果、すあま(白猫)のほうは頭を天井に寄せ気味スタイルで出てくるのに対し、

すあま出現シーン

サラさん(キジトラ)の方は頭を低めに下げつつ出てくるのです。

サラさん出現シーン

最終的に、出入り口のエリアの上・端に制限を設けることで、両猫共に無理やりモジュールのほうへ寄ってもらう形にしました。 この工夫後、さらに読み取り成功確率がUPしました。

自動トイレ出入り口のサイズを段ボールを貼り付けて制限している様子
苦肉の策(物理)

PN532と壁面の間に、紙でつくったバネを挟んでちょっと浮かせて距離を稼ぐ、など。

読み取り距離の対処(失敗) デカいPN532を海外から取り寄せたけどダメだった話

読み取り距離を上げるためにChatGPTと色々とやりとりする中で「検知モジュールがよりデカければ良い」という発想がありました。実は elechouse から PN532 の"External Antenna" があるバージョンが出ています。

https://www.elechouse.com/product/pn532-nfc-rfid-module-w-external-antenna-updated-version/

これを発見したとき、すでに北陸Ruby会議01のLTに採択いただいていたので、やれる努力はすべてやる、の気持ちでポチーッ。滅多に無い海外からのお取り寄せ・送料込み $44.70 (約7000円) でゲット。 11月中旬に無事届きました。

これがPN532 の w/ External Antenna!

読み取り距離の改善に大期待したのも束の間、テストの結果、読み取り可能距離は 2.3cm でした。既存のPN532(コンデンサ付き)のほうが成績が良いです。冷や汗を感じながら、コンデンサの有無のせいでは…と思い、はんだ付け後に再トライしましたが、結果は 2.6〜2.9cm までにとどまりました。結局、元々使ってたノーマルなPN532の方が良い、と判断してお蔵入りとなりました。苦い出費…。良いのだ、トライが大事だから…。 ( 今思うと 3.3v 供給してたからか? 5vにして再検証しても、いいかもしれないな…。 )

Q: そもそも自動トイレで区別つくのでは?

今回入り口にPN532を設置した猫トイレは、PetSnowyという自動トイレです。これにも猫の体重測定の機能があったりしますが、今回の主要利用を想定した2猫、すあま & サラさん の体重差が僅差(200gくらい)でして、頻繁に誤判定してしまうという状況があり、別の手段を探したという経緯がありました。

ありがとうございました!

ふとした思いつきでしたが、故郷での発表機会をいただいたこともあり、一通りの実現を挫けずやりきることができました。実際に、白猫のトイレ事情のチェックに役立っています。Sinatraに表示させる情報にまだ工夫の余地があったり、首輪のタグが壊れて検知できなくなったりする場合もあったりするので、引き続き日々活用しつつ改善を回していきたいです。ありがとうございました!

書き散らしコードはこちら: https://github.com/betachelsea/cat-sensor

ChatGPTに描いてもらったけど、あまりスライドで出番のなかったアイコン画像↓

白猫・キジトラ・三毛のデフォルメ画像

RubyWorld Conference 2025 備忘録

2025/11/6-7、島根県松江市で開催された「RubyWorld Conference 2025」に参加しました!

2025.rubyworld-conf.org

2回目の参加でした。キャリーケースを引いて行くタイプの土地に複数回来訪するということをあんまりしない人生を送ってきたので、「ここ知ってるぞ」という感覚を持ちながら街を歩くことが新鮮でした。今年もRubyの聖地・松江でRubyに関する発表をたくさん聞けてとても楽しかったです。ありがとうございました!

セッション備忘録(自分用)

色々な学びをいただいてきました、ありがとうございます! いっぱい書いてると無限に終わらないので手短に…。

  • スモウルビープログラミング甲子園 × WEB
    • 学校で使えるようにWEBブラウザ版にするという決断とそれをRubyでやりきれる状況が整っているというのが素晴らしいと感じました。ゲーム好きなのでこういう話題は楽しいし憧れます。
  • Sanarei: Offline Web Browsing with Ruby
    • フィーチャーフォンからITサービスを使う為にUSSDという手段があるということを初めて知りました。世界に目を向けると銀行を持っていない人インターネットに接続できない人が想定以上に多くいることに驚きがありました。Sanarei の語源も素敵です。( https://sanarei.com/ )
  • スケールする組織をモジュラーモノリスで制する
    • 継続的な改善の可否とチーム編成のつながり、意識できていなかったので良い気付きが得られました。またビジネスサイドとの納得を得る為に定量的なメリットを提示するというのは必要なことなので、CIの数でそれを証明できるというのはTIPSとして将来のために覚えておきたいです。
  • DXを加速させる“Ruby人材育成の鍵” ― 新卒9割超の開発組織を支える、育成ノウハウの裏側を徹底解説
    • 自分もFBCメンターの活動をやっているということもあり、1行を説明するための裏側の知識がたくさん必要ということに大きく同意します。1対1で9割超を教育というのはなかなか教育する側がハードなはずで、どうやって教育時間を捻出したのかというのは結構気になりました。一度履修した人がメンターに回るのかな?
  • 事業継続マネジメントを支えるRuby
    • 開発チームに憧れてカスタマーサポートから開発畑へ、そして今たのしそうに活動内容を語っておられる姿がとても眩しかったです。やりたいことを見つけて実際に取り組まれているというのは素敵だなぁ。「年に1〜2回開発者がいなくなる」確かにそう。
  • RubyとGoでゼロから作る証券システム:実際に開発してみて良かった点と辛かった点、そこから得た学び
    • Bloomo証券アプリの役割について、お金との接点でRubyとGoで分担しているとのこと、説明を聞くとかなり合理的で納得感がありました。こうして作っているんだよというお話を聞くとシンプルにいち利用者として使ってみたくなりました。
  • Rubyコミュニティの30年
    • 歴史を振り返るとともに、直近にRubyistが気になってソワソワしていた事柄がしっかり盛り込まれていた基調講演だったと思いました。語られた物事に対して中庸な落とし所が提示されたように感じ、これが話に聞く “優しい終身の独裁者” ということなのかなとしみじみしました。
  • PicoRubyをはじめるグッドタイミング
    • 自分も実感として最近組み込み系でRubyを使おうという試みの発表を目にする機会が増えているなぁと感じておりました。羽角さんとまつもとさんのお二人が並んで壇上に立っている様子が楽しそうなのがとても印象的でした。Lチカは情操教育!
  • PicoRuby で拓く電子工作の世界
    • 「作ってみたい」から「作った」でラジコン、キーボード、FMラジオと色んなものにチャレンジされていて凄い! 同人誌も出ていてさらに凄い! 羽角さんの発表でも感じましたが、電子工作系はトライしてるひとがとにかく楽しそうです。盛り上がりを感じる要因のひとつなのでは。
  • RubyでLLMアプリケーション開発を支える基礎技術
    • 日進月歩の凄まじいLLM界隈、利用するばかりで作成のほうの調べが全然できていなかったので、RAG・MCPといった用語も初耳でした。テンポのすごい発表の中から拾ったキーワードを少し探っただけでも、LLMを活用した開発の黎明期が来ている様子を感じとれました。ビビってないでちょっと触りはじめてみないとな…。
  • 本日のおすすめテストの作り方- 忍者式テストのテスト抽出アルゴリズム
    • 毎回テストを全部回さなくていい、ある期間で全部回れば良い…というのは言われてみれば確かにそうですね。新規を優先する・テスト頻度の設定が可能などの工夫も20年間運用され続けている秘訣なのかなと思いました。
  • コードのように台湾語を解析:Rubyによる白話字ローマ字の3段階解析法
    • よく考えるとParserはソースコード構文解析をするものなので、つまり構文があるものは解析できるわけで…。ゆえに、台湾語のParserがあっても不思議ではなくむしろ自然に思えました。Conferenceでの刺激が実務に活かされている実例に感動しました。
  • メタプログラミングRuby問題集の活用
    • 実地検証された問題集がこうしてPublicに公開されているということに感謝です。仕様の文章を元にコードを書くのが謎解きっぽくてかなり面白い!基調講演でも ”バグは天然のパズル” という話があったし、プログラマーって謎解きが好きなニンゲンの集まりなのでしょうか。
  • Tangible Code:Rubyで「見て・触れて・変えてわかる」コードのしくみ
    • Rubyで素敵な作品をたくさん制作されているchobishibaさんの発表!ちょうど卒業制作されている頃の写真をx.comにて見かけて気になっていたので、詳しい解説付きで伺えて・しかもWeb版に実際に触れることができて感激しました。インタラクティブなアート、たのしい〜!

そしてNext

Rubyと観光を満喫して帰ってきましたが、来月「北陸Ruby会議01」にて5分の発表枠をいただいておりまして、それの準備がまだ完了しておりません。この1ヶ月は発表準備に注力します。がんばるぞ…!!!しまった、まだ北陸新幹線の席をとれていない。

おまけ・観光メモ2025

プライベートの都合で運転免許証を今年夏からリブートしまして、運転パワーを手に入れたので人生初・旅先でレンタカーを借りての移動にチャレンジしました。他の方をお誘いするか迷いましたが、まだ初心者マークを取る自信も無い状態で大切なRubyistの命を預かることはできないと考え、今回は一人旅を満喫しました。案の定迷いまくって時間を食い、また行きたいところが多すぎてどこも急ぎ足の観光となりましたが、ドライブ練習にもなったしヨシ。楽しかったです!

  • 高速道路
    • 首都圏の2〜4車線くらいある道路でここしばらくは運転していたので、久しぶりの1車線逃げ場なしの状況に手汗がすごかった。いつもの戦法「こちとら初心者なので!追い越してってください!」が通用しないので頑張って速度出した。2回くらいゆずり車線が出現して少し助かった。
  • 神存月の出雲大社
    • 出雲大社を目的地に設定するとめちゃ渋滞にハマるので、最初から麓(?)の駐車場を目的地にするべきだった。八重垣写真館臨時駐車場前の道路がすさまじく詰まっていた。混雑を抜けた後、アップルパーク出雲大社前第1の駐車場がなんと3枠まとめて空いてたので、ド真ん中に停めさせていただく初心者ムーブをキメた。今回の旅はとにかく駐車運がめちゃくちゃよかった…。ありがとう神在月
    • 去年、2礼・4拍手・1礼のお作法を習っておいてよかった!
    • 交通安全のアイテムはお守りスタイルでなく木札として売っていた。もちろん買った。
    • 神社前のスタバで限定IZUMOマグの白・緑を購入。素敵なめのう柄。赤は売り切れ。店員さん曰く神在月は売り切れになりやすいらしい。来年また迎えにくるぞの気持ち。
  • ベタ踏み坂
    • 積極的に行くつもりはなかったが、出雲大社水木しげるロードのルートとしてナビが「通れ」とおっしゃるので行った。目視で見るとすごいけど、実際に通ったら思ったより緩やかだった。都内のコストコららぽーとの立体駐車場を登るほうがつらい。
  • 水木しげるロード
    • たくさんの妖怪たちの銅像があちこちに!水木しげる夫妻像がロードのちょうど真ん中あたりにあってステキだった。偶然ご旅行中のご夫妻に写真を頼まれ、快諾したは良いがスマホでなく立派な一眼レフを持たされて緊張。上手く撮れただろうか…。
    • 幼馴染の友人から「ゲ謎の克典社長をすさまじく推してる店舗があるから見てくるように」とのミッションを拝命していたのでチェック。確かにすごい量の克典氏のぬいぐるみが店舗の一角を占有していた。すごいものを見た…。
  • お菓子の壽城
    • 滑り込みで来店し、会社と自宅用にお土産をゲット! 昨年買った「しじみのチーズサンド」、本当に美味しくて、今年もリピートしました。お酒のつまみの味がします。
  • 皆生温泉
    • 折角なのでラグジュアリーなところで一泊と思い宿をとったところ、海が想定より近いオシャレ立地で驚愕。さざなみの音が聞こえる宿での寝泊まり、良い体験でした…。
  • 唐崎商店(味噌らーめん専門店)
    • 宿泊先手配でもお世話になったこたつさん(感謝!)に、お腹すいたとつぶやいていたらオススメのお店をサジェストいただきました(感謝感謝!!)
    • 肉味噌らーめんを頼んでから「いやまてよこの店の推しトッピングはどうやら味噌漬けチャーシューだぞ」ということに後で気づきオプション追加。柔らかホロホロで最高でした。チャーシュー麺でも良かったな。
  • すなば珈琲
    • 米子空港内の店舗で最後の一服。ご当地珈琲店とのこと。ロゴが可愛い。Tシャツやトートバッグに誘惑されたが、もはや出費がまあまあ出てた+荷物を預けた後だったのでぐっと耐えた。ラクダのクッキーがカワイくて美味しかった!

飛行機の窓からの写真、ちょうど写真中央よりやや上に写っている橋が「ベタ踏み坂」のはず。 いや〜、たのしかった〜!

Kaigi on Rails 2025 運営参加備忘録

2025/09/26〜27 に開催された Kaigi on Rails 2025 に運営側として参加していました。ご来場されたみなさま、ありがとうございました!

https://kaigionrails.org/2025/

Kaigi on Rails 2025 の会場に設置されたパネルボードの写真

何してた

関係者の宿泊先確保、カスタムスポンサー、受付、同時通訳レシーバー配布対応を主に担当していました。 運営側にjoinして2年目ということで、2024年度よりも色々と可動域を増やした年になりました。 同時通訳レシーバー配布対応については、RubyKaigi 2025での対応経験が活きました。 ちなみに、最後に呼びかけさせていただいていたレシーバー返却については、おかげさまで全機返却を確認できました。ありがとうございました!

同時通訳レシーバーの機械と貸出状況管理付箋の写真
EN→JAの同時通訳レシーバーを配布していました。KoRのレシーバー配布は2025が初の試み。

セッションメモ

例年の如く一部となりますが、聴講できてよかったです!

  • そのpreloadは必要?──見過ごされたpreloadが技術的負債として爆発した日 (Day1 14:10〜14:25)
    • "N+1はpreloadで解決"というのは推奨されがちですが、落とし穴は当然あるよという話で、気が引き締まりました。見直し重要…!
  • Railsアプリケーション開発者のためのブックガイド (Day1 14:35〜15:05)
    • 自分が愛読している本もありましたが、圧倒的多数の未読本の紹介を聴き、知識の泉が広く深いことを改めて感じました。「脳に収まるコードの書き方」気になる。

なんでDay2の聴講メモが無いんだろう、と思ったら同通レシーバー対応でソワソワしてて聴きにいけてなかったようです…。発表者の方がすでに資料をたくさんあげてくださっており、それをつまみ読みさせていただいています…! 毎年いい資料が発生していて、やっぱりこういうカンファレンスあってよかったなと思う次第です。感謝。

そして来年へ

Closingで発表がありましたが、来年はベルサール渋谷ガーデンにて、2026/10/16-17 の開催です。2025もまだ締まってないのですが*1、すでに動き出していますので、準備をすすめていきたいです。また、来年もうちょっと身のあるCFPも出したい*2と思っており、引き続きやっていきの気持ちです。よろしくお願いします〜 🙏

*1:会計系の対応がございます。やりとりさせていただいているみなさま、どうぞよろしくお願いいたします…! 🙇

*2:今年は出すところまでいきましたが内容が弱かったので反省の極み。また1年、学びを進めていかねば。

Rubyistsなにかやる合宿・2025秋 参加記録

2025/09/06-07 にかけて、那須塩原の温泉宿で実施された「Rubyistsなにかやる合宿」に参加してきました。 ご一緒いただいたみなさま、ありがとうございました! 🙌

なにをした

自分は以下のような結果になりました。

  • DONE

    • IPA高度試験勉強・60問 + Anki単語集の作成
    • RubyWorld Conference 2025 へ行くためのチケット・飛行機を予約
    • FBCメンター業務(通常)
    • Kaigi on Rails スタッフ業をチラッと
    • ラズパイとか購入
  • DOING

    • (このブログを書くこと!)
  • TODO ※持ち帰り!

    • IPA高度試験午前1・2の勉強 ※テキストは500問ある
    • 購入したラズパイを活用
    • FBCメンター業務(+α)

散らかってる教科書、ノート、PC
筆算のやり方を思い出すところから…。

温泉宿で合宿のUX

美味しいご飯が出てくる・ノー家事でOK・風呂でリフレッシュできる、という点で温泉宿は作業環境としてバッチリでした。また、通常の目的(旅行)で那須塩原で温泉宿に来ていた場合「部屋にずっと篭ってPCカタカタしてるなんて勿体無い!どこか出かけよう!」という意見のほうが一般的です。しかし、今回は何かしらのタスクを抱えているメンバーが集まっており、それを解消するという共通の目的意識があったため、部屋内で過ごすメンバーが殆どでした。それも作業進捗がよかった要因のひとつかなと感じています。 部屋でポモドーロ音楽も流しており、集中のリズムが掴みやすかったです。また休憩のタイミングがあることで、その隙をみて他メンバーに質問などできたのも助かりました。

色々書きましたが、とりあえずサイコーでした!

何かを完了するためのノウハウ

今回は上記のように、各自がタスクを持ち込み、それらをTODO / DOING / DONE のカンバン形式で管理しました。 クローゼットを活用したカンバンがその場で即成され、さながら何かのアジトのようでした。

付箋が大量に貼られたクローゼット扉
そんなつもりで設置されている家具ではないが、ちょうど良すぎた

久しぶりに物理カンバンでタスク管理しましたが、手で付箋を"DONE"に持っていく体験が自分としてはとても良かったです。 自室にもあるといいなぁと、早速ホワイトボードと付箋を導入してみました。 持ち帰りTODOもあるので、これで頑張って消化していきたいです!

付箋の貼られたホワイトボードを見る白猫
自室に設営されたホワイトボードと監査猫

おまけ・ネコチャン

今回宿泊した赤沢温泉旅館 ですが、オーナーやスタッフのみなさんに大変親切にしていただき、なんと猫さんも居られて、大変癒されました。事前にこの旅館ね、という知らせは受けていましたが、忙しさにかまけて1mmも調べずに向かったので受付でお出迎えニャーンを受けた際は、猫好きとして嬉しい驚きでした。大変にお客慣れされており、自分が朝ラジオ体操に館外へちょっと出向こうとした際には、ちょんとドア前に座っておられて、人間の開け閉めを待機していました。まんまとドアマンとして活用されましたが、本望です。

akasawaonsen.com

看板にゃんこ1

看板にゃんこ2

看板にゃんこ3

重たいガラス扉の前で座っている猫
こうしていればニンゲンが開けてくれることを知っている(当然そうする)

おまけ・グルメ

お宿ごはん

朝・夜とお宿にて豪華なごはんが出ました。地元の素材が使われており大変おいしくて満腹になりました!旅館のご飯を食べる時は胃袋を大きくしていかないといけない…。

夜ご飯の膳
夜〜!

朝ご飯の膳
朝〜!

ピリ辛ソースのかかった魚の揚げ物
お腹いっぱいですね〜なんて会話の直後に出てきた夜膳の一皿。全部美味しかったです!

スープ入り焼きそば

"部屋内で過ごすメンバーが殆ど" だったのですが、2日目昼に小腹が空いて部屋を飛び出し、名物の「スープ入り焼きそば」のお店に滑り込み入店したのは自分です。(多くのメンバーは朝ご飯でお腹がいっぱいだったので夜に備えてじっくり作業されていたのであった。あのぶるさん、暑い中ご同行いただきありがとうございました…!) 閉店間際でしたが「こばや食堂」には待機列ができており人気具合が伺えました。シンプルな醤油スープに焼きそばがINされており、味もその通りという具合ですが、時間が経つと焼きそばの味がスープに溶けてきて面白かったです。また卓上の唐辛子入りお酢をひとまわしすることでコクとサッパリ感が出て美味しく完食できました。

こばや食堂のスープ入り焼きそば(並)
これが「スープ入り焼きそば」だ!

ひつじ珈琲

オシャレなコーヒー屋さんに寄って軽食とコーヒーを楽しみました。コーヒーは作業時の眠気覚まし用にインスタントを淹れては1杯飲み干せない…というスタンスでおりましたが、美味しいお店のものであれば、なみなみと注がれたものを干せるという発見がありました。

ひつじ珈琲西那須野店 | ひつじ珈琲公式

ひつじ珈琲店舗・オシャレな外観
ひつじ珈琲西那須野店

チャバタサンド(生ハムチーズ)、コーヒー、フィナンシェ、カード
選んだコーヒーの豆・ブレンドに関する説明の書かれたカードも貰える。通いたい…。

バターのいとこ

那須の新銘菓として「バターのいとこ」なるものがあるらしいとのことで、本店に行ったところ大盛況のお店でした。吸い込まれるがままに列に並び、自宅用・会社用と味も知らずに買い求めました。いざ周りにも食べてみてもらったところ、大変好評でした。見た目からもっとサクサクを想像していたのですが、ものすごく薄く・柔らかく、上品なミルクの甘さとシャリシャリした食感(粗糖らしい)が「もっと食べたいな〜」と思わせる、そんなお菓子でした。これはまた見かけたら買いそう…。

PCの前に「バターのいとこ」とコーヒーの入ったマグカップが置いてある
合宿1週間後、バターのいとこ / ひつじ珈琲のドリップコーヒー / ひつじ珈琲で買ったマグカップ で、自宅那須体験をしながらこのブログ記事を書いている。

引き続き "なにかやる" !

大変楽しかった「Rubyistsなにかやる合宿」2025秋の開催でした。はかどらないな〜、と思ったときは、この2泊3日で得たノウハウを思い出して取り組もうと思います。みなさんありがとうございました!

TRICK 2025 出しました記録

TRICK 2025 へ提出したソースコードが “Most Natural”『最も自然で賞』をいただきました。お祝いくださったみなさま、本当にありがとうございました!「あとでブログ書きます!」と言って回ったので、なんとか書きました。

また次の機会もぜひオモシロコードをぜひ書きたいなという気持ちはあるのですが、数年後ともなると自分の脳細胞は高確率で色んなことを失念している気がするので、未来の自分のためにも濃いスナップショットをとっておこう…と思ったらめちゃ長い記事になりました。ご笑覧いただけますと幸いです。

TRICK とは?

Transcendental Ruby Imbroglio Contest for rubyKaigi ( 超絶技巧 Ruby 意味不明コンテスト in RubyKaigi )*1のこと。2013年以降、数年に一度のペースで不定期に開催されており、2025年は第5回にあたる。

何を作った?

くるくる回転するお花を描画するRubyプログラムを作りました。

実行結果のスクリーンショット x 3枚
スクショですがこんな感じ

gifを投稿しようとしたら失敗した…ご興味ある方は、ぜひお手元で動かしてみてください!

https://github.com/betachelsea/trick2025/blob/main/04_entry.rb

(自分のは)むずかしくないぞ!

TRICKの作品群は ”超絶技巧”・”意味不明” の言葉通りに「わーっ、なんもわからん!w」となりがちですが、お花のコレはシンプルにそのままRubyなので、今回挙がったソースコードのなかで最もわかりやすいのではと思っております。花の形まで成形してしまったものを一見すると、一瞬「わーっ」となるかもしれませんが、成形前のコードは「読み慣れたやつ」という感想をいただけるのではと思っています。

変数名とかをわかりやすい名付けをしているコードはこちら(ただしそんなにリファクタリングはしていないです…お見逃しください!)

https://github.com/betachelsea/trick2025/blob/main/01_flower_description.rb

花っぽい線をつくる数式

花っぽい線は「2次ベジェ曲線」を使って作成しています。2次ベジェ曲線とは、3つの制御点を定めることで滑らかな曲線を描く計算手法です。この数式を使うと、次のような線を描くことができます。

2次ベジェ曲線の説明画像
絵を描くソフトのツールなどで覚えのある方もいるかなと

これを2本描くと花びら1枚っぽくなります。

2次ベジェ曲線で描かれた2本の線分
花びらっぽい気がしませんか?

この線を花びらN枚分だけ座標を回転させていくと、お花っぽくなります。

花びらをもした2本の2次ベジェ曲線を90度回転させた想定の図
例えば90度回転させるとこう。これをたくさん重ねる。

描画する

2次ベジェ曲線の数式で求めた計算結果を元に、xy平面に見立てた配列に文字を入れることで描画していきます。

描画は、遠藤さんの著作「あなたの知らない超絶技巧プログラミングの世界」(以下、”超絶技巧本”) の 8-1章(p.218)で説明されている「マーチングスクエア法」を読んで実装しました。この手法を読んで、自分はこれを「描画される予定の線をイイ感じの文字に置き換える」ものだと解釈し、次のように定義しました。この辺をどう定義・置換していくのかは、実装者の自由が効くところだなと感じました。

  • 図形のど真ん中 → 「*」
  • 線分の傾きが完全に垂直 → 「!」
  • y軸のマス内0〜30%の位置に点がある → 「`」
  • y軸のマス内80〜100%の位置に点がある → 「,」 ※
  • 線分の傾きの値が
    • 0.0〜1.0未満 → 「*」 (水平に近い)
    • 1.0以上〜2.0未満 → 「;」 (ナナメに近い)
    • 2.0以上〜 → 「l」 (垂直に近い)

※このあたり、判定処理をミスっており意図しない処理(バグ)になっていることに今気づきました…なんと…反省…。バグってなければ線がもっと滑らかに描画できてたかもです。他の箇所も、みれば見るほどまだ改善の余地があったのではないかと思ってしまう…。くーっ!

圧縮して難読化・花の形に成形

花の形へのコードの成形自体は、超絶技巧本 2-1章(p.108) を元にカスタムして作成した成形用コードを使いました。

https://github.com/betachelsea/trick2025/blob/main/03_asciiart.rb

ただし、成形すると全ての空白部分が失われるため、初期のコードを成形にかけるとあっさり壊れました。

例えば、こんな感じのコードがあるとして、

x = 0
if x.zero?
  y = 1
end
z = 2

これを単純に圧縮すると

x=0ifx.zero?y=1endz=2

となり、さっぱり動きません。なので、適宜 ; で区切ってあげる必要がありました。

x=0;if(x.zero?);y=1;end;z=2;

提出後は、末尾に普段つけない ; をつけてしまう後遺症が数日残りました。

また、そもそも文字数が多すぎてTRICKの応募要件(2048文字以内)を満たせていなかったため、提出直前はコードの短縮とバグが出ないようにする作業に追われました。結果、3145文字→1660文字への圧縮と、成形しても壊れないソースコードにすることに成功しました。ソースコードの劇的ビフォー・アフターは下記です。

イースターエッグ(隠し要素)

特に隠してはいないのですが、TRICK過去作を拝見してマネしたいこととして「意味ありげな文字列をソースコードに埋める」がありました。今回2箇所埋めました。 (埋めた結果上述のバグを仕込んでしまったので、提出ギリギリに仕様変更はやっぱり良くない。)

ソースコードに仕込んだ「TRICK2025」「RubyKaigi@Matsuyama!」の文字

よく聞かれたこと

Q: どうして作ろうと思ったのか

面白そうだと思ったからです! …の一言だけだとあんまりにもあっさりなので、挫折しなかった経緯を記録しておきます。サマリーとしては2回くらい心が折れてからの3度目の正直での提出でした。

  • 昨年春、RubyKaigi 2024 (那覇) でTRICK実施の告知を見て、一念発起して超絶技巧本を購入しました。しかし、内容の難しさに心が折れました(1回目)。

  • 冬、島根の RubyWorld Conference 2024 に参加しました。朝ご飯をご一緒させていただいた喫茶店で、 makicamel さんに「出しなよ!」と背中を押していただいたのを機に、改めて超絶技巧本を元にQuineの勉強を始めました。が、純粋なQuine(自身のソースコードと完全に同じ文字列を出力するもの)の難易度に圧倒されて心が折れました(2回目)。

  • 2025年明けの 東京Ruby会議12 、懇親会で makicamel さんに「Quineが難しくって…どうにもこうにもならず…」と無念敗退のご報告をしようとしたところ、「Quineじゃなくてもいいんだよ!」「出しなよ!」と再度激励をいただきました。「なんと!完全純粋なQuineじゃなくていいんだ!」という気付きがあり、トライする勇気に繋がりました。

  • 本格作成中にも心が折れそうになったので、週1ペースで参加させていただいているRails Girls More! 内の競プロ同好会オンラインもくもく会( thatblue_plus さん主催 )で進捗報告をすることで、完走までのモチベ維持のパワーとさせていただきました。ソースコード文字減量の作業の際には、競プロで得た知識が役立ちました。

この場を借りて改めて makicamel さん、thatblue_plus さん、勇気づけてくださった・チャレンジする機会をくださったみなさまに御礼を…。ありがとうございました…!

Q: どうやって思いついたのか

年明け一念発起時点ではまだノーアイデアだったこともあり、過去作品を全部リストアップして拝見するところから改めて始めました。8割くらいは逆立ちしても無理と思いましたが、見ていくなかで、アニメーションが入っている作品に強く惹かれるところがあるなぁという自分の興味を発見しました。

過去作一覧スプレッドシートのスクショ
過去作がどういうものかをチェック。ネタ被りが無いかも知りたかったという個人的な需要もあった。表記内容が完全に自分用です、すみません!🙇

アニメーションする作品のコードを見ても、難読化されている状態だとサッパリ分からなかったため、超絶技巧本に立ち返りました。超絶技巧本の 8-1章「端末でアニメーション」を手習いしているうちに、学生時代にProcessingで花の図形描画をして遊んでいたことを思い出し、提出作品に応用しようと決めました。

しかしながら、まず過去作を触ってみないと昔の思い出のところまで発案がいかなかったので、過去作ちゃんと拝見する、というのが大事だったんだなと改めて思います。

Q: 作成にどれくらいかかったのか

  • 2024年
    • 5月 超絶技巧本を購入 → 読んだけど凄すぎてそっ閉じ
    • 12月 島根でやる気再燃 → Quine難しすぎて再度そっ閉じ
  • 2025年
    • 1/18 東京Ruby会議12でいよいよ尻に火がついた状態の一念発起
    • 2/7 過去作リストアップしてチェックする資料が発生してた
    • 2/12 方針が決まって first commit してた
    • 2/24 実行結果がほぼ完成した祝日月曜深夜、文字量が大幅に規定オーバーしていることに気付き絶望。締切の2/28(金)まで4日間平日しかない&&仕事は普通にあるので「え〜あ〜もう無理〜終わった〜〜〜」と言いながらふて寝
    • 2/25 TRICKリポジトリのREADMEに「実質3/2まで待つ」という旨の更新が入り 、やる気再燃。〜28まで仕事以外の朝晩の時間を遅寝早起きして全投入した結果、大幅に文字数減量に成功。
    • 3/1 夕方まで最終調整、イースターエッグ(とバグ)を仕込んで完成、Submit完了

教科書にサインをもらった!

これまでの経緯を読んでくださった方には自明の通り、今回の取り組みには、遠藤さんの超絶技巧本が必須の教科書でした。RubyKaigi 2025 では本屋さんでサイン会が実施されており(持ち込みで恐縮でしたが)サインいただいてきました。

超絶技巧本に書いていただいたサイン
うおおおおやったああああああああ

なんとその場でQuineを書いていただきました。実行するとそのまま同じ出力が返ってくる、これぞ純粋なQuine。

最初、コメント行をスルーしてしまい、あれれ動かんなぁ…などと悩んでいましたが、よくよく読むと改行後お名前コメント表記の最後の「!」が重要でした。粋…!

eval s=%q!puts"eval s=%q"<<33<<s<<33
#BETAさんへ
#Yusuke Endoh!

# どうやって動いているのか考えてみよう…。

# eval → 文字列として与えられたRubyコードを実行
# %q!STRING! → シングルクォート文字列
#   ┗ 文字列として 「puts"eval s=%q...Endoh!」まで変数sに入る
# 33 → ASCIIコードの「!」を指す
# "文字列"<<"A" → 文字列に対する破壊的連結。この場合"文字列A" となる。
# ゆえに "eval s=%q"<<33<<s<<33 で次のようになる
#    ┗ eval s=%q! ここにsの展開 !
#    ┗ eval s=%q! puts"eval s=%q...Endoh! !
# 一番最後のお名前後の ! で、頭からお尻までのシングルクォート文字列が完成してるので動く

# 超絶技巧本 3-2章(p.121)「サイン入りQuine」参照

いやぁ…これを拝見すると、やっぱりまだまだ学びがあるな…としみじみ思います。正直、教科書たる超絶技巧本の1割ほどしか活用できていません。Quine心折れてたのですが、やっぱり真髄はそこにあるなと感じます。コレが完全無欠に動くという事実にシビれる!もっと読み倒していきたいです。

面白かった〜

会期前に書いていた締め文がありまして、素直な気持ちが現れてるなと思ったので、あえてそのまま掲載します。


無事に提出が間に合ってよかったです。普段仕事では絶対に書かないようなコードを書く楽しさがあるなと思いました。また、普段絶対に出会わないようなバグにぶつかる・それをリファクタするのも楽しかったです。苦労した分、他の作品の凄さもよりしみじみと体感するところでして、数年に1度のTRICKという特別なお祭りに提出できたことを今晴々とした気持ちで嬉しく思っています。(2025/03/08)


ありがとうございました! (2025/04/28)

*1:和訳は2015のREADME.ja.mdより。