Tera Term 開発者向け

  1. 開発環境・ライブラリ
    1. コンパイラ・ツール
    2. 使用しているライブラリ
  2. ビルドする
    1. 環境構築
    2. ビルド手順
      1. ソースコードのチェックアウト
      2. ライブラリのビルド
      3. Tera Termのビルド
      4. TTSSHのビルド
      5. TTProxyのビルド
      6. TTXKanjiMenuのビルド
      7. TTXSamplesのビルド
      8. TeraTerm Menuのビルド
      9. CygTerm+のビルド
      10. ヘルプファイルのビルド
  3. 開発作業メモ
    1. TERATERM.INI への項目追加
    2. メニューID追加時の命名規則
    3. マクロコマンド追加時の作業リスト
    4. アイコン
    5. 言語ファイル編集時の注意
  4. リリースの手順
    1. リリース作業の開始からRC作成まで
    2. RC作成からリリースまで
    3. リリース作業
    4. コードフリーズについて

開発環境・ライブラリ

コンパイラ・ツール

Tera Term Project でリリースに使用しているコンパイラは以下の通りです。

Tera Term は以下のコンパイラでもビルドできます。

ビルドに必要なツールは以下の通りです。

ライブラリ

ビルド

環境構築

ビルド手順

ソースコードのチェックアウト

ソースコードをOSDN(http://svn.osdn.net/svnroot/ttssh2/branches/4-stable/)からチェックアウトします。
プロジェクトメンバは svn+ssh://<username>@svn.osdn.net/svnroot/ttssh2/branches/4-stable/ または https://svn.osdn.net/svnroot/ttssh2/branches/4-stable/ からチェックアウトします。

ライブラリのビルド

"Visual Studio 2005 コマンド プロンプト" を立ち上げるか、適切な PATH を通しておく必要があります。
* の bat を個別に実行するかわりに、libs\buildall.bat を実行することでまとめてビルドすることができます。

Tera Termのビルド

  1. teraterm\ttermpro.sln をVisual Studioで開く。
    .slnファイルの改行コードが"LF"になっていると、Visual Studioが起動しないので注意願います。
  2. ソリューションをビルドする。
  3. ビルドに成功すると teraterm\Debug / teraterm\Release ディレクトリに実行プログラムが生成される。

TTSSHのビルド

あらかじめ teraterm\ttermpro.sln によって ttpcmn.dll (ttpcmn.lib) がビルドされている必要があります。
  1. ttssh2\ttssh.sln をVisual Studioで開く。
  2. ソリューションをビルドする。
  3. ビルドに成功すると ttssh2\ttxssh\Debug / ttssh2\ttxssh\Release ディレクトリにDLLが生成される。

TTProxyのビルド

あらかじめ teraterm\ttermpro.sln によって ttpcmn.dll (ttpcmn.lib) がビルドされている必要があります。
  1. TTProxy\TTProxy.sln をVisual Studioで開く。
  2. ソリューションをビルドする。
  3. ビルドに成功すると TTProxy\Debug / TTProxy\Release ディレクトリにDLLが生成される。

TTXKanjiMenuのビルド

あらかじめ teraterm\ttermpro.sln によって ttpcmn.dll (ttpcmn.lib) がビルドされている必要があります。
  1. TTXKanjiMenu\ttxkanjimenu.sln をVisual Studioで開く。
  2. ソリューションをビルドする。
  3. ビルドに成功すると TTXKanjiMenu\Debug / TTXKanjiMenu\Release ディレクトリに ttxkanjimenu.dll が生成される。

TTXSamplesのビルド

リポジトリのTTXSamplesに Tera Term Extension (TTX)のサンプルがあります。TTXを作る際の参考にしてください。

あらかじめ teraterm\ttermpro.sln によって ttpcmn.dll (ttpcmn.lib) がビルドされている必要があります。
  1. TTXSamples\TTXSamples.sln をVisual Studioで開く。
  2. ソリューションをビルドする。
  3. ビルドに成功すると TTXSamples\Debug / TTXSamples\Release ディレクトリにDLLが生成される。

各TTXの詳細については、プロジェクト内のReadMe-ja.txtを参照してください。

TeraTerm Menuのビルド

  1. ttpmenu\ttpmenu.sln をVisual Studioで開く。
  2. ソリューションをビルドする。
  3. ビルドに成功すると ttpmenu\Debug / ttpmenu\Release ディレクトリに ttpmenu.exe が生成される。

CygTerm+のビルド

  1. Cygwinのシェルを起動し、cygterm ディレクトリへ移動する。
    # cd cygterm
    
  2. CygTerm+をコンパイルする。
    # make
    
  3. cygterm.exe, cyglaunch.exe が生成される。

ヘルプファイルのビルド

  1. doc\makechm.bat を実行する。

開発作業メモ

TERATERM.INI への項目追加

項目名
すでに EnableFoo... や DisableBar... が混在してしまっているが、混乱しやすい。
今後は Baz... という形式にするのが望ましい。

1桁目は 5
2桁目は
  Tera Term VT ウィンドウなら  0
  Tera Term TEK ウィンドウなら 1
  TTSSH なら                   2
  TTProxy なら                 3
  TTXKanjiMenu なら            4
3桁目は
  [File] メニューなら          1
  [Edit] メニューなら          2
  [Setup] メニューなら         3
  [Control] メニューなら       4
  [Window] メニューなら        8
  [Help] メニューなら          9

例:File配下にTTSSHのメニューを追加する

#define ID_SSHSCPMENU       52110

マクロコマンド追加時の作業リスト

Tera Termマクロを新設するときの作業手順について、以下に示します。

アイコン

アイコンファイルには、4bit の 32px, 16px 画像、32bit の 256px, 48px, 32px, 16px 画像を含めます。
各アイコンファイルには以下の種類の画像が含まれています。
Visual Studio 2005 は PNG 画像が含まれたアイコンをサポートしていません。

T (Tera Term)
icon file icon name 4bit 32px4bit 16px32bit 256px32bit 48px32bit 32px32bit 16px
teraterm\common\teraterm.ico TTERM (Default)BMP BMP BMP BMP BMP BMP
teraterm\common\teraterm_classic.icoTTERM_CLASSIC BMP BMP - - - -
teraterm\common\teraterm_3d.ico TTERM_3D BMP BMP BMP BMP BMP BMP
VT (VT Window)
icon file icon name 4bit 32px4bit 16px32bit 256px32bit 48px32bit 32px32bit 16px
teraterm\common\vt.ico VT (Default)BMP BMP BMP BMP BMP BMP
teraterm\common\vt_classic.icoVT_CLASSIC BMP BMP - - - -
teraterm\common\vt_3d.ico VT_3D BMP BMP BMP BMP BMP BMP
TEK (TEK Windows)
icon file icon name4bit 32px4bit 16px32bit 256px32bit 48px32bit 32px32bit 16px
teraterm\common\tek.icoTEK BMP BMP - - - -
M (Macro)
icon file icon name4bit 32px4bit 16px32bit 256px32bit 48px32bit 32px32bit 16px
teraterm\ttpmacro\ttmacro.ico - BMP BMP BMP BMP BMP BMP
teraterm\ttpmacro\ttmacro_3d.ico - BMP BMP BMP BMP BMP BMP
keycode
icon file icon name4bit 32px4bit 16px32bit 256px32bit 48px32bit 32px32bit 16px
teraterm\keycode\keycode.ico- BMP BMP - BMP - -
TTSSH
icon file icon name 4bit 32px4bit 16px32bit 256px32bit 48px32bit 32px32bit 16px
teraterm\ttpmacro\ttsecure.ico flat (Default) BMP BMP BMP BMP BMP BMP
teraterm\ttpmacro\ttsecure_classic.icoclassic BMP BMP - - - -
teraterm\ttpmacro\ttsecure_yellow.ico yellow BMP BMP BMP BMP BMP BMP
teraterm\ttpmacro\ttsecure_green.ico green BMP BMP BMP BMP BMP BMP
TeraTerm Menu
icon file icon name 4bit 32px4bit 16px32bit 256px32bit 48px32bit 32px32bit 16px
ttpmenu\teraterm.ico- BMP BMP - BMP BMP BMP
Cygterm+
icon file icon name 4bit 32px4bit 16px32bit 256px32bit 48px32bit 32px32bit 16px
cygwin\cygterm\cygterm.icoCYGTERM BMP BMP - BMP BMP BMP

アイコンファイルへの画像の格納順は「ビット数が小さい順、サイズが大きい順」とします。
そうでないと、プログラムがサイズを指定せずに「最大サイズの画像」を取得しようとしたときに「最初の画像」が取り出されるためです。

アイコンファイルには 4bit 画像を含めます。
Windows NT 4.0 は 4bit アイコンのみサポートしているためです。また、Windows 2000 の通知領域も 4bit アイコンのみサポートしています。
4bit アイコンには以下の色が使用できます。

  #000000(0,0,0)
  #800000(128,0,0)
  #ff0000(255,0,0)
  #ff00ff(255,0,255)
  #008080(0,128,128)
  #008000(0,128,0)
  #00ff00(0,255,0)
  #00ffff(0,255,255)
  #000080(0,0,128)
  #800080(128,0,128)
  #0000ff(0,0,255)
  #c0c0c0(192,192,192)
  #808080(128,128,128)
  #808000(128,128,0)
  #ffff00(255,255,0)
  #ffffff255,255,255

アイコン用画像のソースファイルは以下に格納されています。

source file bit T VT Macro SSH Cygwin
teraterm\common\flat_icon_16.psd 4bit v v v v v
32bit v v v v v
teraterm\common\flat_icon_32.psd 4bit v v v v v
32bit v v v v v
teraterm\common\flat_icon_48.psd 32bit v v v v v
teraterm\common\flat_icon_256.psd 32bit v v v v -
source file bit Keycode
teraterm\common\keycode_48.psd 4bit v

言語ファイル編集時の注意

言語ファイル(installer\release\lang\*.lng)は多言語対応エディタ(vim, EmEditor, Notepad++等)で編集してください。

リリースの手順

TeraTerm Project でのリリース手順について以下に示します。

リリース作業の開始からRC作成まで

  1. チケット、ブランチなどを確認する
  2. ツール、ライブラリ、インポート元の最新版をチェックする

    リリースに使うバージョンはこの時点でおおむね決定する。

  3. 今回のリリースに入れたいものが落ち着く

RC作成からリリースまで

  1. ドキュメントを確認する
  2. バージョンを一つインクリメントする

    一般にテストを呼びかけ、旧バージョンとの同時実行が考えられるため、このタイミングとする(例: TT_FILEMAPNAME 定義 など)。

    CygTerm+ は例外で、リリースとは関係なくバージョンが上がる。
    修正がコミットされると即リリース扱いになり、リリース日はその日付となる。そのため、修正・バージョンのインクリメント・変更履歴を同時にコミットする。
    これはコンパイラの入手が容易なため。

  3. この年における最初のリリースの場合は、著作権表示の「最後の発行の年」をインクリメントする
  4. 64bit Cygwin バイナリを差し替える

    前回のリリースから CygTerm+ に変更がある場合は、64bit Cygwinでビルドした cygterm\cygterm+-x86_64\cygterm.exe をコミットする。
    ソース修正をコミットするときに、同時にバイナリがコミットされていれば、リリース時にこの工程を行う必要はない。

  5. インストーラを作成する
  6. サポートされている全 OS でインストーラの実行、起動、接続をチェックする
  7. OSDN のリリース物件に追加する
  8. RCの作成をアナウンスする
  9. フィードバックを受け入れる

    修正が入ったら再度「ドキュメントを確認する」「サポートされている全 OS で起動・接続チェックする」

リリース作業

  1. ドキュメントを確認する (詳細は同上)
  2. リリース日を変更する
  3. インストーラを作成する
  4. この状態でコミットする
  5. SVN のタグを作成する
    タグ名は「teraterm-バージョン」。(例: v4.106ならば"teraterm-4_106")
    svn copy -m "Release 4.106" \
        svn+ssh://svn.osdn.net/svnroot/ttssh2/branches/4-stable \
        svn+ssh://svn.osdn.net/svnroot/ttssh2/tags/teraterm-4_106
        
  6. リリース用のタグでチェックアウトし直す

    SVN のリビジョン以外のすべてが、開発ブランチと同じ状態になる

  7. インストーラを作成する
  8. OSDN を更新する
  9. プロジェクトページ (https://ttssh2.osdn.jp) を更新する

    更新のしかたは プロジェクトページの更新手順 を参照

  10. リリースをアナウンスする
  11. 開発ブランチの teraterm.iss を戻し、コミットする
    - ;#define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', '');
    + #define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', '');
    
      [_ISToolPreCompile]
      Name: makechm.bat
    - ;Name: build.bat
    - Name: build.bat; Parameters: rebuild
    + Name: build.bat
    + ;Name: build.bat; Parameters: rebuild
      
      [_ISToolPostCompile]
    - Name: makearchive.bat; Parameters: release
    + ;Name: makearchive.bat; Parameters: release
        
  12. Chocolatey の登録を更新する

コードフリーズについて

コードフリース中は、原則的には致命的なバグの修正のみ可能となります。
コードフリーズは、RC作成(開発ブランチ で teraterm.iss に RC を付けるコミット)からリリース(開発ブランチの teraterm.iss を戻すコミット)までとします。