わんくま同盟 Blog's

わんくま同盟

メニュー

わんくま同盟

  勉強会情報

  メンバリスト

掲示板

ブログ

リンク

統計

わんくま同盟メンバ

わんくま同盟わんくま同盟

わんくま同盟メンバの最新の記事

[Desktop App Converter] まずは、環境構築。

正式リリースも出たので、ぼちぼちと環境作るのもネタにしておきたいところ。記事として仕立てるには旬が短すぎるのがねーw

ということで、ざっくばらんに環境構築編。

まずは、開発環境の用意。雑記で上げたほかのツールはわかりませんが、Desktop App Converter 自身は、ちょっと野心的なつくりをしていて、Windows コンテナを利用しています。

そのため、動作条件が

  1. Windows 10 Anniversary Update 以上(Build14393以上) の Pro. または Ent. 版 の x64版
  2. Hardware-assisted virtualization and SLAT(Second Level Address Translation)対応の 64bit CPU
  3. Windows 10 SDK 1607 以上

と、若干ハードルが高い設定になっています。

1 が必要なのは、Windows 10 Anniversary Update(以後Win10-1607)で追加された Windows コンテナを利用するため。

そして、2が必要なのは、そのコンテナを動かすため。という形になります。

3は、コンバータ自身の機能ではなく、そこから呼ばれる appx にするツール(SDKに同梱)と、署名のためのツール類(こちらもSDKに同梱)のためというのが主な理由です。

もっとも、対象とするアプリ本体もWin10-1607以上での動作が前提なので、アプリの開発環境としても、SDKは必須ですがw

 

さて、実際に時効可能な環境を用意したら最初にやることは「Download Center を検索」して最新バージョンを探すこと。

コンバーター自身はストア版があるのでこちらを利用することもできますが、これとは別に BaseImages という、コンテナ上で使う専用のイメージを用意する必要があります。ちなみに、最新版にzip形式のコマンドラインツール(PowerShellコマンドファイル)もあります。

このブログ記事の公開時点での最新版(9/21版)には、14393(AnniversaryUpdate/IP Slow)、14915、14926、14931 の3つのIP向けと、1.0.0.0の zip版があります。

ここから、ベースイメージの該当版等々をDLしてきます。zip を展開する場合は、自分にとって都合のいい場所に展開しましょう(パスを切るなどは不要です)。

 

ここからは管理者アカウントが必要になります(パスワードを入れずに昇格すれば管理者になるアカウント)。

ストア版は管理者として実行、zip版はPSコンソールを管理者でオープンします(ISEでもOK)。

コンソールの場合は、展開先フォルダに移動して

DesktopAppConverter ?Setup ?BaseImage …\BaseImage-14xxx.wim ?Verbose

と入力して、コンテナのセットアップと wim のインストールを行います。

OSの確認、環境のチェックなどなどの後、Hyper-Vとコンテナのインストールを行います。インストール済みの場合はここはスキップ。

この時、環境によっては再起動が必要になります。以前は自動で再起動して継続してくれたんですが、正式版では自動リブートしないで、-NoRestart を付けた時と同じ状況になるので、手動で再起動していきます。

再起動してログインすると自動的にスクリプトが継続実行されるので、必要に応じて再起動しつつ終了を待ちます。

Hyper-Vも含めるとコンテナのセットアップにざっくり10分くらいはかかるので(もちろん環境によるのでもっと速いマシン(5分もかからない)もありますしその逆もあります)、気長に待ちます。

筋トレ でもいいのですが https://developer.microsoft.com/ja-jp/windows/bridges/desktop あたりを眺めているとよいでしょう。

と、ここまで来てようやく準備完了。おっと。。。SDKをインストールしていない場合はSDKもインストールします。

Visual Studio 2015 以上を持っている場合は、Update3を適用して SDK Tools 1.4.1 を導入しましょう。

これでやっと準備が完了です。ちなみに、あれこれないと本気で一日くらいかかってしまいます。

posted @ 2016/09/23 14:20 by とっちゃん

[Desktop App Converter] 正式リリースされたので雑感。。。

Build 2015 で発表された、Bridge for Windows シリーズの最後の橋(Codename Project Centennial、正式名 Desktop Bridge )のコア機能 Desktop App Converter(リンク先は、ストアアプリ) が9/14 に正式リリースされました。

このツールは、デスクトップアプリケーション(のインストーラ)をストアアプリ(のインストーラパッケージ)にコンバートするといういたって簡素なツールです。

まぁ各所のニュースリリースの大半が太字部分を端折っていたりするんですが。。。

インストーラはアプリケーションプログラムそのものはインストール前と後では何も変えません。コンバータの対象はインストーラなので、当たり前ですが、アプリケーションプログラムには何も変更しません。

むしろ、コンバート機能そのものより、コンバートするインストーラが抱えてるアプリはここに気をつけなさいねーという17項目(9/22アップデートで増えてた><)のほうが重要だったりします。

それについては、まずは https://msdn.microsoft.com/windows/uwp/porting/desktop-to-uwp-root を見てもらう方がいいでしょう。

 

さて、ここからはあまり日本語では出ていない話。

Desktop Bridge がプロダクトとして目指すゴールは、既存のデスクトップアプリや、デスクトップだからこそ実現できるアプリをWindowsストア(あるいはそれと軸を同じにする配布の仕組み)というマーケットプレイス上で配布してもらうのが狙いです。なので、こと開発者向けという意味ではかなり手厚いサポート体制を敷いていると思いますし、おそらく開発ツールベンダー向けには見えていないだけで、様々なプッシュがあると思います。

Desktop Bridge としては Desktop App Converter は言ってみれば、プロトタイプ的な撒き餌です、当然プロトタイプみたいなものなので、これだけが手段ではありません。ということで、雑感の最後は観測範囲内で見えているツール類のサポート表明などなど。

まずは、インストーラ作成ツールから。おそらく世界でもっとも有名なインストーラ作成ツールの InstallShield。こちらは2016(現行最新バージョン)から、機能が搭載されています。実は Desktop App Converter よりも先に正式リリースされていたりしますw

具体的なことはツールを持っていないのでわかりませんが、アナウンスを見る限りでは、msiの作成時に合わせてappxも作ってくれる機能が搭載されるようです。Desktop App Converter とは違って、仮想的にインストールするのではなくmsiにするための情報をスキャンするんだと思いますが、正直よくわかりません。

そのほか WiX とAdvanced Installer(国内では販売されていません)が対応を表明しています。WiX は現行の環境にシームレスに組み込むという話(新しいスキーマなどが必要になるのではない的なことが書かれていました)なので、オプションスイッチ的なものが用意されるんだと思います。

AdvancedI nstaller も InstallShield 同様オプションスイッチ的に対応みたいですが、こちらはツールの画面すら見たことがないのでなんとも。。。w

 

そして開発ツールとしては、次期 Visual Studio(Codename “15”)。現時点では機能拡張という形でプレビューリリースされています。最終的に製品組み込みになるのか機能拡張のままなのかはわかりません。こちらはインストーラを作る感じに近い格好で、専用のプロジェクトで appx で出力するという感じのようです。画面写真を見ただけなのでよくわかってませんけどw

それと、RAD Studio。今後の Update で対応が予定されているそうです。開発ツールとしてはこっちのほうが先に出てくるんじゃないかと思うけどよくわかりません。

今のところ観測筋で対応、または対応を表明しているのはこのあたり。

個人的には、国産のパッケージベンダー各社の動向も気になりますが、日本語アプリがこれで増えるかどうかですねー。デスクトップアプリ向けゲームも含め。

posted @ 2016/09/23 12:25 by とっちゃん

[Cognitive]LUISが日本語対応したよ

2016/09/15にLUISが日本語対応しました。

https://www.microsoft.com/cognitive-services/en-us/news

LUIS = Language Understanding Intelligent Serviceということで、話し言葉をテキストで入力するとその意味を解析してテキストの要素を認識してくれるサービスが日本語対応しました。

 

早速、LUISを使ってみましょう。C#のSDKもありますがまずはWebのエンドポイントから軽く試してみましょう。

 

まずはLUISのWebサイト(https://www.luis.ai/) からMicrosoftアカウントでログインしましょう。

初回ログインのところでの質問はこんな感じに回答すればOKです。

image

 

新規作成の[+]ボタン、真ん中は[Cortana pre-built apps]ボタン、一番右側は[Start Tutorial]ボタンでチュートリアルを見るためのボタンです。

image

真ん中の[Cortana pre-built apps]ボタンでコルタナの受け答え言語理解モデルを使ってアプリをつくてれます。残念ながら日本語はまだ提供されていません。

しかたがないので、新規作成ボタンで言語理解モデルなしでアプリを作成しましょう。

 

シナリオとして、IoT、Bot、Mobile、Otherなどが選べます。今回はBotを選んでおきます。

また、ドメインもいろいろ選べます。ドメインを指定するのは、同じ言葉でも分野によって意味づけが異なるからです。

  1. Booking & Reference
  2. Business
  3. Comics
  4. Communication
  5. Education
  6. Entertainment
  7. Finance
  8. Gaming
  9. Health & Fitness
  10. Home Automation
  11. Media & Video
  12. Medical
  13. Music & Audio
  14. Navigation & Maps
  15. News & Magazine
  16. Personalization
  17. Productivity
  18. Real Estate
  19. Sceduler
  20. Shopping
  21. Social Network
  22. Sports
  23. Telecom
  24. Tools
  25. Transportation
  26. Translation
  27. Travel & Local
  28. Weather
  29. Other

ここは、Comics、Gaming、Media & Video、Social Networkを選んでみます。たぶん、分野を絞れば絞るほどその分野において的確な意味としてとらえてくれるはずです。どのあたりをターゲットにするのかよく考えて絞り込みましょう。

image

そしてもちろん[Choose Application Culture]には「Japanese」を選択します。

[Add App]ボタンをクリックすればアプリケーションの作成が開始されます。1~2分かかりますが気長に待ちましょう。

 

生成された直後は、こんな感じです。この状態では何もできません。なにかするにはメニュー右端の[Edit]をクリックしてセッティングを行わないとダメなのです。

image

 

Editをクリックしたときに表示される画面はこんな感じ。

image

まずは何も設定せずに[New utterances]に「みなさん、こんにちは。初音ミクです。永遠の16才の電子の歌姫です。」といれてみましょう。

image

その結果は、半角区切りが入って次のように分解されて表示されます。

  • みなさん、
  • こんにちは
  • 初音
  • ミク
  • です
  • 永遠
  • 16才
  • 電子
  • 歌姫
  • です

しかし何も設定していないので、出力はこれだけです。もう一度、同じ文章を入れたら「This utterance has already been labeled. You can make changes to the label, or type in a different utterance.」って表示されます。

この一度入れたものは[Review labels]でも表示できます。

これだけって書きましたけれど、文章を入れてこういったこと=「形態素解析」ができることだけでもすごいですよね。

 

それではLUISに意味を教えていきましょう。

はい。もうわかりましたね。LUISを使えば勝手に意味を抽出してくれるんじゃなくて、言語理解モデルというものが必要なわけです。

 

左端のEntitiesの+を押して[Add a new Entity]で登録してみましょう。

image

「名前」EntitiyはInclude childrenということで「姓」と「名」を子供に定義して作成します。

作成が終わったら左下の[Train]ボタンを押してみましょう。

 

次に[Review labels]でさっき入れた文章を表示し、「初音」をクリックして「姓」、「ミク」をクリックして「名」をEntityとして選びます。

image

それでは試しにこれで何ができるか確認してみましょう。

左下の[Train]ボタンをクリックしてトレーニングをしてから左上の[Publish]ボタンで公開します。

 

Query欄に「初音ミクって誰?」と入れた結果は次のようなJSONで返却されます。

image

 

それでは次にIntentを追加してみましょう。左メニューのIntentの[+]ボタンをクリックして、「GetTopic」という名前で「初音ミクは、永遠の16才の電子の歌姫です。」と登録してみましょう。

image

そしてさっきと同様に「姓」と「名」のEntityを設定して[submit]します。

 

[Train]ボタンを忘れずに押してから[Publish]して、[Update published application]ボタンをクリックしたら、Queryにさっきと同じ質問をいれた結果のJSONは次のように変化しました。

image

このようにEntityはIntentを設定して初めて抽出してくれるのです。

 

これで「初音ミク」って要素が入ったテキストに対しては「GetTopic」という話題を返せばいいという言語理解モデルができあがりました。

 

最後に、英語の意味を少し理解しておきましょう。

Intent:意図、目的

Entity:実体(要は、名という識別に対する実データ)

 

月1万トランザクション(以前は10万トランザクションまでだったけれど9/15に改訂。言語増えたから世界的に使われる量が増えることを見越してかな?)までは無料なのでぜひ使ってみてくださいね。

日本語の言語理解モデルとかがOSSとしてgithubあたりに流通し始めると面白いかもね。

今期アニメ言語理解モデルとか。

posted @ 2016/09/18 18:52 by 初音 玲

Mobile first, Cloud first

トラディショナルジャパニーズカンパニーには、この2つに積極的にかかわりあいたくない人たちがいます。要は自分が変わりたくない、自分の仕事を変えたない。
そして、新しい取り組みを消極的に妨害します。そう、本人は意識していないかもですが妨害してくるのです。
前例がない、事例がない、私を納得させろ。
人は人によって納得させられるものではありません。人は自分の意思により納得するのです。変化したいから発せられたのとそうでないのとは、同じ字面であっても心根は正反対です。
かわりたいから発せられたとき、それは自分ごととして一緒に変わり事を考えるという動きになって行くのです。
そうでないときは、否定するための問いであり逃げるための問いに付き合わされるという消耗戦を勝ち抜かないと前に進みません。

諦めればそこで試合終了ですよ。

まさにこれ。

posted @ 2016/09/16 1:10 by 初音 玲

[DAC]DesktopAppConverter の動作環境

Desktop Bridge の初手、Desktop App Converter(以下DAC) が正式リリースされました。

このコンバーターは、ごくごく簡単に説明すると

「既存のインストーラ(msi or exe形式)を、Appx 形式インストーラにコンバートする開発者用ツール」

です。

開発者用ツールなのでそれ相応の動作環境が必要になります。

が、ストアアプリ版 にはあまり細かいことが書かれていません。

Desktop App Converter Base Images のほうに細かい動作環境が出ていますので詳しくはそちらを見る必要があります。

いろいろ書いてありますが、ざっくりと書くと

「DAC の動作環境は、SLAT 対応のx64なCPU上で動くWindows 10(x64) Pro or Ent で、Hyper-V と コンテナを有効にでき、その時点で入手可能な BaseImages(wim)が提供されているビルド」

になります。

現地時間 9/14 公開の Base Images には、Anniversary Update(14393)、Insider Preview(14915 or 14926) の3種類のwimが公開されていますので、Anniversary Update 以上の環境を用意しておけばいいでしょう。

プレビューリリースなどはNGという大半の企業様環境でも、正式リリースの Anniversary Update で利用できるので、すべてリテールパッケージでそろえることができます。

コンバートは、サイレントインストールが可能で、コンバートする環境で動作するインストーラなら、exe でも msi でも利用できます。

posted @ 2016/09/15 16:38 by とっちゃん

[Desktop App Converter]ついにリリース!

ついにリリースされました。しかも、ストアアプリで!!!

短縮URLがあったので、張っておきますね。

ストアへのリンク http://aka.ms/converter

BaseImage(wim)へのリンク(従来のps版もあり) http://aka.ms/converterimages 

 

個人的には「in the Windows Store!」が注目点。

使ったことがある人はぜひともストア版をDLして起動してみてください。「これってありなのか!?」と考えさせられること間違いなしです(実際に使うかどうかは別としてw)。

 

まぁ、それも驚きだったのですが、もう一つ注目しておきたいのが、ブログ記事の最後の部分。

ツールのアップデートの項目の中で、InstallShield でのコンバートのほか、WiX と、Advanced Installer も対応を表明しています。

具体的にどういう風な形で使えるようになるのかについては、現物待ちですがw

posted @ 2016/09/15 11:27 by とっちゃん

.NET Framework 4.6.2 用のブートストラップの問題

.NET Framework 4.6.2 用のブートストラップ (setup.exe) の問題

ちょっと前に、MSDNフォーラムで回答したやつかな。具体的な修正方法(ただし、数字の変更のみ)が日本のサポートチームから出ました。

個人的には、Product.xml と Package.xml で環境チェックコードが違ってる部分はどうなの?というのもあるんですけどね。

 

これ、どっちを対象にする場合でもきれいに書き直すとだいぶ変わるぞ?と思いつつ放置だなぁ。。。

ちなみに、WiX でインストールされるのは標準では英語版です。日本語版は自前で、ブートストラップセクション書いてあげる必要があります。

そういえば、WiX で日本語版 .NET Framework ランタイムをインストールするなんてネタは書いたことがないなぁ。。。需要あるのかなぁ?

posted @ 2016/09/13 17:05 by とっちゃん

[Desktop App Converter] わんくま横浜#8 のセッション資料を公開します。

おいらのグダグダセッションの資料です。まぁあんまり価値のある資料ではありませんがw

パワーポイント https://1drv.ms/p/s!AOVVWpjfPyA0hNsl

サンプルプロジェクト https://1drv.ms/u/s!AOVVWpjfPyA0hNsm

サンプルのビルドには、Visual Studio 2015 Update3 (9/10 時点での最新パッチも必要)と、WiX 3.11(3.10.3以上) が別途必要になります。

また、Desktop App Converter の利用には、Windows 10 Anniversary Update(10.0.14393)以上で、Hyper-V および Windows コンテナが動作する VSAT 対応マシンと、VS2015でインストールできる最新のWindows10SDKも必要になります。

Desktop App Converter は随時更新されています。最新版は、MS Download Center で検索してください(デモで利用したものは 9/1 公開版)。

最新の Desktop App Conveter のダウンロードページには、その時点での Windows 10 のビルド向けの wim ファイルも同梱されています(wim はコンテナ利用のために必要になる)。

おまけ。

セッションで全然触れることができないままだったのですが、

VS2012/2013/2015 のランタイムDLLは、ランタイムDLLの appx をリンクすることができます。これにより、ランタイムDLLを搭載せずに利用することが可能になります(2012/2013のランタイムは、DLL側を更新することでWindows10対応を行っていると思われる)。

詳しくは、Using Visual C++ Runtime in Centennial project のブログを参考にしてください。

 

サンプルのセットアップ(SetupMfcApp/BundleMfcApp)の質問は、http://www.freeml.com/msi/ まで。

posted @ 2016/09/12 11:19 by とっちゃん

2016年7月~8月までのまとめ

他サイトで書いた7月~8月のブログ記事です。
夏休み中に書いた「押下にまつわる話」がバズりまして、はてなブックマークにも多くのブックマークを頂き一時はホットエントリーの総合のトップに掲載されたりしました。
わんくまブログ内でJittaさんが10年前に書かれた「「ボタン押下」?」を思い出して書いたのですが、スマホやタッチパネルが普及するなど時が経ったことで「押下」という言葉に違和感が増大したんだと思います。
その前に書いた「@ アットマークにまつわるお話」はさっぱりでしたが、これも奥が深いです。

■Hatenaブログ

順列と組合せを理解してみる-場合の数

順列と組合せを理解してみる-順列

順列と組合せを理解してみる-組合せ

順列と組合せを理解してみる-競馬の組合せ

確率を理解してみる-基礎編

確率を理解してみる-頻度主義とベイズ主義

■Qiitaブログ

QiitaでGoogleアナリティクスを利用してページ別ビュー数等を見る方法

日付期間の重複チェック

auditpolコマンドによる監査ポリシーの「プロセス追跡の監査」の有効・無効制御

余り(剰余)の性質をプログラムに活かす

@ アットマークにまつわるお話

Pokemon GO(ポケモンGO)を作った男、ジョン・ハンケ氏の歩んだ道のり

【WSH】設定ファイル(xml,ini)の編集ツール

押下(おうか)にまつわる話

【WSH】相対パスのショートカット生成ツール

【ASP】キャッシュを有効にしつつ、cssやjsファイルの変更を確実に反映させる(Cache Busting)

posted @ 2016/09/12 1:55 by やじゅ

[UWP]Windows10Mobileへのデプロイが「Unexpected Error: -1988945906」エラーになったときには?

 

Visual StudioからWindows 10 Mobileにデプロイすると「Unexpected Error: -1988945906」が発生してデプロイできないということがありました。

Windows 10のバージョンは、Windows 10 ver.1501 (OS build 10586.545)。

 

いろいろ調べてみて下記のサービスが自動なのに起動していないと発生するらしいとのことで対応したらできるようになりました。

 

(1)Windows 10を再起動する

(2)ローカルサービスから、Windows Phone IP over USB Transport (IpOverUsbSvc)が起動していなかったら起動する

(3)Visual Studioで該当ソリューションを開く

(4)Windows 10 Mobileを接続してUSB接続のダイアログでOKする

(5)ARM - デバイスを選択して実行。

 

これで無事デプロイできました。

posted @ 2016/09/07 8:45 by 初音 玲

[Bridge] Desktop App Converter の最新版は検索から。。。

入力するの面倒なので直リンメモ

https://www.microsoft.com/en-us/search/result.aspx?q=Desktop+App+Converter+Preview

日本時間の 9/1 14:30 時点ではまだ 14915 の wim は公開されていません。

わんくま横浜でデモをやる予定のPCは最新IPに更新済みなんだけどさw

 

まぁ動かないのはコンバート処理だけで、AppxManifest.xml があれば UWP アプリは作れるんだけどさw

posted @ 2016/09/01 14:39 by とっちゃん

[Xamarin]Xamarin.Forms Androidで画面をスリープ状態にしないためには

Androidのアプリなどでロックスクリーン状態でも画面表示されているやつがあると思います。あれをXamarin.Formsでやろうとしたらどうするのか。

Androidアプリの普通のノウハウがそのまま使えます。

[https://gist.github.com/39e69507f3f7f977b6515a08a32048de:embed#Xamarin.Forms (Android) でスリープ状態にさせないためには]

Xamarin.Forms (Android) でスリープ状態にさせないためには

posted @ 2016/08/15 11:52 by 初音 玲

[Desktop App Converter] アニバーサリーアップデート対応版が出ています。

Desktop App Converter Preview (Project Centennial) の 8/4 公開版が出ています。

バージョンは 0.1.24。SDKに同梱というようなニュアンスで書かれていたのでこっちもRTMしたのかと思っていたのですが、まだだったようです。

ちなみに、wim はアニバーサリーアップデート対応の 14393版です。

今日から始める人は、IPの人も、CBの人もまずはここがスタート地点。

日本語情報もいろいろ出ていますが、英語の最新もチェックしつつ、日本語を読むことをお勧めします。

 

ちなみに、9月のわんくま横浜はこれを肴に50分お話します。

コンバートすると何が変わるのか?もお見せしますよー。

posted @ 2016/08/05 18:19 by とっちゃん

ブログ移転のお知らせ

ブログを移転しました。 情報アイランド http://info-i.net/ 今後少しづつ記事を移動していきます。

posted @ 2016/07/14 7:10 by Piz&Yumina

片桐さんがUWPアプリを作ろうとしています。その肆

ここまで頑張った。でも、XAMLはやっぱり後にする。<を

データを保持したいので、最初はテキストベースでいいかな。とか思ったけれど、どうせなら知らないことやってみようかな、とか考えた。

なので、SQLiteってのをやってみよう。<まじめに触るのは初めてw ハックはなんどかやったが<を

https://blogs.windows.com/buildingapps/2016/05/03/data-access-in-universal-windows-platform-uwp-apps/

ここを参考に、環境を構築。

キモは、さっきの記事の中にもあったけど、ここ。

image

EntityFramework Core によるORM形式ってとこ。

ORMはとても便利な機能ではあるけれど、データベーステーブルのレイアウトが「確定」できてることが意外と大事だったりする。このあたり、微妙なバランスで、頻繁にテーブル列や型や主キーが変わる状態で開発するときに、なまじORM頼みしてると血の涙になることもあったりなんかしちゃったりしてね。まぁここは経験則なんだけれども。

それが嫌で、今の現場では「スペシャル?」なORMもどきライブラリ&クラス生成ツール作って提供していたりラジバンダリ。

とかいってるうちにインスト終わったんで、テーブル設計するかー。

posted @ 2016/07/09 19:47 by 片桐 継(Tugu Katagiri)

List(of Class)でGroupingしてから、その中の結果でさらに検索したい

いっつも忘れるので、めも。

Module Module2
 
    Sub Main()
 
        Dim samples As New List(Of KeyData)
        Dim rnd As New Random
 
        Dim KeysCount = rnd.Next(1, 120)
 
        Console.WriteLine("{0} 件キー", KeysCount)
 
        For x As Integer = 1 To KeysCount
            samples.Add(New KeyData With {
                                .Key1 = rnd.Next(1, 3).ToString("KeyA-000"),
                                .Key2 = rnd.Next(1, 3).ToString("KeyB-000"),
                                .Key3 = rnd.Next(1, 3).ToString("KeyC-000"),
                                .Data1 = rnd.Next(100, 500),
                                .Data2 = Now.AddDays(rnd.Next(-100, 100))
                                })
        Next
 
        Console.WriteLine("件数 : {0}", samples.Count)
        Dim wlist = (From x In samples
                     Group By x.Key1, x.Key2, x.Key3
                     Into Group
                     Select Group).Select(Function(f) f.OrderBy(Function(r) r.Data2).FirstOrDefault).ToList
 
        Console.WriteLine("グルーピング件数 : {0}", wlist.Count)
        wlist.ForEach(Sub(x)
                          Console.WriteLine("キーごとで最も過去日付のレコード : {0}", x.ToString)
                      End Sub)
 
        Console.ReadKey()
    End Sub
 
End Module
 
Public Class KeyData
 
    Property Key1 As String
    Property Key2 As String
    Property Key3 As String
 
    Property Data1 As Integer
    Property Data2 As Date
 
    Public Overrides Function ToString() As String
        Return String.Format("{0}.{1}.{2}({3}:{4})", Key1, Key2, Key3, Data1, Data2.ToString)
    End Function
 
End Class

その結果

image

posted @ 2016/07/08 21:51 by 片桐 継(Tugu Katagiri)

VC++ ランタイム(12.0, 14.0)を Desktop App Converter プロジェクトで使う方法

Using Visual C++ Runtime in Centennial project

実際の設定方法とかは、リンク先を見てください。

注意点は、ランタイムを別途DLして来いよ!という点ですかね。デスクトップのランタイムのバージョンとUWPのそれとでは必ずしも同じではありませんので。

posted @ 2016/07/08 12:06 by とっちゃん

[WiX] WiX Toolset v3.10.3 リリース

WiX v3.10.3 released

独立記念日に合わせて、WiX 3.10.3 がStableになりました。

修正したバグの一覧:

このリリースで、3.10 シリーズは終了です。約9か月にわたって続いた各種脆弱性の修正対応と、Burn のレイアウト機能のバグ修正が行われています。

今後の 3.x 系の更新は 3.11 になります。開発の主軸は v4 だと思います。

posted @ 2016/07/06 18:18 by とっちゃん

[Desktop App Converter] コンバートにはOSのビルドと一致した wim が必要です。

8/2 のアニバーサリーアップデートに向けて Bug Bash が続いています。Fastring は、週2ペースでアップデートが続いています。

あまりにも頻繁に更新があるので紹介できていませんが、ダウンロードセンターで”Desktop App Converter” で検索すると公開中のものがずらっと出てきます。

このブログを書いている時点(日本時間の7/1 14:20頃)での最新版は 6/30 公開のものです。

コンバーターのバージョンは、0.1.21。wim(コンバート時のコンテナがみる) は14371,14376,14379 の3つがあります。詳しくは、Details を見てください。

コンバーターを動かす、Windows 10 のビルドと同じ番号の wim をDLして利用します。

最新 Fastringなら、14379 があればOKです。起動するOSの最小ビルドは、AppManifest.xml に書いてあるので、そこを調整します。

で、重要な注意点が一つ。System Requirements は、コンバートする環境のお話です。実行環境ではありません。

UWPアプリとして動く仕組みに手を入れたのではなく、UWPアプリとして見立ててもらうための特殊なコーティング剤を作るのが、Desktop App Converter の仕組みです。

なので、Desktop App Converter でコンバートした結果出来上がるものは、「パッケージ化する直前の状態」のUWPアプリケーションです(-MakeAppxをつけると .appx の作成まで行う)。

 

ちなみ、MakeAppx したり、フォルダの整理をするのは、Desktop App Converter のセットアップを「行っていない」環境でも実行できます。

一応あまり知られていない気もするので。

Desktop App Convereter がセットアップするのは、wimを使ってクリーンルームを作るためのコンテナのセットアップです。そのついでに(今は省略ができなくなっているけど)、wim をキャッシュ配置するということをやっています。

なので、すでにコンテナがセットアップされているので、-Setup してないよ!という人以外は、コンバート時に wim を指定する必要はありません。

コンバート時の基本的な情報や手順等は、

https://msdn.microsoft.com/windows/uwp/porting/desktop-to-uwp-run-desktop-app-converter

の日本語情報を見るとよいでしょう。

その上で英語の

https://msdn.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-run-desktop-app-converter

もチェックしておきましょう。最新の変更点などが載っています。

posted @ 2016/07/01 15:18 by とっちゃん

2016年4月~6月までのまとめ

他サイトで書いた4月~6月のブログ記事です。わんくまブログはもはや書きにくいし、一向に修正されそうもないですからね。

■Hatenaブログ

順列と組合せを理解してみる-重複順列

TensorFlowコトハジメ Fizz-Buzz問題

人工知能ハンズオンの資料公開

TensorFlowコトハジメ Automatic Colorization(白黒画像の自動彩色)

TensorFlowコトハジメ 手書き文字認識(MNIST)による多クラス識別問題

TensorFlowコトハジメ 八百屋で識別問題

TensorFlowコトハジメ 八百屋で勾配降下法

TensorFlowコトハジメ フィボナッチ数列

TensorFlowコトハジメ 概要

WindowsユーザーがTensorFlowをインストールしてみた(AWS EC2 Docker版)

WindowsユーザーがTensorFlowをインストールしてみた(Docker版)

■Qiitaブログ

データベース不要のWikiクローン「DokuWiki」の導入

カンマ区切り出力時の末尾カンマ削除

ClickOnceの必須コンポーネントの警告マーク解消方法

ベルマーク運動のIT化問題

空のプロジェクトからASP.NET MVC5 EntityFramework6 for Oracleを試す(登録・更新・削除)

「ファイル ‘~’ が見つかりませんでした。」「 ディレクトリが空ではありません。」エラー原因

AlphaGoを作った天才デミス・ハサビスの経歴

簡易グループウェア スケジュールWeb「LiteScl.oda」の導入

Dockerを理解するまでの備忘録

AWS EC2の登録からDockerをインストールしTensorFlowを実行するまで

Docker Quickstart Terminalのエラー発生(Looks like something went wrong)について

posted @ 2016/07/01 0:58 by やじゅ

こんなもの作ってみました。さてなんでしょう?

正体はiPad3の液晶を利用した液晶モニタでした。

1年以上前から話題だったみたいですね。 win10を入れたマシンにつないで見ましたが、最初はバックライトのLEDがちかちかしてましたが、 調べたらUSBの給電能力が足りないとだめみたいです。 USBのさし元を変えたらあっさりうまくいきました。 (マシン自体は、昨年発売されたnucをなぜかつい最近組み立ててOSまで入れて放置してますた。。。)

フレームはジグソーパズルの木枠を利用してipadの修理用液晶パネルと制御基盤、miniディスプレイポートのケーブル、USBケーブルであわせて1万円くらい。 いい時代になりましたなぁ・・・

posted @ 2016/07/01 0:22 by まーる

[VisualStudio]Visual Studio 2015 Update 3がリリースされました。

MSNDサブスクリプションダウンロードから

Visual Studio Enterprise 2015 with Update 3

Visual Studio Professional 2015 with Update 3

などがダウンロードできるようになりました。

Update 3の内容は(いまはまだRCと表示されますが)リリースノートに詳細があります。

https://www.visualstudio.com/news/releasenotes/vs2015-update3-vs

 

でも、Update 3の目玉はリリースノートには記載がないようです。

Update 3と同時に、.NET Core 1.0 SDKもリリースされていて、これを使うにはVisual Studio 2015 Update 3が必要になります。

 

.NET Coreって何?

という人もいるかもしれません。

.NET Coreは、.NET Frameworkを軽量化したサブセットでオープンソースとして公開されています。Windowsだけではなく、Mac OSやLinuxでも動作します。

fig

posted @ 2016/06/28 7:03 by 初音 玲

List(of Class)でDistinctしたい。

セミコロンとったらVB.NETとかとかとか、世迷言だよ、ぐるるる。

とあるクラス、リストしてから、重複除いた要素でごにょりたい、で作ったのでメモ。

 

Module Module2
 
    Sub Main()
 
        Dim samples As New List(Of KeyData)
        Dim rnd As New Random
 
        Dim KeysCount = rnd.Next(1, 120)
 
        Console.WriteLine("{0} 件キー", KeysCount)
 
        For x As Integer = 1 To KeysCount
            samples.Add(New KeyData With {
                                .Key1 = rnd.Next(1, 3).ToString("KeyA-000"),
                                .Key2 = rnd.Next(1, 3).ToString("KeyB-000"),
                                .Key3 = rnd.Next(1, 3).ToString("KeyC-000")
                                })
        Next
 
        Console.WriteLine("件数 : {0}", samples.Count)
        Console.WriteLine("重複なし件数 : {0}", samples.Distinct.Count)
 
        Console.ReadKey()
    End Sub
 
End Module
 
Public Class KeyData
    Implements IEquatable(Of KeyData)
 
    Property Key1 As String
    Property Key2 As String
    Property Key3 As String
 
    Public Function Equals1(other As KeyDataAs Boolean Implements IEquatable(Of KeyData).Equals
        Return Key1 = other.Key1 _
            AndAlso Key2 = other.Key2 _
            AndAlso Key3 = other.Key3
    End Function
 
    Public Overrides Function GetHashCode() As Integer
        Return Key1.GetHashCode Xor Key2.GetHashCode Xor Key3.GetHashCode
    End Function
End Class

 

image

結果、こうなったんで、OK。

posted @ 2016/06/22 20:17 by 片桐 継(Tugu Katagiri)

Intel(R) 6 Series/C200 Series Chipset Family USB Enhanced Host Controller - 1C26 - エラー 0x800f0219

マシンはASUSのU24E。

Windows10 にしてからUSBが不安定で、デバイスがこのエラーで動作してなかったんよねー。

んでもって、がんばって、対処してみた。

原因は、Intelさんとこから出てるドライバファイルがWindows10 さん的に「あやしくね?」「バージョンちがくね?」なものらしく、それで動かないんですわー、的簡単なものなので、対処としてはこのファイルをWindows10さんが「正しい」「動かしてええよん」と思うドライバファイルにすればよいだけ。

このサイトの

https://downloadcenter.intel.com/download/19596/INF-Update-Utility-Primarily-for-Intel-6-5-4-3-900-Series-Chipsets-

 

image

 

青色ボタンの「infinst_autol.exe」を実行して、ファイル書き換えればOK。

このページのこのボタンを押す、という行為に気付くのに時間がかかった<を

実行後は再起動しておけば尚OK。

ドライバファイルはインテルさん証明書付なんで、Windows10さんはご機嫌に動かしてくれまする。

posted @ 2016/06/19 14:10 by 片桐 継(Tugu Katagiri)

片桐さんがUWPアプリを作ろうとしています。その燦

UI、燦々とぉ~♪

やりたいこと、は明白なんだけれど、それをUWPアプリに落とし込むとき、どういうUIにすればよいんだろう。

XAMLに手を付けていて、なにかが違うような気がしてきたので、再勉強。

ちょっとこのページを読んでみた。

設計および UI

https://developer.microsoft.com/ja-jp/windows/design

なんか、WindowsFormのようでいて、そうでもない。

ページの移り方、操作の仕方、部品の配置、ってのはこうなんだよ、こう考えるんだよ、が書いてあった。

で、これと照らし合わせてみて、自分の中で、こういう風に遷移して、こういう操作ができればいい、が整理できてくれば後は大丈夫、だと思う、思いたい、思うことにする。

つまりは、だ、

脳内を形に現すってのは、簡単じゃないってこと。

posted @ 2016/06/19 13:29 by 片桐 継(Tugu Katagiri)

[Hardware]Xbox One Sがきた!

E3で発表ありましたね。

現行に比べて本体サイズ40%小型化。

最大2TB HDD搭載。

4KテレビとHDRに対応。

299ドル(500GBモデル)~

posted @ 2016/06/14 3:12 by 初音 玲

片桐さんがUWPアプリを作ろうとしています。その煮。

筑前煮と鯖味噌煮が得意だし、好き(謎)

どうも、XAMLのめんどくささが耐えられない。

ListView作りたいな→ListView.ItemTemplate作ってね→DataTemplate作ってね→中の部品を定義してね→ListView.ItemContainerStyleも作ってね→中の定義も書いてね

これのXML形式の入れ子の繰り返し。

ここまで理解。

<Page
    x:Class="PlayAndEditForMP3.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:PlayAndEditForMP3"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
     <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
          RenderTransformOrigin="0.498,0.111" Margin="0,5,0,0">
         <Grid.RowDefinitions>
             <RowDefinition Height="60"/>
             <RowDefinition Height="*"/>
         </Grid.RowDefinitions>

         <Button x:Name="button" Content="Button" Grid.Row="0"
            HorizontalAlignment="Left" Height="38"
            VerticalAlignment="Top" Width="140"
            RenderTransformOrigin="1.538,1.397" Margin="20,12,0,0"/>
         <ListView x:Name="ItemsView"  Grid.Row="1" 
                  Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
             <ListView.ItemTemplate>
                 <DataTemplate>
                     <Border Background="{ThemeResource AppBarBackgroundThemeBrush}">
                         <Grid HorizontalAlignment="Stretch" Margin="0">
                             <TextBlock Text="{Binding}" Name="Title" />
                             <TextBlock Text="{Binding}" Name="Artist" />
                         </Grid>
                     </Border>
                 </DataTemplate>
             </ListView.ItemTemplate>
             <ListView.ItemContainerStyle>
                 <Style TargetType="ListViewItem">
                     <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                 </Style>
             </ListView.ItemContainerStyle>
         </ListView>

     </Grid>

</Page>

むぅ、メンドクサイ(大事なことらしい)

細かいデザインまで美しく配置でき、かつ、好きにできる、それは素敵、でも、メンドクサイ(大事なこ(ry))

まだ、XAMLコーディングだけで相当かかりそうな気配orz

posted @ 2016/06/13 20:54 by 片桐 継(Tugu Katagiri)

Productivity Power Tools 2015 をいれてみた

どうも、ソースのコピペ量が増えると色々と面倒で、綺麗なHTMLにしたいし、いれてみた。

Productivity Power Tools 2015
https://visualstudiogallery.msdn.microsoft.com/34ebc6a2-2777-421d-8914-e29c1dfa7f5d

Visual Studio 2015 で使えまする。

これで、

image_thumb[1]

こういうメニューがでてくるので、あとは、説明なくても大丈夫だよねw

サンプルソースは一つ前の記事の、完全動作コード。

Module Module1

     Sub Main()

         Dim samples As New List(Of SampleRecord)
         Dim rnd As New Random

         Dim KeysCount = rnd.Next(1, 23)

         Console.WriteLine("{0} 件キー", KeysCount)

         For x As Integer = 1 To KeysCount
             For f As Integer = 1 To rnd.Next(1, 55)
                 samples.Add(New SampleRecord With {
                                     .Key1 = x.ToString("KeyA-000"),
                                     .Key2 = x.ToString("KeyB-000"),
                                     .Key3 = x.ToString("KeyC-000"),
                                     .Data1 = f.ToString("DataA-00"),
                                     .Data2 = f.ToString("DataB-00"),
                                     .Data3 = f.ToString("DataC-00")
                                     })
             Next
         Next

         Dim c = From x As SampleRecord In samples
                 Group x By x.Key1, x.Key2, x.Key3
                 Into Datas = Group
                 Select New Hoge With {
                     .Key1 = Key1,
                     .Key2 = Key2,
                     .Key3 = Key3,
                     .Datas = Datas.Select(Function(f)
                                               Return New DetailData With {
                                                                 .Data1 = f.Data1,
                                                                 .Data2 = f.Data2,
                                                                 .Data3 = f.Data3
                                                                }
                                           End Function).ToList
                     }

         c.ToList.ForEach(Function(x)
                              Console.WriteLine("{0}-{1}-{2}-{3}", x.Key1, x.Key2, x.Key3, x.Datas.Count)
                          End Function)

         Console.ReadKey()
     End Sub

End Module

Public Class SampleRecord
     Property Key1 As String
     Property Key2 As String
     Property Key3 As String
     Property Data1 As String
     Property Data2 As String
     Property Data3 As String
End Class

Public Class DetailData
     Property Data1 As String
     Property Data2 As String
     Property Data3 As String
End Class

Public Class Hoge
     Property Key1 As String
     Property Key2 As String
     Property Key3 As String

     Property Datas As List(Of DetailData)
End Class

 

ふむ、やれそうだ(謎)

posted @ 2016/06/12 9:34 by 片桐 継(Tugu Katagiri)

VB.NETのLINQでGROUP BY を頑張ってみた

意外とはまったのでメモ。

やりたいこと。

とあるクラスのリスト、クラスには集約キーのプロパティが複数あって、データ部のレコードが存在してる。

これをキーでまとめて、データ部をリスト化したクラスのリストにまとめたい。

で、書いてみたサンプルがこれ。

Dim c = From x As SampleRecord In samples
                Group x By x.Key1, x.Key2, x.Key3
                Into Datas = Group
                Select New Hoge With {
                    .Key1 = Key1,
                    .Key2 = Key2,
                    .Key3 = Key3,
                    .Datas = Datas.Select(Function(f)
                                              Return New DetailData With {
                                                                .Data1 = f.Data1,
                                                                .Data2 = f.Data2,
                                                                .Data3 = f.Data3
                                                               }
                                          End Function).ToList
                    }

hogeクラスにはキーで集約されて、データ部にリスト化されたDetail情報が集まる

posted @ 2016/06/11 22:05 by 片桐 継(Tugu Katagiri)

[HoloLens]HoloLens Wave 3

image

HoloLensのDeveloper EditionはWave 1~Wave 4、そしてその後に追加でWave 5という形でいくつかの発送ブロックに分かれて順次発送されています。

残念ながらWave 5時点ではまだ米国+カナダ限定ですが。

 

1つのwaveが2、3カ月かかるのかと思っていたら、3/30からWave 1が始まって、5月中くらいにWave 2。

「あれ?1.5カ月とかはやい」と思っていたら、wave 3がもうはじまりました。

もしかして、当初の予想だとwave 5は来年かと思っていたんだけれど、wave 4やwave 5の割り当てでも比較的早くきそう?

posted @ 2016/06/09 6:23 by 初音 玲

[Windows10]マイクロソフトのモバイル戦略

弊社アプリをスマホで使いたいとWindows 10 Mobile機をご購入していただけたり、短期間であれば弊社からお貸出ししてトライアルしてもらう場合が最近増えております。

自社保有機器といっても開発用なので手持ち機器だけではどうしても対応しきれず(予想外の引き合いの多さで緊急で予算確保のための折衝中→なんとかある程度の台数を購入できそう)端末メーカーさんにご協力いただきトライアル用端末を貸していただいていたりもします。

 

そんなお客様の中でも特にWindows 10 Mobileを気に入っていただき、UWPアプリの作り方などもご質問頂いたお客様からこんなことを言われました。

 

「Windows 10 Mobileはすごくよいし、自分たちもアプリを作っていくけれど、あとは心配なのはマイクロソフトの方針だね。」

 

最初、何をおっしゃっているのかと聞き返そうと思いましたが、思い当たる節があったので次のように回答しました。

 

「マイクロソフトがスマホ事業を縮小したのは、自社でつくらなくても様々なメーカーがWindows 10 Mobile機を作り出荷し始めたので、Lumiaから移籍した技術者を元の鞘に戻しただけですよ。Mobile First, Cloud Firstって方針は変わっていません。Windows 10とWindows 10 MobileはOSコアは同じですし、そのうえで動作するFrameworkも同じ.NET Coreだし、UWPアプリもどちらでも動くし、あえてデスクトップとモバイルと分けて情報発信しないでいいのでモバイルって言葉が話されなくなっているだけですよ。」

 

この説明には、すごくご納得頂けたようで、Windows 10 MobileがなくならないこととUWPやっていって無駄にならないことがわかってすごく満足な笑顔を頂いた。

posted @ 2016/06/08 23:23 by 初音 玲

片桐さんがUWPアプリを作ろうとしています。たぶん、壱

なにしろずっと、WindowsFormばかりだったから、ひさしぶりのXAMLでパニクる

image

部品配置がWindows.Formに比べて恐ろしく、めんどくさいんな。

XAMLはやっぱり慣れないなー。HTML書くのは楽しいのになぁ。

<Page x:Class="PlayAndEditForMP3.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:PlayAndEditForMP3"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Button x:Name="button" Content="Button"
            HorizontalAlignment="Left" Height="38"
            VerticalAlignment="Top" Width="140"
            RenderTransformOrigin="1.538,1.397" Margin="20,30,0,0"/>
        <GridView x:Name="listView"
                  HorizontalAlignment="Left"
                  Height="100" Margin="10,135,0,0"
                  VerticalAlignment="Top" Width="390"
                  BorderBrush="{ThemeResource AppBarBorderThemeBrush}"
                  Background="{ThemeResource ListBoxBackgroundThemeBrush}"
                  Header="リスト"
                  IsSynchronizedWithCurrentItem="False">
            <TextBlock>テスト2</TextBlock>
            <TextBlock>テスト3</TextBlock>
        </GridView>
    </Grid>
</Page>

これが綺麗なXAMLかってーと、怪しいかと思う。

やりたいことはボタン2つおいて、その下にWindowsFormでいうDataGridViewを貼りたいだけなんだけどね。
Form屋さんとしては、どうもこの画面制作にかかる手間と考え方というか構成が気に入らないんだよなぁ。

でも、頑張って慣れないとなので頑張ろう<を

posted @ 2016/06/08 22:24 by 片桐 継(Tugu Katagiri)

片桐さんがUWPアプリを作ろうとしています。序

とりあえず、VisualStudio 2015 Update2 入れました。

VB.NETで「ユニバーサルアプリケーション」を新規作成して、出来立てほやほやプロジェクトをビルド。

そのまま素でエミュレートデバッグ実行してみた。

ぼーっと待つことしばらく(数分)、OSが上がってきて

image

もうちょっと待ってたら

image

真っ白画面キター!!

エミューレータデバッグ終わったら

image

こんな感じ。ふむ。うちのPCだとデバッグだけで使用メモリ1.2G増しってとこなのね。

スペックそんなに高くないからなぁ。

メモリが多いに越したことはないっぽい感じ。

posted @ 2016/06/06 20:29 by 片桐 継(Tugu Katagiri)

片桐さんがUWPアプリを作ろうとしています。/Zero

とりあえず、ここを読む

Windows 10 アプリに関するハウツー ガイド:
https://msdn.microsoft.com/ja-jp/library/windows/apps/mt244352.aspx

 

とにかく、色々が変わりすぎ。ここまでクラス化、ライブラリ化が進んでるのかと。

ゆとりっていいなぁ<何

posted @ 2016/05/29 10:14 by 片桐 継(Tugu Katagiri)

[Windows10]de:code 2016で感じた違和感と期待感

2016/05/24~25にザ・プリンス パークタワー東京で開催されたde:code 2016に参加してきました。

サンフランシスコで開催されたbuild 2016参加直後から「de:codeはbuildの雰囲気をよく出している」という話をしてきました。

de:code 2016もその期待を裏切らないすばらしいものでした。

 

そして、同時に「違和感と期待感」という感想を私に抱かせました。

 

違和感の発端は初日キーノートです。

すでにキーノートはネットにも公開されているので、まだ視聴してない方はぜひ視聴してみてください。

channel9.msdn.com

参加された方や視聴された方は、もうなぜ私が違和感を感じたのか共感していただけるのではないでしょうか。

 

今までの日本マイクロソフトの技術系年次イベント(TechEd、Windows Developer Day、過去のde:code)でこれほどまでに開発者に対して

自分たちの技術を楽しみ、そして開発者に対して『一緒に楽しみましょう』どうですか?

と語りかけてくれたことはあったでしょうか。

 

マイクロソフトだけではなく多くのベンダーのイベントでは、最新の技術をわかりやすく、かっこよく、それこそ驚かせるように示してくれます。

しかし、今回のキーノートでは、まず自分たちが楽しみ本当に価値観を理解し、だから、みんなもよかったらどうぞとお裾分けしてくれるようなすがすがしいくらいに押しつけがましさがない内容だったのです。

 

他にも違和感はありました。

buildにはなくde:codeにだけあるぎゅうぎゅうづめの通路(通路の幅は4倍くらい違う)ですれ違う中に、マイクロソフトのイベントで見かけたことがない知り合いの顔ぶれが多く見られたことです。

そして、その表情は「きてやったけど、まあ、マイクロソフトだよなぁ」のような敵対する勢力の変わらぬ姿勢をみてやれやれというった表情ではなく、同じ開発者という枠組みの中で同じ価値観を見出して、同じテンションでワクワクしているそういった表情をしているのです。

OSの違いやオープンソースかどうかなんて小さいこと。

キーノートでも日本マイクロソフトCTOの榊原さんがおっしゃってました「良いものかそうじゃないか。世の中の役に立つのか立たないのか。」まさに言葉通りに、まるで我々にお手本をしますようにマイクロソフトは

「開発者にとって良いもの、世の中の役に立つもの」

を選択する会社に変わったということなのでしょう。

そこには、そういった判断以前にオープンソースかどうかで判断していたころのマイクロソフトの姿は微塵も感じられなかったのではないでしょうか。

 

Microsoft MVPとして、マイクロソフトの技術に注目してきたので「マイクロソフトノギジュツ チョットワカル」はずですし、buildも参加して米国本社の変わりようは知ってはいました。

そんな予備知識があったのに「日本マイクロソフトすげー!」と驚きの違和感、そして、ともすればマイクロソフトの技術に注目していなかった層をぐっと引き寄せた「そうだよ!わかっているね!」感はキーノート後のセッションでも様々なところで感じられました。

だって、スピーカーの人ってマイクロソフトの技術だからスゲーって感じじゃなくて

「この技術すごいでしょ?いや、これで開発したら楽しいでしょ?あ、これマイクロソフトの技術だけどね」

のような感じで、会社すげーというより、自分の推しメンのことを話すように技術のことを話しているのですもの。

 

一応、私が受講できた(満員ではいれなかったり展示会場サポートやコミュニティブースでみれなかったものを除く)セッションは

Day1

Day2

でした。

これ以外にも見たいセッションはたくさんあって、早く資料と録画公開が開始されないかと待っている状態です。

UWP、Cortana、Congnitive、Xamarinと好きな技術、注目してきた技術の最新情報に触れられて、本当に楽しくすごした2日間でした。

 

人は誰でもが、きっと誰かの役に立ちたいと思っていると思います。

組織や会社も同じではないでしょうか。しかし、組織や会社はともすれば成長という中で市場のオンリーワンになるがために競争相手を敵とみなして必要以上に恐れ憎み「役に立つ」というところの出発点からはずれて行ってしまう場合があります。

サーバーOSがUNIXだった時代、サーバーOS市場に食い込み拡大しようとしていたときに挑戦者としてのマイクロソフトがとった戦略がまさにそうでした。クライアントOSの覇者が闘志をむき出しにしてUNIXやそしてオープンソースを否定していく様は、まさに「悪の帝国」のように映ったのでしょう。

マスターヨーダの言葉を借りれば「Anger... fear... aggression. The dark side of the Force are they.」です。

時代は変わり、ポストPCと呼ばれる時代。マイクロソフトは再び挑戦者としての立場に立ちましたが、その戦略は前回と異なります。

「開発者にとって良いもの、世の中の役に立つもの」

それを提供することで共に歩んでいける信頼を得て進んでいく。そういったビジョンは、マイクロソフトの従業員にも、マイクロソフト製品を使って開発する開発者にも、そして世の中のすべての人にとってもより良き方向に進むための灯になるのではないかと考えます。

 

最後に、de:code 2016の最終セッションの最後の実例紹介で感じた自分のツイートを引用して終わりたいと思います。ここに期待感のすべてが詰まっています。

posted @ 2016/05/28 21:47 by 初音 玲