2021-03-16

例のCOCOAの最新仕様放置疑惑について解説するよ

最初結論から書くと、「毎日新聞さん正論すぎる」「だけどまだちょっと時間あるで」。

毎日新聞の元記事

『「COCOA」がグーグルアップル基本ソフト最新仕様に未対応

https://mainichi.jp/articles/20210315/k00/00m/020/165000c

毎日新聞の指摘は何か

グーグルアップル基本ソフトの最新仕様対応していないことが分かった。

うん。コード見てる人はだいたい知ってる。

稼働はしているが、両社の今後のソフト更新次第で作動停止など不測の事態に陥る恐れがある。

まあ、そうですね…。

毎日新聞の指摘をもう少し噛み砕くと…

COCOA動作の基盤となっているのは、Exposure Notification API(曝露通知API)というやつで、GoogleAppleが共同で開発した、AndroidiOSの両方で使えるAPIOSと近いところで動くライブラリみたいなもので、おかげでBluetoothを使っても電力消費は最小限で済むし、アプリプライバシー関係でよからぬ手出しができないようにもなってる。iPhoneではiOSの一部として組み込まれているし、AndroidGoogle Play経由の「Google Play 開発者サービス」の新しい版に含まれてる、みたい。

基本ソフトの最新仕様対応していない」ってどういうことなのか

このAPIにはバージョンがあって、V1ってのが最初のやつで、もう少し検出方法が洗練されたV2ってのがある。Exposure Notification APIのセットの中にV1とV2が重複しつつ混在してて、今から作るアプリなら使えるAPIバージョンアプリ側で確認して、使える方を使う、という感じになるかと思う。

COCOAが使ってるのは、V1。これは事実

V1を使っていたらいかんのか

現在COCOAまがりなりにも動いていることからも分かるように、API V2が使えるようになっても、後方互換性のためにV1も使えるようになっている。Apple/GoogleはV1のメソッドかには「deprecated」(使用不可)っていう印をつけて、今後は使わないように、と言ってる。

「deprecated」になったやつは、Apple/Googleは「もう使わんでね。いつ使えなくなっても文句言わんでね」という扱いをする。だから、「ソフト更新次第で作動停止」という指摘は間違いではない。間違いではないが…。

実情、deprecatedなAPIってどんな感じなのか

Apple/Googleデベロッパならよく知っていると思うけれど、「deprecated」になったからといって、そのAPIを予告なく使えなくすることは、まず、ないのです。

増田IOSデベロッパなのでiOSの例をあげると、画面を表示する基本的部品であるところの UIWebView っていのうがあったんだけど、これはiPhone OSの頃からあった古い古い部品で、これまでずっと使われてきた。これはwebの画面を表示するのと同じやりかたができるので、iOSアプリはほぼみんな使ってたんだけど、いろいろ問題もあるので、iOS 8の頃に WKWebView っていう新しい部品を出したのです。で、UIWebView をdeprecatedにしたのがiOS 12のとき

ここからAppleは、「UIWebViewを使ったアプリApp Storeに提出したら警告するからね」→「今後新規アプリバージョンアップのときUIWebView使ってたらリジェクトするからね」→「UIWebView使ってるアプリはAppStoreから削除するからね」という感じにデベロッパの様子を見て期限を延長したりしながら段階を踏んで、ほんとに削除(一時的非表示)始めたのは去年の12月ですよ。しかiOS 14でもまだ既存アプリのUIWebViewは動く。

じゃあExposure Notification API V1はどうなるのか

もちろん、滅茶苦茶使われていたUIWebViewと比べたら、Exposure Notification APIみたいなマイナーAPIでこんな丁寧なことはやらないかもしれないけれど、でも重要度で言ったらExposeure Notification APIなんて「超重要」でしょ。V1が全然使えないならまだしも、一応動いてるし。

Exposure Notification API V1は、使えなくなる前には必ずデベロッパに期限を知らせるはずで、いきなり切るはずはない(ないよね(ないんじゃないかな(まちょっと覚悟はしておけ)))。

からCOCOAが急に使えなくなっちゃう! と不安になる必要は、当面はないと思っていい。かな。

とはいえ

これはスレデベロッパであるがゆえの油断であると言われてしまえば、そのとおりです。「deprecated」は「deprecated」。普通プロジェクトなら、すぐさま対応検討して、バージョンアップ計画を立てるのが正しい。普通プロジェクト、なら。

記事中では「21年2月になって、ようやく最新使用対応するための具体的な検討に着手した」って言ってて、まあこれはダメなんだけど、そもそもプロジェクト運営グダグダだったんでしょうがねーんじゃね? というのがいちヲチャーとしての感想ではある。だってAndroid版動いてなかったんじゃよ? プロジェクト立て直す時間はあるはずなので、体勢立て直してから検討してもいいかな、という気はしている。それくらいの時間はある。はず。

そういう意味で、毎日新聞記事ちょっと叩きすぎな感はある。正論ではありますよ。正論では。

とはいえとはいえ

で、ここでぶっちゃけしまうと、実はもうCOCOAは要らないっちゃ要らないのです。

保健当局アプリを作れない/作らない国/地域のために、iOSでもAndroidでも、AppleGoogleが用意したCOCOA相当機能「Exposure Notification Express」というやつが、OSに組み込まれている。これを使うことにすれば、当局サーバ側のバックエンドだけ用意すればいい。

グーグルアップルの新型コロナ接触確認機能に新たな仕組み「Exposure Notification Express」――日本には影響なし』

https://k-tai.watch.impress.co.jp/docs/news/1274374.html

『Supporting Exposure Notifications Express

https://developer.apple.com/documentation/exposurenotification/supporting_exposure_notifications_express

「だけ」って簡単な言うな。そりゃ大変だけろうれど、わざわざ使いづらい/どマイナーミドルウェアXamarinMicrosoft謹製)使って、頑張ってクロスプラットフォームアプリを開発/運用するよりはずっと負担は少ないよね(必要予算も)。

もう、バンザイして、Expressにしたらいいんじゃね? と、増田は考えるんじゃよ。知らんけど。

できればまだこの仕組みを見限らないで欲しい

COCOAは嫌いになっても、Exposure Notificationの仕組みは嫌いにならないでください…(´・ω・`)

COCOA出自がアレで、採用意思決定不透明で、契約もテキトウで、アプリ運用も誰が何をどうしたらいいのかわかってない/身動きができない、という悲惨アプリです。

でも、2月以降変わってきたんですよ。COCOAの立て直しチームにCode for Japanの人やオープンソースの知見を持った方が参加して、githubでのissue解決の動きも再開している。ちょっと見てみてくださいよ、いろんな人が寄ってたかってコード検証して、それが反映されつつあります

『Issues・cocoa-mhlw/cocoaGitHub

https://github.com/cocoa-mhlw/cocoa/issues

いままでよりはまともに動くようになるはず。

前述のように、Exposure Notification APIで消費されるCPU資源も、通信も、ストレージも、バッテリも微々たるものです。

Exposure Notification API自体は非常によくできており、プライバシーに関しても、よくまあここまで、というくらい考慮されていますアプリ側でいろんな悪さを仕込むことは技術的には可能ですが、小細工を仕込んでもAppleGoogleアプリ審査で弾かれます(通常の小細工入りアプリが弾かれる程度には)。運営への不信からプライバシーについても疑ってしまう人もいるけど、COCOAはその点まず心配ありません。

から、渋々でいいので、もうしばらくスマホの奥においといてもらえませんか。そんなにお邪魔にはならないですよ?

そして万が一曝露通知が届いたりしたら宝くじ大当たり級の驚きが(うれしくない)

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん