ディーバ Blog

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

ディーバの開発環境

青柳 @ShinichiAoyagi です。

Twitterで「開発者にはそれなりのスペックのPCを用意すべき」みたいな話を見かけました。激しく同意です。何万円か出す程度で効率上がるならそんなものはすぐにペイできてしまいますし、なによりサクサクの環境で気分良く開発して欲しいですもんね。
ということで、ディーバの基本的な構成を紹介。

ハード的な構成は下の写真のようなのが基本形です(この写真は2年くらい前に撮ったものですが)。

f:id:ShinichiAoyagi:20180312094749j:plain

ざっくり言うとノートPC(上の写真だとMacBook Pro)に外付けディスプレイを2つ、それに外付けのキーボードとマウスです。

以下、詳細。

PCはデスクトップではなくノートにしています。ノートの方が各自持ち寄ってミーティングしたりできるのでなにかと便利だと思っています。実際はPCではなく全員MacBook Proです。これはiOSアプリを開発することもあるからですね。サイズは15インチ。持ち歩くにはちょっと重いですが15インチくらいはあった方が使い勝手いいなぁと思います(ちなみに私は15インチMacBook Proをいつも持ち歩いてます)。購入時点でのほぼ最上位のモデルにしています。だいたいCore i7、メモリ16G、SSD512Gか1Tで、30万円前後とちょっと高いですが仕方ありません。不満は最上位のやつでもメモリが16Gしかないところですね。せめて32Gにしたいと思っているんですが。

「WindowsノートPCとMacの2台構成」とか「デスクトップPC+Macをメインにしてサブにノートの3台構成」とかも考えましたがこれらだと外部からPCやMacにリモートデスクトップとかで接続できるようにしないといけないなどいろいろ大変なのでとりあえず1台で済むMacBookにしています。

ディスプレイは外付けを2枚です。MacBook Proの15インチと合わせてトリプルディスプレイということになります。
写真では23インチワイドディスプレイと19インチ4:3ディスプレイを接続しています。19インチが余ってたので23インチと19インチのサイズ違いになっちゃってますが、サイズ違いだと使いにくいかと思いましたが意外とそうでもなかったです。写真の向かい側の机もほぼ同じ構成ですが購入時期によってディスプレイサイズとかはまちまちです。

ディスプレイ2枚とMacBook Proはディスプレイアームで宙に浮かせています。
写真に写っている製品とは違いますが以下のようなノートPC用トレイ付きのディスプレイアームとデュアル用ディスプレイアームの組み合わせです(サイズ違いのディスプレイのときは以下のような高さを変えられるアームが便利です)。

サンワサプライ ノートパソコンアーム CR-LANPC1

サンワサプライ ノートパソコンアーム CR-LANPC1

今後は大きめの4Kディスプレイでもいいかもしれないと思ってますが使い勝手はどうなんでしょう?使っている人いたら教えてください。

外付けのキーボートとマウスは各自好きなものを買ってきてもらっています。キーボート+マウスで1万円までは会社負担。
私はいつもMicrosoft Ergonomic Keyboard 4000とMicrosoft Sculpt Mobile Mouseです。

マイクロソフト マウス ワイヤレス/小型 ピンク Sculpt Mobile Mouse 43U-00039

マイクロソフト マウス ワイヤレス/小型 ピンク Sculpt Mobile Mouse 43U-00039

こういう構成なのでフリーアドレスにはできません。MacBook本体は持ち歩けますがディスプレイを移動するのは大変すぎなので。あちこちにディスプレイを2枚づつ置いておくというのはちょっと現実的ではないですし。
机は普通のOAデスクですがスタンディングデスクは使ってみたいと思っています。1日中立ちっぱなしはどうかと思いますが電動で高さ変えられるやつなら運動不足解消になるかな、と。
あとは椅子ですね。これも今は普通のOAチェアですがもうちょっと高級なやつにしようと思っています。全員分買うとそれなりのお値段になるので懐事情を見ながら検討中です。

ちなみに、iOSアプリを開発する関係上、MacBookを使っていますが仮想化ソフトのParallels Desktop Proを使ってMacBook上にWindows 10を入れています。そこにVisual StudioとMicrosoft Officeです。なのでこのMacBookだけでWindowsアプリの開発とiOS/Macアプリの開発の両方ができます。
私なんかはほとんどの時間をWindows 10で過ごしています。Parallelsはディスプレイごとに表示OSを切り替えられますが、普段は3枚ともWindowsなのでmacOSを使うことはほとんどありません。iOSアプリの開発をしてるときなんかは1つか2つのディスプレイだけmacOSにしている感じです。

MicrosoftのAndroidエミュレーター(Visual Studio Emulator for Android)やWindows PhoneエミュレーターはHyper-V上で動作しますが、ParallelsのProならネストした仮想化(macOS上のParallels上のWindows 10上でHyper-Vを使う)をサポートしているので問題なく使えています。

そんなにもスーツって嫌われてるの?

青柳 @ShinichiAoyagi です。

@yonemura2006 さんの以下のツイート

このツイートにたくさんのリプが付いてるようですがそのほとんどが

  • デベロッパーにスーツを義務付けてるようなところはブラックと思って間違いない
  • スーツ着用と言われたから就職回避した
  • スーツがコード書くわけじゃない

みたいな感じでスーツ全否定でした。
私もスーツがコードを書くわけじゃないというのは全面的に同意ですがそこまで忌避されるものとは。。。

ディーバ はスーツ着用です。ただしネクタイはしなくても構いません。
とは言え、「業務時間中はスーツを着用すること」みたいな規則があるわけじゃないです。入社時に「スーツですか?」と聞かれたら「うん、スーツで。普段はネクタイはしなくていいよ。まぁ、別に私服でもいいんだけど一応スーツ着ておいて」みたいな感じです。ぶっちゃけ、社員からスーツやめましょうよという声が多ければいつやめてもいいくらいの感じではあるんですが。

実際のところ、私服の会社ってそんなに多いもんなんですか?ディーバとお付き合いのある会社さんはほぼ100%がスーツなんですよね。だからディーバもそれに合わせてスーツ着てるって感じです。私服のところってあったかなぁ?
営業的なミーティングはほぼ私だけが会うので私だけスーツ着てればいいんですが、技術的な話は私以外の社員が打ち合わせすることが多いです。その場合の相手は開発の依頼主なので一般の企業さんとかSIerさんとかですね。お伺いすることもあれば来ていただくこともあります。私服の人はほぼいないのでこちらもスーツ着とくのが礼儀かな、と。まぁ、そういう打ち合わせは事前に日時が決まってるのでそのときだけスーツを着ればいいんですが。
開発の依頼主ではなく同業者を見ても私服のところは1社だけかな?他はみんなデベロッパーもスーツ着てるみたいです。これは「「社内開発」のソフト開発会社ってそんなに少ないものだったのか」に書いたように私の知り合いにあまり社内開発をしてるところがないせいかもしれないですけど。

もし、スーツだと開発効率が落ちるとかあるんならすぐにでもやめますが、そういうことがないんならとりあえず現状維持かなぁ。むしろスーツ着るかどうかなんてことより、リモートでどこで作業してもいいっていうようなことを進めたいですね。そうすりゃ、そうしたいんなら自宅で裸で作業したっていいんだし(映像ありのTV会議するときは服は着てね)。

ディーバ設立直後は私も私服で作業していて人とお会いするときだけスーツに着替えるってことをしていました。「社長になって丸7年が経ちました」に書いたように当時は私はデベロッパーで友人が社長でした。社長はスーツ着てましたが私は必要なときだけ着るって感じでしたね。25年以上前ですから真夏でもスーツにネクタイが普通でした。
余談ですがWikipediaによるとクールビズが始まったのが2005年だそうです。国会議員なんかが半袖シャツにノーネクタイ姿でテレビに映ってるのを見て「さすがにラフすぎないか」と思ったのを覚えてます。クールビズが定着したのはそれから数年後じゃないかと思います。私も2011年くらいからはノーネクタイになって、今では一年中ノーネクタイで過ごしてます。
で、設立直後は必要なときだけスーツに着替えてたわけですがすぐに面倒になりました。いつもスーツって決めちゃった方が朝なに着ようか考えなくていいし、打ち合わせ前にわざわざ着替えなくていいし、むしろ楽なんじゃないかと。それで私も仕事のときは1日中スーツを着るようになって、その頃から社員を増やしたりし始めましたが自然とみんなスーツって感じになりました。

と、これを書いていてふと思ったんですが東京は違うかも。
そんなに多くはないですが東京にもいくつかお付き合いのある会社さんがあります。そういえばどこも社長さんや営業の方はスーツですがデベロッパーは私服かも。つい最近、ある会社さんと初ミーテングしたときにも会うなり「あっ、スーツじゃなくてよかったんですがお伝えしてなかったですね」と言われました。もちろん先方さんは私服でした。
そんなに頻度は多くないですが東京の方が大阪にミーテングに来ていただけることもあります。そういえば結構私服の人多いような気がします。私服でないにしても襟ありのシャツにジャケットっていう感じのビジネスカジュアルとか。
もしかして地域差あるんでしょうか?
なんか、東京は私服も一般化してて大阪はさほどでもないってことのような気もしてきた(ほんとかどうかは知らない)。

「社内開発」のソフト開発会社ってそんなに少ないものだったのか

青柳 @ShinichiAoyagi です。

しばらく前から米村さんのTwitter @yonemura2006ブログ をとても興味深く読ませてもらってます。
SES勤務のエンジニアが社内開発の会社へ転職できない5つの理由」を読んでちょっと自分的に驚いたので書き留め。

まずそもそもの前提として私が代表取締役を務める ディーバ は米村さんの言う「社内開発」の会社です。オリジナルソフトの開発と受託開発の両方をやっていますが客先に常駐するような案件はお断りしています。
うちの前社長が昔から「人売り仕事をやっても会社にとっても本人にとってもなにもいいことはない」と言っていたんですが今でもこの考えは変わっていません。このあたりの話は以前にちょっと書きました。
社長になって丸7年が経ちました
現在のディーバの業務内容を紹介。ディーバはソフトウエア開発会社です

それで米村さんの記事で驚いたというのは、

また東京だとSES以外の会社を探すことも不可能ではありませんが、地方へ行くと本当にSESの会社しか存在しないような場合もあります。アクシアでは札幌にもオフィスがありますが、札幌進出する際の事前調査でも札幌にはほぼSES企業しか存在しないことがわかっていました。

SES勤務のエンジニアが社内開発の会社へ転職できない5つの理由」より一部抜粋

という部分です。
そうなの?!
うーむ、「社内開発」やっている会社ってそんなに少ないものだったのか。確かに私もほとんど出会ったことがありませんがそれはたまたまなだけだと思ってました。「SES企業」がたくさんあるのはわかっていましたが、同じように「社内開発」の会社もたくさんあるものだと。。。

今まで「社内開発」の会社をわざわざ探すっていう必要に迫られたことがないのでそもそもそういう観点で考えたことがなかったんですよね。ディーバで手が足りないときでもだいたいは知り合いの会社さんに手伝ってもらうくらいで済んでましたし。
ちなみに、ディーバにSESで常駐してもらうというのもあまり考えてないです。どうしても一時的に手が足りないとなれば考えなくもないですが、できれば社員として雇用できないか考えたいですね。「人売り仕事をやっても会社にとっても本人にとってもなにもいいことはない」というのは自分の会社、自分のところの従業員だけでなく他のところの人にも言えることだと思いますし。

それから、知り合いの会社さんで「SES企業」から「社内開発」に変えていきたいとおっしゃっているところがあるんですが、やはりそう簡単ではないようです。そのことについては米村さんも別の記事で書かれてますね。「社内開発」に変わろうにも以下のようにさまざまな点で異なるのでハードルは高いと。

まず第一に「仕事の取り方がわからない」という切実な問題があります。
(略)
次にのしかかってくる大きな問題はスキルの問題です。SESだと適当にエンジニアをどこかのプロジェクトに放り込むだけなので、スキルが適当でも何とかなるものですが、請負で受託開発をやるとなるとそういうわけにはいきません。
(略)
最後に、請負のシステム開発を行う際に大きくのしかかってくる問題が「責任」の問題です。私も初めて請負でシステム開発の仕事を始めた時には正直自分達にのしかかってくる「責任」の重圧に押しつぶされそうになったものです。

SES企業にも良い会社はあるのかも?と一瞬でも思ったことがある人は読んでください」より一部抜粋

なるほどなぁ。確かに言われてみるといろいろと根本的なところで違うのかもしれません。ディーバでは当たり前に「社内開発」してきたので「SES企業」との違いを意識したことがありませんでしたが。
経営側だけではなく、社員それぞれの意識も変わる必要があるでしょうね。客先常駐の方がいいって人もいるでしょうし。「社内開発」でいろいろなことを柔軟にやらなくちゃいけないようなのはしんどそうだからイヤだなんていう人もいるでしょうし。いろいろな人がいる中で会社の方針を転換していくというのはほんとに大変そうです。

さて、そんな「社内開発」をしているディーバですが現在正社員を募集中です。
年齢、性別、学歴は問いません。業務経験も問いませんが、プログラミングはできてください。まったくの未経験者に初歩から教えるというのはこちらの余裕的に難しいですので。プログラミング言語はなんでも構いません。何か1つの言語ができれば他の言語をマスターすることもさほど難しくはないと考えています。もっともディーバはC#が中心の会社ですから「C#とかのマイクロソフト系の言語はきらい」みたいな人はご遠慮いただいた方がよろしいかと(笑)
(そうは言ってもJavaScript、VB、Java、PHP、Rubyなど依頼があればいろいろやってますし、好むか好まざるかでなくいろいろやる必要はあります。ただC#系が中心なのは確かです)
SEが書いた設計書を見ながらコードを書くという仕事もありますが、「こんなアプリ作って」という漠然とした話を元に自分で考えて実装するというのもあります。なので、ちょっとしたものでもいいから1つの完結したアプリ(起動して何か処理して終了する)を作ったことがあるならぜひ見せてください。見せられないものなら聞かせてもらうだけでもOKです。Windowsアプリでも、Webでも、スマホアプリでもなんでも構いません。
大阪でC#で社内開発したいという方、興味のある方はお気軽にご連絡ください。

English Japanese (Apple) - Parallels キーボードを消す方法

Parallels Desktop for Mac で Windows をインストールしたら、言語に「English Japanese (Apple) - Parallels キーボード」が表示され、事あるごとに日本語入力が無効になる うっとうしい状況を解決する方法です。

f:id:jz5_diva:20171219093150p:plain

ひさしぶりに(11ヶ月ぶり)に Parallels 上の Windows が不安定になってしまい、新しく Windows をインストールするとこの状況になりました。言語設定を開いても日本語しか追加されていない状態です。

Mac と Windows 仮想マシン間のキーボードレイアウト同期を無効にする方法

Twitter でサポートに聞いたところ以下が解決策でした。

KB Parallels: How to disable keyboard layout synchronisation between Mac and Windows virtual machine.

以下、訳。


キーボードレイアウトの同期を無効にするには、config.pvs ファイルを手動で変更する必要があります。

そうするには、次のようにしてください:

  1. Windows 仮想マシンをシャットダウンします。
  2. Dock の Parallels Desktop アイコンを右クリックし、コントロールセンター(Parallels Desktop の仮想マシンリスト)を選択します。
  3. 仮想マシンを右クリックし、[Finder で表示] を選択します。
  4. 仮想マシンのファイル(.pvm 拡張子のファイル)を右クリックし、[パッケージの内容を表示]を選択します。
  5. config.pvs ファイルを右クリックし、Open With を選択して TextEdit.app で開きます。
  6. 次の部分を探します(Cmd + Fショートカットを使用して TextEdit で検索を開くことができます)。
<KeyboardLayoutSync dyn_lists="">
    <Enabled>1</Enabled>

1から0に変更します。これは次のようになります。

<KeyboardLayoutSync dyn_lists="">
    <Enabled>0</Enabled>

config.pvs ファイルに変更を保存して閉じます。今すぐキーボードレイアウトは同期されず、自動的には変更されません。

Azure ADがいつの間にか作られてて結構困った話

青柳 @ShinichiAoyagi です。
Microsoftデベロッパーセンターでいろいろしていたらいつの間にかAzure ADが新しくできていて、そのAzure ADを変更することも削除することもできず困ったことになりました。マイクロソフトのサポートに問い合わせて無事解決できましたが自分的には「こんなのわかんねえよ!」だったので記録しておきます。

続きを読む

「Xamarinネイティブによるモバイルアプリ開発 C#によるAndroid/iOS UI 制御の基礎」アップデート情報・正誤表・エラッタ

最終更新日: 2017/12/12

株式会社ディーバ 代表取締役 青柳臣一が執筆した、2017年9月15日発売 Xamarinネイティブによるモバイルアプリ開発 CによるAndroid/iOS UI制御の基礎 (翔泳社)のアップデート情報・正誤表を勝手に記します(適宜この記事を更新します)。

購入者が実際に試した「 テスターが #Xamarin でキッチンタイマーを作ってみた! - Togetter」も参考になります(一部参考にしてここでも記載します)

Chapter 3: Visual Studio で iOS キッチンタイマーを作ろう

リスト 3.24 (p.156) ShowRemainingTime メソッド

private void ShowRemainingTime()
{
    RemainingTimeLabel.Text = string.Format("{0:f0}:{1:d2}",
        _remainingTime.TotalMinutes,
        _remainingTime.Seconds);
}

正(修正例)

private void ShowRemainingTime()
{
    RemainingTimeLabel.Text = string.Format("{0:f0}:{1:d2}",
        Math.Floor(_remainingTime.TotalMinutes),
       _remainingTime.Seconds);
}

Chapter 4: Xamarin でアプリを実装する

ポータブル クラス ライブラリ (PCL) p.182

ポータブル クラス ライブラリ クラス ライブラリ(レガシ ポータブル)

Visual Studio 2017 Ver. 15.3 頃から ポータブル クラス ライブラリ は、レガシ ポータブルと表記されています。

Chapter 5: MVVMCross について学ぼう

MVVMCross MvvmCross

MVVMCross、MVVM Cross でもなく MvvmCross が公式表記です。ただし、最新のロゴは MVVMCROSS と大文字表記です。

Chapter 8: MVVMCross を使いこなそう

ビューモデルのライフサイクル (p.330, 331)

Start メソッドは MvvmCross 3.x/4.x 系のライフライクル で使われるメソッドのため非推奨です。

MvvmCross 5.6 の ライフライクル は次のように変更されています。

メソッド名
コンストラクタ―
void Prepare(TParameterModel parameter)
async Task Initialize()
void ViewCreated()
void ViewAppearing()
void ViewAppeared()
void ViewDisappearing()
void ViewDisappeared()
void ViewDestroy(bool viewFinishing)

Tips: 注意: Initialize メソッドが呼ばれないケース (p.333)

「今後の MVVMCross では修正されるかもしれませんが」とありますが、Navigation Service を使う場合 Core プロジェクトの App class (App.cs) の下記メソッドを変更します。

RegisterAppStart<ViewModels.MainViewModel>();

RegisterNavigationServiceAppStart<ViewModels.MainViewModel>();

12/8 VR技術の現状とこれから@テーマパークEXPO

青柳 @ShinichiAoyagi です。

当日になってしまいましたが、12/6~8に東京ビックサイトで開催されている テーマパークEXPO で「VR技術の現状とこれから」というタイトルのセミナーを担当します。

f:id:ShinichiAoyagi:20171208072622p:plain

昨年 に引き続きとなります。昨年のセミナーが好評だったとかで「今年もお願いできませんか?」と運営さんの方から打診がありました。正直、そんなに新しいネタがあるわけではないですがおもしろそうなところをお話しようと思います。技術者向けのEXPOではないので、むしろ技術者視点であれやこれやをお話できればと思っています。

セミナー/イベント」で「VR」で検索すると出てきます。

  • 2017/12/8 12:30-13:30
  • A-10【会場A】

f:id:ShinichiAoyagi:20171208073426p:plain