kkamegawa's weblog

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

de:code Day 1

キーノート

pc.watch.impress.co.jp

いくつかメディアですでに出ているので、書いてもなんだという感じもありますが。キーノートは立ち見&サテライト会場に行くくらい参加者がいたようで盛況でした。今回は前夜祭が開催され、前夜祭ではついでにレジストもできるという特典もありました。当日かなり並ばなくてもいいのは大変助かりました。とはいえ、翌日から参加の友人と一緒に並んでいたのですがw。

キーノートはCEOのSatya Nadellaも登場し、本国のイベント同様にかなりの時間しゃべってくれたのは驚きました。報道によると、そのあとすぐに別イベントをこなされていたそうで。今日からAPAC Tourということで各地を回るんですね。

Keynote at Singapore Microsoft Developer Day

ノリは本当に//Buildのキーノートのようで、最初からchannel9の中継ブースでいつもおなじみのSeth氏が日本の英ぺ三人衆と軽妙にしゃべっているなーと思ったら、いつの間にか井上 章さんいなくなっているなーと思ったらブリジストンのつなぎきてコスプレw(コスプレ担当と自虐…)。アプリはXamarin制で音声コントロールで入力できるのは確かにああいうニーズに合ってそうですね。現場はうるさくても大丈夫なのかな?

Desktop App Convertorもお披露目されましたが、まさか秀丸持ってくるとは。しかし、いいチョイスです。誰もが知っている日本のアプリで、さらにシェアウェアということでわかりやすい。ものの1分かそこらでコンバートされていました。しかし、注意点として、UWPアプリではない、んですよね。あくまでも「ガワ」がUWPになるだけで、ライフサイクルとかは普通のWin32アプリケーションです。もちろんこんてぃにゅーむとかにも対応しないので、Windows Mobileでは動きません。私の知り合い(開発者ではないがモバイルオタク)でも勘違いしている人がいました。

最後は牛尾さんの上司のクレジットカードに物を言わせて、Chef, Mesosphere, Jenkinsを使った1000コンテナへのデプロイ。最後にはMicrosoft Loves OSS ロゴ。地味だけどそれをカバーする牛尾さんのダンスとテンションの高さに会場は一部以外置いてけぼりw。

最後はいつものキーノートイメージビデオでしたが、ちょっとそこそこにしてランチセッションに行きました。キーノートとてもよかったですが、映像によって中央のスクリーンと複数にミラーされているのと両方あってどこを見ればいいのか少し迷いました。

Windows 10開発の舞台裏から学ぶエンジニアの未来

DevOpsトークセッションが満席だったので、こっちに移動。「顔が見えるMSD(Microsoft Developmentという別会社)」をテーマにWindows 10開発の舞台裏をいろいろ話してくれて興味深かったです。

  • 開発者は多ければ10-20のVMを使い、基本的にデータセンターもしくはローカルのサーバで仮想環境を運用。つまり場所にとらわれず、安全な開発。使っているものもみんなが使っているWindows 10に含まれるインフラ。
  • 数千人の開発者が8時間みっちりやって、出るかどうかというバグでも数百万のInsiderに提供すると30秒かそこらで発見される。思ってもみない使い方をする人も多い。
  • 2006年Windows as a Serviceはまだジョークで、言い出した途端会場爆笑。言い出しっぺともう一人の二人でブレスト始めたところBillGが乱入(ってすごいな)。
  • Cortanaの前のパーソナルアシスタントといえばOfficeのカイル君をはじめとするAgent。ただし、全世界で不評だったが、唯一受けたのが日本のみで冴子先生w。
  • Cortanaのイントネーションの進化。合成音声から声優さん(Haloと同じ)に切り替えている。しかもHaloは戦闘中のアシスタントということで、演技を変えてもらっているというところがプロ。
  • 日本語の「コルタナさん」はすべての状況で問題なく起動するように。日本では"Hey Cortana"はテンション高く、一人じゃないと難しい(確かにねー)。「さん」がついているのは名詞としての「Cortana」できどうしないようにというルール。

あたりがとても印象に残り、すごく興味深いセッションでした。

Microsoftが実践したScrum導入7年の旅とDevOpsへの進化

MSのVSTS/TFSチームが実際にスクラムを導入して、DevOpsへ至るまで7年間かかった道のりを解説。牛尾さんのこの資料のオリジナルを作った方の解説です。

  • 本番以上の学びの場所はない
  • スプリントは3週間だが、半年ごとにSeasonという単位で将来の開発方針を見直し、同じことをやっているチームがあればスプリントを一緒にするということもある
  • Sprintは担当するチームが決まっていて、担当者一覧が入るメールが通知
  • できたこともメールで通知。動画が含まれるが「何をやった」ではなく、「以前とこう変わった」という動画。ChatOpsみたいなのではないのね。この辺はOffice 365をもっていて、Office Graphとかで分析できるMSならではなんでしょうか。
  • 普通のサービス会社はサービスのことだけ考えていればいいけど、オンプレミスのTFSもあるので、サービス更新の戦略がちょっと違う
  • 以前はリリース前にすべてのシナリオをテストするビッグテストだったが、それでは三週間ごとのリリースには間に合わないので、トピックごとに影響するような細かいテストに改めている。
  • フィードバックをいろんなチャンネルで得るが、自分の予想通り、予想に反する、どうでもいいがきれいに33%ずつ。
  • 攻撃を受けている、という前提ではなく「すでに誰かが入っている」という前提で実施するセキュリティの演習

とても興味深い話ばかりでした。社内にも展開して、オンプレミスのソフトもリリースし、そのうえでいろいろ改めるというのはどこの会社でもできるかどうかわからないけど、テストのやり方、リリースに関しては参考になります。

カンバンによるアジャイルプロジェクトマネージメント本が先行販売されていたので、購入。

Azure/Windows Server 2016から学ぶWindows系インフラエンジニアのためのDevOps

小塚&高添コンビのインフラよりのDevOps話。小塚さんと牛尾さんの仲がいいんだか悪いんだかというDevとOps一体となってやりましょうを最初から否定するかのようなアイスブレイクから。

  • ビジネスチームとOpsチームとDevチームがある。よく語られるのはビジネス→Devだがビジネス→Opsもあるよね。
  • Opsが情報をサマライズするのではスピードが足りないので、セルフBIでビジネスチームが自分で見えるように整備
  • Opsチームは減点法。何かあると怒られるので、デプロイをリスクにしない。低リスク、高バリューを得るためにIT投資
  • Windows Server 2016はそのための機能をたくさん用意しているが、好きなものを使ってください。
  • Windowsコンテナを使う場合もまずはDockerのコマンドを覚えて、足りなければPowerShellで
  • コンテナはデプロイしたらすぐ動く状態。「デプロイしてこれやって」はNG

本当にWindowsでDevOpsやるためのインフラには何があるか、Windows Serverはどうよくなったのかという概要セッションでした。細かい話は別の個別セッションでしょうね。

日本でもできる!マイクロソフト技術をフル活用したDevOpsの具体的開発手法

再度テンション高い牛尾さん。しかしいきなりネットワークが不通でスタッフコールw。よく「海外の方法そのままじゃダメ、日本流にアレンジしましょう」みたいなことをいろんなところがやりたがるけど、それではだめ。薄いカルピスのようになってしまうという話がとても印象的でした。ギャップがあるなら改良するのではなく、そのまま西洋文化を挿入すればいいという考え。

この辺は牛尾さんのブログでたくさん書かれているので、ぜひ読みましょう(手抜き)。

simplearchitect.hatenablog.com

NECソリューションイノベータの事例でVSTSを使ったデプロイで8.5か月かかっていたデプロイまでの時間を一週間(!)に短縮した事例。具体的には明かされなかったけど、1990年代の開発から2016年の開発になったという声があるそうで。そうだよねーExcelと32bitマシンと手でのデプロイ、とかからいきなりコンテナとかよくついて行けたなと。

でも、承認者が許可すれば今まで無駄だったことがすべて破棄できるので、必ず意思決定者を巻き込みましょう。あきらめているとそこで試合終了ですよ、みたいな話が印象的でした。VSTSを使ってでもしていたけど、まぁその辺はどうでもいい。

まとめ

実は始まる前からびっくりしていたことがありました。まず、スポンサーにNEC,富士通,日立,NTT Data, CTCさんといった従来割とスポンサードされていた企業が全くなかったんですね。代わりに「MSのサービスを使っている」「連携する」企業群。ちなみに同じ日程でJavaOne Tokyoやっていて、そちらにスポンサーがあったそうです。全部が全部日程かぶりでスポンサーしないってのはちょっと考えにくかったので、方針もあったのかなぁという感じです。

Sponsor - de:code 2016 | 日本マイクロソフトの開発者/アーキテクト/IT Pro 向けイベント - Microsoft Events & Seminars

de:codeは開発者向けのイベントといいつつ、この辺伝統的な企業向けのイベントかなぁとも思っていたのですが、キーノートとスポンサー一覧見て、一周戻って「MSの製品を使って何か作ってくれる」開発者向けのイベントになったんだなぁ、と改めて認識しました。

パーティは相変わらずの激混み。この辺はExpo会場もつぶさないとどうしようもないでしょうけど…あとは通路。

ジニアスのセッションに入れなかったのは痛恨の極み。DevOpsトークバトルとジニアスは満員御礼でダメでした。ほかは大体キャパシティプランニングうまくいっていたと思います。小部屋多くしていたのはよかったのか悪かったのか。

channel9ステージは後ろからってことで、ちょっとよく見えなかった。この辺はオンラインの人向けのサービスだったんでしょうかね。

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にも入るとのことなので、将来的にはオンプレミスでも可能になるはずです。