スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 長期戦になるかも | トップページ | 明日からが本番 »

更に少し進んだ

今は、MasterReversiの次バージョンの開発中で、とりあえず、現行版の文字セットがマルチバイト文字セットになっているので、Unicode文字セットに変更中だ。今日の時点でも、まだ、リソースデータには手を付けていないのだが、表示絡みの多くの変数はWCHARになった。

MasterReversiでは、色々な所で文字データが使われているのだが、ユーザーの目に見えないモノとして、ファイルの格納場所を示すパスも文字データになっている。

作者的な感覚では、パスは文字列ではあるものの、文字データではない感じがしているのだが、実際の所、OS的には文字データとして扱われる。

つまり、文字セットをマルチバイト文字セットからUnicode文字セットに変更する場合には、このパス文字列も、マルチバイト文字セットからUnicode文字セットに変更しなければならない訳なのだが、大昔からプログラミングをやっている作者的には、これには、結構な違和感がある。

何故なら、C言語では、ファイルアクセスはfopen関数を使って行うのが基本なのだが、文字セットをUnicodeに変更すると、fopen関数は使えなくなるからだ。

Windowsの場合、fopen関数が使えなくなる代わりに、_wfopen関数が使える様になるのだが、OS XだとかUbuntuでは、文字コードがUTF8であろうが、Shift-JISであろうが、ファイルのオープンにはfopenを使う。

なので、文字セットをマルチバイト文字セットからUnicode文字セットに変更する、という事は、他OSへの移植性を改悪する事も意味するので、開発者的には、甚だ迷惑な話になる。

にも関わらず、文字セットを変更したからといって、ユーザー的には何のメリットも無い訳なので、作者的には、どうしてこんな事をやらないといけないんだ? という感じになる訳だ。

その答えとしては、Visual Studio Community 2013が使えなくなるから、という事になるのだが、更に書いておくと、現行のMasterReversiはVisual Studio 2008でビルドしたのだが、現時点では、Visual Studio 2008で現行版のソースコードはビルドできなくなっている。

これは何故なのか、というと、使用するWindows SDKをVer7.1にアップしてしまったからなのだが、つまりは、Windows環境での開発というのは、開発環境ばかりではなく、SDKをアップグレードするだけでも、従来ソースをビルドできなくなる訳だ。

と、いう事で、巷では、21世紀になって15年以上だった今現在でも、20世紀にリリースされたVisual C++ 6.0が使われていたりする訳だ。

ちなみに、作者的には、現行版をビルドできないのは困りものなので、Visual Studio 2008環境用のSDKはダウングレードしようかなあ、としているのだが、今日の時点では、そのやり方は判っていない。

なので、Windows版のMasterReversiというのは、今日現在、開発者である作者がソース環境を持っているにも関わらず、ビルドできない状況に陥っている。

こういう事態を避ける為には、開発環境は固定化してアップグレードは絶対に行わない様にするか、開発環境のアップグレードの度に、ソースコードを変更していく必要がある。

世の中的には、開発環境のアップグレードに合わせてソースコードを変更する、なんて手間のかかる事はやらないのが普通なので、新しい開発環境がリリースされても、新しい機能が不要なら、普通は、まず、使われない。

にも関わらず、新しいOS用の開発には、新しい開発環境が必要になるので、開発者的には右往左往させられる訳だ。

= この記事に関連する公開中ソフト =

MasterReversi

MasterReversi

(2016/05/04追記)

« 長期戦になるかも | トップページ | 明日からが本番 »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/63318483

この記事へのトラックバック一覧です: 更に少し進んだ:

« 長期戦になるかも | トップページ | 明日からが本番 »

2017年6月
        1 2 3
4 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  

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google