きっかけ
家でプレバト!!の色鉛筆回を見ていた時に、「写真っぽい色鉛筆アートが初心者にも描けないか」と思い、サービスを試作してみました。成果物
以下リンクより遊べます
要件
- 画像処理をクライアント側で行う
- フロントエンドはSSG (Static Site Generation)でビルドする
上記条件を満たすために、画像処理パートをRustで実装し、Wasmにビルドしてフロントエンドで処理させることにしました。
是非遊んでいただけると嬉しいです。アクセス数が増えたら機能追加します。
深堀りしたいこと
作っている途中で以下のようなことが気になりました。ただしサービスを早く公開することに注力したため、あまり深く調べられていないです。
数理最適化パート
- 色の合成をRGB色空間の要素ごとのminで実装したが、本当にそれが妥当なのか
- 画像処理の高速化のため、WasmのSIMDが利用できそうだが未着手
- 出力する塗り方の精度(元画像との何らかの誤差に基づく指標)と難易度による複数指標のパレート最適な解を求めるような最適化の問題に落とすと見通しがよさそうだが、現状は前者しか考慮できていない
フロントエンドパート
- 当初簡単のためSPAで作ってたが、SEOの関係でNext.jsのSSGにフロントエンドを移行した。少し調べるとSPAでも頑張ればSEO対策できるという意見もなくはないのだが、本当だろうか?
- titleとかmeta tagとかブラウザのレンダリングステップのどのタイミングでindexされるんだろうか?
- 実証実験しようとするとGoogleにindexされるまでに数日かかるので、やや手間がかかりそう
BizDevパート
- 小さい子供が遊ぶことを念頭に置いて作ったのだが、そもそも最近の子供は色鉛筆で遊ぶんだろうか…?
- プレバト!!つながりで、スプレーアートでも同じことができると面白いかもしれない