kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

リリース作業は一苦労

TFSやらなんやら便利ツールが使えない開発環境です。でも、工夫で頑張ってます。SQL ServerとかPowerShell,.NET関係は自由に使えます。
今回は私とメンバーの二人で作業しています。基本的にメンバーが大半のコードを書いてます。設計するのは私。OSに依存するようなことが絡むと(たとえば現在のコードでUACをどのようにうまく回避するかとか)実装方式決めるのはできないけど、設計の大枠を書いてあげればまぁ大丈夫。ただし、ほっとくと、とんでもないモジュール構成にしてくれるので、手綱はかなり絞め気味で。
具体的にびっくりしたのはサーバーとクライアントで同じ名前のDLLを共通機能として持っています。昔はサーバーもクライアントもレジストリのHKEY_LOCAL_MACHINE配下を読み書きしていましたが、今クライアントではそんなことできません。固有のファイルに変更しました。
しかし、DLLには依存関係があって、ほかの人も呼び出します。名前はおろか、Exportsも変更することはできません。こういうのを彼はこう解決しました(実際はC++じゃありません)。

  • サーバー用のソースを作成(file1.cpp)
  • クライアント用のソースを作成(file2.cpp)
  • サーバー用の生成(file1.cpp → common.dll)
  • クライアント用のソースをリネーム(file2.cpp→file1.cpp)してから、生成(common.dll)。orz

機械でやるならともかく、手動で…。こんなんで正しくリリース作業できるかーちなみにリリース対象になるファイルはサーバーとクライアント合わせて600くらいです。今回はフルリリースなので、ちょっと多い。
長い間私しかやってなかったので、そのほかにも私しか知らないバッドノウハウがあるのですが、今までは私しかやってなかったのと、差分だけだったのでついついリリース作業の環境構築を後回しにしていました…。
今回はもう業を煮やして、SQL Serverにモジュールリストを全部入れて、リリース一覧は動的データサイトなどで見えるようにして、PowerShellでスクリプトかいて自動化を図る予定。前から何度か作りかけてはいたのですが、汎用的にしすぎて、挫折したので(^^;。
まぁ、彼にリリース作業とはどういうものか、どのような形でモジュールを構成しないと楽にならないか、まじめに手で一つ一つ比較すればいいとかありえないからとか、リリース時の評価とはどういうものかということを、ことあるごとに教えるのですが、必死に手作業でやるのは美徳だとか思っているんですかねぇ…。
ともうちょっとまともな文章を書くはずだったけど、変な話になりました。