kinoppyd.dev

blog

products

accounts & contact

PicoRuby Overflow会議 に参加してきた

posted at 2025-07-20 21:05:00 +0900 by kinoppyd

大阪や!(3週間ぶり)

関西Ruby会議08の熱も冷めやらぬまま、再び大阪に来た。正確に言うと関西Ruby会議は京都だったので3週間ぶりでは無いのだが、まあ関西だし似たようなモノだろう。石を投げないでください。僕は子供の頃、大阪と京都の県境を反復横跳びできるようなところにいたことがあるので仕方ないのだ。

関西Ruby会議08に送ったCFPは全てRejectされたものの、PicoRubyを使って子供のオモチャをつくろうという方のプロポーザルはOverflow会議に再度応募して欲しいという連絡が来て、送ったらショウケースセッションとして通ったので展示してきた。行きの新幹線でポスターを必死こいてつくってたのに、駅に着いたら印刷する方法が無くてコンビニでA4印刷したモノを机に置くことになった。

PicoRuby Overflow会議、めちゃたのしい

めちゃめちゃ楽しかった。いつものRubyの勉強会と違って、Rubyではない世界からの目線が多く、とても刺激的だった。PicoRubyを使ってモノを形にするためには、電子工作が切っても切り離せない存在なので、電子工作をする界隈からの話、違うボードへのポーティングの話、PicoRubyのような他の言語のサブセットの話、電子工作そのものの話などを多く聞くことが出来、世界が広がったような感覚で満たされていた。

ショウケースセッションもとても楽しく、誰かが作ったモノを見ていると自分自身の中に創作意欲という刺激が貯まっていき、たまらない。貯まるのにたまらん。

懇親会でもみんなずっとPicoRubyの話をしていて、PicoRubyが良い話だったり、圧倒的にドキュメントやExample語りないという話をしていたり、とにかく刺激がたくさんあった。フィジカルな成果物は心をグッとわしづかみにする。Keynoteの話も前半とても感動的であり、後半はマリオであった。とにかく感動した。素晴らしい会議だった。はすみさんに電子工作初心者としてたくさんの質問をできたことも楽しかった。

そういえば、自分のショウケースの様子を写真に撮るのを忘れてしまったけれど、頑張って良いスイッチは高いということを力説していました。

PicoRubyはサンプルコードやドキュメントが不足しているということがはっきりとわかったので、なるべく僕もPicoRubyの制作物はブログにしていこうと思いました。

PicoRuby の世界

まったく正直な話をすると、関西Ruby会議08のプロポーザルを送った時点でPicoRubyを触ったことがなかった。なんなら電子工作そのものも、ちょっと本を読んでLチカしたことがあるくらいのステータスだった。あとは自作キーボードのキットを半田付けして組み立てたことがあるくらい。だけど関西Ruby会議08のプロポーザルから本番まで2ヶ月くらいあるしいけるっしょチェケラッチョくらいの気持ちだけはあった。プロポーザルにもその旨は書いており、採択されたら俺が苦しむぞとまで書いておいた。そして関西Ruby会議08のプロポーザルは落ちたので、GWは特に何もせずそのまま終わることになった。

それから1ヶ月後の6月前半、PicoRuby Overflow会議のオーガナイザーをやっている友達から「はよプロポーザル送れ」と連絡が来た。そういえばOverflow会議があるというのをすっかり忘れていたので、慌てて関西Ruby会議08に送ったプロポーザルをそのままOverflow会議にも送り、6月の後半にショウケースセッションとしての採択連絡がきた。関西Ruby会議08開催の数日前の話だった。このとき僕は仕事に追われており、関西Ruby会議08のスポンサーLTセッションに出ることすら忘れて開催の前日に何を話すか考えてスライドを作っている始末だった。当然、まだPicoRubyでHello Worldはしていなかった。開催の3週間前の話である。

関西Ruby会議08が終わり、東京に帰ってきてからはまた忙しかったが、とりあえず気合いを入れるために3Dプリンタを注文した。子供用のオモチャを作るのだから、ブレッドボードや基盤むき出しで渡すわけにはいかないだろうという気合いを入れるためだ。そのとき注文したBanbu A1 miniは、Overflow会議開催の1週間前に荷を解き動くことになる。慌ただしい。

PicoRuby Overflow の進捗ですが、やっとLチカに成功しました。本物の締切駆動開発が始まります。 pic.twitter.com/IOJGHxXAVd

— kinoppyd (@GhostBrain) July 7, 2025

開催の2週間前になり、初めて僕はPicoRubyでHello Worldをすることに成功した。PicoRubyをRaspberry Pi pico上で動かすためのシェルとしてR2P2があることを知り、Macでビルドに失敗してもういいやってなりGitHubから最新のリリースバイナリを持ってきてRaspiに突っ込んだ。どうして僕がここまで舐めプをしていたのかというと、PicoRubyを使えば電子工作のコードをRubyで書くことができるからだと理解していたからだ。CとかMicroPythonとか、そもそも言語の仕様にあまり自信の無い奴らとは違い、俺はRubyには少しだけ詳しい。だからRubyを書けるのであれば、それは電子工作が余裕であると言うことだと思っていた。だが、実際にはそんなことはなかった。

Array#sample がない!!!

— kinoppyd (@GhostBrain) July 7, 2025

PicoRubyはコンパイラで、動作ターゲットはmruby/cのVMだ。まあなので、PicoRubyのコンパイラが解釈できるコードはCRubyとは違い、CRubyでは動くコードが動かない。具体的に言うと、Arrayとかに本来生えていて欲しいメソッドがほとんど生えていなかったりするし、RasPiというか電子工作に関わるクラス関連には満足なドキュメントが無いため試してみないと挙動がわからないのだ。Rubyで書けると思ってたけど話が違うJANG! と最初は思ったが、まあ普通に電子工作するならビット演算と簡単な配列処理だけできればほとんど困ることはないし、わからないクラスはわからないなりにirbで試せばなんとなく理解でした。というか、irbがRasPi上で動くことが本当に素晴らしい、最高。僕はブレッドボード上に挿したRasPiとシフトレジスタや7セグLEDやタクトスイッチと格闘しながら、毎晩夜なべをしながら楽しくPicoRubyのコードを書いていった。そしてどういうモノを作りたいのかというゴールと、そのために必要な回路図にたどり着いた。Overflow開催1週間前のことである。

PicoRuby Overflow の進捗ですが、7セグ4連の配線難しすぎませんか…… pic.twitter.com/bJPawa6S2r

— kinoppyd (@GhostBrain) July 13, 2025

おもむろに僕は3Dプリンタを箱から取り出し動かした。やっぱすげえ、なんか知らんけどプラスチックが溶けて形になっとる。感動がそこにはあったが、この機械を動かすための図形を作図しなくてはいけないのだという現実が襲ってきて急に無力感が体を支配し始める。しかし、3Dプリンタを動かしている余裕なんてモノはまったかった。地獄の半田付け作業が始まったからだ。コードを書いてデプロイして、ミスがあれば修正してデプロイすれば良いWebサービスと違い、電子工作は一度半田で固定してしまうと、その後の修正はかなり難易度が高くなる。僕はブレッドボード上で何度もシミュレーションした回路にしたがって半田付けをした。動かなかった。絶望だけが僕の友達だった。

PicoRuby Overflowの進捗ですが、徹夜で7セグ4連を配線したんすよ……点灯しないんすよ、もうおしめえだ…… pic.twitter.com/1qP4eTYaBh

— kinoppyd (@GhostBrain) July 16, 2025

今の僕には一つ大きな制約があり、何かミスったらアキバに行ってパーツを買い直すという行動ができないという制約だった。子供がとても小さく、手がかかるため、安易に家を留守にできないのだ。だから壊すかも知れないパーツは事前に予備を買っておき、どうにもならないモノはAmazonでどうにかするしかないという状況だった。そのときAmazonはプライムセールの開催によって地獄みたいに詰まっていて役に立たなかった。僕の制約はより強くなった。

しかし物事は気合いである。勝手に僕がテスタと呼んでいるカノードをGNDにつなげたLEDのアノード端子を、半田付けしたボードにひたすらツンツン当てていき、電気が通っている箇所と通っていない箇所を見極めた。通って欲しいところは全部通っていて悲しい気持ちになったが、よく見たら7セグの脚の番号が全部逆に半田付けされていることに気づいた。そりゃ動くわけねえだろと思いながら、半田を溶かしたり付けたりしつつ再度配線すると動いた。複雑すぎるシフトレジスタの配線をミスって無くて本当に良かった、神はいた、と僕は何かに感謝をした。神は俺だった。開催2日前の早朝の出来事である。

PicoRuby Overflowの進捗ですが、ミラクル起きました(めちゃ頑張った pic.twitter.com/pMvSVRQ2Pv

— kinoppyd (@GhostBrain) July 17, 2025

あとはひたすら3Dプリンタでケースのモデリングと印刷を繰り返した。CADはミリしらなので、子供でも使える奴が良いだろうと思いAutodeskのThinkercadというものを使った。簡単な図形しか作れないが、オモチャのケースは簡単な図形だけで良かったので本当に助かった。なんやかんやあり、仕事の合間に印刷と微調整を繰り返し、4セットくらいの試作品を繰り出してからついに完成形を当日の朝に印刷完了することができた。あまりにもめでたいので、新幹線の中で喰う駅弁にビールと唐揚げを追加した。

当日の展示では多くの人に触ってもらい、かわいいと評判をいただけてとても嬉しかった。やはり作ったモノに対して人から反応をもらうことが、自分にとって至福の喜びである。試作品の段階で一度子供に渡してみたら、狂ったように夢中になってボタンを押して遊び、調整のために返してもらうとバカ泣きするほどの吸引力だったので、その時点で手応えはあったと言える。自分の初めての本格的なPicoRuby+電子工作をいろんな人に触ってもらえて、本当に楽しかった。

僕たちはRubyを使って気持ちよくソフトウェアを作ることができる。けど今では、Rubyを使って気持ちよく自分自身のガジェットを作ることだってできるのだ。ソフトウェアの世界で閉じない電子工作の世界では、ソフトウェア開発で培った自分の力が遠く及ばないような現象もたくさん遭遇できて、とても楽しい2週間だった。

PioRubyの世界では、現実世界を動かすコードを書くことができる。それは自分自身のためのガジェットかも知れないし、自分以外の誰かを喜ばせるガジェットかも知れない。そんな世界に足を踏み入れるきっかけになったPicoRubyにたいして、僕の心は本当に感謝の気持ちで溢れかえっている。