ShutterPact v1 — ウィザードをやめてカードエディタになった話
前回の記事を書いた2026年6月26日から、9日が経った。あの日リリースしたShutterPactは、今日時点でv1.4.3になっている。
ShutterPactは、VRChatを中心としたVR SNSのフォトコンテスト主催者向けに、ルール文書を生成するWebアプリだ。入力した内容からSNS告知用のPNGカードとDiscord向けMarkdownを出力できる。
一週間で何が変わったか、あるいは変わらなかったかを書いておく。
ウィザードをやめた
v0.1.0でリリースしたUIは8ステップのウィザード形式だった。「基本情報 → 撮影環境 → 加工ポリシー → …」と順番に進んでいく設計で、入力する項目が多いコンテスト用ルールを順序立てて埋めていくのには向いていた。
しかし使っていくうちに、二つの問題が浮かびあがってきた。ひとつは「完成形が見えない」というユーザーからの声だ。いまどの項目を入力しているのかはわかる。しかし最終的にどんなカードになるのかは、Step 8のプレビューまで進まないとわからない。もうひとつは、その唯一の確認ポイントであるStep 8のプレビューが、実際には小さすぎて意味をなしていなかったことだ。確認しに行っても、仕上がりをちゃんと把握できる表示サイズではなかった。
v1.0.0(7月1日)でUIを全面的に作り直した。ルールカードそのものを画面中央に置き、編集したいセクションを直接クリックして入力する形に変えた。カードは常に表示されているので、入力しながらリアルタイムで仕上がりを確認できる。
スマートフォン向けには「編集」「プレビュー」のタブ切り替えを追加した。プレビュー側ではピンチズームでカードを拡大できる。これにより、モバイルでの実用性がようやく確保された。
同じタイミングで、必須項目が未入力の状態でのPNG保存・Markdownコピーをブロックするバリデーションも入れた。エラーがある箇所はカード上に赤いバッジで表示される。以前は「なんとなく出力できてしまう」状態だったが、これで出力前に問題に気づけるようになった。
一週間で加わったもの
v1.0.0以降も、気づいたことや要望があったことを随時対応してきた。いくつか取り上げる。
企画展モード(v1.4.0)は、個人的に大きいと思っている変化だ。当初ShutterPactは「審査して順位を決めるフォトコンテスト」だけを想定していた。しかし実際のVRChatコミュニティには、審査なしで応募作品を全員で展示・共有する「企画展」「作品展示」という形式も多い。このニーズに対応するため、募集タイプとして「企画展」を追加した。企画展を選ぶと賞金・賞品欄が非表示になり、代わりにテーマを大きく表示するレイアウトになる。ツールの射程が、コンテスト主催だけでなく企画展示の告知にまで広がった。
PNG書き出しの速度(v1.2.0)も触れておきたい。v0.x時点では、PNGの生成に数秒から十数秒かかることがあった。html-to-imageでDOMをキャンバスに描く処理で、フォントの読み込み待ちなどが積み重なっていた。v1.2.0でこれを大幅に改善し、ほとんどの環境で数百ミリ秒に収まるようになった。ユーザーの体感としては別物だと思う。
ブラウザ言語の自動検出(v1.3.0)は、国際コミュニティを持つVRChatならではの対応だ。初回訪問時にブラウザの言語設定を読み取り、日本語・英語・簡体字中国語・韓国語のうち適した言語を自動的に選択する。手動で切り替えた場合はその選択を記憶する。海外のユーザーが初めてアクセスしたときも、英語でそのまま使い始められる。なお、日本語以外の翻訳はおおむね機械翻訳によるものなので、その点はご了承いただきたい。
画像を共有(v1.4.2)では、完成したカードをダウンロードせずにそのままXやDiscordへ投稿できるボタンを追加した。スマートフォンではOSの共有シートが開き、PCブラウザではクリップボードにコピーして投稿欄に直接貼り付けられる。
そのほか、QRコード表示(v1.4.0)でルールカード上に応募先URLをQRとして埋め込めるようになり、Discordプレビュー(v1.1.0)で貼り付け前のMarkdown整形結果を確認できるようになった。
変わらないもの
設計の根幹は変えていない。
入力内容はURLのハッシュに自動保存される。サーバーもDBも持たず、アカウント登録も不要。URLを共有するだけで設定を再現できる設計はそのままだ。
カード形式で出力するという方針も変わっていない。文章で羅列されたルールよりも、一覧で視認できるカードのほうが「ちゃんと読まれる」と思っているからだ。VRChatのフォトコンでは告知がDiscordやXで行われることが多い。そこでも映えるデザインにしたい、という動機もある。
そして、開発の起点がコミュニティにあるというスタンスも変わらない。VRChatのフォトコン文化の中に身を置いているからこそ、「ルールが曖昧なまま運営されるフォトコン」の問題も、「企画展という形式が一定数ある」という事実も、自然と目に入ってくる。ウィザードをやめようと思ったのも、実際に自分で触って「これは使いにくい」と感じたからだ。
8日間で14リリース
6月26日のv0.1.0から今日のv1.4.1まで、8日間で14回リリースした。
「完成してから公開する」ではなく「使いながら作る」スタイルをとっているので、こういう数になる。実際に使う中で見つかる問題や、コミュニティからもらったフィードバックを、思いついたタイミングで直している。
このペースがずっと続くとは言えないが、変えたいことはまだいくつかある。万が一にもShutterPactがコミュニティのインフラ的な存在になるくらい利用者が増えたなら、入力されたデータをDBで管理してフォトコンカレンダーとして活用するという展開も、頭の中にはある。まだだいぶ先の話だが。
shutterpact.mo4ca.netから使えます。フィードバックはお問い合わせページからどうぞ。