2012年1月アーカイブ

開発環境を考える

| コメント(0) | トラックバック(0)   このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

では退路を確保したところで、冒険に出てみよう。(←大げさな)

このカテゴリでの条件は、先述のとおり次の3つである。
・無料で準備できる
・ゲーム用のライブラリを使わない
・ランタイムを必要としない

また、作成したものを配布するためには、ライセンスを考慮する必要がある。
ライセンスといっても様々であるが、端的に言えば
「作成した実行ファイルを配布しても法律上・社会通念上、問題にならない」ようなものであればOKだ。

気を付けなければならないのは、GPLライセンスのように、
「そのライブラリを用いて作成したソフトウェアは、ソースコードを含めて公開しなければならない」ような
厳しいライブラリを使用してしまうと、
ソースコードを非公開としたいソフトを作ることができなくなってしまうことだ。
(厳密にはやや異なるかも。解釈が難しいライセンスなので)

一般的には、有償の開発環境で開発したソフトウェアは、
(条件付きの場合もあるが)ソースコードを非公開として配布することができる。
無償の開発環境でこの条件に合致するものは、実は数えるほどしかない。

有償・無償を区別せず、昨今のC++言語用開発環境をまとめてみよう。

No.開発環境名有償/無償開発したソフトの配布64bit対応(開発側)64bit対応(動作側)認知度
1Microsoft Visual C++両方あり(※1)対応対応(※2)
2Embarcadero C++ Builder有償対応対応(※3)
3Borland C++ Compiler無償非対応(※4)非対応
4MinGW無償対応対応
5Qt両方あり(※5)(※5)不明不明不明

※1:
 Visual C++ Expressは無償。インストール後30日以内に製品の登録が必要。

※2:
 Visual C++ Express単体では64bitアプリケーションを開発できないため、
 Windows SDKと合わせて利用する。こちらも無償。

※3:
 エディションによる。高価なエディションほど(以下略)

※4:
 64bit環境で動作しないとされているのは、提供元が動作を保証していないという意味で、
 実際には動作する可能性もある。(未検証)

※5:
 製品ライセンスは有償。オープンソース版は無償。
 オープンソース版はLGPLライセンスのため、条件により開発したソフトのソースコードも公開する必要あり。


64bit対応(開発側)とは、64bitのOSで開発環境が動作するということ。
64bit対応(動作側)とは、64bitアプリケーションが開発できるかということ。

なぜ「認知度」なんて項目があるか?
そりゃ、困ったときにググればどれほど頼りになる情報が手に入るか(ry

そんなわけで。
無償で入手できて、開発したソフトをライセンスを気にせず公開できて、
64bit対応なのは、VC++とMinGWくらい。

ググった感じではVC++派が多そうな気がするんだが、
なんとなく個人的にMSのお世話になりたくないので(Windows使ってる時点で世話になってるけど)
・まずMinGWでチャレンジ
・どうしようもなくなったらVC++のお世話になるかも
くらいの気持ちで行こうかな。

では次回から開発環境を準備してみよう。

まず退路を確保する

| コメント(0) | トラックバック(0)   このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

何やってんだかと思わないでもないが、
64bit C++での開発が頓挫した場合の手段を講じておく。
そうしておかないと、頓挫した際に新作のプログラムを用意できないから。

で、今まで書いたことがなかったかもしれないが、
「えすてぃ」以降の作品は、すべてBorland C++ Builder6 (Professional Edition)で作成している。
(以下BCB6と略す)
BCB6はWindows XPには対応しているが、Windows VistaやWindows 7には公式には対応していない。
そしてBCB6は発売から10年ほど経過し、すでに発売した会社もなくなっている。
※厳密には、売却やら買収やらで残った会社が後継のソフトを販売しているが、
 本カテゴリのポリシーに従い、それに頼るのは最後の手段とする。

公式には対応していなくてもいいから、使用できないか試してみた。
その手順を記す。


1.管理者権限を持つユーザーで、プロダクトCDからインストールする。
  標準インストールでは、"C:\Program Files (x86)\Borland\CBuilder6"にインストールされる。
2.メーカーのWebサイトから、最新版(と言っても公開されたのは9年近く前だが)の
  アップデートを入手し、インストールする。
3.ショートカット「すべてのプログラム」→「Borland C++ Builder 6」→「C++ Builder 6」で起動する。

起動すると、次のエラーダイアログが表示された。


'C:\Program Files (x86)\Borland\CBuilder6\Bin\bcb.$$$' から 'C:\Program Files (x86)\Borland\CBuilder6\Bin\bcb.dro' に変更できません.

エラーダイアログが表示されるが、ソフトそのものは起動する。

でも起動の都度エラーダイアログが表示されるのも目障りだ。
調べてみると、どうもUAC(ユーザーアカウント制御)が原因らしい。
3.のショートカットの実体は"C:\Program Files (x86)\Borland\CBuilder6\Bin\bcb.exe"なので、
このプログラムのプロパティを開き、互換性タブで「管理者として実行」にチェックを入れる。

bcb1.png

再度起動してみると、
起動時にUACの確認ダイアログ(このプログラムを起動してよいか尋ねられる)が表示されるが、
先ほどのエラーダイアログは表示されなかった。


次に、既存の作品のプロジェクトファイルをダブルクリックしてBCB6を起動してみる。
従来なら、拡張子.bprが関連付けられているため、ダブルクリックするだけで
BCB6が起動し、そのプロジェクトが開かれるのだが...。


プログラムにコマンドを送信しているときにエラーが発生しました。

またエラーダイアログだ。
一応ソフトは起動するが、プロジェクトは開かれない。
その状態で再度bprファイルをダブルクリックするか、
BCB6のメニューで「ファイル」→「プロジェクトを開く」でbprファイルを選択すれば、
プロジェクトを開くことができた。


どうやらこのエラーはBCB6に限ったものではなく、
アプリケーションのデータファイルから起動すると発生するもののようだ。
Web上でよく見られたのは、Excelのxlsファイルをダブルクリックしたら表示された等々。

このエラーもUACに関係するものらしく、方々のWebサイトでは
先述の互換性タブにて「管理者として実行」をチェックするとか、しないとか、
互換モードでWindows XP(SP3)に変更するとか、しないとか、
統一されていなかった。
どうもケースバイケースらしい。
※他にも、ウィルス対策ソフトを止めたらエラーが表示されなかった、等

こちらで試してみたところ、次の結果だった。
・管理者として実行ON+WinXP互換モードON→エラー
・管理者として実行OFF+WinXP互換モードON→エラー
・管理者として実行ON+WinXP互換モードOFF→エラー
・管理者として実行OFF+WinXP互換モードOFF→エラー
つまり、結局エラーが出たということ。


他のアプローチとして、
assocコマンドとftypeコマンドで関連付けを変えることを考える。
まず、コマンドプロンプトを管理者権限で起動し、次のコマンドで確認した。

> assoc .bpr
.bpr=BCBProject
> ftype BCBProject
BCBProject=C:\Program Files (x86)\Borland\CBuilder6\Bin\bcb.exe /np

bcb.exeのオプション/npは、起動時に新規プロジェクトを開かないようにするらしい。
次のように、コマンドプロンプト上で直接コマンドを入力して起動すると、
エラーなく起動し、プロジェクトも開かれた。
"C:\Program Files (x86)\Borland\CBuilder6\Bin\bcb.exe" D:\xxx.bpr

次に、ftypeコマンドでBCBProjectの関連付けを変更してみた。

> ftype BCBProject=C:Program Files (x86)\Borland\CBuilder6\Bin\bcb.exe %1
BCBProject=C:\Program Files (x86)\Borland\CBuilder6\Bin\bcb.exe %1

その後、
・コマンドプロンプトからbprファイルを実行→エラー変わらず
・bprファイルをエクスプローラ上でダブルクリック→エラー変わらず
やっぱりエラーが表示される。
exeファイルのフルパスや%1をダブルクォートで括っても、結果は同じ。

対処法が他に思い当たらないし、起動しないわけではないことが分かったので、これで良しとする。
少なくともショートカットからBCB6を起動し、その後メニューからプロジェクトを開けば使えるのだから。

試していないが、BCB6をC:\Program Files (x86)\以下にインストールすると
UACの対象となり、正常に動作しないかもしれないので、他のフォルダにインストールする方がいいかもしれない。


プロジェクトを開けたところで、再構築(フルビルド)を行う。
旧PCでは結構時間がかかった再構築が、あっという間に終了。
実行ファイルが生成され、起動してみたが特に問題はなかった。

64bit Windows7でC++プログラムを書く

| コメント(0) | トラックバック(0)   このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

以前の記事
パソコンを買い替えたら開発環境をどうしよう?なんてことを書いたわけだが、
つい先日パソコンを買い替え、開発環境で悩むこととなった。

さてどうしよう。
64bit Windows用の開発環境製品を購入すれば解決なのだが、それではプログラマとして面白くない。
よって、それは最後の手段にして、とりあえずタダでできるところまでやってみようか。

まずは目標を立てよう。
当サークルの「アドベンチャーゲーム設計論」で作成したサンプルを
64bit Windows7 でC++言語を用いて作成する。
そのために検証用のサンプルプログラムを作成し、試行錯誤することを繰り返す。

期間は...特に設けない。
自分が飽きるか、技術的に無理だと分かったところで終了とする。
願わくば、前者とならないことを祈るばかりだ。後者も嫌だが。

次に制約事項を考える。

1.費用をかけない
 先述のとおり、とりあえずタダでできる範囲でやってみたい。
 (値段の差はあるだろうが)ソフトや書籍を買うくらいなら、開発環境を買えば終わりだからだ。

2.無償のツール類を使わない
 と書くと語弊が生じそうだが、ここでのツール類とは
 いわゆるツクール系のソフトや、ゲーム開発支援用の各種ライブラリを指す。
 これらは使わない。使ったら負けだ(意味不明)。
 逆に、汎用ソフト向けに公開されているライブラリは使用することもあるであろう。

3.何かのランタイム上で動作させるソフトにしない
 汎用ソフト向けとはいえ、.NET FrameworkやJava VM上で動作させるソフトにはしない。
 最近のWindows7なら.NET Frameworkはインストール済みのようであるが、
 細かいバージョンの差異によって、作成したソフトが動作しないことはあるだろうし、
 かと言って動作するランタイムごと配布するのはPCのシステム設定を変えてしまう。
 これは利用者にとって二の足を踏むだろうから、避けたい。
 律儀にWin32API(Win64API?)を利用して開発していきたいと思う。
 

ここまで書いてみて、目標を達成することは
茨の道
であろうと思う。いや間違いなく。
ここまで書いただけで嫌になりそうだ。

まぁ頑張ってみよう。所詮は自己満足なのだから。

SyntaxHighlighter導入

| コメント(0) | トラックバック(0)   このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

そのうちソースコードを掲載することもあるだろうから、
その際、見栄えがよくなるようにSyntaxHighlighterを導入。
最初はMovable Typeのプラグインかと思っていたけど、ブログ以外にも導入できそうなので、
プラグインというよりライブラリという方が合っているかも。

使うとこんな感じ。

<C++の場合>

#include <stdio.h>
 
int main()
{
    printf("Hello World!\n");
}

<Javaの場合>

import java.util.*;
 
public class Sample {
 
    public static void main(String[] args)
    {
        System.out.println("Hello World!");
    }
}

※見栄え確認のため、使用していないjava.utilパッケージを敢えてインポートしています。

一見、ちゃんと動作しているように見えるが、
これだけ表示させるのに結構ハマった。

使い方としては、ソースコードをpreタグで括ればよいだけなのだが、
Movable Typeの仕様なのか、記事作成時に「空行を変換」フォーマットを用いると、
ソースコードの装飾内に改行タグが表示されてしまう。

<こんな感じ>

import java.util.*;

public class Sample {

public static void main(String[] args)
{
System.out.println("Hello World!");
}
}

方々のサイトを見て回った結果、preタグ内では次のルール(?)が必要らしいことが判明。
・&,<,>はエスケープすること(&→&amp;, <→&lt;, >→&gt;)
・改行コードを2回連続で入れてはいけない。

特に後者が困った。
XMLならまだしも、C++やJavaでは、ソースコード内に空行を入れることは
見栄え上よくあるから。

回避策としては、何とも情けないものだが、
「空行を作らない(半角スペースなど、一見分からない文字を入れて誤魔化す)」
くらいか。

「空行を変換」フォーマットを使用せず、プレーンテキストで頑張ってタグを書くという方法もあるが、
これはあまりにタルい。

ソーシャルボタン設置

| コメント(0) | トラックバック(0)   このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

次のソーシャルボタンを設置しました。

・Facebook
・Google +1
・はてなブックマーク
・Twitter

mixiのボタンは、登録が必要(しかも個人情報まで入力させられる)のでパス。
各記事に対してボタンが表示されるようにしてみたのですが、
トップページで記事一覧が表示されると、結構ボタンの表示が多くてウザいですねorz

何よりも、

今更ブログ

| コメント(0) | トラックバック(0)   このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

やれTwitterだのFacebookだのと
ソーシャルネットワーク全盛なこのタイミングで
今更ながらスタッフ日誌をブログ化しました。

しばらくはいろいろいじくります。
テンプレート変えたり、いろいろカスタマイズしたいので。

従前のスタッフ日誌の内容はこちらに移行しました。
タイトルをつける仕組みを設けていなかったので、移行した記事のタイトルは空です。