コピペ記事が技術をダメにする2017年09月28日 06時25分30秒

■きっかけ
最近IoT関連の技術開発のスタートアップの会社を取材しました。増資もして勢いがあるように見えます。若いけど優秀なエンジニアも揃っていて、と自信満々。いわゆる、はんだ付けカフェやレーザーカッター、3Dプリンタもそろえた「工作室」も一般に開放しました。
ところが、この会社のホームページのエンジニアが書いたArduinoでの温度センサーを使う記事が他のサイトのコピペ記事で、しかも、他の記事よりも質が悪い始末。
この記事は公開されてから4ヶ月以上放置されており、書いた当人以外のエンジニアもお粗末さを指摘していないということになります。
私はこの会社の技術力には疑問を持たざるを得ず、社長の資質にも疑問を感じる次第となりました。
社長に指摘の連絡をしましたが、「本人に伝えておきます」程度の反応でした。

■コピペ記事の弊害
コピペ記事の弊害はいわゆる検索エンジンに引っかかる複数の記事が「同じ」だということです。正しい内容ならもちろん問題ありません。
いくつかの主張のうちの一つを自分の考えで選択しているのならまだしも、無理解、無思想でコピペしてあたかもそれが正解かのような印象を持たせる。
間違っているのに数多くの記事で同じことを言っているのでそれを正しいと鵜呑みにする。
そこが問題です。

■技術の基本は考察と実験による実証
コピペ記事は書いてあることを鵜呑みにしてそれがソフトウェアであればコピーして実行して試しますが、それが正しい結果なのかの検証をしません。
なぜ、そのような計算をして、そのような結果が得られているのか。
それらを自分自身の頭で考えて検証してこその技術です。



ADCの出力値をアナログ値に換算する考え方2017年09月25日 15時11分05秒

■ADC出力値からアナログ値を求めるやり方の問題
ADCから量子化されて出力されるデジタル値をアナログ値への換算を行う時に2^nで割るのか、2^n - 1で割るのかの問題ですが、ADCの内部の仕組みとしては以下図の左側で示したような配列とその要素のインデックスだと考えると問題が整理しやすくなります。
2^nとか2^n-1の代わりにここでは10bitADCを前提として1024と1023という数値でどちらかを表すことにします。

ADC出力値の換算方式の比較図


この図の左側で示した配列の条件は以下です。
(1) メモリ上の通常の配置とは逆のイメージ
(2) 10bitADC
(3) 基準電圧(VREF)は5.0V
(4) 1LSB = 5.0/1024.0 = 0.004882813V
(5) 上限(n) = 下限(n+1)未満の値

■1024で割る派の問題
ADCから出力されたデジタル値からアナログ値に換算するやり方で、1024で割る派の人たちは上記の「仕組み」を前提に話をしているわけですが、常に配列インデックスに対応したアナログ値の範囲の下限のデータを拾ってくることになります。
理屈から言えば上限を拾ってきても良いはずだし、下限と上限の中間の値を採用しても良いはずです。
この点が1024で割る派の人たちのおかしなところです。
現実的には下限であることは非常にまれでしょう。
シフト演算して処理を高速化するために1024で割るという主張の方がよっぽど説得力があります。

■1023で割る派には問題はありません
あえて問題があるとすればシフト演算での高速化はできません。
あくまでもブラックボックスとしてのADCを扱うため、出力値が0なら0Vだし、1023なら5Vとして係数を求めて度量換算する算数の問題として計算するだけです。
結果的に中間値を採用することになり、フルスケールに達すると確実に5Vになります。
もちろん、中間値とはいっても0の時は下限値を採用し、1023の時は上限値を採用するような変則的な対応付けが自動で行われることになります。
図の右側で示した通り左側の配列の下限値から上限値の間に換算値は収まっていることが分かります。
無思想でコピペ増殖で1024で割る派が多い中、数少ない1023で割る派の書籍はこちら

とは言え、実験してみるのは筋なので、実際のセンサーでの実験結果はこちら

1日程度の遅れで問題視してはいけない2017年09月23日 10時48分52秒

ある会社の社長さんの言葉。

「1日の進捗遅れでも叱らないとダメ」

最近の若い人は叱られ慣れていないし、仕事の厳しさを教えるためにそのように思っているようです。
また、若い世代は怠けることを先に考えるという先入観を持っているようで、「遅れるのは」「怠けている」「本人の問題」だと決めつけているようでした。

この社長さん、別に高齢者の昭和の社長さんではなく、IoT関連のビジネスを展開しようとしている人です。

しかし、ここにはいくつか疑問があります。

(1) そのスケジュールは適正なのか(誰がスケジュールを立てたのか)
(2) 遅れている背景を探る必要はないのか
(3) 担当者の認識と依頼側の認識はあっているのか

例えばAという課題があった時にある人はAならB、BならCという段階的な課題の連鎖を考えてAという課題には複数の課題をクリアしてZまでの作業工数を見積もってスケジュールを立てるでしょう。
でも経験の少ない人はAという課題に対してBまでの作業しか想定しておらず、Bまでの作業工数でスケジュールを立てます。
Zまで考えられる人とBまでしか考えられない人とでは作業量も品質も全く異なります。

担当者本人にスケジュールを立てさせていざ作業を始めてみたら本人も「あ、Bまでではだめだ。Cまで考えないと」と思ったら、当然当初のスケジュールからは遅れます。しかもZが本当のゴールだとしたら結果も依頼者とは食い違うので、Cまでの結果で「出来ましたぁ」とか言おうものなら叱られることになります。

このような認識の違いがあるということを前提にしてそれを俯瞰した上で全体スケジュールを管理するような認識ができない人はマネージメントの立場になったらだめです。
技術がよくわかっている人が依頼者の場合はこの乖離は大きくなりますので、十分なすり合わせは必要だと思います。

一律に冒頭の言葉が出るようだと論外だと思います。
さぞ、息苦しい会社なのではないでしょうか?


有給休暇付与条件を勝手に変える労働基準法違反の会社2017年04月26日 08時21分30秒



あるロボット開発会社の就業規則の一部です。
有給休暇に関する規定ですね。

労働基準法違反部分は以下です。
1.9.5割以上の勤務条件(労働基準法では8割以上)
2.6ヶ月経過後の付与日数5日(労働基準法では10日)
3.1年6ヶ月経過後の付与日数10日(労働基準法では11日)

どんな些細なことでも法律違反する会社には存在意義がありません。違反する意味がないにも関わらずわざわざ違反するという労力をかけてそれがその会社にどんなメリットがあるのか。デメリットしかないことが判断できない「無能な経営者」というところに問題があるのです。

6ヶ月の勤務日数を120日とすると0.5割は6日ですね。2割だと24日です。現実的に6日という数字は多い感じもします。月に1回は欠勤しているということです。
労働基準法通りだと月に4日欠勤しても有給休暇は付与されます。欠勤多すぎですよね。
気持ちはわかりますよ。
でも現実的には健康でまじめな人ならそんなには休まない。
現実的には大抵は多くても0.5割も休まないのですから、わざわざ労働基準法を違反する内容の就業規則にする必要なんかありません。機械的、事務的に労働基準法を逸脱しない内容にしておけばいいのです。
就業規則なんてひな型がどこにでも転がっています。
この就業規則も元はどっかからひな型を拾ってきて、そこには8割となっていたはずです。それを「変えても良い」と思い込んだところが「バカ」だということです。
そんな頭の悪い人間が社長の会社が創造的で先進的な開発を行うと言ったって信用できません。

業務委託ってそんなんでしたっけ?2016年12月01日 19時15分26秒

組込み系エンジニアの転職事情

私は頻繁に会社を変わっているのですが、組込み系エンジニアの育成に失敗した日本においては比較的いろんな会社で評価をいただいています。

最近はIoTやロボット(ドローン含む)が流行っていて、クラウド側やスマートフォンなどのUI側デバイス上でのアプリケーションの開発だけではなく、センサーデバイスやブリッジ/ゲートウェイ機器側の開発に必要な組込みシステム開発ができるエンジニアも求められています。

「就職」にこだわらなければ年齢の割に仕事を請けられていて、今後も大丈夫ではないかという気もしています。

日本をダメにする人月商売には加担しない

ですが、基本的に「人月商売」の人を横流しするだけで手数料を収入源とするビジネスモデルの会社の売り上げに加担したくないと思っています。

また、このビジネスモデルが日本の技術力を低下させて、大企業であればあるほど、ろくなエンジニアしかいない、という状況を生んでいる根本原因だとも思っていますので、その状況の改善に何も役にも立たないことはやりたくありません。

「最初は業務委託でお願いします」ってどゆこと?

さて、スタートアップなベンチャーや零細企業で評価をいただいても最初は「業務委託」で様子を見たいという声を最近よく聞きます。

「業務委託」ってそんななんでしたっけ? 違うはずです。 彼らの言う「業務委託」は概ね以下のような内容です。

  1. 月額固定(税込み)
  2. 会社には毎日来てもらう
  3. 就業時間などの決まり事も社員と同じ
  4. 交通費は出してもいいよ(出さない場合もあり)
  5. 社会保険には入らない
  6. 残業手当という概念はない
  7. 有給休暇もない
  8. 社員より月額報酬が安い場合すらある
  9. 契約により期間を区切る
  10. 社員登用を考えてやってもいいよ

これは業務委託ではないですよね。

労働基準法の脱法や社会保険加入義務を避けるための「方策」として使っているようです。 問題なのは、それが「違法行為」だという自覚がないということです。 そもそも、対等な契約とは言えず、上から目線ですね。

これに比べれば冒頭の人月商売手数料ビジネスの会社の方がまだ「業務委託らしい」契約内容になります。

  1. 月額固定(税込みにしたがるが交渉によっては税別にも可能)
  2. 月額固定とは言っても140H-180Hの間とかの範囲を設けて超えた分は「超過清算」可能
  3. 基本契約と個別契約に分ける
  4. 見積書、注文書などのやり取りを行う
  5. ソフトウェア開発の場合、「瑕疵担保」条項がある場合があるが、それを理由に断れる(他に頼める人間がいるのならそっちに頼め)

ということで、スタートアップベンチャーや零細企業の社長がなぜ「業務委託」の定義を間違っているのかは関心はないのですが、明らかに違法行為です。

契約はタイトルではなく内容できまる

「契約」というのはタイトルで決まるのではありません。 雇用契約書と書いてあるから雇用契約、業務委託契約書と書いてあるから業務委託、ということにはならないのです。 契約の内容によって決まります。

毎日決まった時間帯に会社に拘束されて上司に指示される仕事を毎日毎日行うのは「雇用契約」です。契約書が「業務委託契約」となっていても関係ありません。

実質が雇用契約なのですから、残業手当や有給休暇や社会保険加入などの手続きを行わなければならないのです。

もし、本当に「業務委託契約」を締結したいのであれば以下は必須でしょう。

  1. 出社してもしなくてもいいよ
  2. 欠勤などの概念はない
  3. 出社する場合は何時に来てもいいし、何時に帰ってもいいよ

もう少し「業務委託」っぽくしたいのであれば、以下も必要でしょう。

  1. ある一定期間での成果物を決めてそれに基づいて発注してそれを受注する
  2. 成果物を納品する
  3. 請求書発行に基づいて入金される
  4. 報酬は社員の給料よりは高い

こういう基本的な契約に関する知識、意識がない会社はどんなに素晴らしい技術を持っていてもだめだと思います。 労働基準法や業務委託契約の条件なんていう、「簡単なアルゴリズム」すら理解できない人たちの経営する会社なんて大したことないでしょう。

こちらにも解説があります。 ※本文中の「雇用契約」は「労働契約」と同義です。