MacのVMwareのWindowsからSM-BCR2を使う

シマノ製の電動ギアチェンジの自転車を購入したので、MacのVMwareのWindowsから、そのファームウェアを最新版に更新しようとしました。

自転車本体に内蔵した電池の充電と、PCからUSB接続でファームウェア更新や設定ができるUSBアダプタにもなるのが、SM-BCR2 https://bike.shimano.com/ja-JP/product/component/duraace-r9150-di2/SM-BCR2.html です。

E-TUBE PROJECT https://e-tubeproject.shimano.com/?lang=ja で公開されているWindowsソフトウェアで、動くはずです。 しかし、MacのVMwareのWindowsで、ソフトウェアをインストールしても、SM-BCR2を認識できないとダイアログが表示されるばかりです。デバイスマネージャを開くと、COMポートの下、COM3でSM-BCR2が認識されているので、ドライバの問題ではありません。

ここの動画 https://www.youtube.com/watch?v=9oKOvXT_NN8 で解説されていますが、これは、一度Windowsアプリケーションを起動して、デバイスが認識できないダイアログを表示させ、その状態でSM-BCR2をUSBに接続し、Windowsに接続、そしてVMwareのメニューで、USBの切断と接続を行うと、認識されます。

ファームウェアを更新しても、電池が旧型、SM-BTR2 https://bike.shimano.com/ja-JP/product/component/ultegra-6870-di2/SM-BTR2.html、だとシンクロシフト機能は有効になりません。新型の電池 BT-DN110 https://bike.shimano.com/ja-JP/product/component/ultegra-r8050-di2/BT-DN110-A.html を使う必要があるそうです。制御回路本体が、電池と一体化しているのでしょう。

wwdc2019 core bluetooth

What’s New in Core Bluetooth

https://developer.apple.com/videos/play/wwdc2019/901/

BR/EDRデバイスに拡張。 technology, privacy, tool

LE 2Mbps iPhone8, Apple TV 4K, Apple Watch Series4

Throughput (kbps) Write With Response: 2.5 Write Without Response: 37 +Larger MTU: 48 +Extended Data Length: 135 +LE L2CAP: 197 +15ms Interval 394 +LE 2Mbps: 670

Advertising Extension, extended advertisement payload up to 124 bytes Extended Scan,

New API to query for platform support class func supports(_ features: CBCentralManager.Feature) -> Bool static var extendedScanAndConnect: CBCentralManager.Feature { get }

wwdc2019 misc

Introducing Low-Latency HLS

資料だけざざっと。配信をより低レイテンシ、ユーザが操作すれば、すぐに再生位置が切り替わるとか、ライブ配信とか。 今は1セグメントが6秒。これをサブセグメントに細かくする。250ミリ秒くらい。リアクションは、600ミリ秒くらい。 大規模な配信で、HTTP(S)は、途中に入るネットワークルータでブロックされたりとかしないという意味で、偉大。

HTTPベースで配信するとして、しかし低レイテンシでは、HTTP/2を使う。 PUSHが使えるので、1つのセグメントを取得したら、サーバー側から次のセグメントのPUSHをしておけば、クライアントはそれを受けて、次のセグメントの取得へと、スムースに要求がつながる。

配信元がすることは、ソースのファイルのセグメントを細かくした配信データを用意する。CDNはHTTP/2にする。

Using Core Data With CloudKit

CoreDataとCloudKitとを統合した振る舞いを、少ないコード量で、実現できる。

CoreDataは、ローカルのデータ永続性、CloudKitは、クラウド側に保存される永続性を提供している。 これを1つの振る舞いとして扱うフレームワークを提供する。

SwiftUIがアプリケーションデータの可視化的な振る舞いをするから、アプリケーションデータをどう実装するかはとても重要で、かつコアになる。また一人のユーザでも、複数端末で作業を継続するのは当たり前の体験だから、このセッションの意味は大きい。

調査すべきは: ClouldKitは、ウェブサービスにもデータを取り出せる。ウェブ側にアプリを取り出す実装は、できるのか?

  • 03:55
    • Xcodeでのデモンストレーション。
    • iCloud capabilityで追加。
    • background capabilityで Remote notification。
  • 07:23
    • NSPersistentCloudKitContainer、AppDelegate.swiftに。追加して。lazy var persistentContainer。
  • 09:04
    • クラウドキットのローカルレプリカ。
    • ローカルとクラウドでの伝送速度は桁違いに違うよと。
    • 同期スケジュールは自動化されている。
  • 14:11
    • Containerの拡張。
    • 複数のストア、
    • CloudKitSchemaを弄る。外部ウェブとの連携。
    • データモデル、コラボレーション。
  • 14:50
    • Multiple store
    • 制約が異なる場合
    • スロットルするとき。
  • 15:50
    • 頻繁な更新があるもの。いちいち同期してもね。
    • ロケーション情報だけローカル保存とか。
  • 19:54
    • Schema、

Creating Great Localized Experiences with Xcode 11

https://developer.apple.com/videos/play/wwdc2019/403/

WWDC2019 Platforms State of the Unionを見たメモ

要点

  • iPadアプリがほぼそのままMacアプリにビルド可能になる。MacOSでカーネルの上にUIKitを含むフレームワークが乗る形。AppKitも平行して横にあるので、従来アプリもそのまま動く。
  • MacOSは、システムはリードオンリになる、ドライバはカーネルからユーザランド側に出てくる、位置やカメラを使うときにパーミションのダイアログが出るなど、iOS的になる。MacがiPadOS化するような感じに移行するのかも?
  • SwiftUIは強力に見える。移行する以外の選択肢はないので、学ぶしかない。

時系列

見ている時間軸で感想。時間は HH:MM:SS 時間が0の時はHHは省略。

  • 00:02:00

    • No more letterbox.
      • 感想: UITextなど、UIは矩形領域を意識するものだったけど、そんな境界はもう忘れて、新しいUIを作ろうという感じがして、いい言葉だなと思うのです。
    • 画面サイズが違う、幅広いデバイスで、UIを展開できるように。
  • 00:03:40

    • Swift、言語、Xcode。ツールは生産性に大きく影響する。
      • 感想: Swiftの言語のオレンジ色のアイコンに対して、SwiftUIにもアイコンが作られている。Swiftの言語のそれの色を青色にしたもので、シンボルとして、これを使っていくのですね。
  • 00:04:35

    • SwiftUIから、プレゼンが入る。
      • 感想: SwiftUIは、大きなUIの設計変更になるから、実際に導入されるのは2年後だろうけど、AutoLayoutのように、そのうち義務化されるのは見えているから、慣れていく必要はあるのでしょう。
      • 感想: iOS12以前でも動くのかだけ要チェックですね。プレゼンでは、1つのビューから移行ができる、すでにあるUIKitなどと競合するものではないから、一部だけ移行していけばいいとありますが。
  • 00:05:25

    • Way Less Code
    • structure , 末尾に見かけを追加していく感じ。
      • 感想: Swift5の言語拡張を利用しているのか、UIの構造をコードの構造で直感的に表現しつつ、見た目の属性もコードにまとめていける感じで、ものすごくスマートな感じがします。実際にデザイナの方が指定したレイアウトをコード表現したらどうなってしまうのかは、やってみないといけませんが。1回、小さな開発を回して、デザインとコードのやり取りフローを見直しておくのがいいかもですね。
  • 00:05:49

    • 例えばリストはとてもよく使うもの。
    • List(mode.items { item in RowContent(item) }
    • Text(“version…”)
    • ローカライゼーション、ダークモードとかは勝手に。
    • コード共有を画面サイズを問わない、全てのデバイスの範囲に広げる。
      • 感想: AutoLayoutは、デバイスクラス単位で指定値を変更できましたが、より柔軟になっているのでしょうか? 要確認ですね。
  • 00:07:23

    • SwiftUIは、Declarative。
    • Button(“Done”, .Done).color()とか。すごく宣言的にかける。Doneボタンを、色はグレイで表示する、とか。大きさやら何やら指定がない。
  • 00:09:43

    • アニメーション。.animation(.default)とか1行的に。
    • アニメーションの割り込み、開始、キャンセルなど、向こう側に。
      • 疑問: state of the unionのSwiftUIのプレゼンを見ているのですが、今までピクセルベースだったりView間のスペース調整などの作業が、まるっとフレームワークの向こう側に行っちゃうのですが、これはもしかしなくても、デザイナの方がコードを書くべき、になりますよね。デザイン要素がSwiftUIの中にある
  • 00:09:54

    • Compositional
    • VStack(alignment: .leading) {
    •   Text(item.title)
      
    •   Text(item.subtitle).color(.gray)
      
    • }
  • 00:10:43

WWDC 2019

iOS13の新機能

https://developer.apple.com/ios/whats-new/

  • Dark Mode
  • SwiftUI
    • iOS, macOS, watchOS, そしてtvOS のユーザインタフェース構築のモダンなプローチ。
    • ダイナミックなインタフェースを、かつてなく早く、宣言的に、コンポジションを異本単位にしたプログラミングで構築できる。
  • Multiple UIInstanes
    • iOS13ではユーザは、アプリケーションのユーザインタフェースのインスタンスを複数作成して管理できる。
    • 複数のユーザインタフェースのインスタンスは、app switcherで素早く切り替えられる。
    • iPadでは、アプリの複数のインスタンスをside by sideで表示できる。
  • SF Symbols
    • アプリケーションで使うアイコンの一貫した集まりを扱う仕組み。
    • 画像情報はSVGフォーマットでベクターで扱われる。
    • 画像は内包するテキストの大きさやスタイル変更、数学的な足し算や引き算の機能が提供される。
    • Dark modeと通常モードのアイコンの使い分けなど。
  • Bring iPad App to Mac
    • Xcodeで"Mac"チェックボックスを設定するだけで、iPad app をMacに持ってこれます。
  • ARKit3
    • モーションキャプチャ。 People Occlusion。
    • 3までの複数の顔追跡。フロントとバックカメラの同時使用。
    • Collaborative sessions。AR Coating UI。Visual coherence。
  • RealityKit
    • ARアプリで3Dコンテントを連続的にレンダリングする新しいフレームワーク。
    • ARアプリに、アニメーション、物理、空間的な音源の追加する。
    • バーチャルなオブジェクトを実世界にシームレスに統合するのに、ARKitからの情報を活用する。
  • Sign In with Apple
    • AppleIDでアプリにサインイン、ウェブ向けのJSもある。
  • Background Task
    • バックグラウンドのファイルダウンロードなどのAPIがあったが、それがフレームワークとして分離されたもの。
  • Camera Capture
    • フロントカメラとバックカメラの動画の同時録画ができる。
    • 写真の、髪、肌そして歯のセグメンテーション。
  • Combine
    • 値を時間軸で扱う宣言的なSwift APIを提供する新しいフレームワーク。
    • ユーザインタフェースのインベント、ネットワークのレスポンス、スケジュールされたイベントなど、あらゆる非同期なデータを表現できる。
    • Publisher, Subscriber, Subject,, Scheduler プロトコル。
  • Core Haptics
    • ハプティクスのパターンの編集とハプティクスの動作ができる。
  • Apple CryptoKit
    • 暗号関連の処理のフレームワーク。
  • MetricKit
    • システムから、そのデバイスでの電力やパフォーマンスのメトリックを受け取ることができる。
    • 登録したアプリは、直前の24時間のデータを最大で1日に1回受け取る。
    • バッテリー: CPU, Display, GPU, LocationActivity, NetworkTransfer。
    • パフォーマンス: AppLaunch, AppResponsiveness, AppRunTime, Memory。
    • ディスクアクセス, カスタムメトリクス。
  • PencilKit
  • Core ML 3
    • on-deviceでのモデルのパーソナライゼーションをサポートする。
    • アプリの内部で、ユーザ特有のプライベートなデータを元に、再トレーニングやfine-tuningで、モデルを更新できる。
    • ダイナミックなneural networkへのサポートを、100レイヤータイプ以上に拡張する。
    • BackgroundTasksフレームワークで、処理時間の長いCore ML モデルの更新と予測とを、バックグラウンドにスケジュールできる。
  • Vision
    • Saliency analysis。人間と動物の検出。カテゴライズと検索のための画像の分類。feature printとの類似度の分析。ドキュメントのテキスト認識。
  • VisionKit
    • Node appと同じように、カメラでのドキュメントのスキャンができる。Visionフレームワークの文字認識と組み合わせて使うなど。
  • Metal
  • Core Data
    • Core Data storeのCloudKitへの同期。全てのデバイスでのシームレスなデータへのアクセス。
    • クラウドバックアップと配布とにも。
  • Core NFC
    • タグへの書き込み。NDEFフォーマットタグへの書き込みを含む。
    • ISO 7816, MIFARE, ISO 15693, and FeliCaへの、タグの読出しと書き込みを提供する。
  • SiriKit
    • アプリからSiriに、コンテキストと指定時間を含む予約情報を与えられる、ユーザが状況に基づいた関連する行動を取れるように。
    • ホテル予約や、レンタカーの返却時間、飛行機のチェックイン時間のリマインダーなど。