地球人の皆さん、こんにちはだっピ...。 先日エンジニアカフェのLT大会で、AI Agentの実装でWebAssembly (Wasm) を使った話をした。スライドだけだと色々とラフなので詳細を書き起こしておきたい。 udzura.jp| ローファイ日記
www.oreilly.co.jp ちょっとしたご縁があり読む機会がありました。感想を残しておきます。あと、1ヶ月に1回は技術ブログ記事書かな〜ということで...*1。 最初に全体的な感想を残しておくと、この本は僕のように漠然と型を書き、 Clone::clone() を呼び、深く考えずに Rc> なメンバを増やしていたようなRustプログラマが次のステップに行くに当たって、重要なことが書かれて...| ローファイ日記
RubyKaigi 2025、お疲れ様でした。 今年も発表者の末席を務めさせていただきました。 rubykaigi.org 資料は以下です。 udzura.jp 今年も英語での発表をしたわけですが、英語での登壇準備は年を追うごとにツールのノウハウが積み重なっていくのを感じ、特に今年は英語化自体は*1楽になったなあと思っています。どういう感じのことをしたか後学のため記事を置いておこうと思...| ローファイ日記
Rubyを、以下のオプションでビルドするとYJITのデバッグ機能が使える(rbenvを利用する例)。 $ export CONFIGURE_OPTS="--enable-yjit=dev" $ rbenv install 3.4.2 その中にはISeqが機械語にコンパイルされた結果を確認する RubyVM::YJIT.disasm(isec) というメソッドがある。いくつかRubyのコードでの結果を試してみた。| ローファイ日記
あまり公式にアナウンスされていない気がするが*1、 ruby.wasm は実はComponent Model対応が済んでいる。 github.com 多分この辺から。なので、RubyKaigi 2024の段階ではComponent Model対応したものを動かせていた。スライドで言うとこの辺 *2。 この記事では簡単にビルドの仕方をまとめておく。 command でビルドする 以下の内容の Gemfile を使って: source "https://rubygems.org" gem "ruby_wasm", "~> 2...| ローファイ日記
まず、wasmbotsとは という話をしないといけません。これはwasmバイナリを作って、ダンジョン探索をするゲームです。 shaneliesegang.com 具体的には? ダンジョンを探索するためのプログラムを書いて、それを特定のインタフェースを満たしたWASMファイルにコンパイルすれば、あとはそれをアップロードすることでプレイヤーに自動でダンジョン探索をさせることができる、...| ローファイ日記
mruby/edge バージョン 1.0.3 を出した。 https://crates.io/crates/mrubyedge これは mruby/edge バージョン 1.0.0 ではないのかという話だが、ちょっと前に 1.0.0 を出したのだが、その時点では Hash と Object#== がなかったりしたので後から追加していたらバージョンを上げることになったため。| ローファイ日記
令和最新版、と一度言ってみたかった。 先日、手作りでWASM Componentのバイナリを作ってみたんですが、mruby/edgeは全部Rustで書いているので、では最近のRustではどうするといいかをしゅっと残しときます。 結論ファースト zenn.dev ここに書いてある通りです 〜完〜 が、世の中割とcargo-componentベースの手順が多かったりするので、少しでも新しい情報を多くしようかなと思...| ローファイ日記
mrubyファミリ (組み込み向け軽量Ruby) Advent Calendar 2024、23日目の記事です。メリークリスマス! qiita.com mrubyファミリAdvent Calendar、今年は1日目からyharaさんによる衝撃的な記事がありました。 yhara.jp なぜ衝撃的だったかというと、僕も全く同じことをしてた(mrubyをRubyで実装しようとしていた)ので...。 で、その実装の下準備のために mruby/c 1.2 のコードリーディングをし...| ローファイ日記
Ruby Advent Calendar 2024の20日目の記事です。 qiita.com 今年後半からWarditeという名前のPure Ruby WASM Runtimeを作り始めたのですが、 github.com udzura.hatenablog.jp その内部の話とかは今日は置いといて(東京Ruby会議12前夜祭で話しちゃおっかな)、今回、Warditeを作る上で計測しつつ高速化した話をします。と言いつつ、めちゃくちゃ基本的なことをしただけです。 なんとかgrayscale.wasmが...| ローファイ日記
SmartHR Advent Calendar 2024、14日目の記事です。昨日のご担当は tnagatomi さんでした! qiita.com 株式会社SmartHRのプロダクトエンジニア @udzura です。労務基本機能を開発するチームで働いています。 今日は最近知った JXA で、Macのちょっとしたブラウザ操作を自動化する例をご紹介します。 JXA とは? Macにはマシン上の操作を自動化するためのフレームワークが同梱されています...| ローファイ日記
あらすじ udzura.hatenablog.jp tl;dr 自作WASM Runtimeでグレースケール処理を動かした グレースケール処理はRustで書いたもの WebAssembly specificationはテストケース付きで公開されてるので便利| ローファイ日記
Wardite というWASM Runtimeを作っていました。 github.com 今の所、「RustでWasm Runtimeを実装する」の内容を一通り実装した段階です。 zenn.dev fibまで動くようになったので、ゴリラさんのコースの範囲は一旦完成あとはwasm坂を登り続けるだけだ... pic.twitter.com/65m8qbSvap— Uchio Kondo💥 (@udzura) 2024年10月28日 以下のようなwasmプログラムを動かせます。 (module (func $fib (export "fib") (param $n i3...| ローファイ日記
wasmの可能性を「理解」したくてwasmCloudをさわってみている。動かしてみたメモや感想などを晒しておく 免責事項 wasmCloud公式のGetting Startedに書いてあるレベルのことしかしていないので、これから学ぶ人は直接そっちを読んだほうがいいと思う。 wasmcloud.com この記事は単に「副読本」というぐらいの認識でいいかなという感じ。 環境 multipassでセットアップした Ubuntu 22.0...| ローファイ日記
RubyKaigi 2024二日目(16th, May)に登壇します。 rubykaigi.org 本ブログで前々から言っている mruby/edge に関する発表です。 udzura.hatenablog.jp 構想自体ははっきり言って去年のRubyKaigi CfPオープンぐらいからあって、地道な素振りをしていた。懐かしい。 udzura.hatenablog.jp udzura.hatenablog.jp 発表は英語で行うらしい。日本語で事前情報がある方が頭に入りやすい方も多いかと思うので、...| ローファイ日記
はじめに この文字列の扱いの仕様はアルファ版であり、もっといいアイデアが出たら大胆に変更します 何もわかっていないんですが、 WASM Component Model では string の扱いも言及されており 、それに合わせたいい感じのやつにきっと将来なるでしょう ご意見ご感想を歓迎します。特に、私はRubyKaigiに出現するので、そこでリアタイでコミュニケーションとれると飛び跳ね...| ローファイ日記
mruby/edgeの進捗ブログです。 mruby/edgeとは、という話はここです: udzura.hatenablog.jp もっと聞きたい人は5月に沖縄にいくといいらしい。 rubykaigi.org| ローファイ日記
eBPFのヘルパー関数には bpf_get_prandom_u32() というものがあります: (Chromeの「この箇所へのリンク」を使いました) bpf-helpers(7) - Linux manual page これは色々な用途に使える(まず想像するのはサンプリングとか?)と思いますが、おみくじに使ってみました。| ローファイ日記
RubyKaigi CfP 2024のクローズ期限は本日です。みなさんは準備ですか? 今日は、先日紹介した mruby/edge の近況を報告します。 udzura.hatenablog.jp VTRをどうぞ youtu.be う〜ん地味! できてること mec というcli経由でRubyスクリプトを直接wasmファイルにして、ハローワールドする mec (mruby edge compiler)というフロントエンドとなるコマンドを作りました。と言っても他のコマンドのラ...| ローファイ日記
mrubyファミリー Advent Calendar 2023 24日目の記事です.............................. qiita.com wasm環境で動くmrubyを作っているのでその途中経過をダラダラ書きます。 本当は.............. 今の時点である程度まともに動かしたり、情報も整理したかったんですね。で、一昨日〜昨日と夜に時間があったはずなのですが、その日程で存在した会社の全社集会後に無限に飲み明かしてしまい、...| ローファイ日記
日記、やっぱり書いたほうがいいなとなるきっかけがあったので漠然とやっていく。 この本、バイナリが好きなので読んだ。 ハンズオンWebAssembly ―EmscriptenとC++を使って学ぶWebAssemblyアプリケーションの開発方法作者:Gerard GallantオライリージャパンAmazon 雑な感想として: wasm形式自体の基礎やwatの基礎が書かれていてとても良かった 11章でおもむろにwat形式を手書きする e...| ローファイ日記
あまりにも個人の日記を書いていないので、某所にただのメモとしておいてあるやつを再構成したりしてお茶をにごす。 例えばこのツイート... ポスト。 #スイカゲーム #NintendoSwitch pic.twitter.com/ukIwEVZm1t— Uchio Kondo🐝 (@udzura) 2023年10月2日 動画を再生しようとするとき、最初に LS8h5YVnzTCKxCEM.m3u8 というファイルにアクセスした。 HLSのマニフェストを眺める これはHLSのplaylist...| ローファイ日記
手作りの温かみのあるバイナリです。 作りかた そろそろRustで書くか、と思ってRustで書いた。 bytes というcrateが今回の用途にめちゃくちゃマッチしていた。数値をBig Endianで書き込めればいいので、こういう感じで。 pub fn write(&self, mut out: impl io::Write) -> Result<(), io::Error> { let b = &self.binary_header; let mut buf = bytes::BytesMut::new(); buf.put_slice(&b.ident); buf.put_slice(&b.…| ローファイ日記
なんとなくバイナリを解析してえ〜と思ったので、mruby 3.2.0 (最新stable?)の .mrb ファイルのフォーマットを眺めることにした。 Rustでパースしました!だとかっこいい、ナウだなと思ったけれど、動的型育ちな自分をどうしても甘やかしてしまい、 Ruby の unpack を軸に解析した。いやほんと、今やRubyで一番使うメソッドでは。| ローファイ日記
Log-Structured Merge Tree というデータ構造があって、データ指向アプリケーションデザインを読んでいるとかなり最初の方に出てくる。Wikipediaの記事の通りLevelDBを始めきょうびのさまざまなデータベース製品で使われている。 特徴はめちゃくちゃざっくり*1 追記型のログを使うことで書き込みの性能を保つ インデックスはキー名とログ内のオフセットzを持っておき、読み...| ローファイ日記
皆さんは公開情報ですか?(挨拶) 初めに言いたいこと タイトルの通りのワークショップを始めます。最初は福岡市内でオンサイトで、エンジニアカフェ[PR]でやっていくので、まずはぜひ福岡近辺のソフトウェアに関わるエンジニアに届いてほしい。 engineercafe.connpass.com OSS Halfway とは? 以下、OSS Halfwayを始めるにあたって考えたことをつらつらと書いてみます。何か...| ローファイ日記
まずは実験的ツールの紹介 componentize_any というコマンドラインツールを作りました。Rubyで書いたので以下の方法でインストールしてください。 $ gem install componentize_any ## もしくは $ git clone https://github.com/udzura/componentize_any.git && cd componentize_any $ bundle install 以下のようなスクリプトを用意します。(wittyファイルとでも名付けました) witty do world do export "wasi:cli/run@0.2.…| ローファイ日記
明けましておめでとうございます! タイトルの通り。mruby/edge のVMを、mruby/c 1.2 相当の内容に書き換えた。 mruby/c 1.2 の実装は以前軽く読んだ。 udzura.hatenablog.jp PRはめちゃでかい。 +2,605 −1,376 だそうです。 github.com 合わせてcrateをいくつかリリースした。 mruby/edgeとmecのcrateを更新した。以下でmecを更新してください。なぜかもう rc3 ですが、ええじゃないですか。 $ cargo i...| ローファイ日記
WebAssembly Advent Calendar 2024の18日目の記事です。 qiita.com @udzura です。趣味でPure RubyのWASM Runtimeを作ったり、mrubyをベースにRubyスクリプトをWASMバイナリに固めるくんのPoCを作ったりしています(なおいわゆるruby.wasmにはほとんど関わっていません)。 今日は、Component Modelについて何もわからなかったので、素人なりに手を動かしてわかったことのメモをしていこうと思いま...| ローファイ日記