iPhoneの電池の劣化とソフトウエアでの対策問題

ここでなにを書こうとしているか、というと、Appleの電池劣化ソフトウエア事件である。実際、大きく報道されていはいるものの、まぁ、よくあることといえば言えることだ。この事件の問題は、内部で行っていることをちゃんとユーザーに事前に知らせていなかった、ということによる。Appleがやっている対策は、様々な電池劣化による性能低下に対する当たり前の対策の1つであって、それ自身は問題ではない。問題は、ユーザーがそのことを知らなかった、ということに対して、Appleが事前に説明しておく必要があった事項だったのを忘れてしまった、ということだろうが、実際にそれは無理なことだったんじゃないか?とも思う。

事が「発覚」したのは、このあたりの記事、昨年の12月21日あたりからだ。

結局、Appleは「iOS11.2以降では、電池が劣化すると、電池の容量低下で勝手にリブートするのを防ぐため、その場合はCPUのスピードを落とすメカニズムを入れておいた」という事実を認めた。実際のところ、これが極端にユーザーの使い勝手に影響する場合は、そうそう多くは無いと私は思うが、なぜ、エンジニアやエンジニアリング部門がそのことをユーザーに教えることを怠っていたかというと、まず、けっこう込みいった話になるので、説明が面倒臭い上に、ユーザーの理解が至らず、わからない、納得しない、などのことが起きたときに、面倒ごとを抱え込むことになりそうだ、と思ったからだろう。実際、こういった充電式電池を使うハイテク機器は、電池の劣化に対する様々な対策を持っているものだが、Appleはこういう方式を採用している、というだけのことだ。同じことは、たとえば、表には出ていないし、Appleだけでもないと予想がつくが、LTEや3G、Wi-Fiなどの電波が届きにくく、ブツブツキレる環境ではどうするか、などの場合も、同様に、各社各様の様々な「解決方法」「解決のためのポリシー」を持っているはずだ。そういうことをいちいちユーザーに予め知らせておく文書を用意する、などのことは、保険としてやっておいてもいいことではあるとは思うが、それにしても、そういう問題が一体いくつあるのか?などを考えると、それ全部に「答えを用意しておく」というのは、おそらく現実的ではない。

簡単に言えば、アマチュアが「そういう事実」を発表してしまったので、Appleは対処せざるを得ないところに追い込まれ、さらには電池交換ディスカウントもしなければならないところまで追い込まれたのだ。つまり、技術の問題としてはあまり大きな問題ではない。

ところで、スマホに使われているリチウムイオン電池は、充電と放電を繰り返すと、必ず劣化する。この目安が、だいたい1年くらい。毎日、100%に近い充放電をしていると、という条件つきだが。そして、2年目くらいでだいたい「使い物にならない」という水準になる。スマホの電池が劣化してくると、いくら充電しても100%の満充電にならなくなったり、満充電になっても、すぐに電池がなくなったりする。そのため、AppleではOSで電池の劣化を検知したら、CPUの速度を落とすことによって、iPhoneの電力消費を抑える。これをしないと、極端な場合は、電源を入れて数十分などの時間で、突然電池の電圧が急降下し、リセット状態になる、などが繰り返され、使い物にならない、ということになる。しょっちゅうリセット(リブート)を勝手に繰り返すiPhoneが使い物にならないのは、容易に想像ができるだろう。

だから、Appleのこの「措置」は正直なところ、エンジニアリング的には、まっとうなやり方の1つだ。しかし、シロウトがこれを外部からの試験で「発見」してしまったために、「大事」に発展した。

例えて言えば、自動車の部品1つをシロウトが取り出して、その強度を測ったら、必要な強度が得られていないので、これは問題だ、と発表してしまった、ということに似ているだろう。製品としてトータルな性能は事故の場合なども含め、ちゃんとバランスが取ってあり、実際の走行には問題がないのだが、部品1つでは、強度不足のものを使っても問題ない、みたいな。あるいは、自動車では欠かせない電装品のある部分の電源のコードが、規格では1Aが十分通るもの、と、指定されているのに、実際には0.8Aのコードが使われていた、とか。実際に測定してみると、ピークで0.8Aであって、その電流が普段しょっちゅう通るわけではないから、実際には問題がないにもかかわらず、規格通りではない、だから全部ダメ、みたいな、そういう感じか。システムはクルマもiPhoneもそうだが、技術者はコストなどの制約のある下で、なんとか製品全体として問題がない、というものを目指すことになるのは、ある意味当たり前のことだ。

特に、電池関係は最近非常に気を使う。なにせエネルギー密度が高い。そのため、Out of Controlになると、発火事故などが起きることもないではない。非常にまれなケースだが、それでも大事ではあるので、事故が起きると大きく報道される。

年間の利用者数に対する事故での死傷者数を見ると、飛行機は他の交通機関に比べて桁違いの安全性がある。自動車のそれは非常に多い。となると、長距離での移動手段で飛行機を使うのは合理的な判断になる。ただ、飛行機の場合は事故そのものが少ないので、いざ事故となったときのニュース性が高く、良く報道されるので、悲惨な事故の様子ばかり私たちは見ることになる。それだけのことだ。

Appleの話に戻すと、要するに、Appleの問題はAppleの問題ではなく、「問題にしたことが問題」だと、私は思う。

 


IoTはハードウエアもソフトウエアもわからないと辛いなぁ、というお話

p1100965

この記事はホリエくんにIoTの話をさせようとしてるんだけど。自分でハードウエアまでやったことのない人ってこういう発想するんだなぁ、って感じだね。一言で言えばホリエくんの知識じゃIoT語るのは無理があるんだなぁ、ということがよくわかった。

かわいそうに、とぼくは思う。こんなところに出されちゃってさ。でもホリエくんは他人のblogなんかよく読んでるねぇ。そういう引用うまいですよ。特にコストのことについて数行書かれているところね。「半導体製造を利用したMEMS技術によって、加速度センサーやジャイロなどが何億台というロットで量産され、すごく安い製品が出回るようになった。」ってところ。

よくあちこち読んでるなぁ、と感心するよ。独創性はないけどまとめるのはうまいね。いいんじゃね?

あと、半導体の量産効果もあって、コンピュータそのもののチップも安くて大量に出回るようになったんですよね。30年以上前だったら数億円はしたコンピュータが、今は数千円。ここが現代において「IoT」が騒がれて、そして中小企業、弱小零細企業が採算に合うことになったところなんですよね。

ぼくはあちこちでIoTについてセミナーとか講演をしたけれども、「こんなこと25年以上前の昔からやってるよ」「ではなぜ今、あえてIoTなんて名前を付けて騒がれるのか?」ってところで、必ず出て来るのが「コスト」なんですね。好意的に、かつ裏なし、という前提で解釈すればね。

好意的じゃなくて、ネガティブに解釈すると、「業界陰謀論」みたいになって、この記事にも書いてあるように「IoTはもともと昔からあったもので(ブームになったのは)メディアのレッテル張りが原因だ」ってことになっちゃうのね。何事も両面あるもんですよ。世の中は単純じゃなくて複雑なんだよ。

かといって、対談者の人も今度はソフトウエアとかWebには疎くて「その頃はブログが流行っていたが、徐々に収斂されてITサービスになってきた。」なんて言ってる。うーん、現在もBLOGはあるんですけどねぇ。かつてホリエくんがさんざん吠えていた「AJAX」なんてどうなったんでしょうねぇ?てなもんで。

なんというのかな、出演者全員の持っている世界が同じ「IT」とは言うものの、それぞれに狭い。だから、話が噛み合っていないんだよね。で、そういうことを、この対談を企画した人もわかっていないんでしょうね。

 


失敗するIoTとは?

P1150521

あなたのIoTプロジェクトは失敗する可能性が高い。なぜかというと、IoTのシステムは「エンジニアであれば誰でもできる」というものでは、全くないことに気がついていないからだ。私のセミナーを聞いている方にはちゃんとこの辺りの詳細をお話しているんだが、IoTプロジェクトの一番の問題は、それができる技術者の不足がある。これが現実だ。解決策ももちろんあるのだが、現状の日本では少し難しいかもしれない。

まず、現在のIT業界では、IoTで必要な、ハードウエア、ソフトウエア、アナログ電気回路、デジタル電気回路、ネットワーク技術、そのすべてを実際の現場で作ったことがある人材が非常に少ない。アマチュアの遊びの電子工作ではなく、実際にお客様が目の前にいる抜き差しならない現場でこれらの技術を基礎から習得して身につけた技術者は本当に少ない。実際、IoTと一言で言うものの、その製品を作る技術は非常に広範でかつ深い。文学の分野で言えば、法律も経済もシェークスピアもクラシック音楽もロックも、みんななんとかできますよ、仕事でみんなやりましたよ、という人が必要になるのだ、と言えばわかりやすいだろうか?

だから、IoTプロジェクトの成功の大きな鍵は、これらの技術を持ったうえ、さらに現場での経験の豊富な人材にある、ということになる。業務システムを作ったことがあります、程度のエンジニアとかWebをやったことがあります、という程度のエンジニアでは、持っている分野が狭くて、全くものの役に立たないのだが、そんなこととは全く知らず、またそういうエンジニアがどこにいるのか、ということもわからずにIoTを叫んでも、正直なところ、プロジェクトの成否は全く藪の中だ。

コンピュータが出てきたのはおおよそ50年ほど前だが、特にこの20年くらいは、大学や職業訓練校の教育では、「ソフトウエア」「ハードウエア」「ネットワーク」「セキュリティ」などなど、さまざまな分野で専門的なものを教育してきたが、できあがった学生はそれぞれの専門にはなりえても、総合的にシステムを考えられる人材はほとんど育たなかった。ましてやこれに「お金」というコストの問題がかかわると、それを考えられる人は、さらに少なくなる。加えて実際の現場では、たとえば無線LANを使うにしても、ノイズの問題などを考える必要うがあったり、防水の筐体はそうするのか?など、いろいろな現場なりの問題が多々ある。これらのすべてを経験している人材はさらに少なくなる。日本ではおそらく、まともなIoT機器を一人で作れる人間もチームで作れる人間も、50人いるかいないか、という程度のものだろう。

世界的にはIoTの時代がやってきたことに間違いはない。しかし、日本ではそういう人材は非常に少ない。「まともなIoTシステムの作り手」は非常に少なく、かつ貴重だ。Aさんのやっている開発をBさんがすぐに代われる、というものではない。

これから、日本のITはどうなっていくのか?実は私はこのことをすごく憂えている。


25年くらい前の「コンピュータ屋」は、今で言うIoTの技術者だったから、ハードウエアもソフトウエアもデータベースもわかってて当たり前だった。

P1070965

ぼくはあまり昔話って好きじゃない。前は良く言ってたけど、この10年くらいは目の前の仕事が忙しくて、昔話どころじゃなくなった。で、その25年くらい前にはコンピュータにもいろいろなCPU部分のハードウエアがあって、特に日本のその業界では「NECのPC98シリーズ」が一番多く使われていた。他に、IBM-PCとか、Apple-IIとかってあったけれども、日本じゃなにかというと「PC98」が当たり前だった。事務処理にはまだコンピュータは沢山使われていなくて、むしろ工場の制御とかダムなんかのプラント制御とかに、PC98はたくさん使われた。だから、今この記事を読むと、昔の話がぼくの心の中でよみがえる。大手のあの企業の工場も、あの企業の工場も、みんなぼくらがやった仕事だ、って思い出す。守秘義務があるから、どことは言えないけど、あんなことやこんなことをやった。ロボットもちゃんとインテリジェントなものが動いていたしね。

つまりさ、その頃のぼくらってのは、アナログ電子回路、ハードウエア、ソフトウエア、みんなできて当たり前だった。その上で、お客様のところに行って、要件を聞き出して、どんなハードを作ったり組み合わせたりして、どういうソフトウエアを作って入れればいいか、なんて考えた。お客様とのコミュニケーションがちゃんとできないと、この仕事もできなかった、と言っていい。つまり、ソフトウエアだけの技術者、なんて使い物にならなかった。だから、コンピュータ技術者のほとんどは、今で言うところの「IoTの技術者」でなければならなかった。

インターネット以前の時代、僕たちもPC98を使って、東証一部上場の企業の工場のシステムなんか、たくさん作ったよ。重ねて言うけど、守秘義務があるから、どことは言えないけどさ。で、今も動いてるはず。なぜかというと、当時はPC98の値段も高かったけど、それを大量に工場のラインで使うということもできた「日本企業がお金持ちの時代」だったんだね。今は全然違うけどね。実は当時のコンピュータでは、PC98を使うほうが安かったんだよ。あの時代のIntelとかで作っていた産業用のボードコンピュータのほうが遥かに値段が高かった。シングルタスクのOSも多かったし、マイクロプロセッサ用のマルチタスクは出始めで、ぼくらは結構早い時期から、iRMX(intel Realtime Mutitasking eXecution)とかも使ったね。って言っても知ってる人は少ないだろうけど。もっとも、仕事によっては、自前でマルチタスクのモニタを作ったりもした。コンテキストスイッチングの仕組みを考え、スケジューラも自分で設計した。ところで、PC98はその当時は1枚で数十万円から数百万円する産業用のボードコンピューターよりも安かった。いや、外資系のすごくお金が余っているところではそういうコンピュータを使ったよ。OSはだいたいがMS-DOSとかのマルチタスク機能をもともと持っていないOSだったから、予期しないタスクとかが裏で動いてシステムが知らないうちに重くなる、ってこともなかった。だから、使いやすかったんですね。いや、プログラムが組みやすかった、というほうがいいかね?マルチタスクのOSは小型コンピュータには珍しかったし、使いにくかった。でも、なんとかして使ったこともあった。

CPUの性能が低いぶん、OSもプリミティブで、オブジェクト指向も一般的ではなかったしね。その当時では最先端の、光ファイバを使った光LANのシステムもぼくらが作って最初に某プラントで使って実用化した。通信用のCoProcessorに、高速シリアルの入出力を持つ、PROMでプログラムを焼くi8751を使った。それが使えるようにした、PC98用のインターフェースボードも作った。TCP/IPもなかった時代、自分たちがプロトコルを作って決め、プロトコルスタックを自分たちで作って、そのスタック間のインターフェイスもぼくらが決めた。これで光でLANが動き始めて、実際の某現場で動きはじめたときは感激だったねぇ。

要するに、当時(1980年代くらいまで)は、そういう時代で、PC98を工場なんかの制御に使う、ってのは、実は一番安くて一番安心な選択だったんですね。とは言うものの、パソコンもWindowsとかからしか知らない今時のスタバでiPhoneとMacBookAirなんかで記事書いてるライターじゃ、この辺りのことは話をしてもわかんないだろうけど。だから、こんな記事で「驚き」になっちゃうんだろうね。

だから、昔が良かった、とは思わないけど、ITに関わる技術者は、昔ほど能力が高くなくても、なんとか使える時代になった、ってことだな。