※このホームページは、バリアフリーを目指し、音声読み上げソフトに対応しています。

 


新・電子ノートブック Snap Note 3
  フリーソフト Snap Note 3 mini 公開!  

ソフトウェア・デザイン館 Sage Plaisir 21 へようこそ!
隔週月曜更新 : 毎週1つのニュースまたはプログラミング技術を取り上げ、解説します。

東日本大震災 まとめページ

[PR] 最強のスクリプト・ライブラリ vbslib5 が Windows 10 に対応!
[PR] シェル・スクリプトを格段に使いやすくする bashlib1 公開中


2020年より、IT ニュース&コラムは 3週に1度の配信となります。

週刊 IT ニュース&コラム 2021/ 2/22

新型 コロナ ウィルス 感染経路特定アプリ COCOA の不具合放置問題

2021年 2月3日、厚生労働大臣は厚生労働省が配布している新型 コロナ ウィルス
の感染経路を特定するスマホ向けアプリ通称 COCOA において、接触があっても
通知されないといった根本的な不具合が4か月も放置されていることを受け謝罪した。

不具合は2020年9月28日のバージョンアップの際に発生した。 つまり、デグレードである。
デグレードとは、機能追加や不具合修正によって、別の不具合が発生してしまうことだ。
例を分かりやすく言うと、ペットボトルの容量を増やして売れるようにしよう!と
改良したら小売店の商品棚に入らなくなってしまった、という全く予想外な不具合である。

小売店の人にとっては簡単に不具合が見つかるが、飲料メーカーの開発者にとっては
営業の人や以前指摘された経験のある人でないかぎり不具合に気づく「きっかけ」がない。
今回の場合、接触した人でなければ気づくきっかけはない。経験がある人などほとんどいない。

COCOAは、アップルやグーグルから提供される Bluetooth を使った新機能を使っている。
ソフトウェア的には API と呼ばれる関数呼び出しを行うことでその機能が使える。
新機能の API の仕様が頻繁に変わるのはどうしよもないことだ。API の開発関係者にとって
予想外なケースへの対応や反応が必要だった場合、API の仕様が変わるからだ。
その仕様変更を繰り返していくうちに(経験・勉強していくうちに)様々なケースに対応
できるようになり、API の仕様は安定するものだ。

「不具合というのは永久になくなりませんので、この手のアプリは。今後何もない、
ということはないと最初から言っておきます」と大臣が発言しているのはそのとおりであるが、
アプリだけでなく API も不具合が永久になくなることはない。

そういう性質のものなら予備費を付ければよいだろう。
しかし、予算は無限に無いし、IT開発はすべてそういう性質のものだ。

なので完成の定義を考える必要がある。たとえば、
第1版は少しの機能しかないが重要なケースで十分使えるもの、
第2版は、多少の不具合があるが十分使えるもの、
そして、保守のための費用、といった具合だ。

ただし、多少の不具合については、完璧なものを求める発注者には報告しないほうがいい。
リスクを許容できる能力のある人でなければ、報告することは双方にとって損だ。
リスクを理解するためには多くの経験と勉強が必要でその教育係ではないからだ。

そういった性質の IT 開発において 3週間の一発受注で終わらせてしまった元請けの
パーソルプロセス&テクノロジーには問題がある。

あるサイトでは発注金額の内訳は、
・株式会社FIXER 1億2062万円
・株式会社エムティーアイ 1615万円
・日本マイクロソフト 2201万2000円
・残りがパーソルP&Tの取り分とすると、1億3570万円
あるサイトでは、
・株式会社FIXER 9333万円
・株式会社エムティーアイ 1億9093万円
・日本マイクロソフト 8416万円
・パーソルP&T 2194万円

元請けの中抜き額が大きく違うが、安いほうでも工程管理の責任が問われてもおかしくない金額だ。
パーソルは人材紹介業であるから、適切な下請けを探す能力が高いのは間違いないだろうが、
工程管理能力があるかというと無いだろう。紹介業はプロジェクトの遅延に対して責任がないからだ。
なので、工程管理に 2194万円ではなく紹介料に 2194万円だろう。 これは高すぎる。
というか元受けであり続けてはいけない。再委託するな、辞退しろ。

ということは厚労省も分かっているようで、再委託比率が50%を超えることを原則禁止している。
中抜きが少なければいいというわけではなく、元受けが工程管理をもっと専門的にきちんとしろということだ。
つまり、責任はパーソルにある。というか責任を負える立場とも思えないくらい酷い状況だ。

エンジニアにも問題があるだろう。工数が足りないならリソース(人モノ金)を要求するべきである。
あきらめたらそこで試合終了だ。

「5日前にAPIの仕様が変わろうと、実装が変わろうと、
何があっても3週間で完璧なものを作り上げろと言われ、
(それで不具合が出たら)へっぽこエンジニアの烙印を押されるわけだ……」

確かにその通りだ。しかし、それは何も分かっていない人が評価しているからだ。
怒らずに徐々に周りの状況を変えていこう。
また、要件定義が不十分で何を作ったら分からないで怒っているようでは何も解決しない。
誰が解決するのか。それは自分にそれを解決する能力がないからではないのか。
プロトタイプを作ることで合意を取るのはどうか。
少なくとも色々な人の間違った知識を頭から間違いだ!と非難していたら、解決するわけがない。

重要な不具合を見つけたらアピールしないと間違った評価をされるだろう。
発注者や管理者も不具合の発見については賞賛すべきである。Google などは報奨金を付けているほどだ。
不具合の発見が多いと自分で作り込んで評価を上げようとしていると思うかもしれ合いが、
意図的でなくても大量に発生するものだ。
そこで不具合を作り込んだ人を問い詰めても雰囲気が悪くなるだけだ。
逆に問い詰める人には報告しないほうがいい。

今回の不具合の原因は API の使い方であると発表された。改修もすぐできた。
しかし、不具合はたくさん発生する。
COCOA のベースとなった COVID-19Radar に対しては、
1月22日までの時点で、150件以上のIssueや400件以上のPull Requestが送られ、
約120件のIssueが解決、約370件のPull Requestがプロジェクトへ取り込まれた。

そして、正しい API の使い方は仕様変更によって変わる。 デグレードの1つの原因だ。 
いくらアプリの機能が全く変わらなくても、依存している API の仕様変更によって
動かなくなるのだ。 このことも予算を組む上では考慮が必要だ。

重箱の隅のケースも網羅した立派なテスト仕様は重要ではない。
完璧な動作が要求されても、論理的に網羅する必要は無い。
最も多いシンプルなケースで完璧に動くことが重要だ。

デグレードが起きないようにするには、自動テスト環境を構築することだ。
機能追加や不具合修正したことと全く関係ないことを手動で再テストすると、
なぜこんな作業をしているのかと鬱になってしまうものだ。
今回はハードウェアが絡むため完全な自動テストは難しいので半自動テストと
するのが現実的だろう。

元マイクロソフトの楠さんは Twitter で
「運用保守軽視、バックエンド軽視、ドキュメンテーション軽視、
共通APIの実装差異軽視、外部環境の変化を見積もり条件に入れていない、
どれもついやらかしてしまうことだし、なかなかソフトウェアの
お守りをしたことがない人への説明が難しい上に、これほどのフルコンボは初めて経験」
と発言している。 

ソース
  >>>  https://www.youtube.com/watch?v=ZNGrpoqV1tI
  >>>  https://twitter.com/masanork/status/1357828710913568768?s=21
  >>>  https://www.nhk.or.jp/politics/articles/feature/53380.html
  >>>  https://note.com/mugura/n/ncc3c61de39ea
  >>>  https://www.itmedia.co.jp/news/articles/2006/23/news107.html
  >>>  https://www.tokyo-np.co.jp/article/87051
  >>>  https://www.itmedia.co.jp/news/articles/2102/12/news142.html



Sage Plaisir 21 のブログやツイッターを読もう!

Sage Plaisir 21 では、ここのホームページのほかにブログとツイッター も行っています。
ブログは、こちら。
ツイッターは、こちら。

Sage Plaisir 21 メールマガジンを読もう!

週刊 IT ニュース&コラム』には、 このページに掲載している コラムの他に、注目ニュースを集めたリンク集も、掲載しています。 日々多く集まる IT 情報から、注目すべき話題をコラム形式で取り上げますので、 ぜひチェックしておきましょう。 (サンプル、および登録)


Sage Plaisir 21 Contents
[ English | 日本語 ]

自動化ツールのダウンロード (2017-01-04) update!

急速な IT 革命により開発スピードの向上が課題になっています。 その鍵になるのがツールの活用または開発です。 一般的なものから専門的なものまで使えるツールを公開しています。

技術資料&オープンソース (2012-03-19)

扱う技術が多くなってくるにつれ、 技術はマスターするものではなく調べるものになり、 どれだけ実践に即した資料を集められるかどうかが、 勝負になります。標準的な技術の資料だけでなく、 プログラムソースやライセンスフリーのライブラリも公開しています。

オブジェクト指向プログラミング設計 (2000-04-01)

Visual Basic 7 にもついに本格的なオブジェクト指向の 機能が追加され、ソフトウェア技術者には必須の知識に なりつつあります。長年の研究の成果から、最新の応用方法まで 様々なメモを公開しています。

ソフトウェア・デザイン館より(技術エッセイ)   (2000-11-01)

プロの経験を通じて習得したソフトウェア全般に関する 技術を解説しています。 ソフトウェアとは何かといった根本的なことを通じて、 デザインに関するポイントをわかりやすく説明しています。


          
 ソフトウェア
デザイン館
Sage Plaisir 21

Simple and Visual

SagePlaisir21サーチ
パワード・バイ・グーグル

週刊 IT ニュース&コラム

2/22 新型 コロナ ウィルス 感染経路特定アプリ COCOA の不具合放置問題

2/1 cypress を使って自動テストを簡単に導入する方法

1/11 ソフトウェアエンジニア40年のキャリアから学んだ 6つのアイデア

12/21 リセット状態の Windows から Jest + TypeScript + React + Visual Studio Code を確実に構築する手順

11/30 Apple Silicon がインテルや ARM の性能を大幅に超える結果に

11/9 チュートリアルや手順書を手軽にするプレースホルダーの書式

10/19 ドコモ口座から不正な引き出し、スマホ決済会社はセキュリティを軽視

9/28 したくない作業でもするようになる 5分スイッチ テクニック (4)

9/7 30%の手数料を支払っていないとしてアップルが Epic Games の Fortnite を削除

8/17 したくない作業でもするようになる 5分スイッチ テクニック (3)

7/27 Linux と Apple が人種差別的な用語を包括的な用語に置き換えると発表

7/6 したくない作業でもするようになる 5分スイッチ テクニック (2)

6/15 GitHub と MySQL を組み合わせたサーバー DoltHub

5/25 したくない作業でもするようになる 5分スイッチ テクニック (1)

5/4 Apple と Google が新型コロナウイルス感染者を追跡するシステムを発表

4/13 手続き型プログラミング言語で宣言型プログラミングをする(2)

3/23 新型コロナウィルスの影響でリモートワークの仮導入が進む

3/2 手続き型プログラミング言語で宣言型プログラミングをする

2/10 飲食店や病院などの予約システムをクラウドで簡単に作れる SELECTTYPE

1/20 コメントを書かずに概要を説明する方法 - リーダブル コード(61)

12/30 書くスペースを半自動的に作ってメモをしやすくする SpaceInk

12/16 手続き型プログラミングと宣言型プログラミングを使い分ける

12/2 ヤフーとLINEが経営統合して、あらゆる決済ができるスーパーアプリを提供へ

11/18 Linuxによくある謎の記号による処理を説明変数で読みやすくする方法

11/4 アップルが HKmap.live を香港デモを支援するアプリと判断し配信停止

10/21 エラーが発生したときに例外を投げずに返り値としてエラーを返したときの問題

10/7 暗号化PDFを開こうとパスワードを入力すると流出する脆弱性

9/23 Go 言語でよく defer される Close 関数のエラーを捕まえる

9/9 多くの Web サービスのインフラを提供している aws に障害発生

8/26 POSIX の ls コマンドで表示される一覧の区切りの空白は2文字

8/12 Google が Chrome のシークレットモードで有料記事を無料で読める機能を強化

7/29 プログラムとしての定数と仕様としての定数を明確に分けること

7/15 電子決済サービス開始で再び不正利用。7pay の対応の問題とは

7/1 インストール手順にバグがある原因は、スクリプトを作っていないから

6/17 音楽権利情報処理にAWSのブロックチェーン技術が採用される

6/3 インストーラーでインストールする対象のバージョンは、最新版より特定版

5/20 PC上での共同作業をインテリジェンスにする Fluid Framework

5/6 Windows で Python スクリプトを Python の仮想環境の中で起動する方法

4/22 Windows で USB デバイスの安全な取り外しの操作が不要に

4/7 ブール型の説明変数の名前は文にする - リーダブル コード(60)

3/25 グーグルがゲーム ストリーミング サービスに参入、STADIA を発表

3/11 ソースコードが早く読めるようになる、シンプルコメント2 - リーダブル コード(59)

2/25 無料で使えるように改変した iOS アプリを何者かが配布

2/11 ソースコードが早く読めるようになる、シンプルコメント2 - リーダブル コード(58)

1/28 5月1日から変更される新元号の名前の発表が 4月1日に決定

もっと前の記事

自動化ツールのダウンロード

Snap Note 3 mini - サクサク使える自由ノート  new!

Plastic Window 1.20 - ウィンドウを半透明に  new!

Shortcut Director 1.00 - ショートカットのリンク切れ修正

Archives Folderizer SV 1.10 - 圧縮解凍

デジタルスクラップブックSVG Cats 2

その他のツール

オブジェクト指向プログラミング設計

技術資料

All Text composed by T's-Neko ts-neko@sage-p.com,