OpenSiv3D for Web のポストモーテム

# はじめに

この記事は、OpenSiv3D for Web の開発が失敗よりに進んでいったことを、**かめのこのゆがんだ主観**にもとづいてまとめたものです。
かめのこにとって OpenSiv3D for Web の開発がつらくなっていったことには間違いはなく、この負の感情を公開することなく心に秘めておくことが、そのつらさからの解放に遠ざかっている気がしてしまったので、まとめることも推敲することもせず、雑に記事に書きなぐったものです。

OpenSiv3D for Web の紹介は、この記事において改めて行うことはしません。もし、OpenSiv3D や OpenSiv3D for Web に対して興味があれば、[Siv3D 公式ドキュメント](https://siv3d.github.io/ja-jp/download/web/) をのぞいてみてください。

# OpenSiv3D for Web の現状

OpenSiv3D for Web の開発者であったかめのこは、OpenSiv3D for Web に対するバグ修正とユーザサポートなどの責任を放棄し、OpenSiv3D for Web の開発者が不在の状態になっています。

https://twitter.com/kamenoko_dev/status/1685340573115580416

# 本文

まず OpenSiv3D for Web に対するそれぞれの目標(価値観、求めているもの)がかけ離れすぎているのが、最初に挙げる原因と思っています。

鈴木さんの Siv3D に対する姿勢は常にユーザファースト、一企業の在り方として至極当然だと思います。
しかし、かめのこはかつて所属していた大学サークルのように、開発者が集い、同じ作品をともに制作していく場所を OpenSiv3D for Web に求めていたのだと思います。

- - -

Siv3D の成長をここでまとめておくとしましょう。Siv3D はその開発に関して、ユーザからの質問や要望になんでもかんでも対応していく過程で、ユーザを獲得していった。ユーザの母数が大きければ、Siv3D の開発にかかわれるくらいの知識をもったユーザも現れる。Siv3D のユーザの少ない状態から Siv3D を成長させる方法としてはとても理にかなっていると思います。

ならば、OpenSiv3D for Web も同じ道を辿れなかったのか。かめのこはこれを困難だったと考えています。初期のユーザ規模が Siv3D より大きかった故、OpenSiv3D for Web に対する期待が大きすぎたと感じています。OpenSiv3D for Web の開発初期から、OpenSiv3D for Web のユーザからの質問や要望が爆発的に膨れ上がり、1人の開発者が面倒を見るには、手に負えなくなってしまった。

そしてここで鈴木さんに対して不満を漏らすとしたら、この一番大変な時に鈴木さんが OpenSiv3D for Web に対して要望を出す側に回ったことでしょうか。誰に頼ることもなく、実装上の悩みから、個々の報告への返答、そして、本業のアルバイトも減らすことなくこなしてきた負荷は、一人で耐えれるものではなかったのでしょう。

途中から鈴木さんにもユーザサポートに回っていただけたおかげで、もっともユーザサポートの負荷が大きい時期を乗り越えられたことには感謝しております。

- - -

かめのこの実装が雑で、バグや不具合が非常に多かったのも手に負えなくなった大きな一因かもしれません。しかし、Siv3D for Windows, macOS, Ubuntu のそれぞれのポートが各々の OS だけの面倒を見ればいい一方、Web はあらゆる OS, ブラウザ、そしてモバイルも対象になるところ、すべての環境でバグや不具合を出さずに実装していくことなど、不可能に近いものにしか思えません。

それこそ今になって C/C++ に閉じたテスト、JavaScript 部分のテスト、ユーザ操作が必要な部分は e2e テストと多面的なテストを勉強している途中ですが、これらのテストをもう少し早い段階で整備して、ユーザからの不具合報告や機能提案のたびにきちんとテストを追加していれば、こんな不毛な未来にはたどり着かなかったのかもしれません。

- - -

OpenSiv3D for Web の開発において、もっとも開発意欲をそいだのは、OpenSiv3D for Web 自体ではありませんでした。

OpenSiv3D for Web を開発し始めた 2020 年初頭では、emscripten で Web アプリを開発するのは Visual Studio Code 以外ではほぼできず、デバッガもソースマップレベルのものしか存在せず、デバッグ中の変数ウォッチなどできないで当たり前みたいな世界でした。

それゆえ、かめのこは、OpenSiv3D for Web の開発の途中で、Visual Studio の拡張機能であったり、WebAssembly のデバッガであったり、Visual Studio Code の拡張機能など、ありとあらゆる周辺ツールを整備してきました。
こういったツール群があれば、OpenSiv3D for Web に限らず、あらゆる emscripten を使うプロジェクトで開発が楽になるであろうという希望の下、全く初めての分野の開発に労力を投じてきました。

OpenSiv3D が Visual Studio 2019 から Visual Studio 2022 へ移行したのですが、Visual Studio 拡張機能 に対して、「Visual Studio 2022 以前のサポートを切るから、Visual Studio 拡張機能も Visual Studio 2022 以前のサポートを切ってもいいよ」と、鈴木さんから通達がありました。

ただ、前述した通り、この Visual Studio 拡張機能は、OpenSiv3D for Web 以外での使用も想定していたため、「Visual Studio 2022 以前のサポートを切るつもりはないよ」と伝えました。ただ、その互換性のためには、複数の拡張機能のインストールが必要となり、それが OpenSiv3D ユーザの体験を損ねている、改めて OpenSiv3D ユーザの体験を最適化すべき Siv3D 開発メンバの一員として「Visual Studio 2022 以前のサポートを切る方向で考え直してください」と。

鈴木さんにとっては、OpenSiv3D ユーザの体験向上という側面だけではなくVisual Studio 2022 以前のサポートが負荷になっているはずだから、Visual Studio 2022 以前のサポートを切ることが、かめのこと Siv3D ユーザの双方の利益になるという配慮からこの提案を行ったそうです。
しかし、かめのこの色眼鏡には、この提案が、「こういった周辺ツールは、Siv3D ユーザの体験を向上させるためだけに作られている、Siv3D 以外はどう不便になろうとかまわない」ようにしか思えませんでした。

かめのこの周辺ツールに託した希望を共有していれば、このような Siv3D とそれ以外のユーザの利益が相反するときの決定の食い違いなど起きなかったのでしょうか。

- - -

Visual Studio 拡張機能のくだりに関しては、鈴木さんに押し切られるのではなく、双方が納得できる案を "かめのこが提案できた" からどうにか決着したところとみています。その後、鈴木さんが提案し、かめのこが別の案を出してもかたくなに拒み、最終的に押し切られるケースも少なからず出てきてしまったが故、後半はなにか提案されたら、対案を出すこともメリットデメリットの分析もすることなく投げやりに飲み込み、その不満をため込んでいったのも失敗だったのでしょう。

- - -

そうやって鈴木さんへの信頼が地の底を這う中、Siv3D Studio を自身の一年で最も時間の取れないアルバイトの繁忙期にベータテストを迎え、当然ながらまともな頭でないところにかめのこが質問に対して変な回答をつけて小さな謝罪案件となり、Siv3D Studio を公開してバグ報告不具合報告の波に襲われる勇気など全く出ることなく正式リリースをあきらめ、OpenSiv3D for Web と Siv3D Studio の管理義務を手放してしまって今に至るわけです。

- - -

こうまとめてみると、かめのこがこのような要所要所で自身の色眼鏡に惑わされることもなく、的確で論理的な思考ができていれば、かめのこが一般的なレベルの良識と献身を身に着けていれば、万事うまくいっていたのでしょうか。
OpenSiv3D for Web に限らず、就職やらそのほかもろもろの場面で。
他人との協調を重視し、それぞれの本当に求めるものを突き詰めて、お互いがいいといえる方向へ合意形成を進めていく思考は、的確で論理的な思考が全くできない自身の無能さを増長し、むしろ、かめのこ自身を鈴木さんの都合のいい方向に、言いなりにしてしまったのでしょうか。
いずれにせよ、自身の作りたいものが作れないこの場所からさようなら。