ディーバ Blog

大阪発 C#の会社、株式会社ディーバの Blog です。

東京富士大学で特別講師として講義しました

青柳 @ShinichiAoyagi です。

2019/6/13(木)のことになりますが縁あって東京富士大学で特別講師として授業を担当しました。
「新事業創造論」という通年(後期は「ベンチャービジネス論」になるそうです)の講義の1コマとして「ITビジネスの可能性と未来」をテーマとして90分間の講義です(本来の講師の方が前後にお話するので私の持ち時間は70分ほど)。

f:id:ShinichiAoyagi:20190703114458j:plain

もともとこの講義は元柔道選手の松本薫さんが始めたというアイスクリーム屋「 ダシーズ 」をメインテーマとした講義です。

引退した柔道・松本薫さんのアイス屋で実食レポ。“身体にいいアイス”ってどんな味?

柔道を引退してセカンドキャリアとしてアイスクリーム屋を始めるということで、テレビやネットでも紹介されたりしていたので知っている人も多いかもしれません。
このアイスクリーム屋「ダシーズ」ですが、以下の記事にもあるようにもともと東京富士大学と株式会社ジャスビコという会社さんの産学連携プロジェクトで、単に店舗を出すだけではなく「ダシーズ」をテーマにした講義もおこなうことが予定されていたそうです。

松本薫さんが手掛けたアイスクリーム屋の開店日決定!

今回担当させていただいたのがまさにこの講義の1コマということになります。

今までIT系勉強会でスピーカー(講師)をしたことは何度もありますが、大学や学生さんを相手に講師をするというのは初体験です。
講義内容はお任せいただいていたのでVR、IoT、AIといった最近話題になっているようなことを中心に、IT企業がどんなビジネスをしてるのかなんてこともお話しました。

しかし、あれですね。大学の授業は90分ありますが、90分って長いですね。しかも、お昼ご飯後の13時始業のコマなので眠くならないわけがない(笑)
けれども、講義後にアンケートを書いてもらったんですが(毎講義後書かせているそうです)、結構皆さんしっかり感想を書いてくれていました。
うまく話せたかどうかはわかりませんが、私にとってはとてもいい経験になりました。生徒の皆さんにもなにか1つでも得るものがあったら幸いに思います。

講義後は「ダシーズ」を案内していただきました。
残念ながら改装中でお店自体はクローズでしたが改装中の店舗の中を見せていただき、あとアイスクリームはあるとのことでココナッツミルクチョコクッキーと豆乳焦がしキャラメルをいただきました。アイスクリームと言っても乳製品不使用、小麦粉不使用、白砂糖不使用ということでアイスクリームっぽいけどアイスクリームとは違うもの、ちゃんと甘いけど口の中で溶けたあとに乳成分が残らないからかさっぱりしてるし、溶け方も普通のアイスクリームよりもふわっと溶けるような感じがするし、となんか不思議な感じでした。なかなかおいしかったです。

私が行ったときには改装中でしたが6/27(木)にリニューアルオープンしたそうです。店舗自体は東京富士大学の中ですがもちろん一般の人も購入できます。興味のある人は行ってみては?ただ、毎日営業しているわけではないそうなのでWebサイトでご確認を。

ダシーズ

de:code 2019に参加しました

青柳 @ShinichiAoyagi です。

今年も de:code 2019 に参加してきました。
f:id:ShinichiAoyagi:20190610212156p:plain:w400

ディーバ からは私を含めて3名の参加です。もちろん 去年 と同様に参加費・交通費・宿泊費は会社負担です。
ディーバは2月に1名、4月に1名増えて現在6名(私含む)なので半数が参加ということになります。できれば全員参加にしていきたいんですけどね(もちろん、家庭の事情などもあるので強制するわけではありませんが)。

毎年言ってますが、ほんとに会場はなんとかして欲しい。セッションルームのキャパ的にはいいのかもしれませんが廊下は完全にキャパオーバーで大渋滞しちゃってて移動するのが大変。もう少し余裕のある会場にしてもらえるとうれしいんですが、なかなかそう簡単でもないんでしょうね。

今年もフルにセッションを受講しました。以下、それらの簡単なメモです。
(セッションをフルに受講するとEXPO見に行く暇がありません。見に行きたかったんですが。。。見たのはHoloLens 2体験の抽選結果だけです。かすりもしませんでしたけど)

キーノート

なにが印象に残ったってやっぱりHoloLens 2ですよね。3倍よくなったとか。早く実機欲しい。
Office 365のWordやExcelの中に「@名前」書いてヘルプ求めたり修正求めたりできるとかってのはなかなかおもしろいと思った。そういえば、iPhoneのOutlookでは「それでは6/10 13時にお伺いします」のような文章があると日時のところがリンクになってカレンダー開いたり予定を登録したりできるようになってるけど、これがなにげに便利だと思って感動した。この機能っていつ頃からあるんだろ?
Fluid Frameworkもなんなのか気になった。リアルタイムに翻訳しながらチャットしたり、TeamsのチャットにWordの表を(画像ではなく動作するものとして)貼り付けたりとか(後者は『昔、OLEとかActiveX Documentとか呼ばれるものがあってだな。。』とか言いたくなったけど)。Fluid FrameworkはBuild 2019で発表されてたと思うのでそちらを探せばブレイクアウトセッションあるかな?
りんなちゃん、セリフは棒なのに歌は流暢でギャップがかわいい(笑)
伊勢のゑびやさんの記事は以前に読んだことがあったけどAzure使ってるとは知らなかった。

DT02(Room O) 一挙に紹介! Visual Studio 2019 新機能とMicrosoft Build 2019 で発表された開発ツール最新情報【.NET 開発者向け】

タイトルどおり、いろいろなことをざっと紹介するセッション。お弁当付き。
VS2019でソリューションの読み込みがすごく速くなったとか、デバッグ中のローカル変数やウォッチで検索ができるとか(この機能はかなりうれしい。というか、なんで今までなかったんだ)
Live Shareは以前に会社のみんなで試したけどとてもおもしろい(これはVS2017やVS Codeでもできる)。

CM01(Room E) ここまで進化した!HoloLens 2 の全貌を徹底解説

キーノートのHoloLens 2の紹介をもう少し詳しくした感じのセッション。なので、技術的な話というよりももうちょっと概要的なところ。けど、おもしろかった。
やっぱりHoloLens 2って虹彩認証とかアイトラッキングとかが入ったっていうのがすごく未来感あるように思える。
技術的なところではUnrealも対応するとか。あと、ARCoreやARKitも対応していく?(ARCoreやARKitになにをどう対応するという話なのかよくわからなかった)。

DP10(Room K) Build 2019 Azure AI & Data Platform 最新アップデート

タイトルどおり、Build 2019のAzureのAIやData関係のいろいろをざっと紹介するセッション
Azure SQL Database Edgeとか「おぉ、そんなのあったんだ」というものも。Compactの進化系だったりするのかな?
ただ、さすがに盛り込み過ぎでものすごく駆け足。もう少し絞り込んで紹介してくれてもよかったかも。

MW03(Room G) Xamarin.Forms アプリケーション設計パターン

流れるようにMVVMからDIまで説明しててさすが大田さんと思ったり。
大田さんはクリーンアーキテクチャーが好き、かつ、Prismが好き、とのこと。

DT03(Room G) 上級サポート エンジニアの経験お伝えします:Visual Studio 2019 でメモリー リークを追え!

正直めっちゃ楽しかった。
前半は「Working Setとは?」みたいな感じの話だったけど、中盤からprocdumpとかwindbgとか出てきてがぜん楽しくなってきた(笑) いや、私もprocdumpとかwindbgとかなんて普段使ったりしませんが、なんかこういう話ってものすごく楽しいじゃないですか(笑)
けど、ダンプを調べるのにwindbgよりVS2019の方が(ある部分においては)便利だというのを聞いて結構衝撃。procdums+windbgは平成の時代、令和の時代はprocdump+VS2019らしい(笑)

パーティ

恒例のパーティ。あいかわらずものすごく混んでるけど食事や飲み物は十分あった。
抽選会はなにもあたらず。

その後、友人+いっしょに行ったディーバ社員1名と居酒屋で二次会。
さらに、ホテルの私の部屋でディーバメンバー3人で三次会。

DT07(Room A) .NET とクラウド ネイティブ ~ 本格化するクラウド移行とそのアーキテクチャ (前編)

井上章さんの2コマ連続のセッション。
WPF on .NET Coreのシングルファイルのパブリッシュは初回起動時に(たぶん)解凍してるのでちょっと遅い。2回目以降は普通。とか。やっぱりそうなのね。
BlazorもServer Side、Client Sideともに結構しっかり説明してた。Server SideはRazor Component(の一部)として.NET Core 3.0に入ることが決定済みだけど、Client Sideはどうなるかなぁ?
ASP.NET CoreのgRPCも説明あり。.protoファイルを普通にVS2019で編集してた。まだgRPC試してないんだけどgRPCツールを入れなくてもVS2019だけで対応してるのかな?そうや、gRPCはASP.NETのみで使うわけじゃないのでASP.NETに入れなくてもよかったんじゃ?という気もしないでもない。
ML.NETも。知らなかったけど ML.NET Model Builder という拡張機能をVS2019に入れておくとウイザード形式で簡単にMLモデルが作れるとか。なにそれすごい。
「.NET 5にはASP.NET WebFormsとWCFとWFはなくなる」

DT08(Room A) .NET とクラウド ネイティブ ~ 本格化するクラウド移行とそのアーキテクチャ (後編)

懐かしいCMから。なんか見覚えある。
オンプレ、IaaS、CaaS、PaaS、FaaS、SaaSの説明の図がわかりやすかった。
Twitterでもつぶやいたけど「Dockerコンテナーとは」とか「マイクロサービスアーキテクチャーとは」とか「Kubernetesとは」みたいな話もあって「.NETの解説をするためにこういった解説もしないといけない時代かぁ」とか感じたり。
マイクロサービスを野良化させずにAPI Gatewayとかを使ってちゃんと管理すべし、という話はやっぱりそうだよねと思ったり。というわけで、 eShopOnContainers を読むべし。PDF版は英語しかまだないけどWebなら日本語訳もあるとのこと。.NET マイクロサービス:コンテナー化された .NET アプリケーションのアーキテクチャ ←これのはず。

CD42(Room F) Vue.js と Firebase, AKS でのクラウドネイティブなスマホアプリの作り方 + ML Ops による AI モデルの作り方

お弁当付きのランチセッション。関連はあるんだけど、前半のVue.jsでスマホアプリ作ったという話と後半のML Opsしてますって話の2本立てという感じ。
しかし、どちらもあまり知らない分野だったのでおもしろかった。Vue.jsはちょこっとしか触ったことないけどいろいろ充実してるようなのでなかなか便利そう。

IT02(Room L) Azure IoT Hub クラウド側の最新機能:デモも交えてご紹介

エッジ側ではなくAzure IoT Hubなんかのサーバー側の話。
このあたり、あまりよくわかってないところ(Azureにどんなサービスがあってそれらをどう組み合わせるとどううれしいのか、とか)があるので要復習って感じ。

CM10(Room B) ハードコア デバッギング : サポート直伝!Windows カーネルモード デバッグ活用編!!

楽しかった!正直、カーネルモードデバッグなんて今までやったことなんてないけど。
最初のデモが「アプリが起動せず、なぜかwindbgも起動しない。こういうときはカーネルモードデバッグ」といった感じで始まるという変態なセッション(褒めてる)。ほんとに楽しかった。

CM12(Room C) .NET Core マルチ プラットフォームの本質

荒井 省三さんのセッション。
荒井さんのセッションは例年ものすごくディープな話だけど、今年はどうなるかな?と思っていたらCLIの話から始まって、Portable Executable Format(EXEやDLLファイルの構造とかのことですね)なんて話が出てきて、最初のデモがwindbgで、とさすが荒井さん今年も期待どおりでした(笑)
JISのサイトは日本のIPアドレスからしかアクセスできないらしい。へぇ。

CM04(Room L) Azure Kinect DK 徹底解説 ~ 進化したテクノロジーとその実装 ~

de:code 2019最後のセッションはAzure Kinect。
Azure Kinectにどんな機能があってどんなコードを書けばいいかというがっつり技術系なセッション。おもしろかった。
Azure Kinectって以前のKinectに比べるとものすごく小型化軽量化されてるしものすごくいい。とりあえず欲しい。ただ、Body TrackingはNVIDIAのGPUを積んだ(CUDAが動く)Windows 10が必要とあったからPCも必要になりそう。
そういや、コード例はすべてC++だったと思うけどC#からのラッパーって用意されるのかな?ちょっと使うくらいなら自前でP/Invokeすりゃいいだろうけど。

以上、今年も楽しい2日間でした。

画像から音楽を自動生成するスマホアプリ「mupic(ミューピック)」を令和元年5月1日に正式リリース!

青柳 @ShinichiAoyagi です。
なんだかいろいろとバタバタしていてブログもずいぶん間が空いてしまいました。

本日、令和元年5月1日に「mupic(ミューピック)」という画像から音楽を自動生成するスマホアプリを正式リリースしました。
(ちょっと前からAppStoreで公開状態でしたがもろもろの都合で本日が正式リリースという設定となりました)

Webサイト: mupic.jp
App Store: mupic

f:id:ShinichiAoyagi:20190501230652p:plain:w200

正式リリースに先立って平成最後の平日である平成31年4月26日にプレスリリースも発表しています。
ディーバ、DOZAN11(元・三木道三)プロデュースの画像から音楽を自動生成するスマホアプリ「mupic(ミューピック)」を令和元年5月1日に正式リリース!

プレスリリースにもあるとおり、このmupicというアプリは DOZAN11 さんプロデュースです。DOZAN11さんは平成13年(2001年)に「Lifetime Respect」という曲でミリオンセラーを達成した「三木道三」その人です。平成を生きた人(笑)なら「一生一緒にいてくれや」のフレーズに聞き覚えがある人も多いんじゃないでしょうか。
平成と言えば、Yahoo!の【連載・「わたし」と平成】という企画でDOZAN11さんのインタビュー記事もあります。
大ヒットからの引退と復帰、今はアプリ開発も DOZAN11(元・三木道三)の軌跡
(この記事の最後にもちょっとmupicの話題が出てきます)

もうひとりmupicに重要なキーパーソンとして株式会社ビジョナリストの三木さんがいます。三木さんは色彩の専門家で以前から色彩に関する研究や著作などがあります。その一環として写真やイラストの色彩を分析して楽器や音程を割り当てるといったことも研究されていました。
しかし、単純に音にしてもほぼノイズにしかなりません。人が聞いて音楽だと感じるにはそれなりのルールが必要なんですね。Yahoo!の記事にもあるようにDOZAN11さんは音楽理論などを研究していて、その一環として三木さんと写真やイラストの色彩をいかに音楽にするかといったことも研究されていたんですね。

そんなDOZAN11さん三木さんと私・青柳が知り合ったのをきっきけにmupicの開発はスタートすることになりました。
もちろん、DOZAN11さんが音楽面を、三木さんが色彩面を、そして、 ディーバ が開発を担当する形です。開発は青柳個人ではなくディーバのプロジェクトとしておこなっています。
(そもそもなんでミュージシャンと知り合ったの?とか書きたいことはいろいろあるんですが長くなるのでそれらはまた別に記事にしたいと思っています)

このmupicですが、ディーバが開発を担当したっていうことは当然のようにXamarinです。プロトタイプはXamarin.Formsを使っていましたが今はXamarinネイティブです。ただ、画面はすべて MonoGame なのでXamarinネイティブと言えるかどうかちょっと微妙ですが。ぶっちゃけ、Unityでもよかったんですが今回はXamarin + MonoGameを使ってみました。
(こういった技術的な話もいずれ記事にまとめたいと思います)

今はまだiOS版のみですが、もちろん近日中にAndroid版もリリース予定です。優先順位的にiOSが先となりましたがAndroid版もiOSと並行して実装は進めています。というか、Xamarin + MonoGameなので実装のかなりの部分はiOSとAndroidで共通です。
これだけでなくいろいろと変更や追加はしていきたいと考えています。開発時間的な制約からまだまだ熟れていない面もありますし、不十分な面も多くあると思っています。そしてなにより、DOZAN11さんは「よりよい音楽にするにはどうすればいいか」を、三木さんは「写真の色彩、ひいては、雰囲気や空気感をより読み取るにはどうすればいいか」をいつも考えていますのでそれらを反映していきたいというのもあります。
ディーバのプロダクトのひとつとして今後も継続して開発していきますのでよろしくお願いします。

IT 勉強会の会場 無料提供します(本町・淀屋橋)

株式会社ディーバのミーティグ用のスペースを、IT 勉強会用に無料提供します。

小さいですけど、興味のある方は @diva_osaka または diva_osaka@divakk.co.jp までどうぞ。

f:id:jz5_diva:20181003082859j:plain

椅子は写真の6脚以外に、後方に机なしで4〜6脚は置けます。

  • 場所: 株式会社ディーバ
    • 541-0047 大阪市中央区淡路町3-2-8 トーア紡 第2ビル 201
    • 京阪電車・大阪メトロ「淀屋橋駅」から徒歩10分
    • 大阪メトロ 御堂筋線「本町駅」から徒歩8分
  • 定員: 約10名
  • 備品等:
    • 65 inchディスプレイ (DKS-4K65D)

その他条件として、ディーバの業務時間外(フルフレックスのため時間は要相談)で、担当社員が参加可能な日程(と興味のある勉強会)に限ります。

スペシャリストというキャリアパス

青柳 @ShinichiAoyagi です。

「プログラマー35才定年説」なんてことが言われたりしますが、まったくもってナンセンスですよね。
そりゃ、年齢がいくと頭が固くなるとか記憶力が落ちるとかは確かにあります。けど、そんなことは人それぞれですし、何才でどうなるかなんて明確になっているわけでもありません。まぁ、そういうことではなく、35才くらいで管理職になったりとかそういうところから来てるんでしょうけどね。
ちなみに、Windows NTを作ったデビッド・カトラー氏は当時46才だったそうです。その様子は名著「闘うプログラマー」に詳しくあります。

闘うプログラマー[新装版]

闘うプログラマー[新装版]

(こんなデスマーチを今のアメリカでやったら裁判起こされたりとかいろいろと大変なことになりそうですが)
今現在、氏がどうされているかはわかりませんが、少なくとも2012年時点(当時69才くらい)では現役だそうです。プログラマーなのかはわかりませんが。
Windows NTの開発者「デヴィッド・カトラー」は戦い続ける

35才定年説とはちょっと毛色が違いますが、「テスターやプログラマーは下っ端。SEの方が偉い。マネージャーはもっと偉い」なんてことも言われたりするみたいですね。
これまたまったくもっておかしな話です。
マネージャー・SE・プログラマー・テスターなんていうのは役割の名称です。どれが偉いなんてことはないです。ただ、日本語のややこしいところで「マネージャー」を「部長や課長といった管理職」だと捉えると偉い人ということになります。けど、「マネージャー」を「チームをマネージメントするという役割の人」と捉えると偉いとか偉くないとかは関係ない「役割」の名前ということになります。もちろん、ここではこの意味での「マネージャー」です。

役職はピラミッド型組織の上下関係を表すものです。だから部長は課長より偉い。
しかし、役割は違います。役割が上下関係を表すことはありません。プログラマーの方がテスターより偉いなんてことはないわけです。
と思ってるんですが、給与体系がマネージャー>SE>プログラマー>テスターで格差をつけるようになっている会社もあるみたいですね。給与ではないですが、SIerからの案件だと「SE単価」「PG単価」なんてのは普通にあったりします(もちろんSEの方が高い)。

役職と役割をごちゃ混ぜにしちゃダメですよね。
より良いチームにするには各々が与えられた役割としての責任をしっかりと全うする必要があります。そこに上下関係はありません。へぼいプログラムコードを書くプログラマーがいたらテスターはどやしつけに行って構いません。反対に、へぼいテスト計画しか立てられないテスターがいたらプログラマーはどやしつけに行くことになりますが。いや、別に喧嘩しろと言ってるわけじゃありませんけど(笑)
それに役割は固定的なものではありません。あるプロジェクトにはSEとして参加している人が別のプロジェクトにはプログラマーとして参加するといったこともあるでしょう。プロジェクトによって内容や性質も異なるでしょうから、適材適所(もしくは本人の希望)で役割を決めればそういうこともあるはずです。いろいろな役割を同時に掛け持ちすることだってあるかもしれません。

ディーバの場合

ディーバ には今ところ部長・課長といった役職はありません。今だけでなく今後も役職を設けるつもりはありません。
人数が少ないからというわけでなく、仮に会社が大きくなっても部長とか課長とかはいらないんじゃないかと思っています。ホラクラシー組織とかティール組織とかいうやつです。

もちろん役割はあります。
今のところ「あなたはマネージャーです」とかそういう風に役割を明確にしているわけではありませんが、今後必要があれば役割を明確にすることもあるかもしれません。
けど、明確にしたとしてもマネージャーとデベロッパーくらいかな。営業・経理・総務とかそういうのもありますが。
デベロッパーをSE・プログラマー・テスターといった風に細分化する必要はあまりないかな?プロジェクトの規模が大きくなってくるとそれなりには役割を細分化する必要は出てくると思いますがそれにしたって「設計だけしかしないSE」とかはありえないですからあまり細かく線引きする必要はないと思っています。

さて、部長や課長といった役職がないということはそういった意味での昇進はないということになります。
上述したように役割の違いでも上下関係や給与差は生まれません。
しかし、「すごい人」と「普通の人」といった差はあります。肩書としては「スペシャリスト」とかになるでしょうか。マネージメントのスペシャリストとか、デベロップメントのスペシャリストとか、いろいろな役割ごとのスペシャリストが考えられます。
まだ評価基準や給与体系などはできていませんがこういった部分で評価し給与差をつけていきたいと考えています。簡単に数値化できるものではないのですごく難しいんですけどね。

そしてどの道に進みたいかは基本的に本人の希望を尊重します。マネージメントに重きを置きたい人、デベロップメントを極めたい人、その他いろいろ、人それぞれだと思いますし、進みたくない道を無理強いしても何もいいことはないと思いますから。
もし「現状維持でこれ以上前に進むつもりはない」という人がいたとしたらそれはそれでその人の道ということになります。いろいろと思うところはありますが仕方ないとしか言えません。

ということで、ようやくタイトル回収です。
ディーバは、各々が行きたいと思うキャリアパスに向かって進んでもらい(もちろん途中で進路変更してもぜんぜんOK)、そしてその進みに応じてそれに見合う報酬が貰える、そういう組織であろうと思っています。

正直なところ、今のディーバはこのあたりが弱いです。社長が日々の作業に追われてるようだとこういうところが弱々のままでなかなか先に進めないと最近痛感しています。そもそも、私は「一生プログラマー」と思ってたような人なのでいまだにマネージメントのことが全然わかってないというのもあるんですが(最近はそういう書籍もいろいろ読んでますが本読んだだけでできるようになったら誰も苦労しないんですよね)。
弱いとわかっているところを弱いまま放置しておくわけにはいかないので、少しづつでも進んでいかなきゃですね。

プロ生勉強会 第53回@GMOインターネット(大阪)に参加しました

青柳 @ShinichiAoyagi です。

2018/9/1に開催された プロ生勉強会 第53回@GMOインターネット(大阪) に参加してきました。
プロ生勉強会に参加するのはずいぶん久しぶりです。

今回は、セッションスピーカーもさせてもらいました。
Azure Functionsを中心にサーバーレスがテーマです。
今のところ仕事ではサーバーレスでシステムを作るという機会はないんですが、いずれはこうなっていくのかもと思ってちょこちょこと調べていたものがベースになっています。なので、私も突っ込んだところはまだまだこれからです。
セッション冒頭で「サーバーレスをちょっとでもいいから使っている人は?」と聞いてみたら2~3名でした。やっぱり、実際にサーバーレスでやるというのはまだこれからという感じみたいです。
セッション資料は以下にあります。

(今までは SlideShare に置いていたんですが、今回の資料はなぜかエラーが出てSlideShareにアップロードできませんでした。なのでSpeakerDeckに入れました)。

ごく簡単にですが他のセッションについて。

Oculus Go

Oculus Goのアプリ開発をUnityでのデモを中心に紹介したセッション。
やっぱりものすごくおもしろそう。Unityは少し触ったことがある程度ですが、デモを見ているとやっぱりマジカルというか、簡単にいろんなことができるけどなにをどうすればいいのか直感的にはわからないというか、結局は慣れの問題なのかな?
休憩時間にOculus Goを試せさてもらいましたが(Oculus Goは初めて)、やっぱり楽しいなぁ。

Blazor 触ってみた

Blazorは私も今一番気にしている技術です。
ブラウザーでC#を実行するという技術ですがSilverlightのようにプラグインで実現するのではなく、WebAssemblyとしてマネージドコードを実行するランタイムを実装して動かすというものです。なので、WebAssemblyが動かせる今どきのブラウザーであれば何もしなくても動きます。
もともと「ブラウザーでマネージドコードを動かす」から始まったはずなのに、Ver 0.5ではブラウザー側では最小限のところだけ動かしてC#のコード部分はサーバーサイドで実行するという機能が実装されました(サーバーとブラウザー間はSignalRで通信します)。ほんとに一周回って来た感じで「なんだってー!」ですよ。まだまだ実験的なプロジェクトですが今後が楽しみです。
つか、早く実際に使いたい。

ツールで防衛 クリーンアーキテクチャ

クリーンアーキテクチャの概要と、クリーンアーキテクチャをしっかり守ると文字通りアーキテクチャはきれいになるけど、コード書く量増えて面倒だよね。なら、なるべくコードは自動生成しちゃいましょう。というお話。
クリーンアーキテクチャについては名前しかしらない程度だったので普通に勉強になりました。

Vue.js + Azure Functions + Azure AD でサーバーレスWebアプリを作る

私のセッションです。

ITシステムを支える「時刻」の仕組み

今とてもホットな時刻についての話。
なにげに知らないこともいろいろあっておもしろかったです。
もし、日本にサマータイムが導入されたらですが、それなりに影響を受けるシステムは多いでしょうね。特に過去や未来のデータを参照するシステムはUTCで持つだけじゃなくtz dataとかを使ってないとダメになります。「2018年まではサマータイムないけど、2019年からのN年間はサマータイムあり」みたいになるのでサマータイム情報を時系列で持っている必要があるわけです(それがtz data)。けど、今のWindowsや.NETにはtz dataのような仕組みはないんですよね(正確には.NETには仕組みはあるけどタイムゾーンのデータは自分で用意してセットアップする必要がある)。私が昔そういった処理が必要になったときはLinux用のtz dataのソースを持ってきてVisual StudioでビルドできるようにしてP/Invokeで.NETから呼び出してました。今ならどうするのがいいんだろ?

(LT)Desktop Bridgeでストアで公開する話

UWPではないアプリをDesktop Bridgeでパッケージングしてストアに公開する話。 Desktop Bridge自体は簡単だけど、審査に出すのにフルトラストが必要な理由を英語で説明したり、説明しても放置されて忘れた頃に審査通ったりしたそうです。
フルトラストの問題はde:code 2018とかでもマイクロソフトの新井さんが言っていました。問題と言うか、レガシーアプリはほとんどの場合はフルトラストがないとセットアップできないし、ストアでは可能な限りフルトラストは認めたくないので今のところどうしようもないってことでしょうね。

懇親会

楽しかった。
ベーマガ最終巻が出てきたり。けど、最終巻って2003年なんですね。私に取っては2003年ってつい最近だわ(笑)

懇親会二次会

さらに二次会。
楽しかった。けど、ロシアンたこ焼きはいくらなんでも辛すぎ(笑)

ASP.NET Core 2.1をhttps://localhostで動かす

青柳 @ShinichiAoyagi です。

Developing locally with ASP.NET Core under HTTPS, SSL, and Self-Signed Certs
この記事のまんまなんですがちょっとハマったのでメモ(技術的な記事を書くのはずいぶん久しぶりかも)

最近はなんでもHTTPSで動かせとなってます。ならば、開発中もHTTPSで動かした方が間違いがないよね、ということでASP.NET Coreには簡単にlocalhostでHTTPSを使えるようにしてくれる機能があります。

まず、これはASP.NET Core 2.1の機能なので2.0じゃダメです。最初、 dotnet --version ってやったら2.1.201と表示されたのでてっきり2.1だと思ってやっていたらぜんぜんうまくいかず、調べたらSDK 2.1.201は2.0でした。

これは2.1をインストールするしか手がないので http://dot.net にて最新の.NET Core SDKをインストール(現時点だと2.1.302)

これで大丈夫かと思って既存のプロジェクト(ASP.NET Core 2.0で作ったもの)で試してみると以下のようになりました。

> dotnet run
Hosting environment: Production
Content root path: C:\TestProject
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
Application is shutting down...

従来どおりHTTPだけです。うまくいけば Now listening on: https://localhost:5001 と出るはずなんですが出ません。
って、そりゃそうです。2.0で作ったものは2.0で動くので2.1の機能は使えないですね。
ASP.NET Core 2.1で新規に作成( dotnet new razor )したプロジェクトであれば何もしなくてもHTTPSもリッスンしてくれました。

> dotnet new razor
(略)
> dotnet run
Hosting environment: Development
Content root path: C:\TestProject2_1
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

どちらも気づいてしまえば当たり前のことなんですが。。。

ちなみに、ASP.NET Core 2.0と2.1はこまごまといろいろ変わってますが以下の手順で2.1にできるそうです(私はやったことないですが)。
ASP.NET Core 2.0 から 2.1 への移行

なお、初回には dotnet dev-certs https --trust を実行する必要があります。
これを実行すると「証明書をインストールするか?」と聞かれるので「はい」します。Windowsだと証明書ストアに、Macだとキーチェインに、localhostで使う証明書がインストールされます(Linuxの場合はディストリビューションごとにやり方が違うそうです)。
見てみたら発行者・発行先とにもlocalhostで1年間有効の証明書が「個人」のところにインストールされていました(正確に言うとインストールされる証明書はlocalhostで使う証明書を証明する証明機関の証明書ですかね)。

この証明書が入っていない状態でChromeで https://localhost:5001 にアクセスすると以下のようになります。

f:id:ShinichiAoyagi:20180807191727p:plain:w300