Arshes v1.3.0
概ね機能はそろってきた。審査に出したので近々外部テスターにも降ってくるはず。
v1.3.0 やったことメモ
-
アイコン変更
-
利用規約周りの対応

- https://arshes.pages.dev/
- Cloudflare Pagesを使用
- シェーダー通報機能の実装
-
API Server
- Hasura Cloudでは足りないサーバーロジックを持たせてRemote Schemaとして使う
- e.g. アカウント削除、複雑なmutation
- Goで実装
- FirebaseやGCPとの連携が楽なのでCloud Runを採用
- 設定はTerraformで管理、デプロイはGitHub Actions(WIF)
- Hasura Cloudでは足りないサーバーロジックを持たせてRemote Schemaとして使う
-
Hasura Cloudの更新フローを整理した
- Cloud: Manage development environments | Hasura GraphQL Docs
- ローカル環境のコンソールから変更を行い、生成されたファイルをmainにマージしたあとにCIからクラウドに適用する
-
Modules機能の実装
import Arshes;で使っていたビルトインのSlangモジュールのスコープがよくわからん感じになってきたのでdeprecatedにした- UGC Slangモジュールを作れるようにして、最初は公式ユーザー(= 私)が作ったのを使えるようにした
- user <- shader <- shader_module_depency -> module_revision -> module -> user みたいな関係にして、dependency -> module_revisionの部分だけSET NULLし、それ以外はCASCADEするようにした
- db仕草はまだよくわかっておらず、手探りでやっている
-
toggle、rgb、rgbaAttributesを追加[toggle(true)]をやるために、swift-slang に対応を入れた- SwiftUIの標準カラーピッカーが使いにくいので、HSV Color Pickerを実装した
-
— shivaduke (@shiva_duke28) 2026年3月8日
-
.colorEffectでMetalシェーダーをUIに適用できるのが最高
-
-
Shader Spec UI
- アプリ内から使えるSlang APIが見えるようにした
-
attribute増やした pic.twitter.com/BN1avGzvS3
— shivaduke (@shiva_duke28) 2026年3月7日
-
https://github.com/shivaduke28/arshes-cli MCPサーバー機能
arshes mcpすると MCPサーバーモードで立ち上がる- アプリからはこれまで通りWebSocketで接続するだけ
- アプリはサーバーと接続したときに自身で使えるSlang APIを送るので、AI Agentに説明する必要がない
- MCPからコンパイルリクエストを受け取るとコンパイル後にレンダリング結果をjpgにしてサーバーに返すので、スクショを見せたりする必要もない
-
uniform float microphone;でマイク入力が使えるようにした-
uniform float microphone pic.twitter.com/PJI1tXUO67
— shivaduke (@shiva_duke28) 2026年3月8日
-
ネイティブAPIを自由に使えて便利
-
やはり音に反映するのはよい
-
v1.4.0でやりたいこと
- ユーザーアイコン、サムネイル画像
- Google Cloud Storageにアップロードするはず
- 署名付きアップロードURLやらリサイズやら考えることがありそう
- いいね数、使われた回数の可視化
- dbのあり方がよくわかってないので調べる
- 最近使ったシェーダー一覧画面でも似たようなことをやりたそう
- UGC Slangモジュール
- ガワはあるが、もう少しちゃんと考える必要がありそう
- ユーザーはmoduleを作ったり削除したりする
- moduleにはソースコードが含まれており、スナップショットをmodule_revisionとして保存できる
- shaderからmoduleを使う場合、shader_module_dependencyが作られる
- depdencyにはrevisionのコピーが含まれており、moduleやmodule_revisionを非公開化・削除しても動くことが保証される(のでdependency -> revisionの参照はSET NULL)
- ほんまか〜〜??という気もするが、よくわかってないので、dbの勉強が必要そう
- マネタイズ設計
- サーバーなどでもろもろと金がかかるので、最低限回収できる程度には金をもらうようにしたい
- なんか考えたり実装したりする必要がありそう
