PicoRuby とつくるクリスマスツリー

こんにちは。@makicamel です。この記事は mrubyファミリ (組み込み向け軽量Ruby) Advent Calendar 2025 に投稿しようと思っていたけれどもまったく間に合わなかったので年の瀬に書いています。参加したかった。

クリスマスツリーキットを手に入れる

はじまりは 11 月、PicoPicoRuby1 #7 ミートアップで @youchan さんがこんなキットを見つけて言いました。
「これ PicoRuby で動かしてみたら面白そう」
間違いありません。その場で購入しました。

クリスマスツリー回路キット(カラフルなDIYセット)

Amazon.co.jp: 3D LED点滅クリスマスツリー回路キット、7色フラッシュ回路LED 3DクリスマスクリスマスツリーLED DIYモジュールPCBボード 3DクリスマスツリーLED DIYキットはんだ付け練習学習用 (カラフルなDIYセット) : 家電&カメラ

クリスマスツリー基盤。かわいい

クリスマスツリー回路を読む

販売されている基盤はアナログ回路になっているのでこれを読みます。裏表があり、プリントの下に配線が隠れていて読みづらいので、まずはこれを回路図に起こします。

クリスマスツリー回路

部品がたくさんありすぎてよくわかりませんね。
LED (D) は 18 個、抵抗 (R) は 6 個、トランジスタ (Q) とコンデンサ (C) は 3 個ずつで、どうやらみっつのグループにわかれていそうです。ひとつのグループを残して色を変えてみます。

グループ 1 と Q2 の色だけを濃くした回路図

だいぶん読みやすくなりました。
電源に 6 個の LED が並列に接続されており、R2 抵抗を介して Q1 トランジスタのコレクタに入り、電源に戻っていきます。また R1 抵抗を介して Q1 のベースに電圧をかけてもいます。さらに Q1 のコレクタには C1 コンデンサもつながっています。

この回路ではトランジスタはスイッチの役割を果たしています。トランジスタの働きには増幅作用の他にもスイッチングもあります。ベースに一定の電圧をかけることでコレクタ - エミッタが導通します。

動きを見てみましょう。
まず Q1、Q3 のコレクタ - エミッタが導通しており、D1 〜 6、D13 〜 18 の LED が光っている状態と仮定します。すると Q1 のコレクタ電圧は 0V です。つまり C1 の+の電圧も 0V です。コンデンサは+端子と−端子の間で電位差を作ろうとするため、C1 の−端子の電圧があがります。この電圧は Q2 のベース電圧を + にします。
時間が経過し C2 が充電されると Q2 に十分なベース電圧がかかり、Q2 のコレクタ - エミッタが導通して C2 の + 端子の電圧が 0V、- 端子の電圧は -5V になります。すると Q3 のベース電圧が急激にさがり、Q3 のコレクタ - エミッタは導通しなくなり、D13 〜 18 の LED は消灯します。

このようにコンデンサの充放電を利用してトランジスタがスイッチングを行い、時間経過と共に LED が周期的に点灯消灯を繰り返します。
トランジスタとコンデンサの充放電を利用して出力が周期的に変化するこのような発振回路を「非安定マルチバイブレータ」といいます2。Time クラスとか使わなくても自律的に点灯消灯します。めちゃくちゃ格好いいですね!

今回はこの回路の一番格好いい部分を外します。コンデンサを外してベースに Raspberry Pi Pico の GPIO をつなぎます。図では 1 グループだけ置き換えていますが、3 グループ分置き換えます。

コンデンサを外してベースに Raspberry Pi Pico をつなぐ

すると Raspberry Pi Pico から LED を点灯消灯できるようになりました。

PicoRuby とつくるクリスマスツリー

ようやく本編です。

やりたいのは周期的に GPIO を ON / OFF するだけです。決まった周期を繰り返すだけでは面白くありませんね。元のアナログ回路が格好いいのでランダムな周期にします。
PicoRuby には Kernel#rand がないので3 sleep するミリ秒数を返す random 関数を書きます。これは 線形合同法 の式を使います。

あとは GPIO ピンごとに初期化し、300 ミリ秒ごとにループを繰り返し、ループごとにまだ sleep 秒数が残っているかを確認して、終わっていたら ON / OFF を切り替えて新しい sleep 秒数を生成したり、全部の GPIO が OFF になっている時にはひとつの GPIO を ON にしたりするようにするだけです。
loop のミリ秒数やランダム周期のレンジは動かしてみながら調整しました。

gist.github.com

ということで、PicoRuby とクリスマスツリーをつくることができました。

PicoRuby とつくったクリスマスツリー

めちゃくちゃかわいい。
ブザーをつないでクリスマスソングを鳴らすのもよさそうだし、音にあわせて光らせるなどしても楽しそうです。
年々カスタマイズするたのしみができました。


  1. PicoRuby 互助会コミュニティ。月に 1 度オフラインミートアップをやっています。↩
  2. 非安定マルチバイブレータ回路の解説は https://www.youtube.com/watch?v=xjkZtUyIt7I がわかりやすいです↩
  3. picoruby-rng があることに後から気づきました https://github.com/picoruby/picoruby/blob/master/mrbgems/picoruby-rng/README.md↩

東京 Ruby 会議 12 に参加・前夜祭で登壇してきました

2025 年 1 月 17・18 日に行われた東京 Ruby 会議 12 に参加、前夜祭で登壇してきました。

regional.rubykaigi.org

元々プロポーザルを出す予定はなかったのだけど、公式 note で「Ruby と暮らす」がタイトルと知り、ちょうど「地図」について考えていたのでフィットしそうと思って出すことにしました。

「Thinking about a map for Rails applications」というタイトルで、ErdMap という Rails アプリの ER 図をブラウザで可視化するという gem を作ったお話をしました。

github.com

speakerdeck.com

erd、rails-erd を始めとして多くの ER 図の自動生成ツールが存在しますが、すべてのモデルを書き出すため情報量が多すぎ、却って情報が読み取れないという課題があります。モデルを指定して出力することもできますが、モデルを指定するにはモデルを知らなければならず、知りたいものを知っておく必要があります。
ErdMap ではモデルを重要度ごとに並び替え、最初は最も重要な 3 つのモデルのみを表示し、ズームすると次に重要なモデルを追加表示し、さらにズームすると…というようにしました。イメージしたのは Google マップの操作感です。
また概念が関連するひとつらなりのモデルを「コミュニティ」として色分けをしました。単純な association のつながりではなく、「この概念は近しい」というグループ、地図でいうと「市」のまとまりです。

重要度の判定やコミュニティ分割にはネットワーク分析を使っていて、このアルゴリズムの解説と組み込みの方法をご紹介しました。ネットワーク分析面白い。

アイディアは @youchan さんのものです。実は作ると決めた時にはネットワーク分析自体知らず、これを教えてくれたのも @youchan さんで、去年の RubyWorld で松江の川沿いを歩きながらネットワーク分析のことを教えてもらったのが思い出深いです。

懇親会ではフィードバックをたくさん頂いて嬉しかったです。
特に @joker1007 さんから、モデル間の呼び出し、つまり依存関係をパーサーで読み解いてなんらかの形で組み込めないか、と言われて確かにとなりました。あと今は重要度の評価時に関連の方向も見ておらず重み付けは改善の余地がありそうですし、カーディナリティの表現もいまいちなのでもっとよくしていきたいと思っています。

「bundle するだけで使えるんですか?」という質問も頂いたんですが、bundle するだけで使えます(Python3 といくつかの Python パッケージのインストールが必要ではあります)。ぜひ試してみてください。


聴衆としても楽しませて頂きました。

前夜祭では @ohbarye さんの Git scrapingの話になるほど〜となっていました。スクレイピング、まさしく実行環境の用意や定期実行や保存の仕組みが面倒なんですよね。GitHub Actions を使うのは目からウロコでした。

@ydah さんのパケットキャプチャツールの話も最高でしたね。一体どうして 5 分でこれをやる思考になったのかが気になります。

本編は @jhawthorn さんのキーノートが圧巻でした。GitHub でもこういう地道なテクニックの積み重ねが為されているというのは感慨深くもありました。資料が公開されたら早く読み返したい。freno 気になりました。

ぺん さんのお仕事コードの話、ツールとか実装とかに振り回されるのじゃなく、落ち着いて丁寧に整理された結果シンプルになっていてすごいと思いました。

@ryopeko さんの functional なアプローチの話 もよかった。関数合成やカリー化はキメるとめちゃくちゃ気持ちよさそう。Lambda や Proc という関数的なアプローチがイマイチ自分の中に根付いている感覚がないけれどキメられるようになりたい。

東京近辺の地域.rb が一同に集結するのも、東京 Ruby 会議ならではでほんとうによかったですね。実は先から Shonan.rb やりたいと思っていたのですが南神奈川周辺の民で 2 月上旬に 0 回をやることになりました。声をあげてくれたあんずさんに多謝。そして KaigiEffect すごい。


カンファレンスのデザインもすごくかわいく、鶴や年賀をモチーフにしていてスタッフのみなさんから「あけましておめでとうございます」って言ってもらえたり、東京・横浜のビールやおかしを出してもらったりと、東京や季節感がふんだんに盛り込まれていてすごかった。 何よりふだん東京でお見かけしないみんなが東京に来てくれているのが嬉しかったです。

とても楽しい 2 日間でした。ありがとうございました!!

不要メソッドを消す前にやっている 8 つのこと

こんにちは。@makicamel です。この記事は Ruby AdventCalendar 2024 11 日目の記事です。
といいつつ書いているのは 12 月 21 日です。
@yhara さんのお気持ちに触発されて遅ればせながら書きました。

コードリーディングをしている時、使われていなさそうなメソッドに遭遇することがあります。
わたしは不要なメソッドを削除するのが大好きです。
とはいえそのメソッドが本当に「不要」かどうかは注意深く判断する必要があります。

ここではお仕事のコードで自分が詳しくないあたりで不要そうなメソッドに遭遇した時、「消してよい」と判断するためにやっていることをいくつか書いてみます。
毎回全部実施しているわけではなく、状況に応じていくつかを組み合わせて判断しています。

1. エディタで検索する

とりあえずエディタで検索をかけます。メソッド名で検索をかけてヒットしなければ使われていない可能性が高まります。
ただ、メタプログラミングで動的にメソッド呼び出しがされているかもしれませんし、ふつうのメソッドに見えてライブラリのメソッドをオーバーライドしていてライブラリから呼び出されているかもしれません。

手軽なのでまず実施しますが、エディタ検索だけで判断することはありません。

2. カバレッジを確認する

Coverband という gem があります。

github.com

コードのカバレッジ計測をする gem で、GUI でカバレッジを確認できます。本番環境に導入すると、本番環境のコードカバレッジをとることができます。本番環境で一定期間呼ばれていないことが確認できれば使われていないと判断する強い根拠になります。

ただ、ファイルのハッシュ値をキーとしてカバレッジ計測をしているので、対象とするファイルが変更されるとカバレッジもクリアされ1、十分な観察期間を取りにくいことがあります。その場合、次の「ログ出力する」方法を採用することもあります。

3. ログ出力する

ログを仕込んで一定期間そのログが出力されないことを本番環境で確認します。Coverband 導入前はこの方法をよく採用していました。

ログを仕込む → デプロイ → しばらく観察 → 削除と手数が多いのが難点ではあります。

4. リクエストログを見る

Rails アプリのアクションメソッドが使われていないと疑われることもあります。
リクエストログを見ると実際にそのアクションが呼ばれているのかいないのかが確認できます。呼ばれてはいるものの、著しく頻度が低かったりエラーを返すのみだったりして、機能していないことが疑われる場合もあります。

ただ、ユーザー提供時期がまだ先だったり、一時的にユーザー提供を止めていたりすることも考えられます。あるいは古いバージョンのネイティブアプリ用 API などで、呼び出し頻度は低いものの活用されていることも考えられます。もう少し根拠を補強したいところです。

5. コミットログなどを読む

コミットログや PullRequest の説明文、Issue などを読んで経緯を追います。
経緯とは「このコミットで導入された」「このコミットで使われなくなった」というコミットとその変更が行われた背景です。
使われていないメソッドは「使うつもりでとりあえず書いたけれど使わなかった」「以前は使っており、機能廃止や設計変更のため使わなくなったけれど削除するのを忘れた」のどちらかの経緯で発生していることが多いです。一方、一時的に使われていない状態であるだけで、n ヶ月後に利用される予定であることもあります。

なぜ「不要」なのかの根拠が明確になっていると安心してコードを削除することができます。

6. Slack で検索する

コミットログや PullRequest・Issue などに背景や経緯が記されていないことも往々にしてあります。
その場合は以下のような項目で Slack から情報を探します。

  • PullRequest の url
  • 関連しそうなキーワード
  • 関連しそうなチャンネル
  • コミットの日付周辺の関係者の発言・関係者宛の発言

Slack だけでなく各種ドキュメントシステムでも同様に検索をかけます。

7. 人に聞く

リモートワーク全盛の時期であれば Slack などに情報が残っていることも多いですが、オフラインワークの時代の情報は見つけられないことも多いです。
関係者や考古学に詳しい人に聞くこともあります。人間なので覚えていないことも多いですが、当時の情勢や考察を聞くことができて単純に楽しかったりもします。

8. GitHub で検索する

リポジトリでなくオーガニゼーションを対象にして GitHub で検索をします。
わたしは GitHub 検索にあまり習熟していないので精度が低いのですが、リポジトリを跨いでメソッド名や何かしらの経緯にたどり着けることがあります。

前半は呼び出しが行われていない事実、後半は呼び出しが行われていない理由の確認方法をあげました。こんな感じで、事実と理由をあわせて「不要」メソッドであると判断しています。


  1. 正確には新しいハッシュ値をキーとしてカバレッジ計測が開始されるだけなので、元のハッシュ値をキーとしてカバレッジ参照することはできそうです↩

Ruby でつくるアドベントカレンダー

こんにちは、@makicamel です。体力ない民ですが最近ランニングを始めました。ランニングアプリの履歴を眺めてにこにこしています。成長が見えると嬉しいものですね。

この記事は ANDPAD Advent Calendar 2024 1 日目の記事です。
@hsbt さんに「Ruby ネタで登録待ってます」とお声がけ頂いて、「Ruby でアドベントカレンダーの記事... Ruby でアドベントカレンダーをつくる記事にしよう」と思いたち Ruby でアドベントカレンダーをつくりました。

適当なファイルに保存して実行したり irb で実行したりすると、日付が入った箱が流れてきて今日の箱が開封されます。ぜひ毎日実行してみてください。
と言いたいところですが怠惰で短気なわたしたちには毎日の実行は困難なので、実行時引数を渡して任意の日としても実行できます。最終日クリスマスには違うアニメーションが表示されます。

1 日に実行した様子

本記事ではこのアドベントカレンダーをステップバイステップに実装します。
動作確認はすべて macOS、Ruby 3.4.0-preview2 で行っています。

1. ひとつの箱を動かす

今回はアスキーアートをパラパラ漫画の要領で動かすアニメーションを実装します。
最初から全部考えると難しいので、まずはひとつの箱を所定の位置まで動かします。

ruby-advent-calendar-2024/1.rb at main · makicamel/ruby-advent-calendar-2024 · GitHub

13 行目の \x1b[2J は ANSI エスケープシーケンスで、画面クリアを意味します。 ANSI エスケープシーケンスはターミナルでカーソル(キャレット)位置や文字色を変えることができ、例えば身近なところで Rails の SQL のログの色付けに使われています。

19 〜 21 行目で用意したアスキーアートから動かしたい箱(24)だけを取り出して box 変数に詰めます。
23 〜 27 行目でカーソル位置を左上に毎回セットし、行頭にスペースを 1 文字ずつ追加しながら puts することで左から右に流れる動きを表現します。
これで「24」の箱が現れ、箱みっつ分のスペースを空けたところで停止するアニメーションができました。

2. 複数個の箱を動かす

ひとつの箱を動かせたので、次は複数の箱を動かします。
1 では箱を \n を使ったひとつの文字列で表しましたが、扱いやすいよう配列にします。また日付とパディング(スペーサー)セットで 1 要素とする配列にしました。

ruby-advent-calendar-2024/2.rb at main · makicamel/ruby-advent-calendar-2024 · GitHub

さらに日付ボックスまたはパディングボックスに日付や空白を詰めたり削ったりして、複数の箱が流れてくるアニメーションができました。

3. 複数列の箱を動かす

1 列の箱を動かせたので、次は複数列の箱を動かします。
全ての箱が動くのを待つのは退屈なので、1 列の箱を配列として持ち、スレッドを使って各列を並行に描画します。

ruby-advent-calendar-2024/3.rb at main · makicamel/ruby-advent-calendar-2024 · GitHub

かわいいですね。嬉しくなって 100 回くらい実行してにこにこ眺めました。
これで 25 個の箱が流れてくるアニメーションができました。

4. 効果を加える

アドベントカレンダーなので毎日箱を開けたいです。ということで日付変数を持って今日の箱を開いたり、今日以前の箱の中身を変えたり、日付を受け取れるようにしたりしました。
またカーソルがチラつくのが気になったので非表示にして、最後に元に戻すようにしました。

ruby-advent-calendar-2024/4.rb at main · makicamel/ruby-advent-calendar-2024 · GitHub

5. クリスマスプレゼントを用意する

最終日にわれわれ Rubyist が楽しみにしているプレゼントを表示するようにしました。

ruby-advent-calendar-2024/5.rb at main · makicamel/ruby-advent-calendar-2024 · GitHub

この Ruby は予め準備したアスキーアートではなく、100 x 36 の配列を準備して各座標が図形の内側か外側かを確認し、内側の時だけ文字を出すようにして描いています。
また始点と終点の Ruby の頂点を持ち、徐々に大きくしてアニメーションを動かしています。
判定式はほぼ ChatGPT 作です。数学の勉強をしたくなりました(N 年ぶり 2 度目)。

6. データを圧縮する

最後に、巨大なアスキーアートがそのままソースコードにあると見栄えがよくないので 36 進数表記にしてデータを圧縮しました。

ruby-advent-calendar-2024/6.rb at main · makicamel/ruby-advent-calendar-2024 · GitHub

これで Ruby でつくるアドベントカレンダーができました。


このように Ruby で遊ぶ作品やテクニックを紹介する、遠藤侑介さんによるあなたの知らない超絶技巧プログラミングの世界という本があります。
今回は「8-1-1 アニメーションの基本」「8-1-2 アスキーアートの生成(1):サブキャラクターレンダリング」「8-4-1 テーブルとしての巨大整数」などを参考にしました。

実際にコードを書いてみるとこの本や TRICK(超絶技巧 Ruby 意味不明コンテスト for RubyKaigi) のコードたちがまさしく超絶技巧であることをより実感します。腕を磨いてこんなコードが書けるようになりたいと思いました。

明日は @tomtwinkle さんによる Trivy DB に 優しい Github Actions を作成する話です。

大阪 Ruby 会議 04 参加・登壇日記

2024 年 8 月 24 日に開催された 大阪 Ruby 会議 04 に参加してきた。
昨年 10 月以来の地域 Ruby 会議参加だったわけだけれど、地域 Ruby 会議って最高だな...と感じる 1 日半だった。

RubyKaigi 2024 開幕「役に立たない」コードで 1,400 人の度肝を抜いたぺんさんのキーノート以来、「役に立たない」ものを作ることに憧れがあった1。自分の中のキーワードのひとつになっていて時々取り出して眺めていた。
のだけど、「役に立つ」と「役に立たない」は最初から分かれているわけではなく行ったりきたりしているんだな、そうかこれも人生、ということをはすみさんのキーノートを聞きながら思っていた。素晴らしいキーノートだった。
おぎじゅんさんに「きっかけになったものが役に立つか立たないかはどっちでもよくて、コードを書くのが楽しければいいんじゃない」と言われて腑に落ちたりしていた。

dRuby 入門者による あなたの身近にある dRuby 入門というタイトルで登壇もさせて頂いた。何人かの方から dRuby よく知らなかったんです、こんな身近で使われていたんですね、すごいですね、やってみます、と言ってもらえてよかった。そうなんです dRuby すごいですよね、やりましょう。ちなみに dRuby 本は Kindle でも買えます。
前夜祭で熱心な dRuby ファンの koic さんから「dRuby ファンなので楽しみにしていますね」と言われて不安になったけれど、終わった後 熱心な dRuby ファンのみなさんから「よかった」と言って頂けてほっとした。
入門したので次は実践編をやりたい。

speakerdeck.com

なお 1st dRuby の gist はこちら。

一点悔やまれるのは青木さんのお話をしなかったこと。まつださんに言われてその通りでした。
Ruby リファレンスマニュアルは過去 RWiki で書かれており、Ruby 1.8 から現在の BitClust というドキュメントシステムが作られました。これは青木峰郎さんの作です2,3。
dRuby はそれ自体も格好いいけど使っているプロダクトもまた格好いいのが推しポイントなんですよね。。。


みなさんのトークどれも素晴らしかったのだけどぺんさんのトークが特に印象に残っている。対象を自分の解ける形に捉え直して、問題を分割してひとつひとつ解決していくとよいのだなぁ。「REPL のレンダリング」というと見当がつかないけれど「コンポーネントの描画」は(よく知らないけど)処理をコールしたことがあるので思考が一段進む。知っているパターンが増えると捉え直し方も増えてお得そう、パターンの違いが見えて解像度があがったり筋のよい選択がしやすくなりそう、など思っていた。

金子さんのキーノートは冴え渡って最高だった。情報量が多くてまだ受け止めきれていないのだけど、具体的なユースケースにあたりながら最高の構文木が形作られていく様子が楽しかった。具象構文木初めて知ったけれどもとてもべんりそう。
今回もいくつかのトークでパーサのお話がされてパーサ熱の高さを感じる。パーサに入門するとこれからも盛り上がっていくだろうパーサの話がもっと面白く聞けるんだな...

今回 dRuby の事例を調べるにあたり過去の RubyKaigi のセッションをいくつか見た。今わたしたちが当たり前に享受している色々なものは最初から当たり前にそこにあったのではなく作ってくれた人がいるんだよなぁというのを改めて感じて、そういう人たちも Ruby を始めたばかりの人たちも Ruby が好きというだけで集まって分け隔てなく話すことができる RubyKaigi すごいとなっていた。中でも地域 Ruby 会議は地域で色が違うのもよくて大阪 Ruby 会議 04 はチーフオーガナイザーの ydah さんの好きが詰め込まれていてほんとうによかったですね。

ということで引き続きたのしい Ruby をやっていきたい。やっていく。


  1. 一方で今まで「役に立たない」ものをたのしく作っていたしおいさんが RubyKaigi 2024 で「役に立つ」ものを作った姿がめちゃくちゃ印象的だった↩
  2. https://i.loveruby.net/rubykaigi2007/rubykaigi2007-aoki.pdf↩
  3. https://speakerdeck.com/znz/history-of-japanese-ruby-reference-manual-and-future?slide=7↩

RubyKaigi2024 参加日記

RubyKaigi2024 に参加してきた日記です。
お気持ちメインでセッションの話はほとんどありません。

お気持ち

オンライン参加込みで今年は 6 回目の参加。と書いて初めてそんなに参加していたことに気づいた。初参加からもう 5 年が経っていた。早すぎる。

それもあってか(というのは後述する)今年は去年までと感じ方・受け取るものが違っていた。
初参加は福岡で「Ruby ってこの人たちが作ってるんだ!!」「何もわからん!!楽しい!!」「格好いい!楽しそう!自分もああなりたい!!」という興奮だった。その興奮が地に足をつけて帰ってきたという感じ。

その理由のひとつは rubyfriends だと思う。
わからんけど楽しいから解像度高くわかりたいになった。壇上のアイドルというだけではなく友達なので自分の意見を持って雑談したいと感じたのだと思う。難しいから難しいんだけれども。

理由のふたつめはしおいさんだと思う。
しおいさんとはお互いプログラマになったばかりの頃から仲良くさせてもらっている尊敬する友人なのだけど、その友人が社会の役に立つすごいものを作っている姿に感動してモチベートされた。

理由のみっつめは沖縄という場所にあったように思う。
今回前乗り後泊して 8 泊 9 日で参加していた。きっかけは去年のまつださんのツイートで、「RubyKaigi って旅なんだ」と気づいた。

ので日々沖縄を満喫していたんだけど沖縄のあのゆるい空気にあてられてだいぶんオープンになっていた。

理由のよっつめは #churb でやっている「パターン、Wiki、XP」の読書会だと思う。
昨年高まりすぎたわたしがかくたにさんに訴えたことがきっかけで読書会をやっており、その RubyKaigi 直前回で「答え合わせですね」と言われた。

Day-3 からわたしの RubyKaigi は始まっていて Day-1 にまだ沖縄にいないルビーストと話すと彼の RubyKaigi ももう始まっていて Day5 で沖縄を発ってしまったけれど来年の RubyKaigi (の準備)がこれから始まるんだな 362 日の Rubyist ってこういうことか...みたいなことを感じていた。
いろんなひとがいろんな楽しみ方・関わり方・過ごし方・感じ方をしていて、RubyKaigi は営みなんだなとエモくなっていた。

セッション

言うまでもないが ぺん!さんのキーノートがすごかった。
Quine のすごさに留まらずアートとしてのクオリティがすごくて"社会の役に立たない"遊びを本気でやることの面白さが刺さった。Day2 の朝に超絶技巧本を買って Day4 に (Quine ではないが) AA を書いた。

ようさんと Quine.rb やりたいと話した。TRICK2025 に何か出すと決めた。

沖縄

いろんなところに行ったので特に印象に残ったところをかいつまんでメモする。海も森も街も人も素晴らしかった。

  • じまんや
    • 「ざるそばのように啜ってください」というもずく酢が旨かった。アグー豚の餃子が味が濃くて旨かった
  • 斎場御嶽
    • 神格化されるのもわかるでかい岩がすごい。緑が濃く静謐だった
  • 久高島
    • 海!!海が最高だった。RUMI's CAFE で海を見ながら島ドックを食べた時間が最高だった
  • バス
    • まったり走るので街並みを見るのも楽しいしバス会社によっては車内アナウンスもひょうきんで楽しかった
  • 首里城
    • 首里城の復旧作業を間近で見られるスペシャルコンテンツが最高。プログラマは全員好きだと思う。黒々と巨大な石垣も格好よかった
  • 石畳道
    • 雨に濡れた石畳道とても風情があって素敵だった。沖縄どこに行っても緑が濃い
  • 福州園
    • 自由度高く回遊でき遊び心を感じる庭で石の細工が素晴らしく楽しかった。滝の裏側に興奮した
  • カレーカフェ沖縄式那覇市久米店
    • ぶくぶく珈琲もカレーも店内の雰囲気も優しく穏やかでまったりした
  • 波の上ビーチ
    • 街中から歩いてすぐのロケーションがべんり。Kaigi 前の朝に泳げるの最高すぎたな
  • Cafe プラヌラ
    • 内装も音楽もバランス感覚がとても好み。シナモンとクローブの香りが心地よかった
  • Bar poco rit
    • 出してくれるボトラーズウィウキーがどれも好みだった。沖縄っぽいカクテルやジンを出してくれるのも嬉しかった
  • あぐろ焙煎珈琲店
    • 外カリ中ふわのエッグトースト(ホットサンド)が旨かった
  • ジョン万ビーチ
    • 15 年?ぶりのシュノーケリング。潜ってすぐに色とりどりの魚が見られて興奮した。ウミガメのお食事シーン可愛かった。サンゴの砂浜は静かで穏やかで海から上がった後もずっとまったりしていた
  • バイク
    • 後ろに乗せてもらって人生初タンデム。重力と振動と風が楽しい。沖縄の海を見ながら走るの気持ちよかった
  • 琉球ガラス村
    • 琉球ガラスのイメージが大きく変わった。触って連れて帰れる美術品だった
  • ステーキヒカル
    • 皆言ってた「赤身のステーキが旨い」の意味が腑に落ちた。この時飲んだオリオンが沖縄滞在中で一番身体に染み渡った
  • C&C BREAKFAST OKINAWA
    • 旅先でおしゃれでゆっくりとした朝食。あたたかい島豆腐のサンドイッチが旨かった
  • 美ら SUN ビーチ
    • 泳ぐ人やビーチボールしている人がはしゃいでいて可愛かった。海岸での読書楽しかった
  • 竜神の湯
    • 湯に入りながら海や飛行機や空や緑をまったり眺められて最高だった

はじめましての方もいつもの方も、First timer の人もずっときているよという人も、廊下や懇親会やランチやバーやでたくさんの rubyfriends と技術のことも非技術のこともたくさん話した。
また何人もの人がセッションで謝辞を述べていたのが印象に残っていて、Ruby は人と人の関わりの中で作られているんだというのを改めて感じたし、その関わりの中に入っていきたいと感じた。

ということでやっていきたいと思います。コードを書こう。

徳島旅行日記

ゴールデンウィークに徳島旅行に行っていた。

初日

朝 5 時の電車に乗って空港に向かう。車の通りが少なく朝の光も穏やかで静かでいつもと違った街にわくわくする。電車に乗り合わせた人も皆眠たそうだけれども朝帰りの電車と違って身なりがきちんとしていて目的がありそうなのが面白かった。
飛行機では窓にかじりついていたら客室乗務員さんに「あちらの席から富士山が見えますよ。今日は空席ですので」と案内してもらう。JAL すごい。
なお後から知ったのだけど同じ便に推しが乗っていたようだった。まったく気づかなかった。

徳島駅に着くとアニメキャラが街中を歩いている。コスプレイベントがあったようでみんながみんなの推しになっていていい空間だった。
あと「ストーンフェア」というのの朝会に通りかかって「気合は十分ですか!」「十分ですか!?!?」とやっていてこわかった。「ストーン」というのはパワーストーンなどではなく墓石だと後で知った。なるほど。

荷物をホテルに預け森珈琲店で一息ついた後に新町の洋食屋 MIRO へ。まさしく町の洋食屋、という感じで丁寧な仕事が旨かった。
昼食後は腹ごなしも兼ねて徳島城跡へ。こどもまつりというのをやっていてけん玉、和太鼓やヒーローショーなどをやっていたり芝生に人々がくつろいでいてとてもよかった。
旧徳島城表御殿庭園は枯山水のつくりもあり回遊もでき、場所によって勇猛だったり静謐だったりしていて面白かった。背景に城山が見えるのもよかった。徳島城跡は城山になっているのだが、原生林はあまり手を入れられないままになっているらしい。緑が素晴らしく葉ずれの音も心地よかった。登っている間もヒーローショーの声が聞こえてほっこりする。

今回の旅行の目的である朗読劇を堪能した後日本料理 桜藍さんで懐石料理を頂く。繊細な味付けでどれも美味しかったが真魚鰹の焼き物が木の芽味噌と山椒と酢橘のバランスがすごくてすごかった。

2 日目

予報では午後から雨だったのだが、起床時点で濃厚な雨の気配がする。この日は眉山に登るつもりで楽しみにしていたが泣く泣く断念。ロープウェイも強風で止まっていた。
とりあえず朝風呂をキメる。新町温泉は朝 6 時からやっていてサウナもあって、ご近所の方がお喋りに来ていた。旅行先で現地の人のお喋りを聞くのはとても楽しい。

予定はカフェめぐりに変更した。徳島駅周辺はカフェが多い。コンビニより美容院よりも多いのではないか。早い時間からやっているところも多かった。
S・Kでモーニング。ご近所の方が新聞や旅行雑誌を読んでいてとてもよかった。デニムの上下が決まっているマスターは客を放置してくれて居心地がとてもいい。
292 coffee&bake では珈琲だけを頂く。エチオピアの浅煎りがちょうどいい酸味で爽やかで優しい。開放感がある内装で、若いスタッフさんたちがやっているおしゃれカフェ。S・K と違う方向性だがやはり居心地がいい。
cafe boosan でランチにカレーとハートランドとアードベックソーダを頂く。「チルい音楽でゆっくり過して」と看板にある通り音楽が作る店内の空気感がよくここもすごく居心地がいい。カレーも旨かった。

バスに乗ってあらたえの湯に行きまったり過ごす。折角だし岩盤浴を初体験してみたらサウナの穏やか版という感じでよかった。サウナは好きになりつつあるけどテレビがついているのが苦手。と思いつつ休憩室でハンモックに揺られながらサ道を読む。単純なので影響されサ活してみたくなった。

3 日目

この日は帰るだけ。
帰る前に 可否庵 でモーニング。チーズのたっぷり挟まれたベーグルがもちもちで旨い。ここはエフエム徳島が BGM にかかっていた。ローカルなコンテンツを見聞きすると嬉しい。


旅行中は森博嗣さんの諦めの価値となにものにもこだわらないを読んでいた。今回の眉山登山を諦めて違うプランを楽しめたのは本の影響もありそうに思う。リアルタイムに自分に影響している感覚が面白かった。
また今回素っ気ないサービスのお店に何店か訪れた。数年前の自分だったら物足りないと感じたかもしれないが今の自分にはとても居心地よく、自身の変化を感じて面白かった。

徳島とてもいいところだった。今回は駅周辺に終始したし眉山も再チャレンジしたいのでまた行きたい。