忍者ブログ
カレンダー
09 2025/10 11
S M T W T F S
1 2 3
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
プロフィール
HN:
[-_-;] (みかん)
性別:
男性
趣味:
プログラミング、XOPS
自己紹介:
東海地方在住です。
最新コメント
[11/30 NONAME]
[11/22 NONAME]
[09/24 NONAME]
[06/10 NONAME]
[01/29 NONAME]
XOPS関連サイト「みかん箱」の運営や、OpenXOPSの開発などを行う[-_-;](みかん)のブログ。近状報告や独り言などを書きます。
Prev Month12345678910111213141516171819202122232425262728293031Next Month
基礎をおろそかにするべきではない
毎度のように話題にしているXopsAddonCreatorにも引っ掛かってくる っというより出だしは
そのままだが、XopsAddonCreatorシステムの外部データ(設定ファイルなど)は、ポイント
エディタ(XPE+)と同様に、INIファイルを採用している。
自分の中で使用実績が積んであり、中身も読みやすく編集もしやすい、Windowsの標準フォー
マットであるため読み書きするAPIも用意されている ということもあって、個人的に好きな
ファイル形式の1つである。

ただし、この標準APIのGetPrivateProfileInt()関数とWritePrivateProfileSection()関数には
最大の弱点がある。動作速度の重さだ。
これらの関数には毎度ファイル名を指定する必要があるのだが、これは毎回ファイルを開き
直していることを意味する。高速なストレージ環境だと問題ないが、古めかしいHDD上などで
かなりの数の項目数を読み込ませる場合は、致命的なほど重い。
XopsAddonCreatorも使用環境によっては起動時間の大部分を、言語ファイルとXOPSの
パラメーター設定ファイルの読み込みに要す場合もある。

開発の途中からある程度覚悟はしていたが、INIファイルの読み込み関数をフルスクラッチで
自作してしまった。 書き込み機能に関しては、ソフトウェア上でオプション設定とプリセットの
新規登録くらいにしか使っておらず、しかも項目数が少ないので効果がないと判断し作って
いない。
簡単なベンチマークを使って測定すると、手元の自分の環境で3秒近く掛かっていた読み込み
が、わずか0.01秒強で終わるようになった。当社比で300倍である。まさしく「爆速」。
 (決してこの話を主題にしたいわけではないで、詳細は割愛する)

話を本題に進める。

この自作したINIファイルの読み込み関数は、完全に自分オリジナルのアルゴリズムである。
中身はC言語による文字列操作の塊であるが、恥ずかしながら7月12日に話した通りこの
ソフトウェアの開発でここまでC/C++をやりこんでなかったら作れなかったと思う。
例えDirectXで3Dゲームを作っていても、ポインタとか文字列操作が怪しかった前の自分だと
作り上げることができなかったか、たとえ形になってもバグだらけだったと思う。
XopsAddonCreatorの開発を通して、改めてC/C++をやり直すことができて本当に良かっ
たと感じている。

基礎固めがここまで大切だったと実感したのは久しぶりだ。改めてこの時を思い出した。
効果が出るのが何年も先の話だったりするが、その何年も先には必要になるものである。
一歩踏み込んだ応用課題に取り組むには避けて通れない。
自分の独学スタイルは基礎をおろそかにしてしまうことが多い気がするが、今後はその曖昧
な知識を見つけて潰しながら(勉強し直しながら)、基礎固めをしていこうと思う。
category : 管理人の独り言 comment [2]
PR
「XopsAddonCreator」の開発 -20
今回は、XopsAddonCreatorの操作(インターフェース)の方針について書きます。
最終段階に近づいてから今頃になって書いていますが、実際には開発当初から
真っ先に考えていました。

2012年9月に少々触れましたが、今回のソフトウェアはXPE+(ポイントエディタ)
とは方針が180度違います。
XPE+は本家エディタと操作性を似せて難なく使える方針をとりましたが、
今回はあえて本家エディタのインターフェースを捨て、新たに定義しました。
本家エディタは決して使いやすいとは言えないからです。

「人の慣れ」というのは遥かに予想を超えて凄い物です。
本家のエディタが使いやすく感じるのは、単に慣れているためであって、実際に
初心者には分かりにくい操作性です。
そんな初心者バイバイなインターフェースはバッサリ切り捨てました。

本家エディタに慣れている人には新たにXopsAddonCreatorの操作に慣れて
もらう必要があります。操作性を似せたXPE+の時に比べて、スムーズに行かない
ことは想定内です。
しかし、一度慣れ直してもらう手間を考えても、XopsAddonCreatorを使ってもらう
利点は確実にあると思います。
もちろん開発側としても、(人間工学というと大げさですが)自然な操作にならない
部分は修正していかなくてはなりません。

評価・レビューをお願いした中で、インターフェース面で公式エディタとの互換機能
(互換モード)搭載の要望を頂いたのですが、上記のような検討結果を踏まえて
慎重に考えています。他にも、ソフトウェアの動作根本からひっくり返る操作・画面
変更は大変だという開発側の都合もあったり。
category : ソフト・ツール開発 comment [0]
「XopsAddonCreator」の開発 -19
結局、メイン画面のデザインはこうなりました。


(クリックで拡大)


とりあえず試作品は出来上がったので、一部の方々に評価・レビューをお願いしました。

まともに使うことすら困難なほどの深刻なバグが山ほどあったXPE+(ポイントエディタ)の
時と異なり、XopsAddonCreatorは圧倒的に安定しており信頼性が高いようです。
いくつか細かなバグ報告はあがってきていますが、使用中にソフトウェアが突然落ちる
といった致命的な不具合は報告されていません。

機能に関して追加の要望も、いくつか頂いています。
決して自分はマップやミッションを作らない訳ではないのですが、開発側から見ている
だけては盲点も多く、非常に参考にある案も沢山頂いています。
私のこだわりや技術的な問題などによって全て反映させられるわけではありませんが、
できるだけご意見を反映してくつもりです。
category : ソフト・ツール開発 comment [0]
「XopsAddonCreator」の開発 -18
疲れているので早速本題。

前回ゴタゴタ言っていたデータ管理の件ですが、迷いに迷った結果、
結局作り直しました。
時間を作ってはちょくちょくやっていたので正確な時間は分かりませんが、
おそらく計3時間くらいだったでしょうか。
「酷いコードだった」といってもある程度処理はまとめて書いていたので、
作業中はしんどい作業でしたが、終わってみると特別大変な作業では
なかった気がします。
作業ミスによって新たな不具合がいくつか生まれたけど、見つかったもの
は全て潰しました。 初コンパイル・実行の時にマップデータがまともに
表示されなかったのは、さすがに焦った。

前回話した元に戻す機能の件も含めて、確かにバグを全て洗い出せ
ソースコードの可読性も大幅に上がりましたが、データチェックを厳重に
やり過ぎたのか若干動作が重くなった気がします。
計ったわけではいので気のせいかもしれない。そう願いたい。

ポイントの検索機能は諦めました。 っと言っても最初から何も決まって
ない機能だったのだけれども。
最後の仕上げに向けて、最終のバグチェックとメイン画面のデザインの
作りこみをします。
色々な意味であまり時間がないので、結構急いでたりします。
category : ソフト・ツール開発 comment [1]
「XopsAddonCreator」の開発 -17
そろそろ夏休みですね。
学生として送れる夏休みも、残り少なくなってきましたのが寂しいです。

XopsAddonCreatorの件で、一部の方々にお願いするレビュー評価
(クローズアルファみたいなもの)を、早めることにしました。
当初の構想では、かなり一般公開できる状態の完成度にしてから
最終チェック的な位置付けでやっていただこうと考えていましたが、
開発途中で作りかけの試作品の試作品(プロトタイプ?)のレビュー
をお願いすることにします。
完成に近づける前に、開発の初期(厳密には中盤)に近い段階から
他の方々の意見を反映していった方が、結果的に良い物ができる
気がするからです。
最終チェックとしてお願いするのに比べ、作りかけの出来損ないを
お願いする形になることは、ご理解を願うしかありません。


今回は、非常にマニアックな回です。
当ブログのコメント欄にて、前から言っている「データ管理」について
ツッコミを頂いたので、自身で考えをまとめるためにも書いておこう
と思います。



category : ソフト・ツール開発 comment [1]
[53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63]

※過去のブログ記事は 原則として編集・修正していません。
 各記事の内容は投稿時のものであり、現在では異なる場合があります。
 最新の情報は、関係する内容について書かれた 最新の記事をご覧ください。

TOP