Azure Functions v2で躓いた話

Azure Functions v2の作成でいろいろトラブったので、そのネタを

普通に構築している環境なら問題ない話ではあります
ただ、ちょいと色々実験してたところでやってたもんで、おかしな現象に遭いました

まずコンパイラで正常に通らない現象に出会いました
しばやんさんの記事を読んで、最新SDKでひゃっほーしようとしたところ、どうにもエラーが出て、「.NET Conf 2018 Tokyo」で相談して、リコンパイルで通るということだったのですがどうにもなりませんでした。
※その節はお手数かけました

いろいろ調べて、「%userprofile%\.nuget\packages\microsoft.net.sdk.functions\」を削除で回避できました。
MSB4063/4062エラーだった場合これで回避できるようです。

さらに最新盤でついにTemplateもdotNETCore2.1対応したとのことで、更新して、選択画面上は「dotNet Core」となっているのですが、
作成すると、そのままStandard 2.0 で作成され、正常にコンパイルも通らなかったのです。

この場合、「%userprofile%\.templateengine\vs-2017.3」にある「15.8.xxxx.xxxx-xxxxxxx-AzureFunctions-Azure Functions v2 xxxxxxxxx」を、念のため移動させて、VisualStudio2017を立ち上げて、テンプレートを最新に更新すると、無事正常に作成されて、コンパイルもローカルデバッグも無事行えました。

というわけで、あほなことやってた自分の責任というネタでしたww

.NET Conf 2018 Tokyo 参加してきました

10/13 .NET Conf 2018 Tokyo 参加しに会場の日本MSいったわけですが、久しぶりだなw
メモをほぼそのまま書きなぐり

キーノート

・チャックさん(井上 章)
 SignalRマネージド を使用したクイズ
 DotNetはWindowsだけだったのがあらゆる場所に使えるように
 2002に.net fw 1.0

 いまロゴはMSが直接は出していない
.Net Core によるMS的eShopのreferenceがある
https://github.com/dotnet-architecture/eShopOnContainers

.net core 2.1
EF Core
ASP.NET Core
IoT Device

dotnet core 2.2 Preview

SignalR Service

Blazor
https://blazor.net

WebAssemble実装

Razor Components(“Server-Side Blazor)
 クライアントではなくサーバ側(SignalR)でBlazor

.net core 3.0 ロードマップ

ML & .NET
aZUURE CognetiveService

ML.NET 0.6 Preview

クラウドへのアプリ展開は
docker container単位になるんではないか?

VSからは拡張機能を入れておけば、GUIで追加して、サクッといける

ServerLess Functions

—————————————–

Azure CLI と便利な仲間たち

大平さん @dz_

Microsoft Opennes

Linux On Windows

WSL

WsLinux

Linux On Azure

Linuxインスタンス数が50%超えた

OINにMSが加入、60万件のLinux関連特許を提供

MSがGitHubにAzure関連リポジトリを1000近く

MS版ハックオクトーバーフェストやってます

Azure CLI
 いいところ
 ・手順書作りやすい
 ・情報を取得しやすい

Microsoft Leam
学習サイトで学びながらが良い

—————————————–

継続的にテスト可能な設計を考える

中村 充志 リコーJapan
https://github.com/nuitsjp/Continuous-Testable-Design
https://www.slideshare.net/AtsushiNakamura4/ss-119275254

インターフェイスの抽出

IFは依存させたい側の文脈で書く

おんなじアクターが使うビジネスロジックをまとめる
違うなら分ける

アブストラクタをIFの代わりに使う手もある

—————————————–

激論 ASP.NET / ASP.NET Core

井上さん & しばやんさん

.Net Core 2.2について

IIS In-Process Hostingでパフォーマンスが上がる

Tiered Compilation
JITコンパイラ
岩永さんが書いてる

2018年末予定

.Net Standard 2.1
span/Memoryがやっと来る

Brotli/SIMD/System.IO.Emurationも追加

releaseスケジュールは不明
Core2.2と同時だと思うけど、、、

ASP.NET Core
2.2は比較的小規模release
 API/Server/SignalR

APIControllerの挙動が改善 / HTTP REPL CLI(dotNet global tll)

KestrelとHttpclientがHTTP/2対応
 HttpClientFactoryを使うようにする

SignalRのC++/Javaクライアントがrelease

EF Core
2.1でLazyLoadingに対応
 LINQでGroupByにちゃんとSQLに変換してくれる

 2.2は小さなrelease
  CosmosDB provider が入るかも < 沼っぽい、使わないほうが良いと思う

3.0ではC#8対応を頑張ってるらしい
 IAsynccEnumerableとかユースケースが思いつかないけど

Blazor/Razor Components
WebAssembleどう活用する?
最新バージョンはプレビュー
Razor Componentsは.NetCore 3.0と同時にリリース予定

.Net Core 3.0 / .Net FW 4.8予定
WPF/WinForが。NetCore3.0で動作

.Net FW4.8自体はほぼ新機能無し

VS2019 / C#8

2017は15.9が最終リリース

C#8も同時リリースか?
 Nulltable reference typesを使いたい

CONECTは多分やるはず

Azure Functions V2
Core2.1ではまだかけない Std2.0で、今修正中だが、SDKは対応したのでもうちょいじゃなかろうか

SignalR サービス

Azure Pipelines
WindowsのCI SaaSは貴重

—————————————–

ブロックチェーンチョットデキル人が Kubernetesを完全に理解した!

竹井 悠人 株式会社bitFlyer

51%攻撃の実現方法
 実際にはブロックチェーンの考え方に関する説明
 クラウド使ったコンテナによる攻撃

UWPによる業務アプリを考える

忙しさと書けない事柄ばかり増えてて間が空いてしまったので、ちと気分転換に

・業務アプリでよくある環境
 ・Windows7以下
 ・CLIコンソール(サーバ直)

・次世代は?
 ・Windows10
 ・Android
 ・iOS
 ・Web(HTML5)

・業務アプリ is 問題?
 ・社内システムのフロントエンドだけであることが多い
 ・オンプレ前提となっていることが多い
 ・古いコードがそのまま
 ・同じような機能が複数アプリになっていて連携しない
 ・Windows7のサポート期間終了が目前
 ・最新OSへの対応が不明
 ・インターネット対応が不十分
 ・クラウド非対応

・どうする?
 ・クライアントの更新を考える
 ・64Bit対応
・クラウド環境への対応
・そもそもデスクトップアプリとするべきなのか

・いきなり全部は無理!
 ・どこから手を付ける?
 ・コロンブスの卵問題が発生するのですが、システム間連携が今どうなっているかを確認し、切り分けを行うところからがスタートでしょうか。
 ・フロントのOSはどうする?
  業務ごとに変えていいと思いますが、社内はWindows10でいいと思います。
  外回りのシステムは、AndroidでもiOSでもWindows10でも持ち出して操作できればいいですね。
  まあ、DaaSへ接続さえできればいいなら、何でもいいんですけどね

Windows10ならUWPで作成して、企業向けMicrosoftStoreで配布が楽でいいかな。

今今のUWPならdotNetStandardでSQLクライアントの対応やLDAPも「Novell.Directory.Ldap.NETStandard 」で可能になったようです。

OracleDBはRestAPIを経由するか「Oracle.ManagedDataAccess.Core」を出しているので対応できるかなと。
※検索だとベータが引っかかるけど、ベータじゃなくなってますね「Latest News: .NET Development with Oracle Database

UWPならオンプレミスでもクラウドでも対応できるので、業務アプリとしてはUWPに寄せていって問題ないと思います。
もう一つ利点もあって、XamarinでAndroidとiOS対応時にコード使いまわせます。

ま、今回はこんなところで

Wildfly on Azure WebApps(Windows)

Wildfly をWebApps(Windows)に乗せてみた

他にも行っている方がいるのですが、うまいこといかなくて、成功している方などの情報から構築成功したので、書いておきます。

環境

  • WebApps for Windows
    • Java バージョン:8
    • Javaマイナーバージョン:新しい順
    • Java webコンテナ:新しい順 Tomcat 9.0

手順

・Kudo画面を開く
・\site\wwwroot\へ移動する
・CMDから以下のコマンドを実行する

・「Web.config」を追加し、下記の内容とします。
・やっていることとしては、「PORT」の指定、タイムアウトを伸ばして動作安定までのラグを確保、「HOME」の指定となります。

・アクセス直後は、起動にはかなり時間がかかりますので、必要であれば、WebAppsを上位契約とし、常時接続をONにしてください。

これでなにすんの?

・AAD認証などAzureサービスでのPaaS、SaaSをいろいろ組み合わせやすくなる
・サービス展開がやりやすくなる
・オンプレに乗っているJavaAPIサービスをAzureのPaaS化すればUWPからいじりやすいよな(ぉぃ
ええ、色々よこしまな思惑やら仕事がらみもあったわけですが、ネタ的にはこんな感じですかね

ASP.Net Core 2.1.1 明示的バージョン指定

しばやんさんが書いた「ASP.NET Core 2.1 の暗黙的なバージョンには注意」で、んじゃちと回避策を試そうとやってみました

結果としては、確かに明示的にバージョン指定すればおとなしくなるなですねw

標準

明示的2.1.0

明示的2.1.1

というわけで、今後はKudoでAzure上のバージョン確認しつつ、ここがVisualStudioの更新で治るかを期待でしょうか。
まあ、その前にVS2017で.NetCore2.1標準で選択肢に出てこないんですけどね、、、
※.NetCore2.1SDKをインストールしていれば出ます

CDS?

Common Data Service

PublicPreviewとはなっているものの、各所のサービスに出てきてるのですが、これ何者よと思いつつ、いろいろ絡んでいるもんで、少し調べてみました。

何するの?

個人的な認識としてはAzure上で展開される各種サービスやサードパーティ提供のDataを中央に集めて相互変換する代物ですかね?
なんとなくBizTalkServerのマッピング機能特化型サービス化とも思ったのですが、なんか微妙に違うなと。
分かりやすそうな使用部分として出てくるのは、D365のCRMとERPを相互データ運用するのに使っているイメージのようです。

Common Data Model

実際にはCDMという定義がベースとなり、PowerAppsやBIを使用しやすくするという部分があるようです。

’18 Spring Business Application Update

今更見つけてみてたんですが、D365特にERPのほうにかなり手が入ったようで、しかもMSの新Update方針、Modern Releaseに変わったようです。
しかもこの7月後半にBusiness Applicationのカンファレンスがアメリカであるようで、またUpdateが走るようです。

まとめ

Functionsのイベント候補にもなっているようなので、せめて早いところPublicPreviewになってほしいですね。

これをUWP、Xamarinから使えば、Azureからのデータを管理するアプリとかサクッと作れそうですね。
いや、MS的にはPowerAppsからやってほしそうな気は\しますが、業務によっては要望があるかなと。

さて、そろそろ今だしてるUWPアプリの更新もしないとだな、、

de:code 2018 所感

de:code 2018

5/22、23に行われた de:code 2018 へ参加してきました。

今回「Microsoft MVP パーソナルスポンサー」としてサンプルコードを提供いたしました。
なので、ページに写真乗ってたりしますw

しかも、キーノートのスポンサー紹介のところにも出ることになるとは(;’∀’)

さて、提供路行ったサンプルコードは「UWPからAzureサービス利用 ~今更ながらのUWPアプリ構築からのネタアプリ」にありますので、ご参照ください。

・キーノート

発表者が最後平野社長登場まで、すべて女性という、Woman in Technologyをキーノートから進めていました。

・各セッション

知りたい技術のセッションはできるだけ回ったんですが、やはりいろいろ時間が被って、泣く泣く選択していく状態でした。
混雑具合とか考えると開催を3日間にして、同時間セッション数を減らして、部屋の広さを確保できないかなと思いつつ、色々難しいだろうなと、、、

よかったこと

今仕事でやっている部分でどうしてももやもやしていたところを解消できて、次にどうやって行くかを考えるきっかけになったのは、de:code来ないとわからん部分だったなと

残念だったこと

澤さんのセッションどうやっても聞けないスケジュールで、泣く泣く諦めました orz

・全体

Build、de:code通して、大幅な新規技術がというよりは、PreviewがGAになったり、サービスブラッシュアップ、採用事例をどんどん出せる状況
今はCloudであることが普通であって、オンプレはオンプレで後方にいるのはしょうがないが、フロントや各サービスをクラウドへの移行が進んでいるなと思いつつも、日本のITはもっと切実にクラウドや古いオンプレをどうするのかをもっと考えていかないといけないなと思いました。

・今後

今年はGAするサービスも増えるでしょうし、マネージドサービスも増えてくることでしょう。
クラウドとオンプレが並行稼働はしばらく続くでしょうし、全部が全部クラウドというわけにはいかないでしょう。
クラウド、オンプレ全体としてサービス監視や運用をどうするかはまだまだ考えることは多そうです。

Azureにおけるセキュリティを考えてみる2

・Azureにおけるセキュリティを考えてみるのその2です
今回は全体的な環境を考えてみましょう

まあ、よくある販売購買やってる会社的な感じかな?

AzureやMSのクラウド製品群に関して言えば、MSのサブスクリプションによるセキュリティが一番大きなくくりとなります。
ポータルや管理画面などでのユーザー制御や、サービス制御がそれにあたります。

つまりここでの管理者アカウントや上位権限ユーザーアカウントの漏洩が最も大きなセキュリティリスクとなります。
これは当然のことだと思うので、管理や引継ぎはしっかり行うべきですね。

On-PremissでのActiveDirectory(以下AD)情報はAzureAD(以下AAD)へAD Connectサービスで同期が可能ですが、クラウドサービスへ軸足を移すのであれば、On-PremissのADをAADを正にするように移行を計画するべきでしょう。

On-Premiss ADはAADのOn-Premissサービス用認証サービスとして、AD FSもそのためのサービスとして運用を切り替えましょう。

D365での認証についてですが、AADでの認証を標準とした構成にしないとAzure連携アプリが非常に作成しにくくなります。
もちろん、証明書認証に関するコードを用意することでAD FSも含んだOn-Premiss側認証を利用できますが、環境によって開発工数変わるんではないでしょうか。

・簡単に言えばどういうこと?
AzureはActive Directory(AAD)で認証、セキュリティが担保されるようになっているので、それをもとに各種機能をAADにアプリケーション登録することでAD認証配下とし、AD認証を必須としてください。

さて、ここのところが普段アプリ系記事しか書いてない私が、こんな記事書いた理由です。
アプリ書いてるとなると、Azure サービスプリンシパルでの認証がよくやることとですが、上記の部分がきちんと立てつけられていないと、そもそもセキュリティを考慮したも何もあったもんではないとうことで、書きました。

今後さらにクラウド上へ自社サービスやシステムの構築ということが行われ、On-Premiss環境との連携はクラウド側が主体となることが多くなっていくことでしょう。

開発者はいろいろなIaaS/PaaS/SaaS/FaaSを駆使しながら開発を行うこととなりますが、セキュリティへの考慮が特に求められることとなっていきます。
Azureでは各種サービスをシークレットキーで基本的に守る形となっていますが、万が一の漏洩に対しては、Azure Key Vaultを使用し、自動でシークレットキーが更新され続ける機能もあります。

シークレットキーの管理に関しては、そもそも内部犯行許さないようにしてれば、Key Vaultまではと思いますが、高セキュリティが求められる場合は仕方がないですね。

また、StorageServiceにもファイヤウォールが登場し、もともと暗号化などはされていましたが、アクセス制御が可能となり、データ保護が一段と進みました。

クラウドサービスでUWPアプリ開発しようぜ!
いや、クラウドサービスそのものの開発もしますがw

Azureにおけるセキュリティを考えてみる

・Azureってなに?
 AzureとはMicrosoftが提供しているCloud Serviceです。
 たとえば、AmazonのAWS、GoogleのCloud PlatformなどもCloud Serviceとなります。

・なんでセキュリティの話?
 経験上、仕事の際などにどれだけセキュリティが高いのかや、どうやってもっとセキュリティを高めればいいのかを、聞かれたり、考えたりということをする機会が増えたので、自分のメモ的に現在(2018/02)時点での考えを取りまとめるためにちょうどいいのでBlogのネタにしました。

 まあ、概要がここに書いてあったりするんですけど。
 Microsoft Azure セキュリティの概要
 https://docs.microsoft.com/ja-jp/azure/security/azure-security-getting-started

 というわけで、この見解は私の個人的な独断と想像、いじれた範囲からの記事であることをご承知下さい。

 この辺に関しては、全体的な構成図と一緒にどこかでMS社に公開してほしいような気がするんですが、、、

・Cloudとは言っても物理的なサーバは存在しているはずで、そのセキュリティは?
 Azure本体(データセンター)のセキュリティといった部分ですね。
 現在世界各国で42 リージョンが存在しているそうですが、当然そこのセキュリティは強固です。
 クラウドのサービス拠点として、日本は東日本、西日本と書かれますが、どこに置かれているかの正確な場所は非公表ですし、MSの中の方々でも知っている方はほとんどいないのではないかと思います。

 https://azure.microsoft.com/ja-jp/overview/datacenters/how-to-choose/

 ちなみに、ディスクドライブの廃棄の際は、構内の専用箇所でデータの消去作業後、最低4つに分断、かつ専用コンテナでそれぞれ違う国の処分場へ輸送の上で、最終処分を行うとのことです。

・AzureってMSが監視しているの?
 契約クラウドサービスそのものの完全監視は行っていないようですが、その基盤は当然MSの監視下であり、今までもMS本体へ世界中からアタックを受けながらも、セキュリティを確保している高度なセキュリティレベルをクラウドサービスの基盤部分でも実施しているそうです。

 よく、自前のほうが安全ではないかという方々がおられますが、MSと同等の金額と人員規模、技術力をそろえることが
できているのかご確認ください。
 なお、セキュリティセンターの入り口の写真(ロゴの壁)とか、内部イメージはたまにMSの講演で表示されることがあります。

・インターネットにさらされているんだから全部IP制御させろ
 全部は無理です。
 とはいえ、外部アクセス制御そのものはNSG(ネットワークサービスゲートウェイ)などで行うことができます。
 また、PasS/SaaS/FaaSで作成されるAPIに関しては、各種サービスを組み合わせることで制御可能ですが、そんなにアクセス不能にすると自身で開発したサービスの継続開発や運用に支障をきたします。

・どんな開発の組み合わせがあるの?
 開発でよくあるのは「WebApps(ApiApps)」「LogicApps」「Funcsions」の組み合わせでしょうか。

 「ApiApps」に関しては以前はAppricationGateWay(AppGW)を使用するにはAzure App Service Environment(ASE)を作成し、その中に配置することでIP遮断とGW制御が可能となっていました。

 とはいえ、いまならASEを使用しなくてもAppGWをApiAppsに使用可能なので、NSGによる制御で十分ではないでしょうか?

 ASEのもう一つの利点としては閉塞ネットワーク制御に便利といった部分でしょうか。

 Azure のネットワーク セキュリティの概要
 https://docs.microsoft.com/ja-jp/azure/security/security-network-overview

 「Funcsions」もApiAppsと同じように制限可能です。

 そして自分がかかわった中ではよく議題に上がるのが「LogicApps」に関してです。
 機能としては「Logic Flow」と呼ばれるサービスになるのですが、これは外部に公開することを前提としたサービスのため、IP制御が基本的にはできません。(IPアドレス制限はできる)

 「WebApps(ApiApps)」「LogicApps」「Funcsions」に対してセキュリティ保護をかけるのであれば、API Management Serviceを使用し、Azure Active Directoryと連携した総合API管理を行うのが良いと思っていますが、なかなかそこまでという場合は、そもそも公開しないか、クラウドでやるのか再検討してくださいとしか言えません。

・個人想像での図としてはこんな感じかなと
 その2に続く

Windows 10 Mobile によるリモートワークの可能性

この記事は「Windows 10 Mobile Advent Calendar 2017」に参加しています

さてさて、まずは下準備ということで、AzureでVMを作成しました。

これで、Windows 10 MobileのContinuumからつなごうという趣旨なわけです。

で、有線Continuumでやる予定だったのですが、ちょいとうまくつながらなくなったので、Windows10PCの接続アプリを使用して、Wi-Fiによる無線Continuumで作業しました。

準備ができたらW10M側のContinuumアプリで接続をかけます。

接続すると、普通にContinuumモードになります。

リモートデスクトップアプリに準備済みの接続実行!

証明書忘れてた(;’∀’)

サクッとWindowsが起動します。

というわけでVisualStudio2017搭載VMなので、起動して作成してみましょうかね。
……しまった、英語だったなこれ、まあ、設定で日本語にするなり、そのままでも問題なく使えると思いますが。

あ、OSがWindows10じゃないからUWPアプリ駄目じゃないか。

えーVMでWindows10のVMを選択の上で、VisualStudioをインストールしたほうがリモート開発環境としては良いということでw

リモートワークの可能性ということで、とりあえずW10M上のPowerPointを


有線Continuum&有線LANであれば、十分なVMを用意し、環境を整えればプログラム開発をリモートワークとして、セキュリティを保って行うことも可能ではないかと思います。

また、通常のofficeアプリでの作業はマクロをゴリゴリ使うということでなければ、十分使用可能であり、無線ContinuumまたはUSB-C to HDMI機器でのプレゼンなど業務も行えることでしょう。

これだけのことができる Windows 10 Mobile がという思いはありますね、、、
ただ、Windows 10 On ARMが正式に発表されたこともあるので、ひっくり返す何かが起きればうれしいですね。

Windows Phoneはいいぞーー!