kkamegawa's weblog

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

TFS "15" RC1公開

blogs.msdn.microsoft.com

Team Foundation Server "15" RC1 | Visual Studio

次期TFSのRC1が公開されています。現時点では、日本語優先にしているブラウザで見るとPreview版のリリースノートが表示されますが、一番下にあるロケール設定でUnited Statesに変更すると英語版が見えます。RC1で変更されたところだけ別に書かれているので、見比べると差分がわかります。

残念ながらRC1の日本語版は出ないようなので、次に期待ですかね…どうしても使いたい場合は英語OS,英語SQL Serverでインストールしてみてください。ブラウザが日本語受け入れる設定になっていれば、日本語UIで表示されます。

TFS "15"ではソフトウェアの要件が変わっています。

www.visualstudio.com

  • Windows Server 2016サポート(2008 R2までサポート)
  • SQL Server 2016サポート(例によってCU1入れたほうがいいでしょう)

SharePoint 2016サポートしないってのはちょっと意外ですが、将来のUpdateでやるんでしょうかね。

RC2は出ることが決まっていますが、RC3はRC2までのフィードバック次第、ということだそうです(でも最近の品質を見ると出さないといけないんじゃないかな…)。

テスト関係のUIがものすごく変わっていますね。もうほとんどTest Managerリッチクライアント必要なさそうな。より大規模環境での品質状態のトラッキングがやりやすくなっていますね(VSTSと同じですが)。また、Chrome拡張機能を使用した探索テストの強化が著しいですが、Edgeにも出してほしいものです。

コード検索が入ったけど、Elastic Search使っているとはちょっとびっくりです。これにより、コード検索を使う場合、TFSにもJava Runtimeが必要になります。Server JREでいいそうですが、OracleのサイトにはWindows版にもかかわらず、tar.gzしかなかったので、私はJDKを入れました。事前にJAVA_HOMEの環境変数を設定して、インストーラーが環境変数を認識できるようにしておかないと(つまり再起動しておかないと)インストーラーが失敗します。

Elastic Searchを疑うわけじゃないけど、Java使っているということで、wavedashとかhalfwidth kanaとか大丈夫なんかな…。ちょっと調べてみたいところです。

個人的にはNuGetパッケージサーバー機能がありがたいですね。オンプレミスでNuGet使いたい場合、もともと立てる方法はありますが、TFS使っているなら統合されていたほうが便利ですし。VSTS使っている人ならわかると思いますが、フィードを見せる見せないといったセキュリティが統合されているのは便利です。

Visual Studio Team Services 2016/7/29の更新

だいぶ遅れましたが、VSTSの7/29の更新分に関するリリースノートのざっくり翻訳を行いました。相変わらず操作してみないとわからないことが結構多くて悩みます…。リポジトリを作るときにreadmeも一緒に作れるのはすぐに気づいてました。

2016-Jul-29 Release Notes | Visual Studio Team Services

やっとというか、AzureへのARMデプロイがすごくよくなりましたね。今までAzure ADの証明書アプリ登録して、うんたらかんたらやるの面倒で面倒で。VSTSをAzure ADで、Azureも同じ組織アカウントに関連付けてないといけないようですが…うーん、これあると楽なんだよなーVSTSを組織アカウントで運用したくなってきました。

リリース物件の論理削除や、複数の成果物(ビルド後にできたバイナリ)を関連付ける機能もほしかった機能です。

作業項目とテスト関連付けておいて、まだやってないの探すのも大規模な環境では便利そうですね。ぼっちテナントではありがたみの理解が難しいですが…。

再リリース機能と、探索機能拡張で自動的にWebページの読み込みキャプチャもいいですね。「遅い」と思った時にもう一度やっても(キャッシュ全クリアしても)遅くないとか往々にしてあったので。

ではまた三週間後。

translate to Japanese toVSTS release notes from ht ...

TFS2015 Update3でSonarQube連携ができない場合の対処

TFSおよび、VSTSでビルド時にSonarQubeを呼び出すことにより、C#コードの静的解析及び、品質情報の管理を行うことができます。

Microsoft Azure - SonarQube と TFS による技術的負債の管理

SonarQube™ » Announcing SonarQube integration with MSBuild and Team Build

最初はうまく動いていたのですが、Update3のころからうまく動かなくなっていました。原因はConnectに報告するときに調べていたのですが、その通りだよということでした。

SonarQube Tasks Failed in non-english OS | Microsoft Connect

例によって、ビルドタスクのエンコーディングがANSIで、- がコードページISO-8859-1の文字だったおかげで、英語OS以外では動かないということです。

Invoke-BatchScript $bootstrapperPath -Arguments $arguments

根本対処はTFS 2015 Update4かTFS15(Preview)になるとのことなので、以下の回避策を使用します。

  • 各エージェントのtasks\SonarQubePreBuild\1.0.35フォルダにあるSonarQubePreBuild.ps1 をUTF-8に変更して、上記のように編集する。
  • クロスプラットフォーム用ビルドエージェントtfs toolを使って、1.0.36のビルドタスクをアップロードする

簡単なのは前者ですね。ビルドタスクにはそもそもこういう英語OS以外ではうまく動かないってのがたまに出てくるので、注意が必要です。

プログラマ的にWindows 10 Anniversary Updateのうれしいところ

10個あるかな、と思ったのですが、今のところ思いついたものをあげてみました。うーん、まだあるはずなんですが。とりあえず、つらつらと書いてみます。Inkとかは純粋にプログラマ向けとしてどうかなーと思って、あえて入れていません(ぉ)。

他にもお気に入りの機能があれば紹介してください。

Docker互換のコンテナ

言わずと知れたこれですね。Docker for Windowsを使えば現在でも使えます。

docs.docker.com

ただ、こちらはHyper-VでLinux仮想マシン(初期で2GB )が動くので、少しメモリがきつい。なによりもWindowsで動くコンテナであればWindowsネイティブの機能を使うことになります。

msdn.microsoft.com

コマンドはdockerコマンドで共通のようです。PowerShellコマンドレットも用意されるようですが、基本はdockerコマンドで、詳細な情報を見たいときはPowerShellという住み分けになるようです。

MAX_PATHが260バイトの制限から解き放たれる

実は今までもファイル名のprefixに\\?\とつけて、UnicodeでコンパイルしたWin32アプリケーションであれば、64KBまでのパスを使えることができました。しかし、ExplorerがWindows 95時代からのANSIモードで動いていたり、世の中MAX_PATHが260バイトという決め打ちで動いていたり、.NET FrameworkもWindows 95とかを引きずっていた都合上、最大パスは260バイトまで、となっていました。

Anniversary Update以降、グループポリシーでEnable NTFS long pathsを有効に設定すれば、Win32アプリケーションでも有効になります。もちろん、MAX_PATHが260と決め打ちしているような大多数(99.9999%くらい?)のアプリケーションに長いパスを与えると即死、もしくはバッファオーバーフロー起こすので、十分評価してからにしましょう。

betanews.com

Desktop ConverterでWin32/.NETアプリケーションの簡単展開

既存の.NETアプリケーションやWin32アプリケーションにUWPのガワだけかぶせて、ストアでより簡単に配信ができるようになるというDesktop Converterです。間違えないで欲しいのは、あくまでも「ストアに公開できるようになる」というだけで、「UWP化される(mobileやXBoxで動くようになる)わけではありません

ただし、何でもかんでもコンバートできるわけではなく、制限があります。特にVisual C++ランタイムと.NET Frameworkが限られるので、古いVCランタイムを使っているアプリケーションの場合、一度移行してから、ということもあるので、注意してください。

Convert your desktop application to a Universal Windows Platform (UWP) app

UACで特権昇格が必要なアプリや、他のアプリと連携する(AppDataに書き込む)ようなアプリがダメ、というのはややきついものの、大多数のアプリケーションでは問題無いでしょう。ただし、その前にインストーラーでインストールされるようなアプリケーションでなくてはなりませんが。

インストーラーがないようなアプリの場合、コンテナ使うしかないですかね。

ネットワークが高速化

ネットワークは門外漢ですが、Linuxなどではすでに対応している新しいRFCもしくはドラフトの規格に対応しているそうです。TFOとかは素人目に見ても頻繁にopen/closeするようなサーバにアクセスする場合の高速化が見込まれると思われます。

blogs.technet.microsoft.com

PowerShell (WMF 5.1)

WMF 5.1 リリース ノート (プレビュー)

Bashに持って行かれた感がありますが、Windows における自動化、スクリプトでの運用管理を行いたい場合はWMF(PowerShell)なのは変わりません。いろいろ聞かれましたが、Bashは(今のところ)Windows 10を開発者モードに変更しないと使用できません。つまり、Bashは管理者がシステム管理のために使うのではなく、あくまでも開発者向けのツールセットの一部となっています。

PowerShellはWindowsクライアントおよびサーバの管理、自動化のためのものです。

PowerShell 5.0 にあったバグや、高速化、PowerShell DSCをはじめとした機能強化が盛りだくさんです。

.NET Framework 4.6.2

先ほどWin32アプリケーション向けの長いファイル名を扱うようにする設定を紹介しましたが、.NETの場合はapplication manifestに指定することにより、プロセス単位で制御することが可能です。

<?xml version="1.0" encoding="utf-8" ?>  
 <configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
  </runtime>
</configuration>

.NET Coreおよび、.NET Framework 4.6.2がインストールされたWindows 10 Anniversary Update(1607)で有効だそうです。

blogs.msdn.microsoft.com

長いファイル名の他にもモニタごとのDPIを認識するようになったとか、新しい暗号化に対応したとか、着実な強化が行われています。

blogs.msdn.microsoft.com

Bash on Ubuntu on WindowsでツールセットがLinux共通に

//Build 2016での話題は間違いなくこれだったでしょうね。cygwinとかもまぁいいのですが、なんとなくもどかしさを感じていました。PowerShellのすべてがオブジェクトになるというのは.NETなどの相互運用で大変便利です。

しかし、他のプラットフォームの方に使ってもらおうとする場合、そのへんが足かせにもなっていました。移行のためにコマンドレットにエイリアスを登録されているものもある(lsやwgetとか)のですが、結局オプションが違うから使わないんですよね。

あと、長いファイル名の扱いも、UnicodeアプリであったとしてもWindowsだから260バイト固定とかになっているものも少なからずあり、困っていました。node.jsもしばらく困ったなぁ…。

しかしそんな時代もさようなら。パスさえ少し考慮すればUbuntuで動いているものがまぁ大体動くようです。もちろんまだ実装されていないシステムコールや実装されないであろうシステムコールもありますが、コマンドラインの開発用ツールセットは割りと動くようですね。

blogs.msdn.microsoft.com

詳細な仕組みなどは上記のブログで。もしも困る場合はGitHubにissueをたててみればいいようです。

github.com

UWPアプリのバックグラウンド実行サポート

通知ではなく、バックグラウンドで実行したいような場合よさそう?

blogs.windows.com