kkamegawa's weblog

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

RedGate ReadyRollで継続的インテグレーションするときの注意点

ReadyRoll Core

Visual Studio 2017 Enterpriseには、RedGate社のReadyRollという、SQL Serverに対して構成の履歴や差分を比較するためのツールが付属しています(Proにはついていません)。フルライセンスはOracleに対応したり、より高度なことができるのですが、Visual Studio 2017にはCoreエディションという機能制限版となっています。

blogs.msdn.microsoft.com

SSDTと何が違うの?ということですが、FAQに載っています。

www.red-gate.com

SSDTはステートベース、ReadyRollはマイグレーションファースト、という説明で方向性が違う…らしいです。まだ私も使いこんでないので、ありがたい状況がよくわかってません。誤解を恐れずに言えば、EntityFrameworkのマイグレーションと同じことができると。単純なシナリオならSSDTでも問題ない、と書いていますね。

Octopus Deployと組み合わせることにより、複数のデータベースへのデプロイ、ロールバックも対応しています。

www.red-gate.com

Proバージョン

Visual Studio 2017に付属しているのはCore Editionなので、機能が結構制限されています。制限されているリスト(上のURLにも載っています)。

  • Work quickly and efficiently with code-based objects e.g. stored procedures (Programmable Objects feature)
  • Offline Schema Model for object-level history
  • Include static data alongside schema changes
  • Customize schema and data comparison options
  • Customize schema comparison filters
  • Generate a diff report of database changes
  • Generate a schema drift report
  • Generate a schema drift correction script
  • Easy deployment of CLR database objects
  • Visual Studio 2012/2013/2015 All Edition Support

VS Enterpriseで試してよさそうなら使ってみてもいいと思います。

継続的インテグレーション時の注意点

Visual Studio単体でビルド&デプロイするときはいいのですが、VSTSやTFSなどで継続的インテグレーションを実行するとエラーになります。

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\ReadyRoll\ReadyRoll.Data.Schema.SSDT.targets(145,5): Error : An error occurred while attempting to verify your deployment scripts: A connection was successfully established with the server, but then an error occurred during the login process. (provider: Named Pipes Provider, error: 0 - No process is on the other end of the pipe.)

原因はsqlprojファイルのReadyRollTargetPathがpackagesフォルダを参照していないためです。以下の手順で対処してください。

  1. ReadyRollプロジェクトを右クリックして、「アンロード」を選択。
  2. プロジェクトファイルが「利用不可」になるので、右クリックして、「編集」
  3. ReadyRollTargetsPath というセクションを探して、以下のように編集。

f:id:kkamegawa:20170408165807p:plain

<ReadyRollTargetsPath Condition="Exists('$(MSBuildThisFileDirectory)..\packages')">$([System.IO.Directory]::GetDirectories('$(MSBuildThisFileDirectory)..\packages', 'ReadyRoll.MSBuild.*')[0])\tools\ReadyRoll.Data.Schema.SSDT.targets</ReadyRollTargetsPath>

これで、sqlprojファイルを保存して、プロジェクトを右クリックから「再読み込み」してください。コミットすればVSTS/TFSでビルドできるはずです。これ実はチュートリアルには書いてなくて、ビルドの設定のところに書かれています。

https://documentation.red-gate.com/display/RR1/Build+components

注意点として、ドキュメントにも書かれていますが、ソリューションファイル(sln)が「親フォルダにない場合」このままコピペでは動きません(Visual Studioから普通に作ったら親フォルダにslnがあります)。..\packages のところを適切に変更してください。

Team Foundation Server 2017 Update1 RC2リリース

www.visualstudio.com

ようやくTFS 2017 Update1 RC2がリリースされました。おそらく3/8にVisual Studio 2017と合わせてリリースなんですかね。今回からやっと日本語版が提供されました。サポートも行われるので、プロダクションに入れてもいいようです。

大体2-3くらい前のスプリントの内容がほとんど入ってるようですね。おそらく翻訳されると思いますので、簡単に。

  • ブランチポリシーの強化
  • ディスカッションコントロールツールバー
  • レポジトリ管理者権限の変更
  • Pull Request コメントの強化
  • Pull Request コミットの閲覧
  • Visual Studio 2017のテスト結果サポート
  • リリースマネージメントでのVariable Groupeのサポート
  • プロセステンプレートエディタ告知(Visual Studioアドオン)

  • 個人向けプロジェクトページ

  • バージョン管理の強化
  • ビルドの強化
  • リリースマネージメントのパイプライン並列度に応じた支払い
  • パッケージ管理機能の強化
  • クロスプラットフォーム強化
  • テスト機能の強化
  • リリースマネージメントの強化
  • コード検索機能の強化
  • SonarQubeによるコード品質の強化
  • 管理者機能の強化
  • Team Room廃止予告(次のTFSではなくなります)
  • Markdownファイルへのリンク廃止

2月からconnectでのフィードバックは終了し(Visual Studioは継続されてますが)、Developer Communityというサイトでのフィードバックになるようです。日本語が使えるかどうかはわかりません…。バグとかであれば、簡単な報告でいいようです。

developercommunity.visualstudio.com

ただ、connectとは違って、今のところプライベートモード(MSの人とのみやり取りするモード)はないようです。そういう場合はサポートにお願いということなんでしょうか。

わんくま大阪でGit初級話をしてきました

www.wankuma.com

わんくま大阪にお邪魔して、Gitの初級編をお話してきました。

デモで片方の環境の編集するの忘れてて、競合&マージのデモが失敗したのが心残りでしたが、なんとか大体思っていたデモができてよかったです。個人的にGit for WindowsはVisual Studioでgit addから漏れてしまうソリューションファイル(構成によっては追加されないので…)、fetchしてくれないときのfetchとかに使っています。

次はVisual Studioのローンチイベントやりたいですね…

Visual Studio 20周年ポエム

blogs.msdn.microsoft.com

Visual Studio 2017のRTMが3/7に決まりました。Visual Studio 97以来、Visual Studioブランドでは20周年だそうです。もちろんぽっと出たわけではなくて、それ以前の歴史もあります。

単独製品時代

以前はFORTRAN, Assembler, C, BASIC, Quick BASIC, Quick Cなどと言語別にブランド化されていました。Quickシリーズは日本語化されなかったので、知らない人も多いでしょうが、Windows 3.1上でIDEを実装して、高速なコンパイル(最適化はほどほど)を売りにしていました。英語製品でしたが、日本MSさんから販売されていました。

実際、Quick-CはMS-Cと比べてコンパイル速度がかなり早く、5倍以上は早かったんじゃないかな?Windows上で動くIDEということで、もちろんデバッガも内蔵。MS-CのデバッガであるCodeViewはDOS-BOXの互換性にかなり依存しており、IBM-PC/AT互換機のWindows 3.1じゃないといまいちうまく動きませんでした。

当時はPC-98もかなり勢力を占めていたので、Quickシリーズのデバッガにはかなり助けられました。

MSのアセンブラとか、言語製品は単独で9万とかしてたんですよ…。ちなみにMS-Cは外部の製品を買収してMSブランドが付けられています。6.0くらいから買収したときの色がなくなったように思います。高かったこともあって、私はほとんど使っていません。

Visual シリーズ

Quickシリーズがそれなりに成功したので、Visualシリーズが出てきます。Visual C++ 1.0。パッケージでかかったですね。Windows SDKと合わせて幅1m弱あったんじゃなかったかな?当時マニュアル含めて全訳されていて、Windows SDK, Oracleマニュアルなどで本棚が埋まるという。

デバッガもWindows仕様になり、大変便利でした。Visual C++ 1.5ってのも出ましたが、こちらは英語のみでした。確か日本語化されなかったWindows for Workgroups対応だったからじゃなかったっけ?一部用途で必要だったので、英語版も使っていました。

Visual BASICも並行して発売され、OCXのもとになるコントロールぽとぺたはサンデープログラマ、プログラムを専門としない人に大変良かったですね。

Visual Studioシリーズ

いろいろ統合されていたほうがいいよね、という話かどうか知りませんが、Visual Studio 97がリリースされました。これも使ったはずなんですが、あまり印象がないなぁ。

後で思い出したけど、Visual InterDevというものがつきました。これは初めてインタラクティブなWebサイトをつくるIDEでしたね。

Visual Studio Web Site

Visual J++もあったのか。Java関係で裁判にまでなった製品でしたが、当時のSunのJVMと違って起動が早くCOMにもアクセスできることもあって一部では使われていたようです。

Visual Studio 6.0

これは大ブレイクしましたね。いまだに…使っている人も多いのかもしれません。IIS 4.0,モデラー、BackOffice Serverなどがついて、サーバー機能も開発しやすくなりました。Visual StudioのIDEでWebサーバやデータベースの設定をGUIで行いデプロイするという仕組みがあったりしました。一回で終わりましたがw。

www.microsoft.com

Visual Studio 2002

.NET 1.0が初めてリリースされたバージョンですね。C#も日本で若干盛り上がりつつありました。当時はMLでしたけど、いまでも使われている方の多くが参加されていました。私自身はほとんど2002を使っていませんでした。

Visual Studio 2003

.NET 1.1と一緒にリリースされました。1.0は出しただけで、1.1が本番、という感じでしたが、この1.1で…特にASP.NET 1.1大変苦労された方から10年後、あの時めっちゃ苦労した、いまだに恨んでるみたいな話を聞いたときはびっくりしました。ちなみにそのあと改善された話がほとんどで、情報のキャッチアップしてない人ってこんなもんなんだな、と認識を新たにしました。

Visual Studio 2005

IDEが刷新されました。しかし、代わりに安定性にかけるところがあって、結構苦労しましたね。.NETが2.0になっていろいろ改善されて実用的になってきた感じがあります。

このころ、MSDN Offlineという今の無償セミナーの走りみたいなものが始まりました。

MSDN オフラインセミナー 〜開発者のためのスクール形式無償セミナー

第一回か第二回が C# のAnders Hejlsbergで、次期 C# および、Visual Studio 2008に含まれるLINQのプロトタイプ版を見せてもらいました。この時はまだ型定義をあらかじめ作っておくというものでした。

そして、Team Foundation Serverが初めて登場。このころのセットアップはほんとに大変でした…でも結構便利だなと思って使い始めたものです。

Visual Studio 2008

LINQが入り、IDEも結構安定してきました。WPF/WCF/WFも入りましたね。どれも壮大すぎて、気軽に使うというものではなくなったような気もしますが、WPFはがんばれ。

Visual Studio 2005, 2008もSQL Serverと一緒に遅れがすごいことになり、開発モデルの変更を余儀なくされた感じですね。

Visual Studio 2010

IDEがWPFベースになり、また安定性が(^^;。.NET Framework 4になり、いろいろ劇的に変わりました。CLRも劇的に変わって、ジェネリクスはほんとに助かりましたね。

Team Foundation Serverも大きく更新され、現在の基本となる機能はほとんど入ったはずです。Test Managerとかは便利です。

Visual Studio 2012

末尾に2とつくリリースは鬼門なんですかね?2002以来のポイントリリースって感じでした。IDEは少し良くなりました。.NET的には4.5がサポートされ、async/awaitが非常に便利でした。

Visual Studio 2013

ようやく実用期というリリースですね。

Visual Studio 2015

現行バージョンですね。.NET 4.6~4.6.2がリリースされて、.NET Core時代の幕開け…になりますかね?

In the Future

今や無償版にとどまらず、macOS用のVisual Studio for Mac, クロスプラットフォームのVisual Studio Codeまで出て、MS発のC#, VB以外にも多くの開発環境をサポートするIDEの基盤として、.NETおよび、Windows上の最良の環境としての発展を楽しみにしています!

(独り言).NET Core Toolsこれで安定するかな…