ごった煮

色々な事を書いてます

Azure DevOpsのリポジトリを公開する

VSTSがAzure DevOpsに名称変更しましたが、知らぬ間にBitBucketみたいにパブリックプロジェクトを作れるようになってました。

公開設定にする

既存のVSTSでは、デフォルトでパブリックプロジェクトは、有効になっていないようです。(新規は不明) f:id:papemk2:20180916015353p:plain

Organization Settings > Policyで設定変更すると、リポジトリを公開設定する設定が有効化されます。 f:id:papemk2:20180916015524p:plain

Allow public projectsをオンにすると有効化されます。

なんか知らぬ間にUIも一部日本語化されてるしで色々大きい変化を入れてくる雰囲気を感じます。

変更すると自動で保存されるので、プロジェクト作成に戻ります

プロジェクトを作る

パブリックプロジェクトが有効化されました。 f:id:papemk2:20180916015733p:plain

パブリックプロジェクトを作ると、行動規範に同意したとみなされるので、一読しておきましょう。

azure.microsoft.com

プロジェクトがパブリックだと、右上にPublicの表記が出るようです。 f:id:papemk2:20180916020045p:plain

パブリックとプライベートを切り替える

切替は、画面左下のProject settingsから行います。

Project settings > Overviewの中に設定があります。 f:id:papemk2:20180916020503p:plain

Edit画面で、切り替えます。 f:id:papemk2:20180916020533p:plain

パブリックプロジェクトの制約がちょろっと記載されているのでこちらの確認必須です。

特にTFVCを使う場合は、制約が多いみたいです。

アクセスする

パブリック状態でプロジェクトページに行くと、プロジェクトメンバーでは、ない状態でもGitのURLが見れたりします。 f:id:papemk2:20180916021007p:plain

プライベートにするとエラーになります f:id:papemk2:20180916021035p:plain

パイプラインの作成やらの操作は、プロジェクトメンバー出ないとダメみたいなので、リポジトリの公開とかのソースコード共有の部分がメインのようです。

ちなみに、プレビュー中の新デザインだけでなく、旧デザインでもプロジェクトの公開設定は、できるので新しいUIがイヤだっていう方も普通に使えます。 f:id:papemk2:20180916021506p:plain

Azure AD B2Cでユーザ認証する -準備-

Azureには、Azure AD(以下AAD B2C)という組織ユーザのID管理を行うサービスがありますが、コンシューマ向けに近いことをするためのサービスとしてAzure AD B2Cがあります。

GCPのFirebaseや、AWSのCognitoのような所謂IDaaSに分類されるサービスです。 これを使うと、簡単にアプリケーションにユーザ認証などのID管理を追加することができます。

準備

AAD B2Cを使う準備として

  1. AAD B2C用のディレクトリを作成する
  2. サブスクリプションディレクトリを紐づける

を行います。

ポータルのリソースの作成にAzure Active Directory B2Cがあるのでこれを作成します。 f:id:papemk2:20180915224720p:plain

1から作るときは、新しいAzure AD B2Cテナントを作成するを選びます f:id:papemk2:20180915224914p:plain

リージョンは、現在ヨーロッパリージョン、USリージョンという二つのざっくりした区分けになっているため、このサービスに限っては、 使用する地域を選択すると、近いリージョンにデプロイされるという形式をとっています。

ヨーロッパリージョンにデプロイされる地域は、以下の通り

アルジェリアオーストリアアゼルバイジャンバーレーンベラルーシ、ベルギー、ブルガリアクロアチアキプロスチェコ共和国デンマーク、エジプト、エストニアフィンランド、フランス、ドイツ、ギリシャハンガリーアイスランドアイルランドイスラエル、イタリア、ヨルダン、カザフスタンケニアクウェートラトビアレバノンリヒテンシュタインリトアニアルクセンブルクマケドニア (旧ユーゴスラビア共和国)、マルタ、モンテネグロ、モロッコ、オランダ、ナイジェリア、ノルウェーオマーンパキスタンポーランドポルトガルカタールルーマニア、ロシア、サウジアラビアセルビアスロバキアスロベニア南アフリカ、スペイン、スウェーデン、スイス、チュニジア、トルコ、ウクライナアラブ首長国連邦、イギリス

USリージョンにデプロイされる地域は、以下の通り

米国、カナダ、コスタリカドミニカ共和国エルサルバドルグアテマラ、メキシコ、パナマプエルトリコトリニダード・トバゴ

日本は、まだこの地域一覧に含まれないので、好みの地域を選択しましょう。

必要な情報を入れて作成を選択すると、ディレクトリが作成されます。

ディレクトリ作成が完了すると、ディレクトリの管理画面に飛ぶためのリンクが表示されます。 f:id:papemk2:20180915231424p:plain

ここ以外から移動する場合は、ポータルのディレクトリの切り替えでディレクトリを切り替えましょう。

ディレクトリ作成直後は、どのサブスクリプションとも紐づいていないので下記のような表示がディレクトリ管理画面に出ます。 f:id:papemk2:20180915231511p:plain

ディレクトリとサブスクリプションを紐づけるために、ディレクトリを先ほどディレクトリ作成を行ったディレクトリに戻りましょう。

次にディレクトリとサブスクリプションを紐づけます

先ほどの画面で既存のAzure AD B2Cテナントを~を選択します。 f:id:papemk2:20180915232224p:plain

B2Cリソースのプルダウンに先ほど作成したディレクトリが出てくるので、それを選択して必要な項目を入力します。 f:id:papemk2:20180915232359p:plain

これで準備完了です。

ディレクトリを移動して色々作業するのは、面倒ですが仕組み上まあ致し方なしです。

とりあえず次は、AAD B2Cでサインイン、サインアップする方法についてまとめます。

ビルドイベントに仕込んだrobocopyのエラー解消について

ビルドイベントで、ビルドしたらファイルを別のフォルダにコピーするみたいなことがしたかったんですが、Visual StudioRobocopyがエラーになりましたみたいなことを言いだすので、

エラーが出ないようにしてみました。

自分への備忘録ということで

続きを読む

Web JobsのエラーをSlackに通知する話

この記事は、Microsoft Azure Advent Calendar 2017の14日目の記事です。

今回は、Web JobsのステータスをLogic Appを使って通知する方法について簡単にまとめます。

使うサービス

今回の記事に関係するサービスは、下記のものです。

  • Web Jobs
  • Logic App
  • Slack

今回は、これらのサービスはあらかじめ用意してある前提で進めます。

通知までの流れ

今回の大まかな流れは下記になります。

  1. Logic AppでWeb hookを受け取るトリガーを追加
  2. Web Jobs完了時にWeb hookを発行する設定の追加
  3. Web Job終了時のステータスが成功以外の場合に任意のSlackに通知するコネクタをLogic Appに追加

仕組みの設定

Web hookを受け取るトリガーの設定

トリガーは、Logic Apps デザイナーで設定します。

ここで使用するトリガーは、Http要求の受信トリガーです。

image

要求のコネクタを選択するとHttp要求の受信トリガーが出てきます。

image

トリガーを選択すると、JSONスキーマを設定する項目が表示されます。

この中にWeb Jobsが発行するWeb hookJSONスキーマを定義します。

image

今回、下記のスキーマを使用します。

{
    "properties": {
        "duration": {
            "type": "string"
        },
        "end_time": {
            "type": "string"
        },
        "id": {
            "type": "string"
        },
        "job_name": {
            "type": "string"
        },
        "name": {
            "type": "string"
        },
        "output_url": {
            "type": "string"
        },
        "start_time": {
            "type": "string"
        },
        "status": {
            "type": "string"
        },
        "trigger": {
            "type": "string"
        },
        "url": {
            "type": "string"
        }
    },
    "required": [
        "id",
        "name",
        "status",
        "start_time",
        "end_time",
        "duration",
        "output_url",
        "url",
        "job_name",
        "trigger"
    ],
    "type": "object"
}

 

ロジックアップを保存すると、HTTP POSTのURLの項目にWeb hook用のURLが発行されます。

このURLをKuduに設定するのでどこかにメモしておきましょう。

 

Web hookの設定

Web hookの設定は、Kuduの画面から行います。

image

Tools → Web hooksから設定画面に遷移できます。

Web hook設定画面ので先ほどメモしたURLをSubscriber Urlに設定、リストボックスの項目をTriggeredJobFinishedに設定してAdd Urlを選択します。

image

Slack通知の設定

分岐条件の追加

このままWeb hookが発行されたら通知するでも問題ないですが、今回は、エラーになったら通知するようにしたいので条件分岐を行います。

Logic AppのLogic Appデザイナーから分岐条件を設定します。

新しいステップの追加 → 条件の追加 を選択します。

image

条件設定は、まず左のテキストボックスを選択して設定します。

image

選択すると、JSONのプロパティが選択できるのでStatusを選択します。

右側にSuccessを入れて、下記のように設定します。

image

これで、StatusがSuccess以外の場合にTrueになる設定ができました。

 

Slack通知の設定

True、Falseで条件分岐するので今回はTrueになったらSlack通知をするように設定します。

image

Trueの場合のアクションの追加を選択します。

テキストエリアにslackと入れるとSlackのコネクタが出てくるので、投稿メッセージを選択します。

image

選択するとサインインボタンが出てくるのでSlackにサインインします。

Slackに接続すると、チャンネルと送信するテキストを入力する画面が出てきます。

メッセージのテキストには、任意のテキストか、JSONで送られてきた値が使用できます。

image

また、詳細オプションを表示を選択すると、送信者名などの細かい設定も可能です。

設定が完了したらLogic Appを保存します。

これで完了です。

Logic Appから通知を行うとSlackでは、下記のようなメッセージになります。

image

 

まとめ

ノンコーディングでエラー通知が簡単に作れました。

複雑なメッセージを送るといったことはせず、とりあえずエラーが発生したかどうかだけでもすぐに通知したいといった場合に簡易通知システムとしてLogic Appは結構優秀かなと思いました。

Logic Appはコーディングなしで簡単に色々できるのでぜひいろいろ使ってみましょう。

Queueトリガーをローカルでデバッグする

VS2017 Update3がようやく正式リリースされてFunction Appの開発が便利になりました。

Function Appの中でもよく使うであろうQueueトリガーをローカルだけでデバッグする方法についてまとめます。

前提条件

下記がインストール済みであることを確認してください。

  • Visual Studio 2017 Update3
  • Azure Storage Emulator(2017/08/15現在5.2.0.0)


プロジェクトの作成


デフォルトでFunction Appのプロジェクトを作ると

が含まれたプロジェクトが作成されます。

.cs等のファイルは、デフォルトで含まれないので、プロジェクトを追加 > 新しい項目で.csを追加します。

項目追加の画面にAzure Functionの項目が追加されているのでそれを選択します。

image


選択すると、別途ダイアログが表示されて、使いたいトリガーを選択することになるので、Queue Triggerを選択します。

image

ConnectionとPathに適当な値を入れます。

Connectionは、settings.jsonで接続文字列のキー、Pathは、Queue名になります。

生成された.csはRunメソッドのみが含まれたファイルになります。

引数のPath Nameの部分に先ほどのPaht、Connection NameにConnectionが入ります。

        public static void Run([QueueTrigger("<Path Name>", Connection = "<Connection Name>")]string myQueueItem, TraceWriter log)
        {
            log.Info($"C# Queue trigger function processed: {myQueueItem}");
        }


接続設定

プロジェクトが作成出来たら、local.settings.jsonに設定を入れていきます。

デフォルトだと下記のようなファイルになってるはずです。

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": ""
  },
  "ConnectionStrings": {
    "<Connection Name>": "UseDevelopmentStorage=true"
  }
}

Connection Nameに先ほどConnectionに入力したものを入れます。


UseDevelpmentStorage=true は、Storage Emulator用のショートカット文字列です。


これで実行するとQueueトリガーが動きます。

image


まとめ

いい感じにローカル環境でFunctionをテストできるようになったのでこれでよりFunction Appが身近なものになりました。

ほかのトリガーもこの要領で使えるはずなのでバンバン使ってみましょう。

Halo Wars2を遊んでみました。

ちょうどHalo Wars2を遊ぶ機会があったので簡単なレビュー的な奴を

thumbnail_Halo Wars 2 2017_03_08 0_45_17

概要

Haloは言わずと知れたXboxの看板タイトルの一つです。

主人公のマスターチーフはXboxのマリオみたいなポジションですね。

Haloシリーズは基本的にFPSですが、Halo Warsシリーズは、少し趣を変えたRTSです。

エイジオブエンパイアシリーズを作っていたMicrosoftらしい安定した面白さがあるタイトルです。

ちなみにこのゲームは、Xbox Play Anywhereに対応しているため、PC版のソフトを買うとXbox Oneでも遊べます。(逆も然りです。)

 

雑感

Haloシリーズは、代々美しいグラフィックに定評がありましたが本作も例に漏れず非常に美しいグラフィックで表現されています。

また、ストーリーモードもさることながら今回マルチプレイモードで初めて導入されたBlitzモードが非常に面白かったです。

これは、RTSにカードゲーム的な要素を導入したモードで、Halo5の徴発システムをHalo Warsに落とし込んだような内容です。

チュートリアルも丁寧で非常にとっつきやすい反面、今までのRTS以上にスピード感が求められるため、ゲームパッドでもプレイは厳しい印象でした。

※画像はチュートリアルのものです。

thumbnail_Halo Wars 2 2017_03_08 0_48_39

 

デッキからカードを引いて状況に応じてカードを選択してゲームを進めていくのは、今までのRTSのような拠点製造、決まったユニットの製造の組み合わせ以上に運の要素と、その中で勝つための戦略が求めらる印象でした。

thumbnail_Halo Wars 2 2017_03_08 0_51_39

またこのソフトは、XboxとPCでクロスプレイに今のところ対応していません。

ゲームパッド、マウス + キーボードの両方でプレイした感想としては、ゲームパッドとマウス操作では、マウス操作の方が圧倒的に柔軟で素早く操作できるため、プラットフォームを分割したのは賢明な判断といった印象です。

気になったところ

プレイしていて二点ほど気になった点がありました。

  1. 音声が吹き替えではない
  2. ムービーの解像度がシーンによって異なる。

音声については、Haloシリーズで初めて音声が吹き替えでなく、英語音声 + 日本語字幕になりました。

ここ最近のMicrosoftのタイトルは、XboxOneの世代から顕著ですが、Sunset overdrive、Forza Horizon3,、Gears of War4、Quantum Breakなど基本的に吹き替えされないことが多くなりましたが、Halo5は吹き替えのままリリースされていました。

そのHaloシリーズが吹き替えられなくなったのは非常に残念です。

こうなると、今後Haloシリーズが続いていっても突然吹き替え版が出ないような事態になる可能性もあり、非常に残念でなりません。

 

ムービーの解像度については、今回私がプレイした環境は、ウルトラワイド液晶を使用してPCでのプレイです。

多くのゲームの標準である16:9の解像度で決めうちになったもので統一されていればいいのですが、今作は、場面よってウルトラワイドでもフルスクリーンになる部分とならない部分があり、

ゲームプレイに影響はないですが、見栄えとして若干気になりました。

プリレンダリングのムービーとリアルタイムレンダリングのムービーの違いとかだと思うのですが、もう少し統一感が欲しい印象です。

 

まとめ

全体を通して、Halo Wars2は、前作のHalo Warsから比べて、ゲームプレイの面では、正統な進化という印象です。

また、Blitzモードが導入されたことにより新しいゲームプレイも体験できる内容から、RTS好きや、RTSに飽きてきた人にとっても新鮮な感覚で遊べるタイトルという印象です。

RTS好きの方も、RTSに不慣れな方も、この機会に遊んでみるのはどうでしょうか。

デッドライジング4を遊んでみた話

久々のブログです。

しかもはじめてテック系以外の話題です。

 

 

12/8にカプコンから発売されたデッドライジング4を遊ぶ機会があったのでちょろっと感想なんかを。

一応メインストーリーは、一通りクリアした状態です。

 

※ 一部ネタバレを含みますのでご注意ください。

また、CERO-Zなので画像もそれっぽいものがありますのでご注意ください。

 

シリーズの概要

まず簡単にデッドライジングシリーズの概要を

デッドライジングシリーズは、いわゆるゾンビゲームです。真・三國無双 + ゾンビみたいなノリのアクションゲームです。ただそれだけです。

映画にもなっており、(プライムビデオで観れます。)幅広く展開しているシリーズです。

従来のシリーズは、一定時間以内にクリアするという時間制限があらかじめ設定されたゲームでしたが、今作からその時間制限が撤廃されました。3でも1, 2と比べてかなり時間制限が緩くなり自分のペースで遊びやすくなりましたが

今作からは完全に自分のペースでゆっくり遊べるようになっています。

元々収集物が多いゲームだったので時間制限の中でどう回収して回るかやいわゆる周回プレイ推奨なゲームバランスでしたが今作はだいぶそのあたりの毛色が変わったかなという印象です。

 

今作について

今作は、XboxOne/Windows10専用タイトルです。

残念なことにXbox Play Anywhereには対応していないので両方で遊びたいという方は注意してください。

今作のストーリーは、クリスマスのWillamette(初代デッドライジングの舞台)ということでホリデーシーズンに遊ぶのに持ってこないな内容です。

アイテムも、クリスマス関連のオーナメントなどが多数あり、従来のシリーズよりも若干テンション高めです。

今作のコブンヘッドもキマってます。

Dead Rising 4 (3)

 

ちなみにストーリークリア時の状態は以下の画像の感じです。

実際のプレイ時間は、14時間程度なのでここに出ているプレイ時間はバグってます。

Dead Rising 4

 

大雑把に感想など

良かったと思う点

  • 初の吹き替え
    • 今までは、字幕だったためアクション中の会話シーンがしんどかったのでそれが解消されました
  • 美麗な映像
    • 一作目から遊んでいると3辺りから一気に綺麗になった印象ですが、今回も相変わらず綺麗でした。
  • Exoスーツ(強化外骨格)の導入
    • これのお陰で従来以上のとてつもない爽快感が生まれました。
  • レベルがサクサク上がる。
    • フランクさんが気が付いたらめっちゃ強くなってます。今までで一番上がりやすいかも?
  • ゾンビのパターンの追加
    • 頭のいいゾンビやらバリエーションが増えたのはよかったです。
  • コブンヘッドに表情が追加された。
    • 今までは固定だった表情に喜怒哀楽が入りました。
  • カメラを使った探索
    • カメラを使って色々できるのでこれもなかなか面白いです。

Dead Rising 4 (4)

 

悪かったと思う点

  • エンディングが消化不良。おそらく別途購入 or シーズンパスに付属のDLCでストーリーが完結する感じ。
    • 有料のDLCを結末に持ってくるのは流石にいただけない。
  • フランクさんのキャラが違う
    • 誰だこいつ感が強いので、別キャラと思ってプレイしたほうがいいです。
  • コンボ武器が少ない、3ほど爽快感のあるぶっ飛んだ武器がないのがなんとも微妙な感じです。
  • サイコパス → マニアックへの変更。
    • これが一番致命的。専用ムービーもなく、通常の敵性生存者と大差ない能力なのであっさり戦闘が終了するのもいただけない。
  • 稀に再起動が必要なバグあり。
    • メニューを開くと返ってこないバグを踏みました。

 

まとめ

シリーズプレイ済みの方にも未プレイの方にもおすすめできる非常に面白いゲームだと思います。

特に過去のカプコンのゲームが好きな方だと、衣装や武器に過去のカプコンのゲームに関連したアイテムが多数登場する作品でもある今作は、ふふっとできるシーンが多数あり楽しめると思います。