Keynote、Pages、Numbersのv10.0が配信されました。Keynoteの前バージョンはv9.2、Pagesはv8.2、Numbersはv6.2.1でしたが、バージョン番号を別々に採番することがめんどくさくなったのか、内部のエンジンが一新されたのか、バージョン番号をそろえてきました。
おそらく、マーケティング的な要請やユーザーサポートの手間を省くために番号をそろえてきたのでしょう。
Pages/NumbersについてはmacOS 10.14以上が対象。KeynoteはmacOS 10.15.4が必要とのことですが、いろいろ致命的なバグの修正を含んでいるため、後日macOS 10.14.6向けのKeynoteアップデートが配信されることを期待したいところです。
# アップデートに出てこないだけで、Mac App Storeから個別にKeynote v10.0のダウンロードが(macOS 10.14.6上でも)できました。なんででしょう?
v10.0 UpdateのAppleScript的な変更の有無
■Numbers v10.0:変更点なし
Numbers v6.2で「特定の行数の表を作るとエラーになる」というバグがありましたが、これはv6.2.1で修正されました。これが修正されています(記憶違いだったので、記事を修正しておきます)。
Pages v10.0の変更点
documentにfacing pagesというプロパティが新設されました。見開き表示時にページの左右(奇数ページ、偶数ページ)を考慮して2ページ表示のペアを変更するという機能のようです。
AppleScript名:Pages v10.0で追加されたfacing pagesの操作を行う |
tell application "Pages" tell front document set curStat to facing pages set facing pages to not curStat –反転 delay 2 set facing pages to curStat –元に戻す end tell end tell |
全言語的に普遍的な内容ではあるのですが、日本語ユーザー的には縦書き/横書きの設定属性値を持ってくれたほうがありがたいところです。たぶん、自分は使うことはないと思います。
Keynote v10.0の変更点
Keynoteは前バージョンでかなりおかしなバグが発覚していたので、その修正が行われているかどうか、というのが見所です。
結論からいえば、バグは修正されています。macOSに関して久しぶりに前向きなニュースといえます。彼らにバグを修正する意思と能力が残されていたことについては喜びたいところです。同時に残念なニュースとして、この修正に関連して新たなバグが生まれています(このあたりがいかにもAppleらしい)。
Keynoteバグ1:表(table)作成時に行数によってはエラーになる
5行の表を作るとエラーになり、他の行数でもいろいろエラーになる組み合わせが確認されていました。テスト用のAppleScriptを書いて、行数を2〜100行で変更しつつ作成、列数を2〜30列で変更しつつ作成、行数および列数を順次ループで2〜20まで変更しつつ新規作成するなどのテストを実施。無事、修正を確認できました。
ただし、本テストは表の新規作成についてのみ確認したものであり、既存の表の行数/列数の変更を確認したものではありません。Appleの仕事に関しては、修正点の周囲に新たなバグを生む可能性が高く、修正時と修正後が一番危険な状態です。彼らに「自分の作った機能を動作確認する」という能力を期待してはいけません。信じてもいけません。つねに、疑いの目で見ることが重要です。
AppleScript名:Keynote書類上に表を作成、行数を2から100まで可変 |
tell application "Keynote" tell front document tell current slide repeat with i from 2 to 100 set aTable to make new table with properties {header column count:0, header row count:0, row count:i, column count:3} delay 1 delete aTable end repeat end tell end tell end tell |
AppleScript名:Keynote書類上に表を作成、列数を2から30まで可変 |
tell application "Keynote" tell front document tell current slide repeat with i from 2 to 30 set aTable to make new table with properties {header column count:0, header row count:0, row count:5, column count:i} delay 1 delete aTable end repeat end tell end tell end tell |
AppleScript名:Keynote書類上に表を作成、行数および列数を2から20まで可変 |
tell application "Keynote" tell front document tell current slide repeat with x from 2 to 20 repeat with y from 2 to 20 set aTable to make new table with properties {header column count:0, header row count:0, row count:y, column count:x} delay 0.01 delete aTable end repeat end repeat end tell end tell end tell |
Keynoteバグ2:書類(document)のムービーexport optionsにバグ
数値ではじまる予約語や記号を含む予約語はAppleScriptの言語処理系では宣言できません。エラーになります。それをAppleの(おそらくKeynoteの)担当者がKeynote v7.1のアップデート時に、従来の「small」「midium」「large」といったEnumによる指定から、「360p」「540p」「720p」「1080p」「2160p」という指定を行えるように変更を加えました。
より大きな解像度の書き出しに対処したことは評価できると思いますが、そもそもAppleScriptの処理系で認識できない「数字で始まる予約語」に変えたのはダメダメです(スクリプトエディタ上で構文確認を行うとエラーになる=使えない)。つまり、この担当者はsdefの改変を行なっただけで、実際にコードを書いて動作確認を行っていないことがわかります。
Appleにバグレポートを書きつつ、このような処理が必要な場合にはnative sizeで書き出して、そのあとでムービーをリサイズするような処理で回避していました(GUI Scriptingで乗り切ったScripterもいるようですが)。
Keynote v10.0では「format360p」「format540p」「format720p」「format1080p」「format2160p」と変更され、AppleScriptの構文確認時にエラーでハネられることはなくなりました。この点についてはバグ修正が行われたものと判断してよいと思われます。
ただし、従来動作していたEnum「native size」を指定するとエラーになるようになってしまいました。互換性のために残したが動作していない、といったコメントが書かれているわけでもないため、これはバグだと判断します。
■Keynote書類フォーマットとムービー書き出し時の解像度の対応表(Piyomaru Software独自調査による)
movie export formats | 標準(4:3) | ワイド(16:9) |
format360p | 480 × 360 | 640 × 360 |
format540p | 720 × 540 | 960 × 540 |
format720p | 960 × 720 | 1280 × 720 |
format1080p | 1440 × 1080 | 1920 × 1080 |
format2160p | 2880 × 2160 | 3840 × 2160 |
AppleScript名:Keynote 360p movie export test |
set targetFileHFSPath to (choose file name) as string –かならずファイル拡張子に「.m4v」を指定する必要がある if targetFileHFSPath does not end with ".m4v" then set targetFileHFSPath to targetFileHFSPath & ".m4v" end if with timeout of 3600 seconds tell application "Keynote" export front document to file targetFileHFSPath as QuickTime movie with properties {movie format:format360p} end tell end timeout |
AppleScript名:Keynote 540p movie export test |
set targetFileHFSPath to (choose file name) as string –かならずファイル拡張子に「.m4v」を指定する必要がある if targetFileHFSPath does not end with ".m4v" then set targetFileHFSPath to targetFileHFSPath & ".m4v" end if with timeout of 3600 seconds tell application "Keynote" export front document to file targetFileHFSPath as QuickTime movie with properties {movie format:format540p} end tell end timeout |
AppleScript名:Keynote 720p movie export test |
set targetFileHFSPath to (choose file name) as string –かならずファイル拡張子に「.m4v」を指定する必要がある if targetFileHFSPath does not end with ".m4v" then set targetFileHFSPath to targetFileHFSPath & ".m4v" end if with timeout of 3600 seconds tell application "Keynote" export front document to file targetFileHFSPath as QuickTime movie with properties {movie format:format720p} end tell end timeout |
AppleScript名:Keynote 1080p movie export test |
set targetFileHFSPath to (choose file name) as string –かならずファイル拡張子に「.m4v」を指定する必要がある if targetFileHFSPath does not end with ".m4v" then set targetFileHFSPath to targetFileHFSPath & ".m4v" end if with timeout of 3600 seconds tell application "Keynote" export front document to file targetFileHFSPath as QuickTime movie with properties {movie format:format1080p} end tell end timeout |
AppleScript名:Keynote 2160p movie export test |
set targetFileHFSPath to (choose file name) as string –かならずファイル拡張子に「.m4v」を指定する必要がある if targetFileHFSPath does not end with ".m4v" then set targetFileHFSPath to targetFileHFSPath & ".m4v" end if with timeout of 3600 seconds tell application "Keynote" export front document to file targetFileHFSPath as QuickTime movie with properties {movie format:format2160p} end tell end timeout |
AppleScript名:Keynote native size movie export test (Bug) |
set targetFileHFSPath to (choose file name) as string –かならずファイル拡張子に「.m4v」を指定する必要がある if targetFileHFSPath does not end with ".m4v" then set targetFileHFSPath to targetFileHFSPath & ".m4v" end if with timeout of 3600 seconds tell application "Keynote" –export front document to file targetFileHFSPath as QuickTime movie with properties {movie format:native size} end tell end timeout |