HTTP triggerを単一化してみたかったので、勉強がてら実装してみました
コードはGitHub「https://github.com/CryEarth/DurableFunctionsV2Learning」に公開しています
Windowsストアアプリ/WindowsPhoneでのC#プログラムとか
HTTP triggerを単一化してみたかったので、勉強がてら実装してみました
コードはGitHub「https://github.com/CryEarth/DurableFunctionsV2Learning」に公開しています
・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
・HoloLens – 真のエンジニアが知るべき実装
最初のセッションはHoloLensで
HoloLensのアプリは前日のセッションでもあったのですが9割がUnity製……ですが、DirectXを使用し、HoloLensというテクノロジーを理解というセッション
DirectX – Windows Mixes Reality – UWP を連携して行える
Unityと比べた際の利点は、制御をこちらで行えるので、制御をきちんとすれば、Unityよりも省電力でよい表現が可能とのこと。
・ホログラフィック アプリテンプレート(Holographic DirectX 11 App)
ベースとなるテンプレートはHolographic SDKインストールで使用できる
見ていてDirectX12ではなくDirectX11なので、今後アップデートで変わるのかなと
テンプレートを使用した処理の流れが説明されました。
DirectXでのシェーダーはテンプレートで提供されているものを参考に
・CreateDeviceDependentResource
・GeometryShader.hlsl
・PixelShader.hlsl
・VertexShader.hlsl
・VRRTVertexShader.hlsl
座標の追従、ボイス入力、サウンド(SpatialSound UWPサンプル)
空間マッピングを利用するには、「package.appmanifest」に「spatialPerception」を追記する必要があります。
(HolographicSpatialMapping UWPサンプル)
カメラはMedia Foundationを利用してトラッキングなどを行う
(HolographicFaceTracking UWP サンプル)
入力反応はBluetoothによるイベントハンドラーになります
CPUベンチマークを取るとCore i7 6600Uを1として比較すると、HoloLensは0.15、Lumia830で0.048程のスペックであることを認識しておくべき。
HoloLensアプリを作成する際のパフォーマンスの検討
HoloLensが認識する空間データは穴が開いていたり、幻(存在しない)の面が出たり、偏りが発生する。
また、ほぼ平面なのにメッシュが細かく、パフォーマンスなどに影響が出る
「ポアソンサーフスリコンストラクション」を使用するなど、データを整える必要がある。
HoloLensだけではなく、いくつかのテクノロジーを組み合わせることで、空間と時間を超えることができる!
・IoTのセキュリティアーキテクチャと実装モデル
2セッション目はIoTに関して
現在IoTが増えているが、乗っ取り、漏洩、破壊の脅威が増えてきている
セキュリティを確保するには分断されたセクションで考えるのではなく、全体を通してセキュリティを確保する必要がある。
どこからどこに引き渡しが存在するのか、その引き渡し元/先は本当に意図した引き渡し先なのか
今後、AIとセンサーが融合することで、デバイスの相互作用に関するリスクが顕在化するはず、今から包括的にセキュリティを確保しましょう。
・GTC2017直送! NVIDIA GPU技術最前線
ランチセッションです
しょっぱなから「謎の企業」ネタで沸いていました。
また、NVIDIAは全部大文字で読みは「エヌビディア」ですとアピール
新たなNVIDIAのGPU Volta を搭載したTesla V100やスパコンDGX
そして、NVIDIAが提供するGPGPUCloudサービスは他のクラウドサービスにも接続可能など、まさにGTC2017直送でした
・知っておくべき UWP アプリ開発の A to Z
いまUWPといった場合は、Windows10用アプリプラットフォーム
Desktop、Mobile、Xbox、IoT、IoT headless HoloLensがデバイスファイミリー
クロスプラットフォームも作る場合はXamarinで
Win32アプリはDesktop Bridge でUWP化する(Desktop App Converter)
Windows Template StudioでUWPアプリ開発の効率化
HockryAppでクラッシュレポートを収取
UWPはいいぞー(個人の感想です)
・C#の現状と今後を徹底解説!「この素晴らしいC#に祝福を!」
C#は7.0に到達
6.0が出るまでに時間がかかり、機能更新も少ないように見える
Roslyn、オープンソース化、C#による再実装で時間がかかったが、これは次の10年、20年に向け末永く戦える環境のため!
.NET Frameworkも同じように再実装による停滞期に
.Net Coreへの移植もあり、C#にも影響が出ている
今を抜ければ.NETも次の10年、20年を戦える体制に
IDE(VisualStudio、VisualStudio Code、VisualStudio for Mac)もクロスプラットフォーム化を進めているので、しばらく大変かも
C#はdata、performanceを強化していくことになる
今後も楽しみ
・Build 2017 Updates ~ Application UI Design
Build 2017で発表された、今後Application UI Designとして導入されるデザインガイド「Fluent Design」に関して
今後Windowsはデスクトップだけではなく、マウスやタッチパネルだけではなくなる
音声入力、ジェスチャー入力など幅が広がる事に対応しよう
これらの新しいデザインは勝手に適用されるという事はない、新しくアプリを作成する際に新しいコントロール、または新しいスタイルを適用しない限りそのまま
このスタイルは「Fall Creators Update SDK」から可能
Fluent Design System
Fluent Designのページ
壁紙だけとなると何なので、開発系な自分としては当然のように #VisualStudio で #UWP アプリの開発を試すわけでして
・インストール後のアカウント認証でHiDPI非対応なのかずれが、、、
・開発中だったネタをVisual Studio Team Servicesで引っ張ってきてこつこつ
Windows 10 Mobile Emulatorもきちんと動いています。
重い3Dの開発ということでなければ、UWPでもAndroidでもXamarinでも遠隔開発でもなんでも行けると思います。
ただし、デスクトップと違って内臓SSDが256GBまたは512GB(今回お借りした機体は256GB)ですので、あまりアプリケーションを大量に入れたり、大きなデータを中に持つという開発には少々向きません。
MicroSDカードスロットはありますので、128GBなどの大容量SDカードを使用することで、データ領域は増やせるとは思いますが、あまり頻繁な書き換えには速度的にも向きませんので、NAS を用意するなど工夫は必要でしょうか。
Visual Studio 2015でUniversal Windows Platform アプリを作成する際にWindowsの「設定」で「開発者モード」を有効にしていないとXAMLを編集する際にデザイナのExtensionが登録できないためエラーを起こします。
System.Exception
パッケージを登録できませんでした。
エラー 0x80070005: 要求を処理しているときに次のエラーが発生したため、windows.capability 拡張を登録できませんでした: アクセスが拒否されました。
このエラーですが、「開発者モード」を「有効にしていない」という形ではエラー表示されないため、非常にわかりにくいエラーです。
Windows8.1用のXAMLデザインはエラーが出ず編集可能なので混乱のもとになりそうです。
Amazon買取サービス非公式バーコード検索アプリ
バーコードデータを手入力では面倒なので、バーコード読み取りを利用して検索できるようにしたアプリ
検索を実行するとWebブラウザが起動して買い取りURLを開きますが、ブラウザの設定を「モバイル用サイト」ではなく「デスクトップ用サイト」に変更する必要があります。
このアプリはAmazon社とは一切関係がない検索お助けツールアプリです。
Amazon Japanの検索にのみ対応しています。
MADOSMAもリリースされたことだし、何かアプリをと思い構想2日、WindowsPhone 8.1 SilverLight & C#で制作実質2日でした。
※追記 2015/07/16
MADOSMAとLumia930で正常に動作しない可能性があるようです。
カメラがデバッグに使用したLumia1320とは違いがあるようで、フォーカスと配置に対する処理に差があるようでMADOSMAを手に入れないと何が違うのかが判別できない状態です。
使用できるように変更を考えてみます。
Microsoftによる開発者イベント「Build2015」と日本マイクロソフト主催の「de:code2015」が終了しました。
そこでたびたび出てきたWindows10における開発に関する言葉は、「Universal Windows Platform(以下 UWP)」でした。
「Universal」といえば、Windows8.1とWindowsPhone8.1用ストアアプリ開発として「Universal Application」という言葉が生まれ、両環境共通のコード(一部は専用)で開発が行われ、連携もするというのがあります。
「UWP」はこれをもっと踏み込み、「One Windows、One Store」を実現するための開発定義のようです。
Windows10とVisualStudio2015を使用して、Windows10、Windows10 Mobile(WindowsPhone)、Xbox、Windows IoT、これらに一括で提供できるように、さらに、Android、iOSのアプリケーションを「UWP」としてリコンパイルする機能がVS2015に搭載され、デモの限りではObject-CがVS上でコンパイルされ、「UWP」アプリとしてパッケージされる、Androidは「NDK」だとおもいますが、同じようにコンパイル、パックされていました。
もちろん、ストアアプリだけがVS2015の機能ではなく、制限はあるような気がしますが、Win32ベースのアプリも「UWP」にできるような部分もありました。
当然XamarinやApache Cordova等を利用したマルチデバイスへの開発も力が入っていました。
また、マイクロソフトのVR「Holo lens」も着々と開発が進んでいるように見受けられました。
いつごろ出てくるのかは大変楽しみなVRデバイスです。
さて、国内に目を向けると先だって「de:code2015」が行われ、「Build2015」での発表を受けた技術解説などが行われたようです。
自分は参加できなかったためTLを追いかけていたかぎりでは、大きなサプライズはなかったようですが、MouseComputerがこの夏発売予定の「MADOSUMA」に「Windows10 Mobile」をインストールしたものを展示していたようです。
発売時はWindowsPhone8.1のようですが、検証を重ねて「Windows10 Mobile」を判断するようです。
間もなくWindows10が走り出すと思われます、そして「Universal Windows Platform」により、10億デバイスへのリーチが可能になるかもしれないです。
「Windows10 Mobile」は少し後になるようですが、そろったときに面白い相乗効果が生まれることを期待していますし、当然自分は開発へ踏み込んでいきます。
まずはストアアプリの開発を通じて開拓してみませんか?
マウスコンピュータに続いて国内メーカーから発表がありました。
freetelブランドの端末はMWC前にプレスリリースが行われました。
「最新 Windows Phone OS 搭載スマートフォン、 2015 年夏までに国内発売予定のお知らせ」
なんと夏までに出すという表明です。
freetelは日本向けのSIMフリー端末販売会社なので、日本向け端末が確定したことになります。
京セラはプロトタイプとして高耐久端末にWindowsPhone8.1を搭載したようです。
engadgetさんのレポート記事がありました。
「京セラがWindows Phone 8.1スマホをMWC出展。『Windows Phoneは高耐久と親和性が高い』」
元々のAndroid端末にWP8.1を搭載しましたという段階のようで、端末のボタンがAndroidのままですね
PC watchさんにAcer社がWP8.1端末が出すとの記事が出ました。
「Acer、79ユーロでWindows 10へのアップグレードを保証したスマホ」
端末としては欧州向けローエンドですが、Acer社は日本向けにAndroid端末をブックオフ経由で発売していることを考えると、もしかして選択肢が増えるということかなと思いたいところです。
MWCではMicrosoftからLumia640/640XLが発表されました。
端末としてはミドルレンジの端末になるようです。
追加の特徴としては「Office 365サブスクリプション1年分」と「OneDrive 1GB 1年分」が標準でサポートされ散ることでしょうか。
それぞれの端末はWindowsPhone8.1ではありますが、Windows 10 for Phonesが視野に入っているようで、時期が来ればOS更新が降ってくることになると思います。
Windows 10 からはさらにデスク/ノートOSとモバイルOSの融合が進みます。
A社やG社のOSに比べても使用率の大きなWindowsというデスク/ノート向けOSと連携するには非常に心強い環境が整ってきます。
もちろんデスク/ノート向けがそのまま動くということはないですが、いわゆるWindowsストアアプリであれば、ユニバーサルアプリとして、モバイルにもゲームコンソールにも展開可能になり強い連携を生み出すことができる基盤が、クラウド(Azure)も含んでOneSolution/OneStoaが実現してきます。
VisualStudioによるストアアプリ、マルチデバイス開発はC/C++/C#/HTML5(JavaScript)/F#等で可能になってきていますし、UnityやUnreal Engineなどによるマルチデバイス開発もできます。
開発の親和性も非常に高い環境ですので、ぜひ開発者の皆さんには飛び込んできてほしいと思います。
自身の開発環境上、Windowsベースとなりますが、現在いくつかの、マルチデバイス開発環境があります。
ゲームに向いているもの
細かいのを入れるともう少しありますが、Windowsで有名どころとなるとこんなところでしょうか?
開発環境としてVisualStudioを選択すべきか?
私はアプリの開発環境ということでVisualStudioを選択してるわけですが、Windows環境がメインであるというのが大きな理由ではあります。
では、ほかの方に開発環境としてVisualStudioを薦めるのか?ということになります。
標準で対応している使用可能な言語も多くあります。
基本的には非常に強力なVisualStudioという開発環境もあり、Windowsという世界で広く流通、使用されているOSであるということを考えれば、薦めることに何の問題もないと思います。
なぜ基本的なのかですが、iOS/OSX専用アプリのみ開発するというのであれば、Mac環境を選択するしかないわけですので、VisualStudioを薦めるというのは難しく、Linuxなどの環境についても同じく、専用アプリだけということであれば、VisualStudioを勧めることはできないです。
ですが、Windows/WindowsPhone/iOS/Android/Web/クラウド/IoTと多岐の環境へのアプリリリースが求められる状況が増えています。
MacやLinuxでもかなりのマルチデバイス対応開発は行えますが、現在どれかしらへの開発が行えないという状況が多くあります。
もちろんVisualStudioでも単独では開発できないiOSアプリ、Macアプリ等があります。
現在VisualStudioでiOSを開発するにはどうしてもMacが別途必要で、XCodeコンパイラを経由する必要があります。
単独で開発できないだけでVisualStudioを使用した開発が可能な物は多いです。
MacにはBoot CampというWindowsをインストール可能にする公式ツールがあります。
ネイティブなWindowsをMacにインストールし、VisualStudioを使用するというのが可能です。
さて、VisualStudioですが、MicrosoftイベントConnect();において VisualStudio Community Edition(以下 VSCE)が発表され、今までのExpress Edition(VSEE)は今後廃止されることになりました。(VSEE2015は出ないそうです)
VisualStudio Community Edition 日本語ページ
VSCEはVSEEと同じく無償で使用可能なVisualStudioですが、大きな違いがあります。
VSEEは非常に制限が大きく、各種拡張機能が使用できない、使用用途ごとにエディション(desktop、Web等)が存在するというものでしたが、VSCEはProfessional Editionに準拠した1エディションになり、今まで使用できなかったVS tools for Unity等の拡張機能が使用できるようになります。
使用条件は、個人開発者が無償または有償のアプリの開発に使用可能、オープンソースコミュニティへの貢献開発もOK、企業の場合でも条件によっては使用可能、ただし受託開発に使用するのには制限有となっているようです。
詳しくはMicrosoftのライセンス ホワイトペーパーを確認の上でお願いします。
Microsoft Visual Studioによるマルチデバイス開発ですが、標準ではWindowsデスクトップアプリ(ネイティブ、WPF、DirectX)、ASP.NET(WEB)、Azure(クラウド)、Windowsストアアプリ、WindowsPhoneアプリ、Kinect等、各種Windowsプラットフォームアプリの開発が可能です。
これ以外の場合、Xamarin(BusinessLicense以上)、Cordova(Visual Studio Tools for Apache Cordova)、Unity(Visual Studio 2013 Tools for Unity)をインストールすることで、Android、iOS向けの開発がVisual Studio上でも可能になります。
さらに.NET MicroFramework(以下 NETMF)をインストールすることで.NET Gadgeteerの開発(.NET Gadgeteer SDKと実機が必要)が可能になり、組み込み開発が比較的手軽に行えます。
.NET MicroFramework
.NET Gadgeteer 日本代理店
Windows Embedded環境向けの開発もSDKを導入することで可能ですが、EmbeddedはOSの入手がMSDNユーザー以外では開発会社くらいでしょうから、少々厳しいかもしれません。
もっともWindows Embedded 8.1 HandheldはWindowsPhone8.1用アプリが使用可能になっていますので、WindowsPhone8.1アプリ開発が、Embedded向けアプリの開発ともいえるかもしれません。
XamarinはC#.NET、CordovaはHTML5+JavaScript(TypeScript)ですので、慣れた開発言語を選択するというのも手です。
また、これらを使わなくても実は可能な方法が存在はしています。
最近Microsoft Officeがマルチデバイス対応しています。(Office 365の契約が必要な機能もあります)
AndroidでもiPadでも限定的ではあるものの編集可能なOfficeが提供されています。
さて、MS OfficeはどうやっているのかというのがMSの講演などで判明しており、内部的にはコアをC++で再利用な形で作り、OSごとに薄いレイヤを作って、UI/UXを載せるという形になっているそうです。
マイクロソフトは、C++でいかにしてMicrosoft Officeのクラスプラットフォームを実現したのか
銀の弾丸はない。唯一のアプローチは、コストとリスクとベネフィットのトレードオフを考えることだ。
・ 良く定義された組み立て可能なコンポーネント
・ 可能なかぎりメカニカルなリファクタリングを行う
・ つねにすべてのプラットフォームで(開発中のコードが)動くようにした
・ 毎日全てのプラットフォームで大規模なドッグフーディング
XamarinはAndroid、iOS、Formsという形式がVS上で開発可能です。
Android、iOSは名前の通りそれぞれ単独用です。(MVVM Crossを使うなどで共通化は可能)
FormsはXAMLベースのコントロールが使用可能でAndroid、iOS、WinodwsPhone8.0の開発が共通化されています。
CordovaはAdobe社が構築したもので元の名前が「PhoneGap」という名称です。
そのためCrdovaで情報を探すよりはPhoneGapで探したほうが情報が見つかりやすいと思います。
連載:初めての PhoneGap 第1回 - ハイブリッドアプリのメリット・デメリット
Unityはゲームアプリまたはリッチな表現を多くしたいアプリに向いています。
Visual Studio Tools for Unityを導入することで、Visual Studio上でコード記述、デバッグ作業が行えます。
Visual Studioを、できればMSDNライセンス付きで使用してぜひ快適な開発環境の構築を行いましょう。