パソコンでプログラミングしよう ウィンドウズC++プログラミング環境の構築
1.6.3.6(15)
動作確認(2)

動作確認(1)以降のセットアップを動作確認する。

導入された各開発ツールのセットアップ妥当性を、動作確認(1)で作成したウィンドウズデスクトップアプリケーションDesktop1(C:\Users\user\MinGW\TestDrive\Desktop1\Desktop1.cbp)で確認する。

外部情報

セットアップ手順

  1. リポジトリの作成
  2. 動作確認用ファイルの作成と配置
  3. 国際化機能の追加
  4. ドキュメントの作成
  5. インストーラの作成
  6. マスターブランチの更新

リポジトリの作成

Git for WindowsでDesktop1のリポジトリ(プロジェクトデータの一元的な貯蔵庫)を作成する。ウィンドウズスタートメニューから[Attlassian|Sourcetree]でSourcetreeを起動し以下を行う。

  1. [File|Clone/New]で[New tab]ページを開きツールバー[Create]を押して[Create a repository]画面へ遷移する。
  2. [Browse]を押して[Select Destination Path]ダイアログを開き、Desktop1プロジェクトディレクトリ(C:\Users\user\MinGW\TestDrive\Desktop1)を選択して[フォルダーの選択]を押しダイアログを閉じる。バージョン管理システムにGitが選択されているのを確認して[Create]を押す。[Problem with destination directory]が開き既存ディレクトリにリポジトリを作成する確認を求められ[Yes]で応える。
  3. リポジトリが作成され、[Create a repository]画面から[Desktop1]ワークスペース画面へ遷移する。画面左のサイドバー[WORKSPACE|File Status]でファイルステータスを表示させ、上部ドロップダウンリストが[Pending files, sorted by file status]となっているのを確認する。管理対象となるファイルが[Unstaged files]ペインに一覧される。
  4. [Unstaged files|Stage All]を押すと管理対象ファイルは全て[Staged files]ペインへ移動する。
  5. 下部にあなたのメールアドレスが表示されている部分のテキストボックスに任意のコメント(例えば"リポジトリの作成")を入力し[Commit]を押す。
  6. サイドバー[WORKSPACE|History]でヒストリーを表示してリポジトリの作成を確認する。

リポジトリはプロジェクトディレクトリ内の.gitという隠しディレクトリとして作成される。Git-flowによるdevelopブランチを作成し、これからこのブランチでプロジェクトを改変して行く。

  1. SourcetreeでDesktop1を開き[WORKSPACE|History]を表示する。
  2. ツールバー[Git-flow]を押し、[Initialise repository for Git-flow]ダイアログを開く。デフォルト設定のまま[OK]を押すと数秒間の処理を伴いdevelopブランチが作成される。

動作確認用ファイルの作成と配置

Desktop1プロジェクトのファイル配置をまとめ、動作確認に必要な追加ファイルと動作確認により生成されるファイルを示す。追加ファイルのサンプルは追加欄からリンクする。日本語を含む追加ファイルは全て文字コードをUTF-8とする。動作確認の多くはコマンドプロンプトを用いるが、誤りを防ぐためバッチファイル化する。k_から始まるバッチファイルがそれで、属するディレクトリをカレントとして起動する。

ディレクトリ ファイル 内容 追加 生成
...\TestDrive\Desktop1 Desktop1.cbp Code::Blocksプロジェクト
Desktop1App.cpp アプリケーションクラスソースコード
Desktop1App.h アプリケーションクラスインクルード
Desktop1Frame.cpp メインウィンドウクラスソースコード
Desktop1Frame.h メインウィンドウクラスインクルード
wx_pch.h プリコンパイル対象インクルード
resource.rc ウィンドウズリソース
k_xgettext.bat xgettext実行バッチ Yes
k_msginit.bat msginit実行バッチ Yes
k_msgmerge.bat msgmerge実行バッチ Yes
k_msgfmt.bat msgfmt実行バッチ Yes
├ bin messages.pot 翻訳テンプレート Yes
││ Desktop1.chm HTMLヘルプ Yes
│├ Debug32 Desktop1.exe 32ビット実行形式デバッグ版
│├ Release32 Desktop1.exe 32ビット実行形式リリース版
│├ Debug64 Desktop1.exe 64ビット実行形式デバッグ版
│├ Release64 Desktop1.exe 64ビット実行形式リリース版
│└ ja Desktop1.po 日本語テキスト形式翻訳 Yes
Desktop1.mo 日本語バイナリ形式翻訳 Yes
├ obj
│├ Debug32 *.o 32ビットオブジェクトデバッグ版
│├ Release32 *.o 32ビットオブジェクトリリース版
│├ Debug64 *.o 64ビットオブジェクトデバッグ版
│└ Release64 *.o 64ビットオブジェクトリリース版
├ wxsmith *.wxs wxSmithリソース
├ wx_pch.h.gch *_wx_pch_h_gch プリコンパイル済みヘッダ
├ doxygen Doxyfile ソースコード解析用Doxygen設定 Yes
││ Doxyfile_winchm HTMLヘルプファイル用Doxygen設定 Yes
││ my_header.html ヘッダHTML Yes
││ my_footer.html フッタHTML Yes
││ my_customstylesheet.css カスケードスタイルシート Yes
││ my_layout.xml レイアウト Yes
││ doxygen.log ソースコード解析用ログ出力 Yes
││ doxygen_winchm.log HTMLヘルプファイル用ログ出力 Yes
││ k_doxygen.bat ソースコード解析用Doxygen実行バッチ Yes
││ k_doxygen_winchm.bat HTMLヘルプファイル用Doxygen実行バッチ Yes
│├ html index.html ソースコード解析用HTMLトップページ Yes
││ *.html, *.js, *.cssなど ソースコード解析用HTML Yes
│├ html_winchm index.html HTMLヘルプファイル用HTMLトップページ Yes
││ *.html, *.js, *.cssなど HTMLヘルプファイル用HTML Yes
││ index.hhp HTMLヘルププロジェクト Yes
││ index.hhc HTMLヘルプ目次 Yes
││ index.hhk HTMLヘルプ索引 Yes
│└ winchm mainpage_winchm.md HTMLヘルプトップページ用原稿 Yes
└ innosetup InnoSetup.iss Inno Setupスクリプト Yes
Desktop1-0.0.0.0.exe インストーラ Yes
k_innosetup.bat Inno Setup実行バッチ Yes

DoxyfileとInnoSetup.iss以外の追加ファイルはサンプルをそのままコピーして作成する。Doxyfileはそのサンプルがテンプレートファイルへの追加部分だけなので、コマンドプロンプトでテンプレートファイルを作成し末尾に追加する。

C:\Users\user>C:\msys64\mingw64\bin\doxygen -g Doxyfile

InnoSetup.issはリンク先に記述のカスタマイズが必須なので、サンプルのコピーを作成して編集する。編集は任意のエディタでも構わないが、GUID文字列を生成する必要があるのでInno Setup Compilerを用いる。

  1. ウィンドウズスタートメニュー[Inno Setup 6|Inno Setup Compiler]で起動し[Welcome]ダイアログは[Cancel]で閉じ、[File|Open]でInnoSetup.issを開く。
  2. [Tools|Generate GUID]でテキストカーソル位置にGUID文字列を生成し、これをMyAppIdに置き換える。GUID文字列の開き波括弧"{"は二重、閉じ波括弧"}"は一重である事を特に注意する。
  3. その他必要なカスタマイズを施して[File|Save]し、[File|Exit]でInno Setup Compilerを終了する。
覚え書き
GUID文字列はMSYS2のuuidgenツールでも生成できる。こちらは"UUID"と称するが"GUID"はマイクロソフトによる呼称で両者は等しい。

作成した追加ファイルを指定されたディレクトリに配置する。最後に追加ファイルを以下の手順でGit for Windowsへコミットする。

  1. SourcetreeでDesktop1を開き[WORKSPACE|File Status]を表示する。追加ファイルが[Unstaged files]に表示される。
  2. [Unstaged files|Stage All]を押し追加ファイルを全て[Staged files]へ移動する。
  3. 下部テキストボックスに任意のコメント(例えば"動作確認用ファイルの作成と配置")を入力し[Commit]を押す。
  4. [WORKSPACE|History]を表示してリポジトリの更新を確認する。

国際化機能の追加

最初に以下の手順で翻訳ファイルを作成する。最初の翻訳ファイル作成なのでmsginitを使用する。

  1. カレントディレクトリをプロジェクトディレクトリ(C:\Users\user\MinGW\TestDrive\Desktop1)としてコマンドプロンプトを開く。
  2. k_xgettext.batを実行する。binディレクトリにmessages.potが作成される。
  3. k_msginit.batを実行する。メールアドレスを問われるが真面目に答える必要はなくそのままリターンで構わない。bin\jaディレクトリにDesktop1.poが作成される。
  4. ウィンドウズスタートメニュー[Poedit]を起動し、[File|Open]でDesktop1.poを開く。
  5. 左上リストペインの選択がその下のソーステキストペインと翻訳テキストペインに示されるので、順次日本語の翻訳テキストを追加する(右サイドバーの翻訳候補を利用しても良いが無料版は一定の制限がかけられる)。
  6. [File|Save]で保存すればDesktop1.poの更新と共にDesktop1.moが作成される。[File|Exit]でPoeditを終了する。

リンクを参考にソースコードを修正して動作確認する。

  1. Code::Blocksを起動し[File|Open]でTestDriveワークスペース(C:\Users\user\MinGW\TestDrive\TestDrive.workspace)を開く。[Management]ウィンドウ[Projects]ページで[Desktop1]ノードをダブルクリックしてDesktop1プロジェクトをアクティブにする。
  2. [Projects]ページの[TestDrive|Desktop1|Sources|Desktop1App.cpp]ノードと[TestDrive|Desktop1|Headers|Desktop1App.h]ノードをダブルクリックしてDesktop1App.hとDesktop1App.cppをエディタに読み込む。
  3. Desktop1App.hDesktop1App.cppに修正を加え、[File|Save everything]で保存する。
  4. [Build|Select target|Dubug32]を選び[Build|Build and run]でビルドしてアプリケーションを実行し、日本語表示となるのを確認する。これを他のターゲット(Release32、Debug64、Release64)で繰り返す。

最後にファイル追加と変更をGit for Windowsにコミットする。

  1. SourcetreeでDesktop1を開き[WORKSPACE|File Status]を表示する。追加ファイルと変更されたファイルが[Unstaged files]に表示される。
  2. [Unstaged files|Stage All]を押し全て[Staged files]へ移動する。
  3. 下部テキストボックスに任意のコメント(例えば"国際化機能の追加")を入力し[Commit]を押す。
  4. [WORKSPACE|History]を表示してリポジトリの更新を確認する。

ドキュメントの作成

最初にDesktop1にHTMLヘルプファイルを表示する[Help|Help]メニュー項目(翻訳後は恐らく[ヘルプ|ヘルプ]メニュー項目)を追加する。

  1. Code::BlocksでDesktop1プロジェクトを開く。
  2. [Management]ウィンドウ[Project]ページ[...|Desktop1|Resources|wxsmith|Desktop1Frame.wxs]ノードをダブルクリックしてwxSmithエディタにDesktop1Frameのwxsリソースを読み込ませる。
  3. wxSmithエディタ上部ツールホルダーパネルのメニューバー(wxMenuBar)アイコンをダブルクリックして[MenuBar editor]ダイアログを開く。[Content]の[Help|About]を選択して[Options|New]を押し、New Menuという新たなメニュー項目を作成する。そのまま[Options|^]ボタンを押して[...|About]ノードより上に移動する。[OK]を押してダイアログを閉じる。
  4. [Management]ウィンドウ[Resources]ページ(wxSmithリソースマネージャ)のツリービューで[...|wxMenuBar:ManuBar1|Help|New Menu]ノードを選択する。ツリービュー下のプロパティエディタで以下のプロパティを変更する。
    プロパティ
    Label Help
    Help text Show help file of this application
    Is member チェックを外す
    Identifier idMenuHelp
  5. プロパティエディタ上部の"{}"をクリックしてイベントエディタに切り替え、EVT_MENUを選択すると現れるドロップダウンリストから-- Add new handler --を選択する。[New handler]ダイアログが開き新しいハンドラ名としてOnHelpを入力して[OK]でダイアログを閉じる。Desktop1Frameクラスのメンバ関数としてOnHelpが追加される。
  6. [File|Save everything]で修正を保存する。

新たな文字列が追加されたので翻訳ファイルを更新する。既に存在する翻訳ファイルの更新なのでmsginitでなくmsgmergeを使用する。

  1. カレントディレクトリをプロジェクトディレクトリとしてコマンドプロンプトを開く。
  2. k_xgettext.batを実行し、messages.potを作成する。
  3. k_msgmerge.batを実行し、Desktop1.poに変更を反映させる。
  4. PoeditでDesktop1.poを開く。新たに追加された文字列(Show help file of this application)には曖昧な候補翻訳文字列が割り当てられているが、これを修正して保存する。Desktop.moも自動更新される。

リンクを参考にソースコードを修正する。

  1. Code::BlocksでDesktop1プロジェクトを開き、エディタでDesktop1Frame.hとDesktop1Frame.cppを開く。
  2. Desktop1Frame.hDesktop1Frame.cppに修正を加え、[File|Save everything]で保存する。
  3. 全てのターゲット(Debug32、Release32、Debug64、Release64)で[Build|Build and run]で動作確認する。HTMLヘルプファイルはまだ用意されていないので[ヘルプ|ヘルプ]は何もしない。

次にソースコード解析ドキュメントを作成する。

  1. カレントディレクトリをdoxygenディレクトリ(C:\Users\user\MinGW\TestDrive\Desktop1\doxygen)としてコマンドプロンプトを開く。
  2. k_doxygen.batを実行する。doxygen\htmlディレクトリにソースコード解析ドキュメントがHTML形式で作成される。
  3. 任意のブラウザでソースコード解析ドキュメントトップページ(doxygen\html\index.html)を読み込み内容を確認する。

HTMLヘルプファイルは以下のように作成する。

  1. カレントディレクトリをdoxygenディレクトリとしてコマンドプロンプトを開く。
  2. k_doxygen_winchm.batを実行する。
    • doxygen\html_winchmディレクトリにヘルプファイル内容がシフトJIS文字コードのHTML形式で作成される。
    • binディレクトリにHTMLヘルプファイル(Desktop1.chm)が作成される。
  3. 先に修正ビルドされたDesktop1.exeを起動し[ヘルプ|ヘルプ]を実行する。HTMLヘルプファイルが表示される。

最後にこれらの変更を任意のコメント(例えば"ドキュメントの作成")でGit for Windowsにコミットする。

インストーラの作成

最初にインストーラを作成する。

  1. カレントディレクトリをinnosetupディレクトリ(C:\Users\user\MinGW\TestDrive\Desktop1\innosetup)としてコマンドプロンプトを開く。
  2. k_innosetup.batを実行する。innosetupディレクトリにインストーラ(Deskop1-0.0.0.0.exe)が作成される。

インストーラを実行する。

  1. Desktop1-0.0.0.0.exeを実行する。インストール先とスタートメニューフォルダーの指定をデフォルトのままにセットアップする。
  2. セットアップ最後にDesktop1を実行する。Desktop1が日本語表示で起動し、[ヘルプ|ヘルプ]がHTMLヘルプファイルを表示する事を確認する。
  3. カスタマイズに従い作成されたプログラムファイルディレクトリにファイルがコピーされ、スタートメニューとレジストリキーが作成されている事を確認する。

アンインストールを実行する。

  1. ウィンドウズスタートメニューから[設定|アプリ|アプリと機能]を開き、Desktop1バージョン0.0.0.0をアンインストールする。
  2. インストーラの作成したプログラムファイルディレクトリ、スタートメニュー、レジストリキーが削除されているのを確認する。

Git for Windowsが管理対象とするファイルで変更されたものは無いはずなのでコミットしない(できない)。何らかの理由で変更した場合はコミットする必要があるが、Sourcetreeの[WORKSPACE|File Status]の[Commit options]ドロップダウンリストでAmend latest commitを選ぶと開く[Replace commit text?]ダイアログに[Yes]で応えれば直前コミットのコメントが表示され、これで[Commit]を押せば直前コミットに変更を追加する事ができる。

マスターブランチの更新

ここまでで開発が一区切りついたとしてmasterブランチにdevelopブランチをマージする。作業前にGit for Windowsが管理対象としているファイルを読み込んでいるアプリケーション(Code::Blocksなど)は念のため全て閉じる。

  1. SourcetreeでDesktop1の[WORKSPACE|History]を開く。サイドバー[BRANCHES|master]をダブルクリックしてmasterブランチをチェックアウトする。Git for Windows管理対象ファイルは全てmasterブランチの状態に戻る。
  2. そのまま[Repository|Merge]を実行し、[Pick a commit to merge into your current branch]ダイアログでdevelopブランチを選択して[OK]を押す。masterブランチにdevelopブランチがマージされ、両者は同じコミットを共有する。
  3. このままではカレントブランチがmasterのままなので、サイドバー[BRANCHES|develop]をダブルクリックしてカレントブランチをdevelopに戻す。