ディーバ Blog

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

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

ディーバでは正社員を募集しています

青柳 @ShinichiAoyagi です。

現在(2018/08/02) ディーバ では正社員を募集しています。

f:id:ShinichiAoyagi:20180803180141p:plain:w160

募集内容

デベロッパーを募集しています。というか、現時点ではディーバにはデベロッパーしかいません。私を含めて4名(男性3名、女性1名)の小さな会社ですが全員がデベロッパーです。

ディーバにはオリジナルのソフトウエア( 給排水設備CAD 管彩 など)もありますがこれらについては当面バージョンアップなどの作業予定はありません。ちなみにこのCADはC#/WPF製です。

今現在ある案件はお客様からご依頼されたソフトウエアを作るというものです。ただSIer経由ではありませんのでExcel方眼紙の設計書などはありません。お客様からどんな機能が必要かをヒアリングし、あとはそれを実現するにはどうすればいいかを自分たちで考えて実装します。極端なことを言うと私から「○○できるアプリを作って。デザインはいい感じにしといてくれればそれでいいから。じゃ、よろしく」みたいに口頭で言われて作り始めるなんてこともあります。ですからなにもないところからクリエイトする力が必要です。そうでないとディーバでの仕事はできません。
(2018/08/06追記)ちょっと表現が乱暴だったかもしれないので追記しておきます。上記は「じゃ、よろしく」と丸投げしてそれ以後放置とか、一人っきりで自分だけでなんとかしろとかそういう意味では決してありませんので。あくまでも、要望を実現するにはどうすればいいかを自分の頭で考えることができないとダメという意味です。言い換えると、設計書を見ながらでないとプログラムを書けないような人では務まらないということです。(追記ここまで)
現在はWPF、ASP.NET Core、Xamarin、UWPの案件が並行して走っています。どれもC#です。ここ1年ほどはC#しかやっていません。ただし、C#以外がないというわけではなくお客様の要望によってはどんな言語でも使います(Java、PHP、Ruby、Python、Go、Kotlin、Swiftなどなど)。
ソフトウエアのジャンルとしてはビジネス向けが主です。ある企業の社内や社員さんが使用するためのアプリです。ただ、AppStoreやGoogle Playで一般向けに配布するようなコンシューマー向けアプリも中にはあります。

SIerからの下請け案件もないわけではありません。2年近く下請け案件は請けていませんがあえて避けているというわけでもありませんので状況によっては今後こういった案件を受注する可能性はあります。
このような案件の場合はSEが書いたExcel設計書を見ながら実装したり、逆にSEとしてExcel設計書を書いたりすることになります。技術的にはおもしろいことやチャレンジングなことはない場合が多いですが、だからといっていい加減なコードを書いていいわけではありません。そこはプロとして美しいコードを書くように心がける必要があります。少なくとも私はそうしています。

どのような案件だったとしても客先常駐はありません。
お客様のところに打ち合わせに行くとか、現地に行かないと環境がないから何日間か詰めてテストするとか、そういったことはありますが基本的に作業は自社にておこないます。

担当の案件のみをやっていればいいという専任制ではありません。複数の案件を掛け持ってもらったり途中から他の案件に移ったりと状況に応じて臨機応変に対応しています。1つの案件をライフワークのようにやり続けたいという人も中にはいるかもしれませんがどちらかというとディーバではその時々でやることが変わると思っていただいた方がいいかと思います。

求めるスキル

業務としてコードを書いたことがあるかどうかはまったく問いません。
業務であるかどうかは関係なく、自分で1つのアプリケーションを作る能力のある方を募集します。たとえば、簡単なものであってもスマホアプリを作ってリリースしたことがあるとか、ちょっとした掲示板を作ってAzureにデプロイして動かしているとか、そういった「起動してから終了するまで一連の流れを自分で作ったことがある」ような人を求めます。ライブラリを作ってGitHubやNuGetなどで公開しているといったことでも構いません。パブリックに公開しているのであればぜひソースコードを見せてください。もちろん、公開できるコードはないけど同様のことを業務でやっていたというのでも構いません。その場合は可能な範囲で内容を聞かせてください。

給与

業績に連動して変動します。
今年度(昨年10月~今年9月)の年収は450万~500万円程度でした。
詳細は以下をご覧ください。
ディーバではこうやって給与を決めています

通勤時や客先訪問時の交通費は給与とは別に実費分を支給します。

勤務日数・時間

コアタイムなしのフレックスタイム制です。
休日は土曜日、日曜日、祝日、夏季休暇(4日間)、年末年始休暇(12月29日~1月4日)です。ただし、勤務時間だけでなくいつ休むかも1月の勤務時間を超えず業務に支障がなければ自分の判断で自由に調整できます。詳しくは以下をご覧ください。
ディーバはフレックスタイム制になりました
なお、休む場合の届け出は「いついつ休みますね」の一言をSlackに書くだけです。
有給休暇も定められた日数内であれば自由に取得できます。

また、時短勤務についても相談に応じます。
たとえば「週5日ではなく4日勤務にしたい」や「1日6時間勤務にしたい」などです。単純に勤務時間が減る分だけ給与も減ると考えてください。

服装

自由です。普段はTシャツジーパンなどでもOKです。

開発環境

MacBook Pro + 外付けディスプレイ×2程度の環境を用意します。
詳細は以下をご覧ください。
ディーバの開発環境

勤務地

基本的に弊社事務所です。
〒541-0042 大阪府大阪市中央区淡路町3-2-8 トーア紡第2ビル 201
Google Map

在宅勤務、リモート勤務も相談に応じます。
ただし、まだ体制としては完全とは言えません。すでに在宅勤務を主としている社員もいるのですがコミュニケーションの方法など改善すべきところがいくつかあります。そのため至れり尽くせりで在宅勤務できるわけではなく当初は不自由に思う部分があると思います。むしろ人柱となって一緒に試行錯誤してくれることが在宅勤務の条件になると考えてください。
また、開発環境の問題があります。在宅勤務時にMacBook Proを持ち帰ることは可能ですが外付けディスプレイなどは今のところ自前で用意していただくことになります。在宅勤務の場合、交通費がほぼ不要になるのでその分を自宅環境整備の補助として出せないかといったことは考えていますがまだ制度化できていません。
いずれにしても在宅勤務、リモート勤務は前向きに考えていますので希望する方は遠慮なくおっしゃってください。

その他

  • 書籍購入費としてAmazonギフト券を支給します。「社員のみんなにAmazonギフト券1万円分をプレゼント
  • 「ゆとりタイム(仮)」という制度があります。毎週木曜日の午後は自由にテーマを設定してその作業に充てられるというものです。テーマは普段の業務と無関係のもので構いません。詳細は後日ブログにまとめます。
  • 2018年5月のde:codeに私と社員1名で参加しました。参加費、交通費、宿泊費は会社負担です。今後も同様にカンファレンスや勉強会への参加を補助していくつもりです。「de:code 2018に参加してきました

最後に

30年以上前、中学生の頃からプログラミングにハマり、いつの間にか趣味が仕事となり、ソフト開発会社を友人と立ち上げ、マイクロソフト社からMicrosoft MVPなんて賞をもらったりし、いろいろあって友人から社長を引き継ぎ、、、ディーバはそんな人間が社長をやっている会社です。(昔話は「社長になって丸7年が経ちました」)

私自身、C#や.NETが大好きで社長業の傍らコードを書いたりしてるわけですが、当然のようにC#や.NETが中心な会社になりました(例外もあるけど)。

そんな会社に興味がある方はぜひお気軽にお問い合わせください。
お問い合わせは私のTwitterやディーバWebサイトに記載のメールまでお願いします(私のTwitterは誰からでもDM受けられるようにしてあります)。