kkamegawa's weblog

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

VSTS/TFSでC++アプリケーションのビルド用テンプレートを変更する

はじめに

VSTSでビルドを行うとき、いくつかのプロジェクトタイプではビルドテンプレートが用意されています。新規作成するときにVisual Studioというテンプレートがあるのですが、これは.NETプロジェクト用になっていて、いくつかのビルドステップに不都合があります。

インデックス作成シンボルの発行

検索パターンがオリジナルでは「**\bin\**\*.pdb」となっています。しかし、C++プロジェクトのデフォルトテンプレートではx64\Releaseという形になるので、これではシンボルが発行されません。
余談ですが、このインデックス作成は.NET用の機能のようで、ネイティブのpdbでは警告が出ます。 そこで検索パターンを「**\$(BuildPlatform)\$(BuildConfiguration)\*.pdb」という感じにしましょう。

f:id:kkamegawa:20160520064149p:plain

ファイルのコピー先

これも同じです。検索パターンが 「**\bin\$(BuildConfiguration)\**」となっているので、これでは都合が悪いので、変更します。
コンテンツはexeとdllだけにしていますが、別の拡張子があれば|で追加してください。ソースフォルダーを変更しているのは私の場合一つだけビルドしたかったからです。複数の構成を一度にビルドする場合、$(build.sourcesdirectory)をルートにして、コンテンツに\$(BuildPlatform)\$(BuildConfiguration)を指定したほうがいいでしょう。

f:id:kkamegawa:20160520064150p:plain

終わりに

これ中身はJSONらしいのですが、簡単にエクスポートしてほかの人の環境でも持ってこれる方法あるのかな…。あるような気がするんだけど。

HoloLensを体験してきました!

合同会社silkyfeel様所有のHoloLensを株式会社フェンリル様のオフィスで体験してきました。もうだいぶ話題に出ているので、どんなものかご存知の方が多いかと思いますが、//Build 2016のキーノートの動画でどうぞ。

外観 & 装着

f:id:kkamegawa:20160510190411j:plain

普通のでっかいHMDという感じですね。

f:id:kkamegawa:20160511054236j:plain

ホロレンジャーになった感じ。ヘッドバンドにあたる部分はかなりおでこの上くらいにきっちり当てないといけないようです。後ろにしめるねじがあるのですが、そこをきっちり後頭部に合わせて締める必要があります。

f:id:kkamegawa:20160510203742j:plain

これは中空にあるウィンドウに対して操作している図。親指と人差し指を10時の角度にして素早くつまむとクリックです。手のひらを上にしてつまんだ指を開く(ドラゴンボールの悟空が気の球をパッと出すあれ)とスタートメニューが出ます。

1,2回タイミングをつかむとすぐになれました。画面上に白い点があるのですが、そこをウィンドウに合わせると操作ができます。

HoloLensの世界

f:id:kkamegawa:20160510190937j:plain

HoloLensは内蔵のWebサーバを持っているので、そこにアクセスすると装着者が見ている画面を表示、録画、記録することが可能です。これが結構面白い。3-5秒程度の遅延はありますが、感動ものです。
これは3Dモデルを表示させるメニューです。

f:id:kkamegawa:20160510191535j:plain

置いた3Dモデルを世界に配置することができます。この情報はWiFiのアクセスポイントに紐づいているそうで、アクセスポイントを削除すると、関連するジオメトリ情報も消えるそうです。

f:id:kkamegawa:20160510195017j:plain

これはUnity-Chanが走り回るアプリを起動したところです。アプリによってはメモリをもりもり使うので、ほかのアプリを全部休止状態にします。この辺はUWPならではですね。

f:id:kkamegawa:20160510200814j:plain

キーボードももちろんあります。ただ、一つずつクリックしないといけないので、正直大変です。なので、このWebサーバ側に文字列を送る入力エリアがあります。

f:id:kkamegawa:20160510201146j:plain

UWP版Skypeもあります。相手の顔が中に出て、空中に絵を描くことも可能です(Skypeの通話相手にも見えます)。ちなみにこのWebサーバ機能を使っているとカメラをこちらに使われてしまうので、Skypeでカメラを使うことができません。しばらく誰も気づかなくて、???となってました(笑)。

Cortanaが入っているので、スタートメニューだしたら"hey Cortana"でちゃんとコルタナが起動します。YouTubeを表示させてEdgeで動画再生することだってできます。音声は耳の近くにあるスピーカーから。

f:id:kkamegawa:20160510193753j:plain

パフォーマンス情報。画像ではわかりづらいかもしれませんが、CPUはAtomですが、ジオメトリ情報をセンシングしている最中であったとしても、CPU振り切ったりはしていません。

視界

HoloLensは網膜投射です。大体黒目の領域の延長線上で合成されるので、合成される視野角としてはすごく狭いです。印象として15度くらいでしょうか?でも出てくる画像はすごく「そこにある」感じがします。

Oculus RiftもDK2の時代に一度使わせてもらったことがありますが、フルHD相当とはいえ、ジャギーが結構目立ちました。でもHoloLensはそんな感じ一切なし。こればっかりは体験してみないとわからないと思います。付属3Dモデルに宇宙飛行士のやつがあるのですが、テクスチャマッピングがうまくできていて精密でした。

ただ、そこにある感でいえば、TVに出していたWebサーバ経由の配信のほうがたぶん周りの人が「おおっ」となると思います。

バッテリー

3-4時間程度だそうです。今回はWebサーバもずっと稼働中だったので、余計少なかったのでしょう。Buildでハンズオン参加した人によると、コーディングしている最中は充電しておけとアドバイスされたそうです。私は最後のほうに回ってきたので、バッテリー切れに3回も遭遇しましたw。

まとめ

なんというかすごいですね。少年のころ夢見た未来のデバイスがこんなところに来たんだなーと感慨深いです。少し?と思うところもありましたが、キャリブレーションをきっちりやれさほど違和感はないそうです。

Atomで2GB RAMでもアプリは割とサクサク動きます。Galaxy Explorerというアプリがあるのですが、銀河系を探索するのは非常に面白い!

フェンリル様のかっこいいステッカーいただきました!

f:id:kkamegawa:20160511054549j:plain

Visual Studio Team ServicesのリポジトリをUnity Cloud Buildでビルドする

という案内が来ていたので、早速やってもらいました。いろいろ試してみようということで、@kaorun55にUnityのサンプルを作ってもらって、Unity Cloud Build連携をやってみました。
Unity Cloud Buildがプライベートリポジトリにアクセスするためには、SSHサポートが必須です。基本的に無料でプライベート(のみだけど)で、リポジトリサイズの制限がないVisual Studio Team ServicesはUnityに向いています。ゲームとかアセットめっちゃ多く、リポジトリ大きくなりがちですからね。では、早速やってみましょう。

VSTSのSSH clone URIを取得する

VSTSのリポジトリからclone用のURIを取得します。ここで注意するのは、httpsではなく、sshのURIを選択してください。 f:id:kkamegawa:20160510051139p:plain

Unity Cloud Buildの準備

これは既にやられている方が多いはずなのですが、一応。 f:id:kkamegawa:20160510051143p:plain

https://build.cloud.unity3d.com にアクセスしてプロジェクトを作ります。

f:id:kkamegawa:20160510051145p:plain

サーバのURIをペーストします。必ずssh URIを指定してください。バージョン管理はGitのみです。

f:id:kkamegawa:20160510051146p:plain

ビルド対象プラットフォームを選択します。

f:id:kkamegawa:20160510051142p:plain

必要な設定をします。自動ビルドをONにしておけばGitにcommitしたタイミングでビルドがかかります。Freeプランなので、60分程度の待ちがあるそうですが、どうもそれじゃすまないような…いいですけど。あとFreeだと1GBまでなので、あまり大きなのはできないですね。

f:id:kkamegawa:20160510051144p:plain

SSHの秘密鍵が表示されるので、ここを全部選択して、コピーします。

VSTSにSSH鍵を登録する

VSTSに秘密鍵を登録します。https://アカウント.visualstudio.com/_details/security/keys にアクセスして、鍵を登録します。

f:id:kkamegawa:20160510051141p:plain

Descriptionには区別しやすい名前、Key DataにUnity Cloud Buildで作成された秘密鍵をペーストします。

f:id:kkamegawa:20160510051140p:plain

SSH秘密鍵が登録されました。これでこのユーザー(私ですが)がアクセス可能なリポジトリにSSH経由でアクセスすることが可能になります。

f:id:kkamegawa:20160510051147p:plain

で、commitするとこんな風に自動ビルドが行われます。これはすごくシンプルなやつですが44分(待ち時間込?)もかかってますね(^^;。

まとめ

SSHなので、もちろんMacやLinuxで作った秘密鍵を登録することも可能です。Git Credencial Managerとか使わなくてもVSTSにアクセスすることが可能になります。もちろんBash on Ubuntu on WindowsにSSH秘密鍵を登録しておけばWindows 10のBashからでも普通にアクセスできます。

いろいろ足りないところもあると思いますが、もしよかったらVSTSも使ってみてください。SSHサポートはTFS 2015 Update3にも入るとのことなので、将来的にはオンプレミスでも可能になるはずです。

Visual Studio Team Services 2016/5/6の更新

GW中(って向こうには関係ないですが)にVisual Studio Team Serviceが更新されました。私のテナントにはまだ一部の機能しかきていないようで、一週間くらいで順次更新していくそうなので、気長に待ちましょう。私が友人と使っているテナントにはすでに新機能が来ているようで、うらやましいです…新しいところのほうが早いんだろうか。

今回の新機能ではメールのフォーマット変わったこととか、ダッシュボードに貼るウィジェットがリサイズ可能になったこととか、テスト実行時間で集計できるようになったこととか、Release Managementのウィザードが付いたあたりがうれしいですかね。

あと、地味にWorkハブが便利そうです。プロジェクトでのみ管理する必要があって、チームに編集権限を渡すとかできなかったんですよね。チームプロジェクトが大きい場合、管理者が大枠を決めて、プロジェクト内の「チーム」で好きにイテレーションを決めるので小回りが利くようになったと思います。

ではいつものように参考訳です。オリジナルはこちらを読んでください。

2016-May 6 Release Notes | Visual Studio Team Services

translate to Japanese toVSTS release notes from ht ...