WWDC22 感想

2022/06/25(Sat) 22:57:55
Appleのイベント - Apple(日本)
https://www.apple.com/jp/apple-events/

2022/06/25(Sat) 22:58:24
Sessions - WWDC22 - Apple Developer
https://developer.apple.com/wwdc22/sessions/

2022/06/25(Sat) 22:58:55
Daring Fireball: The Talk Show Live From WWDC 2022, With Craig Federighi and Greg Joswiak
https://daringfireball.net/2022/06/the_talk_show_live_from_wwdc_2022

感想

随分遅れましたが、WWDC22 基調講演、Platforms State of the Union と数本のセッション動画を見ました。

Metal 3 でカプコンの Resident Evil Village が紹介されていましたが、以前は GPU 性能が足りなく Mac でゲームが盛り上がりませんでした。当然の流れだと思います。それでも NVIDIA の最新 GPU にはまだまだ性能が足りませんが!

2022/06/25(Sat) 23:03:30
Meet Swift Regex - WWDC22 - Videos - Apple Developer
https://developer.apple.com/videos/play/wwdc2022/110357/
6:55 - Create a Regex a builder
// CREDIT    03/02/2022    Payroll from employer         $200.23
// CREDIT    03/03/2022    Suspect A                     $2,000,000.00
// DEBIT     03/03/2022    Ted's Pet Rock Sanctuary      $2,000,000.00
// DEBIT     03/05/2022    Doug's Dugout Dogs            $33.27

import RegexBuilder
let fieldSeparator = /\s{2,}|\t/
let transactionMatcher = Regex {
  /CREDIT|DEBIT/
  fieldSeparator
  One(.date(.numeric, locale: Locale(identifier: "en_US"), timeZone: .gmt))
  fieldSeparator
  OneOrMore {
    NegativeLookahead { fieldSeparator }
    CharacterClass.any
  }
  fieldSeparator
  One(.localizedCurrency(code: "USD").locale(Locale(identifier: "en_US")))
}

SwiftUI の declarative syntax のように、正規表現の Regex Builders でも似たような機能が使えるのが面白いですね。自分好みの declarative syntax が作れるのかな?

Apple は、Apple シリコンを外販しないのかな?任天堂の次世代 Nintendo Switch にちょうど良いと思うのですが!

目次

WWDC22 基調講演

iOS 16

iOS 16

watchOS 9

watchOS

Apple Silicon M2

M1、M1 Pro、M1 Max,M1 Ultra
M2
M2 unified memory
8-core CPU
10-core GPU
Media engine
4 high-performance cores、4 high-efficiency-cores
Secure Enclave、Neural Engine
Media engine、ProRes
M2

MacBook Air、MacBook Pro

MacBook Air
MacBook Pro
値段

macOS Ventura

macOS Ventura

iPadOS 16

iPadOS 16

Twitter

Swift Regex
Safari 16 Beta
Safari and WebKit
WWDC22

WWDC22 記事

2022/06/30(Thr) 23:55:13
アップル、Appleシリコンの次世代チップ「M2」を発表--CPUは18%、GPUは35%高速に - CNET Japan
https://japan.cnet.com/article/35188529/
2022/06/30(Thr) 23:56:17
7日のアップル「WWDC 2022」まとめ、iOS 16/iPadOS 16発表、注目の新機能32選!! [iPhone駆け込み寺] - ケータイ Watch
https://k-tai.watch.impress.co.jp/docs/review/iphonetips/1415048.html

2022/06/30(Thr) 23:56:49
Apple、電力効率を重視しながらCPUが18%、GPUが35%高速化した「M2」プロセッサ - PC Watch
https://pc.watch.impress.co.jp/docs/news/1415039.html

2022/06/30(Thr) 23:57:22
iPadOS 16、マルチタスク強化し外部ディスプレイ対応。macOS Venturaも - AV Watch
https://av.watch.impress.co.jp/docs/news/1415035.html
2022/06/30(Thr) 23:59:58
新機能「ステージマネージャー」の恩恵をすべてのiPadが受けられるわけではない。たぶんM1だけ | ギズモード・ジャパン
https://www.gizmodo.jp/amp/2022/06/ipad-m1-stagemanager.html
2022/07/01(Fri) 00:00:25
Apple Silicon M2を外側から眺めてみて分かった、その性能の源泉とM3の可能性(1/3 ページ) - ITmedia NEWS
https://www.itmedia.co.jp/news/articles/2206/07/news207.html

2022/07/01(Fri) 00:00:48
iPhoneの強みを反映した「Apple M2」登場 Appleの「黄金パターン」に弱点はあるのか?:本田雅一のクロスオーバーデジタル(1/2 ページ) - ITmedia PC USER
https://www.itmedia.co.jp/pcuser/articles/2206/11/news069.html

2022/07/01(Fri) 00:02:04
日本のメディアはWWDCをどう報じたか Apple報道のエコシステム、その実態を探る:小寺信良のIT大作戦(1/3 ページ) - ITmedia NEWS
https://www.itmedia.co.jp/news/articles/2206/11/news053.html

2022/07/01(Fri) 00:02:24
iPhoneとMacの“いいとこ取り”をした「iPadOS 16」 iPadは2つの方向に進化する:石野純也のMobile Eye(1/3 ページ) - ITmedia Mobile
https://www.itmedia.co.jp/mobile/articles/2206/11/news045.html
2022/07/01(Fri) 00:06:44
Apple Explains Why Stage Manager is Limited to M1 iPads in New Statement - MacRumors
https://www.macrumors.com/2022/06/10/apple-statement-on-stage-manager-m1-ipads//

YouTube

WWDC22 基調講演実況ライブ

WWDC2022実況!Apple辛者の善司さんと2人で副音声まったりトーク #backspacefm
Apple新製品発表はある? WWDC22を一緒に観よう! – アスキー

Apple Park

【アップルWWDC】本社カフェテリアの特設会場から現地事前リポート
【来たぞ!Apple Park】WWDC22直前!現地からガジェタッチが色々お届けします

MacBook Air

最速実機レビュー!M2搭載新型MacBook Air

Podcast

2022/07/01(Fri) 00:15:08
Rebuild: 337: Cyborg Kevin (hak)
https://rebuild.fm/337/

Hakuro Matsuda さんをゲストに迎えて、WWDC, CarPlay, Passkey, M2, MacBook Air, iPad などについて話しました。

WWDC22 参加者ブログ

2022/07/01(Fri) 00:17:59
海外出張とオンライン参加で学び、楽しんだ - WWDC22参加レポート - ZOZO TECH BLOG
https://techblog.zozo.com/entry/wwdc22

Mac で Karabiner-Elements を使ってファンクションキーにショートカットキー Ctrl + C を割り当てる方法

ロジクール マウス MX Master 3 を愛用しているのですが、macOS Monterey バージョン 12.1 にしてから、ホイールの挙動がおかしいので、純正マウスに戻すことにしました。

但し、アプリ毎に MX Master 3 の Back/forward ボタンにキーを割り当てています。

特に ターミナルで Back/forward ボタンにショートカットキー Ctrl + C を割り当てていました。

これがないと不便なので、カスタムキーボードなどを導入しようかと思ったのですが、キーボードのファンクションキーに割り当ててみることにしました。

2022/03/21(Mon) 12:38:36
Macでアプリケーションのキーボードショートカットを作成する - Apple サポート (日本)
https://support.apple.com/ja-jp/guide/mac-help/mchlp2271/12.0/mac/12.0

macOS 純正の機能では、アプリケーションのメニュータイトルをショートカットキーに割り当てることができます。

欲しい機能は、ファンクションキー f1 を押すと Ctrl + C を押したことになる動作です。即ち、特定のキーを押すと違うキー操作を実行するようにしたいのですが、アプリケーションのメニュータイトルをショートカットキーに割り当てることでは実現できません。

ちょうど US 配列キーボードを使っているので、Karabiner-Elements にお世話になっていました。

2022/03/21(Mon) 12:37:23
Karabiner-Elements
https://karabiner-elements.pqrs.org/
2022/03/21(Mon) 12:40:22
Use more complex rules | Karabiner-Elements
https://karabiner-elements.pqrs.org/docs/manual/configuration/configure-complex-modifications/

2022/03/21(Mon) 12:40:59
Karabiner-Elements complex_modifications rules
https://ke-complex-modifications.pqrs.org/

Table of Contents
	▼International (Language Specific)
		▼For Japanese (日本語環境向けの設定) (rev 6)
			▼コマンドキーを単体で押したときに、英数・かなキーを送信する。(左コマンドキーは英数、右コマンドキーはかな) (rev 3)

2022/03/21(Mon) 12:41:31
JSON ソース
https://ke-complex-modifications.pqrs.org/json/japanese.json

普段は、上記 Complex Modifications サイトから日本語キーバインド設定ファイル(左コマンドキーは英数、右コマンドキーはかな)をダウンロードして、英数が左コマンドキーに設定されている機能を左オプションキーに変更して使っています。

ファンクションキーの設定は、 /アプリケーション/Karabiner-Elements.app の Function keys タブで変更できますが、カスタマイズしたいので、下記 Complex Modifications サイトから

2022/03/21(Mon) 12:43:29
Karabiner-Elements complex_modifications rules
https://ke-complex-modifications.pqrs.org/

Table of Contents
	▼Modifier Keys
		▼Change Command_R Key (Right Command)
			▼Post Escape if Command_R is pressed alone.
2022/03/21(Mon) 12:44:16
JSON ソース
https://ke-complex-modifications.pqrs.org/json/change_command_l.json

Post Escape if Command_R is pressed alone. を雛形にして、ファンクションキー f1 を入力すると Ctrl + C に変更する設定ファイルを作成してみました。

2022/03/21(Mon) 13:38:48
KeyBinding.zip
https://kyoshiaki.sakura.ne.jp/blog/KeyBinding.zip

良かったら、上記リンクからダウンロードして利用してください。

使用方法は、ダウンロードした KeyBinding.zip ファイルを Finder で展開し、下記の作成されたファイルから

KeyBinding
|--ReadMe.txt
|--control_break_keybindings.json
|--bathyscaphe_and_terminal_key_bindings.json
|--japanese_option_eisuu_key_bindings.json
|--open_complex_modifications.sh
|--open_complex_modifications.scpt
|--Mac で Karabiner-Elements を使ってファンクションキーにショートカットキー Ctrl + C を割り当てる方法 – KOYAMA Yoshiaki のブログ – WordPres….webloc
|--Mac で Karabiner-Elements を使ってファンクションキーにショートカットキー Ctrl + C を割り当てる方法 – KOYAMA Yoshiaki のブログ – WordPres.url
|--LICENSE.txt

自分が使用したい拡張子が json の設定ファイルを $HOME/.config/karabiner/assets/complex_modifications/ フォルダにコピーしてください。

ターミナルで KeyBinding.zip を展開したいフォルダに移動し、

2022/03/21(Mon) 13:40:59
$ cd KeyBinding
$ ./open_complex_modifications.sh

上記のように open_complex_modifications.sh を実行すると $HOME/.config/karabiner/assets/complex_modifications/ フォルダをFinder で開くことができます。

また、KeyBinding.zip ファイルを展開して作成された KeyBinding フォルダに含まれるアップルスクリプト open_complex_modifications.scpt ファイルをダブルクリックするとスクリプトエディタが開くので、右上の実行ボタン (▶ アイコン) をクリックすると同じく $HOME/.config/karabiner/assets/complex_modifications/ フォルダを Finder で表示できます。

ファンクションキー f1 にショートカットキーCtrl + C を割り当てたいなら、control_break_keybindings.json ファイルを $HOME/.config/karabiner/assets/complex_modifications/ フォルダにコピーしてください。

2022/03/21(Mon) 13:41:48
Use more complex rules | Karabiner-Elements
https://karabiner-elements.pqrs.org/docs/manual/configuration/configure-complex-modifications/

後は、上記サイトのように /アプリケーション/Karabiner-Elements.app を起動し、下図のように Complex Modifications タブ > Rules タブ > Add rule ボタンをクリックしてください。

Add rule

下図から “無条件に f1 キーを押すと Control + C を送信する。(rev 0)” の ‘+ Enable’ ボタンをクリックして有効にしてください。

Enable
“無条件に f1 キーを押すと Control + C を送信する。(rev 0)”

上図のように表示されれば、これで f1 キーの入力を Ctrl + C に変更できます。

しかし、自分の好みのショートカットキーを登録したくなると思います。

2022/03/21(Mon) 13:46:25
External JSON generators | Karabiner-Elements
https://karabiner-elements.pqrs.org/docs/json/external-json-generators/

2022/03/21(Mon) 13:46:50
yqrashawn/GokuRakuJoudo: config karabiner with ease
https://github.com/yqrashawn/GokuRakuJoudo#usage

2022/03/21(Mon) 13:47:16
Goku は、拡張子 clj より Closure で作られている。
GokuRakuJoudo/tutorial.md at master · yqrashawn/GokuRakuJoudo
https://github.com/yqrashawn/GokuRakuJoudo/blob/master/tutorial.md

上記ドキュメントを読むと自分で設定ファイルを作るのは、敷居が高いと思うかもしれませんが、

control_break_keybindings.json

上記ファイルのように既存の JSON 形式 設定ファイルのキーコード (key_code) や修飾キー (modifiers) の文字列を変更すれば簡単に実現できます。

2022/03/21(Mon) 13:49:28
Visual Studio Code - Code Editing. Redefined
https://code.visualstudio.com/

2022/03/21(Mon) 13:49:57
JSON editing in Visual Studio Code
https://code.visualstudio.com/docs/languages/json

Visual Studio Code で JSON 形式 設定ファイルを開けば、構文チェックもしてくれます。

設定するキー文字列も、 /アプリケーション/Karabiner-EventViewer.app を起動し、確認したいキーを押せば表示してくれます。

2022/03/21(Mon) 13:51:08
快適キーボード操作のためのキーカスタマイズ ~Mac編~ | さくらのナレッジ
https://knowledge.sakura.ad.jp/23355/

上記サイトのキーバインド設定 JSON ファイルの解説が一番参考になりました。
特に mandatory、optional の違いは、ここで理解しました。

mandatory は、キーの組み合わせを指定し 、この組み合わせが入力されたときに ”to” の処理を行う。
optional に指定したキーは、”to” の時にもキー入力が引き継がれます。

私自身、

2022/03/21(Mon) 13:52:33
Karabiner-Elements complex_modifications rules
https://ke-complex-modifications.pqrs.org/

Table of Contents
	▼Emulation Modes
		▼Emacs key bindings (rev 12)
			▼Emacs key bindings [C-x key strokes] (rev 2)

2022/03/21(Mon) 13:53:00
JSON ソース
https://ke-complex-modifications.pqrs.org/json/emacs_key_bindings.json

のソースを読んで、理解を深めました。変数を使ってショートキーを押した数を数えたり、特定のアプリだけ動作する方法を学びました。

最後に JSON 設定ファイルを作成するのに必要なドキュメントの箇所をまとめておきます。

目次

JSON 設定ファイル書式

2022/03/21(Mon) 13:56:11
complex_modifications manipulator definition | Karabiner-Elements
https://karabiner-elements.pqrs.org/docs/json/complex-modifications-manipulator-definition/
"manipulators": [
    {
        "type": "basic",
        "from": {...},
        "to": [...],
        "to_if_alone": [...],
        "to_if_held_down": [...],
        "to_after_key_up": [...],
        "to_delayed_action": {
            "to_if_invoked": [...],
            "to_if_canceled": [...],
        },
        "conditions": [...],
        "parameters": {...},
        "description": "Optional description for human"
    },
    ...
]
Name	Required	Description
type				Required	"basic" is specified
from				Required	The name of key code, consumer key code or pointing button which you want to change
to				Optional	Events which are sent when you press from key
to_if_alone		Optional	Events which are sent when you press from key alone
to_if_held_down	Optional	Events which are sent when you hold down from key
to_after_key_up	Optional	Events which are sent after you release from key
to_delayed_action	Optional	Events which are sent after 500 milliseconds at you press from key
conditions		Optional	Manipulator is applied only if condition is matched (e.g., the frontmost application)
parameters		Optional	Override parameters such as to_if_alone_timeout_milliseconds
description		Optional	A human-readable comment
2022/03/21(Mon) 13:57:49
to_if_alone | Karabiner-Elements
https://karabiner-elements.pqrs.org/docs/json/complex-modifications-manipulator-definition/to-if-alone/

2022/03/21(Mon) 13:58:14
to_if_held_down | Karabiner-Elements
https://karabiner-elements.pqrs.org/docs/json/complex-modifications-manipulator-definition/to-if-held-down/

2022/03/21(Mon) 13:58:35
from.any | Karabiner-Elements
https://karabiner-elements.pqrs.org/docs/json/complex-modifications-manipulator-definition/from/any/

Conditions

2022/03/21(Mon) 13:59:55
Conditions | Karabiner-Elements
https://karabiner-elements.pqrs.org/docs/json/complex-modifications-manipulator-definition/conditions/
Conditions
frontmost_application_if, frontmost_application_unless
device_if, device_unless
keyboard_type_if, keyboard_type_unless
input_source_if, input_source_unless
variable_if, variable_unless
event_changed_if, event_changed_unless
2022/03/21(Mon) 14:01:04
frontmost_application_if, frontmost_application_unless | Karabiner-Elements
https://karabiner-elements.pqrs.org/docs/json/complex-modifications-manipulator-definition/conditions/frontmost-application/
frontmost_application_if, frontmost_application_unless
Change an event if/unless the frontmost application is the specified application.

{
    "type": "frontmost_application_if",
    "bundle_identifiers": [
        bundle identifier regex,
        bundle identifier regex,
        ...
    ],
    "file_paths": [
        file path regex,
        file path regex,
        ...
    ]
}
Name	Required	Description
type	Required	"frontmost_application_if" or "frontmost_application_unless"
bundle_identifiers	Optional	Bundle identifier regexs such as ["^com\\.apple\\.Terminal$", "^com\\.googlecode\\.iterm2$"]
file_paths	Optional	File path regexs such as ["/Finder$"]
description	Optional	A human-readable comment
Multiple

Event

2022/03/21(Mon) 14:02:38
from event definition | Karabiner-Elements
https://karabiner-elements.pqrs.org/docs/json/complex-modifications-manipulator-definition/from/
from event definition
{
    "from": {
        "key_code": "The name of key_code",
        "consumer_key_code": "The name of consumer_key_code",
        "pointing_button": "The name of pointing_button",
        "any": "key_code or consumer_key_code or pointing_button",

        "modifiers": {
            "mandatory": [
                modifier,
                modifier,
                ...
            ],
            "optional": [
                modifier,
                modifier,
                ...
            ]
        },

        "simultaneous": [
            {
                "key_code, consumer_key_code, pointing_button or any"
            },
            {
                "key_code, consumer_key_code, pointing_button or any"
            },
            ...
        ],
        "simultaneous_options": {
            "detect_key_down_uninterruptedly": false,
            "key_down_order": "A restriction of input events order",
            "key_up_order": "A restriction of input events order",
            "key_up_when": "When key_up events are posted",
            "to_after_key_up": [
                to event definition,
                to event definition,
                ...
            ]
        }
    }
}
Name	Required	Description
key_code				Optional	Key code which you want to change
consumer_key_code		Optional	Consumer key code (media key code) which you want to change
pointing_button		Optional	Pointing button name which you want to change
any					Optional	"any": "key_code", "any": "consumer_key_code" or "any": "pointing_button"
modifiers				Optional	Specify mandatory and optional modifiers (e.g., “change control-h to delete”)
simultaneous			Optional	Specify multiple events which are pressed simultaneously
simultaneous_options	Optional	Options for simultaneous

Note
key_code, consumer_key_code, pointing_button and any are exclusive.
You have to specify one of them.

Caution
Be careful using "pointing_button": "button1" and "any": "pointing_button".
You may lose the left click button and system will be unusable.

Bundle identifier の探し方

Finder で Bundle identifier を確認したいアプリケーション (例として ‘ターミナル.app ‘ を使って解説します。) を右クリック (Ctrl + 左クリック) し

メニュー

メニュー > パッケージの内容を表示 を選択

Contents

表示された Contents フォルダをダブルクリックして開く。

Info.plist

Finder 上で Info.plist ファイルをダブルクリックする。 Xcode をインストールしている場合、Xcode の property list editor で表示されます。

Xcode の property list editor

表示されたウインドウの Bundle identifier の横に表示された文字列 com.apple.Terminal が目的の値です。

Bundle identifier を raw で表示するには、

Raw Keys & Values

上図のように property list editor 内を右クリック (Ctrl + 左クリック) して、メニュー > Raw Keys & Values を選択すれば表示されます。

raw で表示された状態

詳細は、少し古いですが下記ページを参照してください。間違って値を変更しないように気を付けてください。

2022/03/21(Mon) 14:09:42
Edit property lists - Xcode Help
https://help.apple.com/xcode/mac/11.4/#/dev3f399a2a6

2022/03/21(Mon) 14:10:12
Xcode Help
https://help.apple.com/xcode/mac/11.4/

WWDC21が6月7日から11日にオンライン形式で開催。メガネ型デバイスの発表も?

2021/04/01(Thr) 23:50:39
AppleのWWDC、今年もすべてオンライン形式で開催 - Apple (日本)
https://www.apple.com/jp/newsroom/2021/03/apples-worldwide-developers-conference-is-back-in-its-all-online-format/

2021/04/01(Thr) 23:51:16
WWDC21 - Apple Developer
https://developer.apple.com/wwdc21/

2021/04/01(Thr) 23:51:39
Apple、2021年6月7日〜11日に「WWDC21」をオンライン開催すると発表 | NEWS | Macお宝鑑定団 blog(羅針盤)
http://www.macotakara.jp/blog/news/entry-41078.html

2021/04/01(Thr) 23:52:16
【速報】WWDC21は6月7日から11日に開催!メガネ型デバイスの発表も? - iPhone Mania
https://iphone-mania.jp/news-357365/

メガネ型デバイスの発表も?
楽しみ。