ARTIFACTS
開発者用ツール
mophila
動画をコードで書く言語のインタプリタ。
.moph のスクリプトを解釈して、GPU(Vello)で描き、ffmpeg で動画や画像にする。
図形やアニメーションを部品としてまとめ、別のファイルから import して組み合わせられる。音声や字幕も同じタイムラインに置ける。
座標は箱の中の値で書くので、解像度とフレームレートは出力のときに決める。
プレビューはウィンドウで実時間再生される。
Rust製のCLI。
NounSQL
スキーマを名詞で書くと、PostgreSQL のDDLを生成する言語。
先に名詞を登録しておくと、テーブル名・外部キーのカラム名・インデックス名・COMMENT がそこから決まるので、テーブルごとに書かなくて済む。
共通のカラムは mixin にまとめられるので、テーブルの定義には他と違うところだけが残る。
Rust製。CLIのほかに、npmから使えるWASMビルドがある。ブラウザ上で試せるプレイグラウンドもある。
rusterd
ER図のSVGを生成するDSLコンパイラ。
CLI版とWEB版がある。
PipingServer
AA電話のWebRTCで無理やりシグナリングに使っているPipingServer。
ブラウザでアクセスするとデモページが開くが、コマンドで利用できる。
本来の使い方としては、一方からテキストを送信して、他方で1回だけ受信できるサーバー。
/p/の後に適当な名前をつけて、そこにテキストをPUT methodで送信すると、別のシェルから同じURLにGET methodで受信できる。
送信側
echo "こんにちは。" | curl -T - https://ppng.urtell.com/p/sample-hoge
受信側(別のターミナル、別のPCで)
curl https://ppng.urtell.com/p/sample-hoge
こんにちは。
soluid Components
solid.js 用のコンポーネントライブラリ。 package.json にインストールするのではなく、スタンドアロンで動作する。
npm package: https://www.npmjs.com/package/soluid
Soluid Components のコンポーネントカタログ兼デモページ。
パスキーのデモ
パスキーのデモサイト。
パスキーを使って登録してログインすると、パスキーを更に登録したり、それらを使って認証をテストしたりできる。
Claude Code を試すために作ったので、無駄にi18n対応したり、無駄にデザインを切り替えられるようになっている。
APIはRustで書いてビルドしたバイナリを乗せた小さいLWA入りのイメージをLambdaにデプロイ。 フロントエンドはSolid.jsで書いて、S3にデプロイしている。
Pulumiでデプロイした。
Rust でAPIを書いて、Lambda に乗せてPulumiでデプロイする実験でもある。
ゲーム
numshoot
同じ数字がマージされて数字が大きくなっていくゲーム。
永遠に終わらない。気づいたら目が疲れてる。
Searchlights
ボードゲーム「シティチェイス」をパクったブラウザゲーム。
犯人1人が街のビルに車を隠して逃げ、警察がヘリコプター3機で12ラウンド以内に見つけ出す。
1台の端末を2人で回す交代モード、相手をCPUが持つモード、ロビーでルームを立てるオンライン対戦がある。オンラインは1対1と、警察を3人で持つ4人形式。
フロントエンドはSolid.js + ViteでCloudflare Pagesに、APIはCloud Run + PostgreSQLで動かしている。
NYX
GRADIUSのような横スクロールシューティングゲーム。
射撃を連打しすぎると急に連射速度が急激に遅くなる。
モバイルでもプレイできるけど、PCでゲームパッド使うのが一番楽。
人タワーバトル
動物の代わりに人を積み上げてタワーを作るゲーム。
自分で画像セットを設定してプレイ可能。
サービス
roundchat
1対1でランダムにチャットするサービス。
シングルトンの Matchmaker という Durable Object が待機者を突き合わせ、成立したら会話用の Room を新しく払い出す。
Cloudflare Workers + Durable Objects。Solid.js + Valibot で、プロトコルのスキーマと型は1か所から生成している。
taltal
2Dの空間を歩き回りながら話すコミュニケーションサイト。
近くにいる人と喋れる。
Cloudflare Workers + Durable Objects + D1。空間ごとの状態を Durable Object が持つ。
Vite が Worker と Durable Object を同じプロセスで動かすので、開発中も本番と同じランタイムで動く。
Solid.js + Drizzle。
Talkers
簡易SNS。
アバターはパターンを組み合わせた猫のイラストしか選べない。
あと、なにかスレッドを立てて書き込んでおくとAIのボットが勝手に返信したり議論したりしてくれる。
Hallucinator
グーグルアカウントでログインすると、毎日、ニュースのRSSを調べてそれらを要約し、トピックを作成してメールを送ってくれるサービス。
メール送信時刻を3時間単位で設定可能。毎日その時刻にメールが届く。
興味のあるカテゴリ、不要なカテゴリ、カテゴリの順序を設定可能。
PEERFACE
WebRTCを使ったP2Pビデオ通話アプリ。
CloudFront + S3 + CloudRun + NeonDBで構成。 Nest.jsでAPIを書いて、Solid.jsでフロントエンドを書いている。
通話中にテキストチャットもできるし、ファイルでP2Pでサーバーを介さず送信できる。
アプリケーション
AACHAT
映像がアスキーアートに変換されて表示される簡易ビデオ通話ツール。
共通のキーワードを入力した2ユーザー間で、1−1の通話ができる。
ちなみに、普通に映像を表示するほうが、実装は簡単。無駄にテキストに変換していると言える。
WEBRTCを使うが、シグナリングに自前のPipingServerを使う。
STUN サーバーは、Google などの公開 STUNを利用する。
シグナリング成功後はP2Pで直接通信するため、サーバーが不要というところが素晴らしい。
P2P接続できない場合は接続不可。(TURNサーバー無し)
モバイルでも使えます。
excess
excess — ブラウザで動くCSV/TSVビューア&エディタ。
ExcelなしでCSVファイルをサクッと開ける。大容量ファイルにも対応。
カラム幅を自動調整、フィルタリング、ソート、様々な形式へのエクスポートなど、いろいろできる。
サーバーサイドの処理はなく、全てブラウザ上で完結する。
ファイルもサーバーにアップロードせず、OPFSを使ってローカルで処理する。
ブラウザのタブを閉じてもファイルは消えないし、同じブラウザであれば別のタブからもアクセスできる。
Rufly
ウェブページを要約・翻訳するChrome拡張機能。
















