OFFICE風太郎

日本のエンジニア、風太郎です。問題解決が飯のタネです。仕事や生活で問題解決を活用したり、問題解決の基礎となる統計とかデータ分析の話をしていきます

想定外と想定以上ー品質工学の損失関数ー

やっぱり田口玄一って天才じゃない!?

 昨今はやりのAI機械学習を仕事に使っていると。品質工学(タグチメソッド)で勉強したことが思い出されます。 手法そのものは基本的なコンセプトがコンピュータ普及以前の時代に考えられています。そのため、シンプルなものが多くなっていますが、いまだ使えることも多いです。
また、手法面より考え方がすごく使えますね。今日はその品質工学の基本の「損失関数」について考察してみます。

損失関数

 損失関数はかつて品質工学の書籍の最初に載っていました。損失関数→動特性→静特性とい順番が多くなっていました。 詳しくは述べませんが、「この順番めっちゃくちゃわかりにくいよね?」と意見が多くなって、静特性→動特性(損失関数は省く)という傾向が多くなってきたようです。
 ではなぜかつての書籍はこのような順番になっていたのでしょうか?これは品質工学の考え方の基本の順番になっているからだと考えます。
品質工学についてはいろいろ論じたいことがあるので、まずこの損失関数について考えたいと思います。

損失関数って何?

 ある基準値を守っていればいいというものではなく、基準内でも「いいところを狙って」いけばよいことがある。基準を超えても急に悪化するのは悪い設計だ。ということです。
もう少し例をあげてかみ砕いてみると

  • ルールを守っていれば何してもいいわけじゃない。ルール以上のことをすることは素晴らしい
  • ルール破ったからどうなっても知らないという発想はダメよ

 ということです。これが社会全体の話として考えるのが損失関数のポイントです。ルールを超えたら罰を受けるのではなくて、社会全体の損失があがるということです。 例えとしてはやや不適なので別の例をあげます。

ダムの例

 大昔にある少年がダムに見学にいきました。その時に説明した大人はこう言っていました。

  • 大雨の量は計算できる
  • このダムは最大の雨が降っても問題ないように設計されている

それに対して少年はこう質問しました。
「計算以上の雨が降ったらどうなるの?」
その問いかけに対して大人は
「最大で計算しているからそれ以上の雨は降りません」
という回答でした。その子供は納得できませんでした。あえて何度も問いかけましたが回答は変わりませんでした。
その子の問いかけは「計算がすべて当たるわけではない、それが外れた時どうなるの?」ということです。 その場でその問いに答えてもらうことができませんでした。
 そして、その数十年後、長じてエンジニアとなった風太郎は品質工学でその回答を考えるための方法に出会いました。

損失関数の考え方とその応用

 損失関数は製造工程の考え方という説明が多くなっています。しかし、田口博士は「社会損失」という言葉を使っているので、社会損失の面から考えます。

ダムに対して想定雨量以上の雨が降った場合どうなるか?

 具体的には風太郎にはわかりません。しかし、その場合どうするか?考えることが大事だ!ということはできます。「想定以上の雨が降ったから決壊しました」では済まされないということです。 もし、そのようなことを考えるエンジニアは処罰されるべきでしょう。
 想定以上の雨が降った場合にどのような被害があるか?それを軽減するにはどうしたらいいか?あらかじめ設定しておくことが大事になってきます。

そのほかに想定される例

 例えばスマホの充電器です。昔の充電器は電流が少ないものがありました。実際「やらたら充電に時間かかるんだけど?」と相談されて、その充電器の電流値を見ると非常に小さいものでした。 そのために充電に時間がかかったのです。
一見「一見当たり前じゃん」と思われるかもしれませんが、想定以上の電流値を要求された場合に、発熱や発火にならないように設計されているということです。ちゃんと設計しないと発火など発生してしまうかもしれません。

さらなる応用

 前述の例は「数値」として表した例です。そのほか使われ方の想定以上(ルール破り)やノイズも考えるべきでしょう。いま思いついたのは下記のとおりです。

  • 回転中に洗濯機の蓋を開けようとしても開けられない。(昔の洗濯機は開けることができて脱水中に手を入れると骨が折れる可能性あり)
  • 扇風機のカバーは指が入らないような隙間(昔は簡単に指が入りました)
  • ヒータにはリモコン機能を付けない(ノイズにより意図せず電源が入る可能性があります)

 など無数にあります。

It's common seance(そんなの当たり前だろう!)

 上記のようなことは「そんなの当たり前だろう」と言われることばかりです。まさにその通りで損失関数という言葉を知らなくてもできます。しかし、どのような場合でも出来ているわけではないので、「損失関数」とわざわざ言う必要があったと考えます。

【品質管理】品質管理とは偏執的なもの?

ゴブリンスレイヤーをみて思うこと

 しばらく前のアニメでゴブリンスレイヤーというものがありました。結構面白かったです。あまりラノベは買わないのですが今回購入しました。ラノベを購入しないのは500円ほど出して30分程度で読み終わるという高価な娯楽だからです。珍しく購入した理由は主人公のキャラ付けが気に入ったからです。
 たまたま操作ミスで2話から見ました。これが運命の分かれ道です。オープンニングが終わって、視聴者サービスシーン(?)のあと、主人公はひたすら何かを調べています。これはゴブリンが来るかどうかというチェックをしているのです。このことは主人公が”変わった人”ということを表現しています。
 「けどなー、品質管理ってこんな感じなんだよなー」と思ったのがこのアニメを見始めた理由です。このシーンを見なくて一話から見たとしたら見続けていたかどうかわかりません。

品質管理とは検査にあらず

 品質管理という仕事があります。品質上の問題もあります。その多くはつまらないミスが原因です。通常は、ミスがあったとしても食い止めるシステムがあります。
 しかし、そのシステムが働いていないことが、そのミスを品質不具合としてしまったのです。
 品質管理というと検査をやっているといわれることがあります。しかし、検査で品質は上がらないのです。 品質管理部の仕事というのは良い品質が確保できる仕組みづくりと、その維持、そして仕組みの改善です。その仕組みの一つに検査があるわけです。
仕組みがうまくまわっているとどうなるか?検査で問題ありというものが発見されません。

なぜ検査しているのか?

 その仕組みが回っている限り、検査で問題あるものは出てきません。その中で検査の意味は二つあります。

  • 万一その仕組みに問題が発生したときに見つけ出すこと
  • その仕組みがうまく回っていることを確認し続けること(管理ともいう)

 人によっては前者を検査、後者を管理という人もいます。両方まとめて検査という人もいます。
また、その仕組みが出来てないときは全数検査を行って、仕組みが出来ているときは抜き取り検査と言って、何個かに一回の検査(測定)する。
という人もいました。
 以前見た製造ラインでは、仕組みがしっかりできている部分は抜き取り検査でした。とはいえ、それが組み合わせられると確率的に規格の範囲外に出る可能性がある。そこに全数検査を入れているところもありました。

検査のむなしさ

 前述のように、仕組みが出来上がっている場合にはいくら検査しても、問題が発生した製品を見つけることはできません。
前述の「ゴブリンスレイヤー」では主人公の変人さを表すために、毎日毎日ゴブリンが来るかどうかチェックしています。 これを実際の仕事で続けたらどうでしょうか?かなりむなしいと感じてしまいます。
 また、実際の仕事ではコストダウンの圧力を受けます。それと戦って検査を続けないといけません。
その戦いをあきらめて検査をやめてしまうと市場の問題、下手をすると会社が傾くような問題になってしまいます。  コストダウンの圧力と戦うことも品質管理部署の重要な仕事と言えるでしょう。

Omen15 by HP (15-dc1000TX )のSSD換装を行いました。

OMEN 15 by HP 256G -> 1T SSD換装

ブログ継続の難しさと楽なところ

 最近ブログ記事を書いていない風太郎です。ほんと継続って大変ですね、ほぼ毎日書き続けている方々には頭がさがります。
 しかし、楽なところもあります。それは大変さの裏側です。
簡単に再開できるんです
 久しぶりに書く時と、毎日書く時と全く同じなんですよね、今日もブラウザから「記事を書く」をクリックして始めています。 このように簡単に再開できるのもブログの魅力でもあります。

OMENの足りないところ

futaro.hatenadiary.jp

でパソコンを買ったことを記事にしました。 スペックを再掲します。

OMEN by HP 15 ハイパフォーマンスプラスモデル(15-dc1000TX ) 
i7(6コア 12スレッド) 16G RAM 256G SSD+1T HDD Videoチップは2070

CPU,メモリ,Videoチップすべてデスクトップ代替としてのスペックを最低限備えています。
問題と感じたのはストレージ容量です。「256G SSD+1T HDD」ですね。
HDDがあるから十分と思われるかもしれませんが、Cドライブじゃないと動かないソフトもあります。 そのほかもいろいろ不都合がありました。これは

futaro.hatenadiary.jp

でも同様の体験をしました。結局Cドライブ自体が大きくないと問題があるということです。
そこでこのサイトを参考にしてSSDの換装を行いました。

okiniiripasokon.com

【OMEN by HP 15-dc0000】底面カバーの取り外し方

ほぼこの手順通りです。
このブログ記事は上記に対して主に次の点が加えられています。

  • 型があたらしい
  • 工具に対しても言及している
  • 将来のメモリ換装やHDD換装のための写真も撮ってある

それでは実際の換装を写真で説明します。

OMEN15(15-dc1000TX )SSD換装

準備物

  • OMEN15本体
  • 工具(ドライバ他)
  • SSD(任意の容量)
  • 32GUSBメモリ(事前にHPのサイトよりリカバリソフトをダウンロードしておくこと)

です。 準備した工具は下記の写真のものです。

f:id:FUTARO:20190804181747j:plain
今回購入したドライバセット
f:id:FUTARO:20190915124342j:plain
携帯電話の電池交換で使った工具(ドライバは使わない)
f:id:FUTARO:20190915124901j:plain
以前MacbookProのRAM換装のために購入した#0のドライバ

風太郎はドライバーはあまり安物は使いません。理由はねじの十字をつぶしてしまったら大変なことのなるからです。安物といっても今どき100円ショップでもそこそこの工具を購入することができます。
相手物に合わせて選ぶべきでしょう。上記の写真では携帯電話の電池におまけでついてきた、ドライバはだめです。
昔から(〇十年前の学生時代から)好きなのはVesselです。安い割にはモノがいいのでよく使っています。今回は、一番下のドライバでは力が入らないため、力の入る大きめグリップ付きの工具として重宝しました。
SSDは次の写真のものです。 f:id:FUTARO:20190804181741j:plain

購入したSSD
選んだのは 次の条件です

  • 1T以上(手元のMACが1TのSSDです。512Gでも足りそうでしたが、将来のLinuxデュアルブートを考えています)
  • M2 PCIe接続 ただし、その範囲で速度は妥協可能
  • 有名なメーカ

これらのことから決定しました。

中をばらして換装

基本写真を提示するのみです。コツは

  • 最初蓋を取るのはすごく硬かった。なにか間違えているのではないか?と思うほどだった。
  • ねじは種類があるので、場所を間違えないように置く。できればPCの絵をかいてそこに置く

といったところです。

f:id:FUTARO:20190915130810j:plain

裏側の全体写真
f:id:FUTARO:20190915130825j:plainf:id:FUTARO:20190915130839j:plain
SSD部分、白いところは固定のための粘着でしょうか?それとも冷却でしょうか?
f:id:FUTARO:20190915130846j:plainf:id:FUTARO:20190915130855j:plain
HDDはこのようについています。次回換装(たぶん、2TSSD)したいです
以上です。

換装してみて

 正直256Gでは、プログラムすら入れることが危ぶまれました。1Tにすると余裕です。また、将来Linuxデュアルブートを考えているので、MydocmentはHDD上に置いておきました。



参考にアマゾンの商品ページへのリンクを貼っておきます。(携帯電話の道具と#0ドライバは類似品です)

Omen15(HP)のSSD換装を行いました。

ブログ継続の難しさと楽なところ

 最近ブログ記事を書いていない風太郎です。ほんと継続って大変ですね、ほぼ毎日書き続けている方々には頭がさがります。
 しかし、楽なところもあります。それは大変さの裏側です。

Android携帯のストレージを増やしてみる(SDカードのマウント)>あまりお勧めしません

この記事は先日(20日)に投稿した記事の修正版です。

今度は携帯

最近機器の紹介ばっかり書いちゃってます。
他の人の参考になるかな?&備忘録です。 スマホの機種は sony Xperia XZ premium です。

やりたいことは携帯電話の容量UP

 風太郎は、IphoneAndroidの2台持ちです。AndroidはSDカードが使えるといわれています。しかし、SDカードに持っていける分はほとんどなくて、内部ストレージにほとんどのデータを入れないといけません。以前からこのような傾向があり、それがいやで、内部ストレージ32Gから64Gの携帯に買い換えました。  それも結構埋まり始めて空き容量は20Gを切り始めました。まぁ、これからが長いのですが、今回は早めに手を打つことにします。
人によっては携帯電話を分解して、はんだをはがして、チップをつけてとか言う人もいるかもしれません。
 不器用な風太郎には難易度が高いので今回はこいうことはしません。ソフト的に行います。
下記のサイトを参考にしました。

AndroidのSDカードストレージ化(Adoptive Storage)に挑んでみた | a special kind of humor reconciled

Android 6.0以降のAndroid端末でSDカードを内部ストレージとして使用する方法 | でこにく

AndroidでSDカードを内部ストレージ化してアプリを移動する方法! adbですべての機種の容量不足を解消しよう

簡単にいうと次の通りです。

  • AndroidではSDカードを「外部」「内部」と分けて認識する
  • 内部とするとアプリケーションを移動できる
  • 本来「内部」とする機能を持っている
  • 日本のキャリアOEM(ドコモなどで売っている製品)はその機能を停止している
  • その機能を有効化させればOK

ということです。これって古いアンドロイド携帯ではできた記憶あります。タブレットだったかな?それができなくなったと感じてたいんですが、できたんですね。

実際にやってみる

PC側の設定

先にAndroid Studioというソフトをインストールします。これはAndroidの開発環境です。いろいろ開発環境あります。Androidを対象としたものを開発することはないと思いますが、インストールしておきます。  ざっくりと1Gの容量です。
 「管理者じゃないといけない」という感じのエラーはでますが、インストールは終わって起動しました。しかし、必要な「abd」というコマンドがありません。どうやら、「Android Studio」ではなく、「SDK Platform Tools」というものが必要だったそうです。
 そのToolsのzipファイルを解凍するとそこからめでたく「abd.exe」が現れました。 参考としているサイトでは環境変数の変更もありましたが、デフォルトフォルダをファイルのある場所にしたら大丈夫です。

実行

C:\User\Futaro\......\platform-tools>adb shell
* daemon not running; starting now at tcp:5037
* daemon started successfully
XXXXX:/ $

こういう感じで画面がでてきます。(事前に携帯側を開発者向けオプションで「USBデバッグ」を有効にしておく必要があります。風太郎は設定の中の検索から探しました) XXXXは携帯の固有記号です。このことから、携帯がコンピュータとして動作し、パソコンは端末になっています。

XXXX:/ $ sm list-disks
disk:179,0
XXXX:/ $ sm partition disk:179,0 private
XXXX:/ $

コマンドが返ってくるまでしばらく間が空きました。

Android 6.0以降のAndroid端末でSDカードを内部ストレージとして使用する方法 | でこにく

ここと全く同じストレージの表示になりました。

結果

ストレージメニューから「コンテンツの移動」を行いました。 結果は
 内部共有ストレージ 35.92GB/64.00GB  SDカード      14.05GB/128GB
え?全然移動していないじゃないか!

AndoroidアプリをSDカードに移動させて内部の容量を増やす方法

次のことをする必要がありました。

  1. 内部共有ストレージをタップ
  2. その他のアプリをタップ
  3. アプリの一覧が出る。目的のアプリをタップ 1.ストレージをタップ
  4. 変更ボタンが出た場合(出ないアプリもある)それをタップ(出ないと移動できない)
  5. SDカードを選択

 以上です。 移動させたのは,Evernote他です。かなり時間がかかりました。 また、よく再起動がかかります。実施したのは次の二つ。

  • 大きなアプリ(Evernoteで発生)は移動できなくて一度データを全削除してからいれました。
  • sm set-force-adoptable true

これはどちらが効いているかわかりませんが移動できました。

そこまで頑張ったのに「移動できるアプリは少ない」という事実があります。

アプリも目立ったアプリを移動させた結果が次の通りです。 データの出し入れとかいろいろした結果最終的には
 内部共有ストレージ 38.35GB/64.00GB
 SDカード      17.18GB/128GB
でした。 データの出し入れがあったため、このようになりましたが、途中では31G程度に減少も見受けられました。 全体としては、メインストレージが減らずにSDカードだけがどんどん増えて行っているようです。

風太郎の結論(8/25修正)

 内部ストレージ化はさほど大きなメリットはありません。
しかし、ぎりぎり足りる足りないというときにはよいでしょう。

 以下の感想は、初回記事投稿後使ってみた結果です

  • スマホ起動後SDカードが有効になるまで時間がかかる(10秒以上)この間アプリは使用できない
  • SDカードに移動したアプリは遅くなる。これはアプリによります。遅いストレージを考慮したアプリはさほど遅くならないでしょう。考慮していないアプリはもろに遅くなります。某コミュニケーションツールは使えないレベルで遅くなりました。

 使ってみた結果として、風太郎の使用方法としてはSDカードのマウントは不適でした。操作感(速度)を気にする人にはお勧めできません。

AWS障害に見る 実現した未来 (止まらないコンピュータ)

コンピュータ停止の恐怖

 大昔では、電子機器やコンピュータが津々浦々で活用された近未来が予測されました。 そられと同時に故障やバグにより人間に害を与える想像もめぐらされました。 あまりにも昔過ぎてあまり覚えていませんが、

ja.wikipedia.org

の小説版は電子機器のショートが原因で多くの犠牲者が出るストーリと記憶しています。

一方現実としては

ja.wikipedia.org

という会社がありました。
また、各社は自社の基盤システムの脆弱性対策を行っていたようです。
 銀行のオンラインシステムはかなり昔からあり、1980年代にはキャッシュカードでお金を引き出せるようになり、その恩恵が一般ユーザーでも受けられました。
 有名なトヨタ生産方式でも、その生産指示システムが非常に重要だという講演をされた先生もお見えになります。  このように社会基盤や大企業の基盤にかかわるようなものでも、マスコミに載るような障害はあまり見受けられませんでした。

AWS障害と状況

 風太郎が論ずるよりこちらの記事が詳しいです。AWSで障害が発生し、いろいろな問題があったようです。

piyolog.hatenadiary.jp

soudai.hatenablog.com

問題解決の視点から

ここで、ITに関しては趣味レベルの風太郎から見るといろいろ参考になる話が書かれていました。また、問題解決、未然防止、品質工学的な見方でも面白いところがあります。
障害が多く報告されていますが、「生命」に関するところは全く見当たりません。また、「金融系」についてもほあまり見受けられません。また、金融と分けることに異議があるかもしれませんが、決済系も少なくなっています。
多いのは上記以外のところです。
 ユーザーとしては当然、サービスが止まることは嫌なわけですが、かといってコストを負担する気にもなれません。そういう意味で各社はその停止した場合の損失に対して、うまく資金を割り振っていると考えられるでしょう。  ゲームは止まると嫌ですが、2倍や数倍のコストを負担しろと言われたら多くの人は嫌がるでしょう。風太郎的には年に一回障害があっても我慢するから、イラストと声優のセリフ増に資金を振り分けてと言いたくなります。

 このような現象とコストをよく考えているのは品質工学の損失関数です。今回のことを品質工学の損失関数から論じてくれる人はいないか?と考えます。

Anaconda仮想環境で、LinuxDockerの分析環境を再現してみる

やりたいことと結果

 本業不明の風太郎です。エンジニアなのかコンサルタントなのか、講師業なのか、わけわからない状態です。(汗)
今回事情により、クラウド上での分析環境をAnacondaで再現してみようと思いました。必要ではないのですが、できると大変便利になります。
結論をいうと失敗しました。 その過程をここに記録しておきます。だれかの参考になるかも?

参考にしたサイト

qiita.com ここに書いてあるように一発でうまくいけばOKです。Anaconda同士で、同じOSならばうまくいきました。(OSが違うとかなり難しいそうです) しかし、元はDockerでPipインストールです。WindowsでもDockerを使えばいいのですが、GPUを使いたため、WIndowsDockerは使用できません。 (GPUがうまく使えない)
 将来的にはLinuxをブートしていこうと思いますが、今はそんな時間はありません。 そこで、うまくいくかどうかはわかりませんが、仮想環境上にPipでインストールしようと思います。

qiita.com こちらからPipの読み出し方と、環境構築があります。

minus9d.hatenablog.com ここでは仮想環境の作り方をかいてあります。

やったこと

まず仮想環境を作ります。 pipだけではライブラリしかわからないため、Pythonのバージョンを確認します。

Python 3.5.2 でした

$ conda create --name testenv python=3.5.2

と入力するとエラーがでました。

$ conda create --name testenv2 python=3.5

こっちじゃないとだめなようです。

こんな感じでとりあえず、インストールできたっぽいです。 AnacondaのGUIからは仮想環境ができていることがわかります。しかし、Windowsメニューからはその仮想環境があることがわかりません。
さて困りました。
つくった仮想環境上からpippipを使いたいのです。
案としては次の二つです

  • プロンプトから仮想環境に入る
  • 仮想環境をWindowsメニューの登録する

 一つ目は手軽ですが、JupyterとかもWIndowsメニューから起動したいので、二つ目の案を考えることにします。

まず、condaをアップデートしたら勝手にメニューに登録してくれるのではないか?と考えてアップデートしてみます。

$conda update conda

です。
結果としては変わらないどころがPromptとかのメニューが消える始末。 GUIから仮想環境作成してもだめでした。

 どうも、環境自体が壊れたようです。結局再インストールです。
この時やらかしてしまいました。以前一生懸命作った仮想環境をバックアップせずにアンインストールしてしまいました。
おかげで仮想環境が消えてしまいました。すべて作り直しです 。
 今回はAnacondaVer2019.7をインストールします(その前は2019.3)これでうまくいくかと期待したけど同じでした。
そこで、GUIからは環境を呼び出せるのでまずは環境を構築します。
Windowsメニューに登録するのは別途次のサイトに従うことにします。

izmmr.blog.jp

$conda info --envs

で確認した後。

‘‘‘ $activate testenv2 ‘‘‘

で仮想環境に切り替えます。Windowsの場合は

‘‘‘ (testenv2) C:\Users\ユーザ名> ‘‘‘ という形でPromptが表示されます。このブログでは一般的な表記で”$”を使っています。

$pip install -r requirements.txt

でインストールを行います。

これでは、Jupyterがうまくインストールされません、AnacondaのGUIからのインストールも拒絶されて、Pipでインストールしました。

$pip install jupyter

しかし、これもうまくインストールできず、Jupyterが起動しません。
そこで最初から

$conda create --name testenv3 python=3.5 jupyter
$activate testenv3
$pip install -r requirements.txt

と行ってみました。

このあとpipでインストールしましたが、pipでインストールされた分はうまくライブラリを認識していませんでした。 Jupyter上から行っても一緒です。
そこで、

$pip install ライブラリ名

としたところ認識しました。

試しに管理者モードで実行したところ、今度はうまくインストールできました。
しかし、いろいろ依存関係が厳しくて、そのままではインストールできませんでした。  ここで気力付きました。あきらめて、必要なライブラリだけcondaでインストールしたり、Pyenvを使えばよかったと後悔しました。