Super Windowプラグイン 開発記
開発キッカケ
私はモデル改変はあまり得意ではなく、MMDでも特に目立った部分のない存在でした。特に、モデル改変は複雑で苦手な為、PmxEditorを使う頻度は少な目です。
PmxEditorのGUIには個人的に不満を持っていました。それは、ウィンドウが全て独立タイプのGUIだった事です。ウィンドウが独立タイプだった為、画面上にウィンドウが散らかってしまう事は多々ありました。それらをどうにか改善できるプラグインやツールはないか探していましたが、何もありませんでした。
ある時、私は偶然PmxEditorのプラグインを開発しようと考えました。そこで、画面上にあるウィンドウを一つのウィンドウにまとめる(ドッキング)事ができるプラグインを開発できれば便利ではないかと考えました。ちなみに、一つのウィンドウにドッキングするという着想は、AviUtlのSplitWindowプラグイン(様)から得ました。
開発初期 ~ 挫折
PmxEditorのプラグインを開発すると、一言で言ってもいざ作ろうとすると複雑で最初のうちは諦めていました。「絶対に私では実行できないかもしれない・・・」と心の片隅で思いつつ、「いや、不可能なんて言葉はない」という感情で押し殺しつつ、プラグインの開発方法について学びました。仕様で分からない事も多い中、様々な事を学び、とりあえずプラグインとして動作するモノ(開発初期Ver)を完成させました。
しかし、動作が非常に不安定で思ったような結果が得られずに、しばらくの間挫折し、開発停止と陥ってしまいます。
Ver 1.0 ~ Ver 1.1
7ヶ月に及ぶ長い開発停止期間を経て、ある時、また開発を続けたいと考えるようになり、立ち上がりました。更に今度は過去に作った自作ソフトでウィンドウをドッキングさせるUIを採用した事があった為、どのように開発すれば効率が良いか等のある程度の知識を得た状態でした。そして、やっとの思いでVer1.0の開発、リリースする事に成功しました。
リリースに当たって、名前を決めようとした時、当初何もアイデアがなかった為、「なんか凄そうな名前にしたいなぁ」という適当な考えから、
Super Windowと名付けました。
また、開発初期Verのような不安定な動作やドッキング不良も起こさないモノへと進化しました。更に、アクセサリとしてエクスプローラのウィンドウを2つドッキングさせました。何故エクスプローラをドッキングさせたかと言うと、コレは個人的なこだわりだが、モデル改変をする際にファイル操作をよく行うのでエクスプローラを標準でドッキングできれば便利だと考えました。しかし、課題も複数あり、TransformViewもドッキングさせたいという個人的なこだわりで、プラグイン起動時にTransformViewを表示させなければいけなかったり、強制的に3分割になっていたり、境界の幅も指定できませんでした。
自分の中では凄く良いモノを作った気分だった為、私はここぞとばかりに、MMDerさんがたくさんいるDiscordのサーバーやコミュニティで宣伝してみました。すると、そのプラグインに興味を持ってくださった方が数名いらっしゃり、改善案を頂きました。
「境界の幅を調整できるようにして欲しい」「3分割のスタイルを反転させたい」「ウエイトを塗る際等にViewウィンドウのみ最大化できるようにして欲しい」
等のご意見を頂きました。私は更に良いモノへ進化するチャンスだろうと考え、Ver1.0リリースからわずか1週間程でVer1.1をリリースしました。その頃には徐々にプラグインの存在も噂され初め、
136いいね、63RT、70ブックマークと多くの評価を頂きました。私は、正直ここまでも大きく評価されるとは思っていなかった為、とても嬉しく感じました。
Ver1.1もリリースされ、ひとまず開発を終了させるつもりでしたが、私は「あそこまで評価されるビッグプラグインとなったのであれば、究極の進化をさせて、成功を掴み取りたい」と考えるようになりました。実はVer1.1というものは、ユーザーの意見を反映しただけのバージョンに過ぎず、自分の中では納得していませんでした。自分の思う理想の形は、
ユーザーの自由にドッキングスタイルを選択し、自由にウィンドウをドッキングできるようにすることでした。Ver1.1を利用している方の中でも同じ事を考えている方もいて、それが次なる大型アップデートであるVer 1.2の開発へと繋がったのです。
改善、掴み取った成功
Ver 1.2を作ると計画したのは良いものの、開発はとても苦戦しました。そもそもver1.0~1.1の段階でほぼ仕様が決まってしまっていたモノに対して、どのように新しい
ユーザースタイルを導入するべきか?、旧バージョンとの互換性はどうするべきか?、根本的に好きなウィンドウをドッキングさせる事が可能なのか?(理論上では可能)、領域の設定がより複雑になるのではないか?等様々な問題が山積みだったのです。テストバージョンである、snapshotをいくつか開発し、仕様そのものを変更する為、次から次へと発生するエラーとも戦いました。
また、コレはPmxEditor自身の仕様でもあり、あくまでも私が作っているのは
プラグインであり、メインは向こうで、こちらはオマケ程度の存在だった為、どこまで自分の野望を叶える事ができるかも勝負でした。いくら頑張っても、本体を超えた性能のプラグインなんてものは絶対に開発不可能であり、プラグインは本体がなければ動かない為、何度も挫折寸前になりました。そこで、以前までの旧バージョンで使った、現在開いているウィンドウを取得する方法をより深く掘り下げて、開発する事にしました。その結果、事前にどのウィンドウをどの領域に配置させるか指定して、ウィンドウが開かれたら、その領域に移動させてドッキングするという仕様になりました。
自分の野望を100%叶える事はできませんでしたが、結果的に85%は叶える事ができ、自己満足もし、更にリリース後は
266いいね、141RT、143ブックマークを超え、以前のVer1.1の2倍以上の評価をされました。私はVer1.1の頃よりも「やり切った感」を感じて、非常に嬉しいリリースとなりました。
特に、今までの仕様も備えつつ(レガシースタイル)、新たにユーザースタイルという機能として追加した為、今までのユーザーも引継ぎつつ新規に導入した方々もたくさんいました。
今までのようにエクスプローラはもちろん、新たにメモ帳と、ワークスペースのツールウィンドウも追加しました。Ver1.2で特に意識したのは、Visual Studioでした。私が普段プログラムを書いたり、プラグインを開発する時にもお世話になったVisual StudioのドッキングできるUIを意識しました。ワークスペースは実はそれの名残だったりします。
また、メモ帳のツールウィンドウを追加した事も一部では評価されました。個人的には、そこまで多く機能を追加した訳ではなく、非常にシンプルなメモ帳だが、Readmeファイルを開いたり、編集したりする時に便利だろうと考えました。
Super Windowの開発に当たり、何度も挫折しかけたり、エラーで悩まされたりする事はありましたが、やろうと思えば不可能なんてない事を改めて感じさせられました。そして、一プログラマーとしても成長できたと感じます。プログラミングを続けていて良かったなと改めて思いました。
今後も、自分が思うがままに改善し、より良いモノを作るつもりですので何卒よろしくお願い致します。