Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

カテゴリー: Bug

Apple iWork Appsがv10.3.5にアップデート

Posted on 11月 13, 2020 by Takaaki Naganoya

AppleのiWork Appsがv10.3.5にアップデートしました。対象OSはmacOS 10.15以降です。

Keynote v10.3.5のAppleScript用語辞書のexport optionのmovie codecに「H.264」を指定するための定数が前バージョンから引き続き「h.264」になっています。バグ未修正状態です。

これでは、AppleScriptの構文確認をパスできません。AppleScriptの予約語としてこのような記号を途中に入れられないのですが、まるっきり動作確認もバグの所在も認識していない様子です。

みんながUIのお手本にしてきたKeynoteも、今回の10.3.5でこの体たらく。とくにツールバーアイコン。いきなり無色アイコンに変えられて(しかも小さい)、とても使いにくいというか、見えません。

まるでAppleから嫌がらせをされているかのようです。KeynoteのUIをまともにした互換アプリケーションでも誰か出さないだろうかと考えてしまいます。

Posted in Bug | Tagged 10.15savvy 11.0savvy Keynote | Leave a comment

えせScriptable App

Posted on 11月 6, 2020 by Takaaki Naganoya

Macのアプリケーションの中には、Info.plistに「NSAppleScriptEnabled = true」の表記があっても、実際にsdefファイルが入っていなかったり、sdefが入っていても、まったくアプリケーションの機能と関係ないダミー辞書が入っているものがたまにあります。

これを、個人的に「えせScriptable」と呼んでいます。英語に翻訳しづらいですが、Fake Scriptable AppとかDummy Scriptable Appなどと呼ぶところでしょうか。

最悪の「えせScriptable」なアプリケーションはAppleのiBooks Authorでしょうか。電子書籍市場を立ち上げるためには、既存のInDesignなどの他のアプリケーションのデータをiBooks形式にScriptで変換できる必要があると思っていたところに「カス」なAppleScript用語辞書しか入っておらず、「プログラムで変換できないのかー」という落胆をもたらしました。

辞書内容がアプリケーションの機能とぜんぜん合っていない「えせScritable」。実際に、これらの用語を使っても、起動や終了ぐらいはできるものの、アプリケーション本来の機能は1つも呼び出せません。

GUI Scripting経由で無理やりメニュー操作やボタンのクリックは行えますが、これをもって「AppleScriptに対応している」とは言ってはいけないレベルです。

Chipmunk Basicの現行バージョンがScriptableで、本来はAppleScript用語辞書がバンドル中に入っているはずなのですが、確認してみたら入っていないことに気づきました。早速、作者のRon Nicholsonにレポート。さて、どうなりますやら。

現行のUni Detectorでは、これらの「えせScriptable」なアプリケーションも一律「Scriptable」として表示してしまうため、これらをScriptableではないものとして表示を抑止するために専用のデータをバンドル内に格納してチェックするかというところでしょうか。

Microsoft officeの補助アプリケーション類がScriptableな表示になっていますが、単独で起動ができないためにScriptableなアプリケーションの範疇に入れてはいけないところでしょう。ちょっと古めのアプリケーションで、AppleScript Studioで作られているものが存在しており、AppleScript用語辞書が入っているものも見られます。これも、外部からコントロールするための辞書ではないので、正確な意味では「Scriptable」ではありませんが、意外と多いのと古いものが中心なので放置しておいています。

com.nicholson.chipmunkbasic3co		1.368.21
com.kapeli.dashdoc	4.6.7
com.apple.Maps	*
com.apple.iBooksAuthor	*
com.peterborgapapps.Lingon3	*
com.peterborgapapps.LingonX7	*
com.adobe.devicecentral.application	*
com.readpixel.wakeonlan	*
com.bombich.ccc	*
com.microsoft.OrgChart	*
com.microsoft.myday	*
com.microsoft.office_pg	*
com.microsoft.Graph	*
com.microsoft.entourage.database_utility	*
com.microsoft.entourage.database_daemon	*
com.microsoft.outlook.databaseutility	*
com.microsoft.entourage.databasedaemon	*
com.microsoft.entourage.ClipGallery	*
com.microsoft.openxml.chart.app	*
com.microsoft.openxml.excel.app	*
com.microsoft.office.uploadcenter	*
com.microsoft.office.uploadcenter	*
com.tinyspeck.slackmacgap	*
org.mozilla.firefox	*
com.twitter.teitter-mac	*
com.nchsoftware.wavepod	*
com.nchsoftware.expressjp	*
com.digitalspokes.AppKiDo	*
com.parallels.mobile	*
com.epson.East-Photo-Scan	*
Posted in Bug sdef | Tagged 10.13savvy 10.14savvy 10.15savvy 11.0savvy | Leave a comment

セキュリティアップデート2020-05でMojaveが頻繁にクラッシュ?

Posted on 9月 27, 2020 by Takaaki Naganoya

メイン環境にmacOS 10.14.6, Mojaveを入れて使っていますが、自分の環境では先日公開されたアップデート「セキュリティアップデート2020-05」を入れた直後からuniversalaccessd(/usr/sbin/universalaccessd)が頻繁にクラッシュして、クラッシュダイアログがひんぱんに表示されるようになりました。

このおかげで、画面の拡大・縮小の機能が呼び出せなくなってしまいました。普通に作業はできるので、特定のプロセスのクラッシュダイアログが表示されて邪魔なぐらいですが、実に邪魔です。

# 文章を打っている最中に何度もクラッシュダイアログが表示されるので、文章のクオリティが下がりがちです。

→ macOS 10.14.6 Mojave向け「セキュリティアップデート 2020-005」のリテイク版が公開され、すでに同アップデータを適用した環境向けのアップデータにより、本現象は解消されました。目下、universalaccessdがクラッシュダイアログを頻繁に表示される状況は解消されました。

Appleが提供する各種セキュリティアップデートについては、こういう「ハズレ」がたまに入ってくることがあり、信頼度は60%ぐらいでしょうか。自社ハードウェアのみのサポートのくせに100%と言い切れなくなってきたことは由々しき事態です。クレイグ・フェデリギに呪いあれ。

Posted in Bug | Tagged 10.14savvy | Leave a comment

iWork Appsのv10.2アップデートが公開される

Posted on 9月 23, 2020 by Takaaki Naganoya

AppleがKeynote/Pages/Numbersのv10.2アッップデートを公開しました。このv10.2から対象OSがmacOS 10.15以降になり、macOS 10.14では最新のKeynote v10.2を使えなくなったことになります。

Keynote v10.2のAppleScript系の機能の差分チェックを(sdefファイルベースで)行ってみたところ、iWorkアプリケーション中でKeynoteのみ機能追加されたことがわかりました。

Keynoteにムービー書き出し機能のAppleScriptオプション機能が追加される

exportコマンドのexport optionsで「movie codecs」と「movie framerates」の指定ができるように機能追加されています。

movie codecs enum
h.264 : H.264
AppleProRes422 : Apple ProRes 422
AppleProRes4444 : Apple ProRes 4444
AppleProRes422LT : Apple ProRes 422LT
AppleProRes422HQ : Apple ProRes 422HQ
AppleProRes422Proxy : Apple ProRes 422Proxy
HEVC : HEVC

movie framerates enum
FPS12 : 12 FPS
FPS2398 : 23.98 FPS
FPS24 : 24 FPS
FPS25 : 25 FPS
FPS2997 : 29.97 FPS
FPS30 : 30 FPS
FPS50 : 50 FPS
FPS5994 : 59.94 FPS
FPS60 : 60 FPS

風の噂によるとどうもARM Macはムービー書き出しが高速なようなので、そのあたりをアピールするためにもムービー書き出し系の機能の拡充は必要ということなのでしょう。

KeynoteのAppleScript用語辞書に構文確認をパスできないバグ持ち予約語が存在

同時に、「こんなんAppleScriptの処理系でコンパイル(構文確認)通るわけないやん、メーカーが何やってますのん?」という予約語がsdef内に書かれていることが一目でわかりました。

「h.264?」

この「h.264」の予約語はexportコマンドのexport optionsのmovie codecsのEnum内に書かれています。

        <enumeration name="movie codecs" code="Knmc">
            <enumerator name="h.264" code="Kmc1" description="H.264">
                <cocoa string-value="AVVideoCodecTypeH264" />
            </enumerator>

macOS 10.15.6上で確認したところ、見事に構文確認時にエラーになります。

Apple製のアプリケーションのAppleによるスクリプティング定義内容がまともに動きません。こうした事態は理解に苦しむものがあります。100%動作確認していないとしか思えません。

ここは、記号入りの予約語では言語処理系的に構文確認すらパスできないので、「h.264」ではなく記号を含まない「h264」ないし「H264」という予約語にすべきです。AppleScript系の機能を追加していただくのは前向きでよいと思いますが、メーカーとして一度も動作確認しないで機能をリリースするというのはいかがなものでしょう?

そんなところに凝っていないで、選択中のオブジェクトを取れる属性「selected objects」とか、テキストオブジェクトの縦書き制御属性「vertical」などをつけたほうが実用性があって助かります。機能追加自体はたいした作業ではありませんが、ぜひ動作確認した上でリリースしていただきたいところです。

AppleScript名:keynote movie export test
–Works with Keynote v10.2 or later
set aTagFile to ((path to desktop) as string) & "testOut.m4v"

tell application "Keynote"
  set exOpt to {compression factor:1.0, movie format:native size, class:export options}
  
–set exOpt to {compression factor:1.0, movie format:native size, movie codec:h.264, class:export options}–this cause error
  
export document 1 to file aTagFile as QuickTime movie with properties exOpt
  
end tell

★Click Here to Open This Script 

日頃からMac App Storeのレビューアーの血も涙もない(でも、ツッコミどころ満載の)リジェクトに遭っている身からすれば、こんなのリジェクト案件です。

個人的には信頼度の問題からmacOS 10.15は「パス」なので、macOS 11.0 Big SurがRelease時にコケないことを祈るのみです(メールが消えるとかいう話が一番OSの信頼度を下げる)。macOS 10.13, “Vista”という史上最悪・最低の大失敗をやらかして以来、「Release版のOSがBetaよりも低品質」という昨今のmacOS。10.13もBetaの時にはよかったのに、Release版で大崩壊を起こして見るも無残な姿に成り果てました。10.14もBetaの段階でGUI Scriptingの認証系でひどいバグがあって、「とても使えない」と判断。10.14.6まで待ってようやく手を出す気になったほど。

macOS 11.0, Big SurはBeta段階でも珍しく好印象で(GUIまわりの仕様はコロコロ変わるけど)、macOS 10.15みたいにBeta段階で「もう、これはダメ!」という話も聞きません(Relase時に紹介記事を書かなかったOSは10.15がはじめてです。10.15の崩壊度はひどかった)。macOS 11.0, Big Surには、macOS 10.13のような「Release版の大崩壊」を起こしてほしくないものです。

Posted in Bug sdef | Tagged 10.15savvy 11.0savvy Keynote Numbers Pages | Leave a comment

Kamenoko v1.1のMac Pro 2019バグ対策機能が効果を発揮

Posted on 7月 16, 2020 by Takaaki Naganoya

現在Mac App Storeで販売中のKamenoko v1.1には、Mac Pro 2019上でだけ症状が確認されているバグへの対策機能が盛り込まれています。

Mac Pro 2019は三角関数の簡単な計算を間違える「問題マシン」として認識しています(実機ないんで、細かい挙動はわかりません)。

「おそらくこう対策すれば回避できるはず」と想像された方法で機能を実装し、v1.1を動かしたMac Pro 2019ユーザーの知り合いから「大丈夫」との実機確認報告をいただきました。


▲Mac Pro 2019上でのみ報告されているHex Grid座標計算バグ(Kamenoko v1.0+macOS 10.15.5?)

Mac Pro 2019上でのみ、この6角形セルの座標計算でミスが生じることが報告されています。この座標計算はJavaScript Coreの機能をAppleScriptから呼び出して行なっているもので、このJavaScript Coreの関数演算で計算結果に誤差(ないし、想定外の高い計算精度)が発生。

このため、Kamenoko v1.1ではMac Pro 2019対策として各六角形の座標値をあらかじめ計算し、固定データとして保持して使用しています。内部的には、起動時に座標値をすべて計算してNSBezierPathを作ってキャッシュして(作成後の変更なしに)使っていたので、とくに処理フローが大幅に変わったわけではありません。


▲Mac Pro 2019上で動作しているKamenoko v1.1の想像図(実機ないんで)

この関数演算バグがMac Pro 2019上でのみ発生するものなのか、それともXeon搭載機で同様に発生するものなのかは未確認です。

Posted in Bug PRODUCTS | Tagged 10.13savvy 10.14savvy 10.15savvy 11.0savvy Kamenoko | Leave a comment

iWork Appがv10.1にアップデートし、Movie書き出しバグの修正とPDF書き出し属性を追加

Posted on 7月 10, 2020 by Takaaki Naganoya

iWorkアプリケーション(Keynote、Numbers、Pages)がアップデートされてv10.1になりました。対象はmacOS 10.14/10.15。

AppleScript系ではバグ修正1点と、機能追加が1点あります。

Keynoteのムービー書き出しオプション(native size)バグ修正

Keynote v10.0の際のアホなバグ(native size指定時にエラー)が修正されました。

AppleScript名:native sizeでムービー書き出し
set outFile to (path to desktop as string) & (do shell script "uuidgen") & ".m4v"

tell application "Keynote"
  tell front document
    export to file outFile as QuickTime movie with properties {class:export options, movie format:native size}
  end tell
end tell

★Click Here to Open This Script 

PDF書き出しオプション(include comments)を追加

また、3アプリケーション共通でPDF書き出し時に「include comments」オプションが指定できるようになりました。


▲include comments属性が追加された


▲Keynote書類に追加した「コメント」


▲KeynoteのGUI上で指定する「コメントを含める」チェックボックス


▲上がinclude comments:falseで書き出したPDF、下がinclude comments:trueで書き出したPDF

AppleScript名:Keynote書類からPDF書き出し v3(10.10対応)
— Created 2017-01-21 by Takaaki Naganoya
— Modified 2020-07-10 by Takaaki Naganoya
— 2017-2020 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

set tmpPath to (path to desktop) as string
set aRes to exportKeynoteDocToPDF(tmpPath)

–Keynote書類からPDF書き出し
on exportKeynoteDocToPDF(targFolderPath as string)
  
  
tell application "Keynote"
    set dCount to count every document
    
if dCount = 0 then
      return false
    end if
    
set aPath to file of document 1
  end tell
  
  
set curPath to (current application’s NSString’s stringWithString:(POSIX path of aPath))’s lastPathComponent()’s stringByDeletingPathExtension()’s stringByAppendingString:".pdf"
  
set outPath to (targFolderPath & curPath)
  
  
tell application "Keynote"
    –v10.10で追加されたinclude comments属性の指定を追加してみた
    
set anOpt to {class:export options, export style:IndividualSlides, all stages:false, skipped slides:true, PDF image quality:Best, include comments:false}
    
export document 1 to file outPath as PDF with properties anOpt
  end tell
  
  
return (outPath as alias)
  
end exportKeynoteDocToPDF

★Click Here to Open This Script 

iWorkアプリケーションのAppleScript系機能に望むこと

・slide上の選択中のオブジェクトを扱えるようにしてほしい(selected itemといった予約語で)
・縦書きテキストの制御機能がほしい(強引に作ったけど)
・TOCつきPDFが直接書き出せるように(自分で作ったけど)
・Pagesをなんとかして。レイアウトをScriptから再現できない

Posted in Bug PDF | Tagged 10.14savvy 10.15savvy 11.0savvy Keynote | Leave a comment

Mac Pro 2019でアプリケーションの計算結果にズレ?!

Posted on 5月 9, 2020 by Takaaki Naganoya

知り合いがMac App Storeで買ったKamenokoを、

Mac Pro 2019の一番下のモデル(+Pro Display XDR)にインストールしたところ、画面の描画がおかしいという報告を送ってくれました。


▲左:開発環境で描画したところ 右:Mac Pro 2019で描画したところ

開発環境はmacOS 10.14.6ですが、macOS 10.13.6およびmacOS 10.15.4やBeta版でも動作確認は行っていました。しかし、手元のどの環境でも、こんな結果にはなっていません。

この6角形の描画については、JavaScriptCoreを呼び出して三角関数の計算を行っています(毎回計算しているわけではなく、起動時に計算した内容をキャッシュして使っています)。この計算結果がXeonとCore i7/Core i5/Core i3で異なるのではないかという「仮説」を立てています。

また、これまでRetina(Hi-DPI)表示は2xのRetinaだったわけですが、Mac Pro 2019ではこれが違っており、描画がその影響を受けている可能性もあります(だったらウィンドウなどの描画も間違うはずなので、多分これはないかなー)。

ただ、いずれにせよMac Pro 2019実機で検証を行う環境が手元にないため、仮説の検証を行えない状態です。

MacScripter.net上で三角関数の計算結果について、同じ計算結果が得られないといった話をされたことがありますが「そんなバカな」と思っていました。もしも、その時の相手が使っていたマシンがXeon搭載機だった場合には、JavaScript Coreを呼び出して三角関数の計算を行った場合に、環境によっては結果が異なるという話になるのかも?

現段階ではなんともいえませんが、さすがにDTSにサポートを依頼すべき内容かもしれません、、、

Posted in Bug PRODUCTS | Tagged 10.15savvy | 1 Comment

iWork Apps Update v10.0

Posted on 4月 1, 2020 by Takaaki Naganoya

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的な変更の有無

■Keynote v10.0:2か所

■Pages v10.0:1か所

■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

★Click Here to Open This Script 

全言語的に普遍的な内容ではあるのですが、日本語ユーザー的には縦書き/横書きの設定属性値を持ってくれたほうがありがたいところです。たぶん、自分は使うことはないと思います。

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

★Click Here to Open This Script 

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

★Click Here to Open This Script 

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

★Click Here to Open This Script 

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

★Click Here to Open This Script 

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

★Click Here to Open This Script 

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

★Click Here to Open This Script 

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

★Click Here to Open This Script 

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

★Click Here to Open This Script 

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

★Click Here to Open This Script 

Posted in Bug news | Tagged 10.14savvy 10.15savvy Keynote Numbers Pages | 1 Comment

macOS 10.13以降、スクリプトエディタのヘルプが更新され続けて驚く

Posted on 12月 18, 2019 by Takaaki Naganoya

力が入っているのか抜けているのかわかりませんが、スクリプトエディタのヘルプがOSのメジャーバージョンアップごとに更新されているのを見つけて驚かされました。

 「スクリプトエディタヘルプ」(macOS High Sierra用)
 「スクリプトエディタユーザーガイド macOS Mojave用」
 「スクリプトエディタユーザーガイド macOS Catalina用」

などと、わざわざOSごとに更新され、日本語環境用に翻訳されています。ちょっと驚きました。

ただ、相変わらず内容は「は?」とか「えーー?」とかいう感想しか出てこないものなので、存在している以上の実質的な価値はありません。存在しないよりは数万倍よいのですが、「これを読んで使えるようにはならないだろー」という程度のものです。


▲macOS 10.13用スクリプトエディタユーザガイド。このScreen ShotのScriptは実際に動くので好感が持てるのですが、なぜかこれが次のOSから変更されています。単に「代わり映えしないから変更した」ぐらいの意図であればよいのですが、、、


▲macOS 10.14用スクリプトエディタユーザガイド


▲macOS 10.15用スクリプトエディタユーザガイド

冒頭から内容が、

「OS X 10.10 以降では、AppleScript に加え、スクリプト言語である JavaScript for Automation を使用してスクリプトを記述することができます。また、シェルスクリプトや、UserTalk などの他社製のスクリプト言語を使用してスクリプトを記述することもできます。」

とあり、「あたかもシェルスクリプトをOSA言語的に扱えるかのような間違った印象を与えてしまう」「UserTalk(Frontier)なんてもう誰も使っていないし、消滅して久しいぞ」といったツッコミを行なってしまうところですが、Apple社内の現場が内容のチェックをしないで秘伝のタレのように注ぎ足し注ぎ足しで更新しているだけだと痛感させられます。

内容は機械的に翻訳しているだけのようで、コンテクストメニューから呼び出せるApple純正のScriptはみんなローカライズされていない(事実)のに、ヘルプ内では名称などが日本語訳されて紹介されており、実際にコンテクストメニューを表示させると困惑させられること請け合いです。外注の翻訳会社のせいではなく、Apple側が何も指定しなかったので機械的に翻訳しただけでしょう。


▲macOS 10.15上のスクリプトエディタヘルプでは、コンテクストメニューの項目名が勝手に日本語訳されている。実物は英語なのに、、、、


▲実際にmacOS 10.15上のスクリプトエディタでコンテクストメニューを表示すると英語のまま

macOS標準搭載のコンテクストメニューScriptがあまりにも使えないので、全部捨てて入れ替えて使えるものを突っ込んだものが「Piyomaru Script Assistant」なわけですが、電子書籍のオマケとして付けたこのScriptもmacOS 10.13でいろいろ動かないものが出てきており、ちょうど機会があったので10.14/10.15用にアップデートしました(10.13対応はちょっとダメだと思います。バグの問題というよりも、絵文字の互換性がないので)。

CotEditor用のPowerPackの影響を受けて、そういう方向のScriptも突っ込んでいます。スクリプトエディタのコンテクストメニューから呼び出したAppleScriptから、スクリプトエディタのウィンドウをぐるぐる回してみようとしたら、ほとんど再描画されずに結果だけ表示されるという一幕もありました。

Posted in Bug | Tagged 10.13savvy 10.14savvy 10.15savvy Script Editor | Leave a comment

macOS 10.14にchoose fileのバグ?

Posted on 12月 13, 2019 by Takaaki Naganoya

macOS史上最低、どうしてあの状態でリリースしたのか理解に苦しむmacOS 10.13の後なので、どうしてもかなり贔屓目に見てしまうmacOS 10.14ですが、やはりバグはありました。

2019/12/13追記 デフォルト設定値の問題で、階層表示は行えることを確認しました。

choose file with showing package contents

このコマンドを実行した場合には、パッケージ内容を表示しつつパッケージ内のファイルを選択できるはずですが、macOS 10.14ではこれがパッケージ内のファイルは選択できるものの、階層表示できていません。こんなchoose file with showing package contentsの挙動なんて見たことがありません。


▲macOS 10.13.6上の動作


▲macOS 10.14.6上の動作。一応、バンドルを選択するとその内部のフォルダに移動することは可能だが、階層表示されない


▲macOS 10.15.2上の動作

追記 edama2さんから「こちらではそういうことはないよ?」というツッコミを送っていただきました。再度確認したところ、choose fileダイアログの項目分けの初期値がmacOS 10.14では「なし」ではなく「名前」になっているために、自分のデフォルト設定では階層表示されていなかったようです。


▲自分のmacOS 10.14.6環境の初期状態。項目分けが「名前」になっていた


▲自分のmacOS 10.14.6環境でも、項目分けを「なし」に変更すると階層表示された

Posted in Bug dialog file | Tagged 10.14savvy | Leave a comment

macOS 10.15.2でPDFViewでオープン中のPDFで発生したURLリンクバグが新たなバグを呼ぶ

Posted on 12月 11, 2019 by Takaaki Naganoya

macOS 10.15には、PDFViewでオープン中のPDFで、URLリンクをクリックして発生したURLイベントが正常にデコードされないというバグがあります。本日リリースされたmacOS 10.15.2アップデートでもまともに修正されていないため、その内容についての解説です。

# BugReporter経由でバグ報告ずみです。が、、、

macOS 10.15のPDFViewのバグ

macOS 10.15.0で観測されたこのバグは、URL自体がURLエンコードされたまま、デコードされずにアプリケーションに伝わるというものでした。httpなどのメジャーなURLスキームを持つURL以外のマイナーなもの、具体的にいえば「applescript://」URLスキームで失敗することを確認しています。

「applescript://」URLスキームは本Blog掲載のプログラムリストすべてに添付しているURLリンクで、プログラムリスト末尾のリンクをクリックすると内容がスクリプトエディタに転送される仕組みです。

つまり、WkWebViewなりWebViewなりの、WebView系のGUI部品から「applescript://」URLイベントが発生した場合には、macOS 10.15上でも正常に処理できています。

これが、PDFView上では正常に(従来のmacOSと同様には)動作していないというのがmacOS 10.15上のバグです。

macOS 10.15.2でバグが変質

では、macOS 10.15.2 Updateでこれが修正されたかといえば、

 ・まったくデコードされないでデータが転送される、という不具合はなくなった
 ・しかし、デコードの仕方に問題が残っている。3通りの反応が返ってくる、「頭の悪い修正」が行われた

  CASE 1:正常にデコードされて伝わる(内容はすべて伝わる)
  CASE 2:デコードされた内容が途中で途切れる
  CASE 3:何も伝わらない

CASE 1の反応が返ってくるものは毎回CASE 1の反応が返ります。同様に、CASE 2の反応が返ってくるものは毎回CASE 2。CASE 3も同様です。なにやら、URLデコードした文字列の内容に応じて「データが欠損する」という新たな不具合が発生するようです。

自助努力によるPDFViewのバグ回避は?

OSの基礎的な部分ではなく、PDFViewというバグ連発の部品で発生している状況です。Appleの社内は縦割り組織で、社員が他のチームにアクセスする権限はありません。そのため、コアOSチームとPDFViewのチーム(チーム名は具体的には知りません)が連携する可能性には期待できません。WebViewでは発生していないことから、PDFViewが単独で何かの実装を行なったときにバグを発生させたものと見ています。

macOS 10.15のPDFViewにおけるURLリンクのクリックで発生するバグを回避するために、自前で簡易PDFビューワーを作成しましたが、PDFView上でオープンしたPDF内のURLリンクをクリックした時点でデータが欠損(CASE 2、3)しているため、リンククリックから発生するイベントを横取りして何らかの処理を行なっても補えません。

Appleが従来どおりの実装を行わず、正常に動作しない不具合やバグばかり新たに作り出す理由はわかりませんが、Appleには不用意にバグを追加することはできても、「そのバグが何であるかを認識し、修正する能力がない」と考えたほうがよいでしょう。

CASE 2の「途中で途切れる」パターンについては、現在表示中のページ(currentPage=単独ページはScripting Bridgeのバグにより取得できないので、見開きページがどれかという判定に)上のすべてのURLリンクを取得し、デコードした内容をすべて取り出して前方一致検索で該当すると思われる内容をスクリプトエディタに転送することは不可能ではありません。

不可能ではないものの、途中で途切れたデータを単なる前方一致検索するだけでは同一のものが複数検出される可能性もあり、ユーザーに対して「あなたがクリックした内容は以下のうちのどれですか?」と間抜けな問い合わせを行う必要が発生してしまいます。

CASE 3についてはお手上げです。何かがクリックされたことしかわかりません。「PDF上のURLリンクのクリックを受信する」という動作には一切期待しないほうがよさそうです。

PDFView上のリンククリック挙動修正に期待できない

PDF上のURLリンクをクリックするとmacOS 10.15のバグに遭遇してしまうので、「applescript://」URLをクリックしても別の機能にフォワードしたほうがよいでしょう。

PDFViewで表示中のPDFの見開きページがどこかはわかるので、そのページ範囲にある「applescript://」URLリンクをすべて取り出し、その内容もデコードして、すべてスクリプトエディタに転送するのがよいでしょう。

最初のバグ状態よりも状況が悪化しているような気もしますが、どんなもんなんでしょう?

Posted in Bug URL | Tagged 10.15savvy PDFView | Leave a comment

macOS 10.15上のPhotos.app経由でインポートした写真のファイル名が大文字に強制変更される

Posted on 12月 3, 2019 by Takaaki Naganoya

macOS 10.15は毎日新たな(よくない方の)発見があって驚かされます。そんなmacOS 10.15上のPhotos.appでインポートした写真のファイル名に含まれる英小文字がすべて英大文字に変更されるというバグが報告されています。

macOS 10.14.6上のPhotos.app経由で同じ写真をインポートすると、iCloud経由でシンクロされてmacOS 10.15.1上のPhotos.appに配信されてもファイル名はオリジナルのままです。

Posted in Bug | Tagged 10.15savvy Photos | Leave a comment

macOS標準装備のAppleScript専用補助アプリケーション「Image Events」がデフォルトではファイルにアクセスできない設定に

Posted on 12月 1, 2019 by Takaaki Naganoya

macOSには、GUIをもたないAppleScript専用の補助アプリケーションが標準装備されていますが、macOS 10.15になって正常に(期待通りに)動作しない状態でリリースされているので注意が必要というお話です。

macOSには、「●●Scripting」といったClassic Mac OSから引き継いだツール群と、「●●Events」といったMac OS X移行時に搭載されたAppleScriptからの呼び出し専用のツール群が、/System/Library/CoreServicesフォルダに入っています。

  10.4 10.5 10.6 10.7 10.8 10.9 10.10 10.11 10.12 10.13 10.14 10.15 11.0
ColorSyncScripting ⬛︎ ⬛︎            
Database Events ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎
Digital Hub Scripting ⬛︎ ⬛︎            
FontSync Scripting ⬛︎ ⬛︎            
Image Events ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ★ ★
Keychain Scripting ⬛︎ ⬛︎ ⬛︎          
System Events ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎
URL Access Scripting ⬛︎ ⬛︎ ⬛︎          

▲「最新事情がわかるAppleScript 10大最新技術 Ver.2.0」より抜粋(36ページ掲載)、最新OSに合わせて改定

最新版のmacOS 10.15でもSystem Events、Image Events、Database Eventsの3つが残っており、System Eventsはよく使われています。

Image Eventsはごくまれに、Database Eventsに至ってはほぼ実戦で利用したことがありませんが、存在していることは確認しています。

そんなImage Eventsが、macOS 10.15上でデフォルト設定ではユーザー指定の画像ファイルにアクセスできなくなっていることが確認されています。

システム環境設定の「セキュリティとプライバシー」>「セキュリティ」>「フルディスクアクセス」にImage Eventsを登録すればアクセスできるようにはなりますが、「セキュリティ強化」の美名のもとに機能の自家中毒を起こしている状態といえるでしょう。

一方、Database Eventsではそんなことはなく、Database Events経由で作成したデータベースに問題なくアクセスできますし、Database Eventsの唯一にして最大の機能である「AppleScriptのフィルタ参照でデータベースのしぼりこみ検索を行う」機能も健在です(それしかできないので)。

AppleScriptによる画像処理は、ICCプロファイルを重視してAdobe Photoshopで行うか、RGB画像をスピーディーにCocoa Frameworkで処理するかの方向に二分されており、Image Eventsで行うような基礎的な画像処理はCocoa Frameworkで肩代わりされる方向にあります。Image Eventsは入門者向けのなんちゃって画像処理レベルで用いられるものであり、個人的にはほとんど利用していません。事情を知らない入門者がハマる落とし穴が新しく1つ作られたといったところでしょうか。


▲openコマンドの引数はfile(実際にはalias)と書かれているが、furlで渡さないとオープンされないImage Events


▲SQLiteラッパーで、素朴すぎて機能がまったく不明だったDatabase Events。まさかフィルタ参照で絞り込みを行う専用ツールだったとは(ソート命令も検索命令もない謎仕様)

Posted in Bug Security | Tagged 10.15savvy Database Events Image Events | 2 Comments

Appleがいまだに直さない致命的なPDFViewのバグに対処v2

Posted on 11月 22, 2019 by Takaaki Naganoya

macOS 10.13のBetaの時にはなかったのに、Release版がバグだらけでリリース。PDFViewについて多大なる被害を受けております。PDFViewをScripting Bridge経由で使うと、macOS 10.14も10.15も状況は同じです。きちんと動かないので、仕様と言い切ることは難しいところでしょう。未修正のバグが放置されているという状況です。

Developper Supportに報告しても返答も何もないので、PDFViewのScripting Bridgeまわりはバグだらけのまま直すつもりもないのでしょう。Xcode上でプログラムを組みだすと、腹の立つことのオンパレードです。

AppleのDevelopperライセンスの延長時期がやってくると、日頃からバグだらけでOSをリリースするわバグは直さないわで、嫌がらせを受け続けているのになんでこれを契約延長しなくてはならないのか理解に苦しみます。

Apple系のMailing Listでは主流ともいえるCocoa-Dev ML上でもAppleのあり方に疑問を呈したり文句を(ていねいなお言葉で)述べる投稿がここ数週間(macOS 10.15のリリース以降)激増している今日このごろです。

いまいちどPDFViewまわりを確認してみると、PDFViewのcurrentPageを取得できない未修正の特大バグに続いて、goToPreviousPage、goToNextPageも効きません。つまり、現在表示中のページの取得も、前後ページへの移動もできないという状況です。


▲まともにオブジェクトを返してこないcurrentPage

とりあえず、Xcode上でヘッダーファイル「PDFView.h」を確認していると、currentPageのかわりになりそうなものを見つけました。それが、visiblePages。PDFView上で表示中のページを(複数)返してくるわけで、単ページ表示時にはなんとかこれが使えるかも? ということで試してみました。

–> Download pdfviewAgainstAppleBug (Xcode Project)


▲currentPageのかわりに使えそうなvisiblePages。こっちは機能している

これが使えたので応用し、かなり遠回りな処理にはなりますが、表示中のページの前後移動もできるようにしてみました。

ただ、PDFViewをもとにしたクリックスルーなPDFViewを使ってみると、いまひとつ想定どおりに動作してくれません。まだいろいろ試してみる必要がありそうです。
→ クリックスルーPDFViewは結局動作するようになり、Double PDF v2に実装できました

これらのほか、PDFViewはページ変更時のイベントやドキュメント変更時のイベントが送信されないなど、苦労させられまくりです。

Posted in Bug GUI PDF | Tagged 10.14savvy 10.15savvy PDFView | Leave a comment

個人的に腹がたったmacOS/AppleScriptのバグ・ワースト10

Posted on 11月 2, 2019 by Takaaki Naganoya

歴代のmacOS自体やAppleScriptの処理系で腹が立ったバグについてまとめてみましょう。腹の立ったOSのバージョンでいえばmacOS 10.13が歴代でダントツの1位ですが、10.15もリリースされる前から「これはひどい」「10.13と同じぐらいひどい」とわかっていたので、10.14.6を選択。

10個にしぼりこむことがたいへんに難しかったですし、未修正の問題などもあり非常に腹立たしいかぎりです。たぶん、ワースト3以下は僅差だと思います。

Mac OS X 10.3でディスク暗号化機能の「FileVault」が登場したときには、野生のカンで「これは使ってはいけない機能だ」と様子見していたところ、見事に「FileVaultをオンにしたホームディレクトリ下のファイルにAppleScriptからアクセスできないバグがある」ことが発覚。以来、これをオンにしたことがありません(最近でも、macOS 10.15でFileVaultをオンにしているとMac mini 2018に接続したeGPUから出力できないとか。なかなか信用できません)。

1位:Mac OS X 10.3 “is in”演算子が動かないバグ(AppleScript)【修正済み】

こんな基礎的な演算子でバグ作られた日には何もできません。とくに、is in演算子はデータの「ゆらぎ吸収」処理に使いまくっているので、WWDCにハリセン持って担当者をブン殴りに行こうかと真剣に悩みました。

2位:macOS 10.13〜 PDFViewのcurrentPageを取得するとおかしな値が返ってくるバグ(Bug Reportしても直らない。殺意を覚える)(Scripting Bridge)【未修正】

これのせいで、自分のMac App Storeにアップしたアプリケーションが動かなくなりましたわ。ひどい。ひどすぎる。しかも、ちゃんとDevelopper Supportに連絡しても返事ひとつなく、修正もされません。Developer Support、仕事してませんよね。

# Developper Support、ほんっとになんにもしない。あの部署、何のためにあるんだろう? 今度、インシデントを消費して「じゃあ逆に、君たちは何をしてくれやがる部署ですか? 後学のために教えてくださいませ」と聞いてみようか

3位:OS X 10.9 ntpのシンクロが狂うバグ(OS)【修正済み】

当時、Mac App Storeに出す時計アプリを作ってたんですが、これのせいで時計が合わずに冷や汗かかされていました。まさかOSのバグとは、、、、おかげでアプリはお蔵入りしてしまいました。

4位:macOS 10.12〜 Input Methodのバグか何かで、ファイル名に不可視文字が混入するケースがあり、混入するとファイル名の文字列に追記するとエラーに(OS、日本語環境)【未修正】

これは、レポートもしていますし、波及範囲が広いので大問題なのですが、直っていませんね。認識すらしていないんじゃないでしょうか。

5位:Mac OS X 10.0〜10.4 File Pathの文字エンコーディングが変で日本語ファイルパスの扱いに慎重になる必要があったバグ(OS、AppleScript)【修正済み】

ファイルパスをas stringしてからas unicode textでcastさせられたりと、煮湯を飲まされていました。10.5で根本的に修正されたものの、10.5で根本的な修正を行うまで、問題が放置されっぱなし(こういうの多いなー)。

6位:Mac OS X 10.0〜10.4 display dialogで日本語表示を行うさいに、国際化対応アプリケーションへのtellブロック内で実行しないと文字化けするバグ(OS、AppleScript)【修正済み】

さすがに困って担当者に問い合わせて回避方法は教えてもらいましたが、そういう付け焼き刃的な回避方法を知らせる前につぶしてほしいと感じるものでした。

7位:Mac OS X 10.4、Script MenuがSystem Eventsの管轄下にあったため、Script Menuから呼び出したScript内でSystem Eventsの機能を呼び出すと実行が止まるバグ(AppleScript)【修正済み】

Mail.appのメッセージ仕分けBot Scriptがこれにヒットしてひどい目に遭いました。毎日使っているものなので、とても大きなダメージを喰らいました。Mac OS X 10.5で修正されました。

8位:OS X 10.10、Cocoa Objectsの実数値をASにcastすると小数点以下が無視されるバグ(Scripting Bridge)【修正済み】

これもひどかったですね。Shaneが対処のためのFrameworkやライブラリを用意しなかったら、いまほどCocoaの機能が利用されていなかったと思います。このバグはmacOS 10.11で修正されました。

9位:macOS 10.12、AppleScript Dropletにドロップしたファイルで、ファイル拡張属性(Xattr)のcom.apple.quarantineがついている場合には処理されないバグ(放置、未修正)(OS、AppleScript)【未修正】

無責任さここに極まれりといったところです。Core OSとAppleScriptの処理系との間で仕様のすりあわせが行われておらず、チーム間でぜんぜん連携が取れていない(というよりも、チーム間で垣根を超えて折衝する権限がないっぽい)、現在のAppleの社内体勢そのものに問題があるんでしょう。これも、対処方法が一応は確立しているものの、たまりません。

10位:macOS 10.13、NSRectがレコードではなくリストで返ってくるように(告知なしで)変更される(Scripting Bridge)【未修正】

なんなんでしょうね、コレ。作業量が増えて腹が立つんですが、個人的にはSwiftのアップデートに合わせてAPI側の仕様を変えてしまったんじゃないんかとにらんでいます。

Posted in Bug | Leave a comment

macOS 10.15でPDFView経由のURLイベントが正しくデコードされないバグ

Posted on 10月 31, 2019 by Takaaki Naganoya

macOS 10.15には上から下まで機能不全やバグが存在しており、とても常用に堪える仕上がりではありません。2019年10月に1年かけてのPublic β公開がはじまったという印象です(今回、Beta段階ではまともに動かず動作確認にすらなりませんでした)。

そんなmacOS 10.15に激烈なバグを発見。PDFView経由で発生したURLイベントが正しくデコードされないというバグです。httpやhttpsといったURL Eventでは発生しないものの、「applescript://」スキームのURLイベントで発生しています。

–> View movie of macOS 10.15 URL event bug

このため、Piyomaru Softwareが刊行している既存の電子ブックのScript LinkもmacOS 10.15環境では正しくスクリプトエディタに転送されません。現在作成中の新刊作成途中にmacOS 10.15のバグに直面。


▲macOS 10.15のPDFView上でapplescript://リンク入りのURLをクリックすると、内容が正しくデコードされずにスクリプトエディタに転送される

Skimで「applescript://」リンク入りのPDFをブラウズし、スクリプトリンクをクリックすると、Script Editorに正しく転送されません(URLデコード不良)。

macOS 10.15のバグなのかSkimのバグなのかを検証するために、わざわざPDFViewを貼り付けた最低限度のPDFビューワーアプリケーションを(AppleScriptで)作成し、PDFViewからのURLリンククリックに対してはSkimと同様の結果になる(=macOS 10.15側のバグ)であることを確認しています。

じゃあ、macOS 10.15のSafariでapplescript:// URL Link(本ブログ掲載のプログラムリスト末尾のリンク)はどうなのか? といえば、こちらは正しくSafari→デフォルトのScriptエディタ(スクリプトエディタとかScript Debuggerとか)に転送されます。問題はありません。Betaの時からさんざんクリックして確認していました。

なので、PDF中のapplescript://リンクの内容を正しくデコードするPDFリーダー「PiyoReader」を作ってみました。AppleがmacOS 10.15のこのバグを修正するのか(少なくとも10.16まで直らないと思います)不明ですが、これに対処するためのPDFリーダーです。

Mac App Storeに出す苦労を考えると、BOOTHあたりでオンライン販売するかといったところでしょうか(Piyomaru Software内で相談中)。
→ 急遽作ったので、売り物になるほどの仕上がりではなく(だいたい、1日で仕上げてもSkimを超える出来になりません)、フリー配布するしかないんじゃないの? というところです。

Posted in Bug | Tagged 10.15savvy | 6 Comments

iWork Appsがアップデート、表の新規作成時バグは未修正

Posted on 10月 2, 2019 by Takaaki Naganoya

iWork Apps(Keynote、Pages、Numbers)がアップデートし、Keynote v9.2、Pages v8.2、Numbers v6.2になりました。

KeynoteとNumbersで表の新規作成時に特定のセル数でエラーになる(ほとんどのケースでエラーになる)バグが修正されていないことを確認しました。Pagesは未確認です。

Pages v8.2で表の新規作成を試してみたところ、Pagesでは行数や桁数を指定しても問題なく作成できました。

tell application "Pages"
  tell front document
    tell page 1
      make new table at beginning with properties {row count:20, column count:5, header row count:2, header column count:2, position:{60, 80}}
    end tell
  end tell
end tell

★Click Here to Open This Script 

Numbersでimageのposition X座標による制御ができないバグはNumbers v6.2で修正されたことを確認しました。

Posted in Bug | Tagged Keynote Numbers Pages | Leave a comment

MacDownのopenコマンドで.mdファイルをオープンできない問題

Posted on 9月 18, 2019 by Takaaki Naganoya

メイン環境をmacOS 10.14に移行してみたら、MarkdownエディタのMacDownがopenコマンドでファイルをオープンできなくなっていました。かなり困ります。

ただ、この問題には思い当たる節がありました。MacDownのopenコマンドは仕様がおかしく、「バグっぽい実装でたまたま動いていたものが、OS側の動作が変わって動かなくなった」ものと推測。

MacDownのopenコマンドはfileのlistを要求してくるので、わざわざ、

set aFile to choose file of type {"net.daringfireball.markdown"}

tell application "MacDown"
	open {aFile}
end tell

のような記述が求められました。アプリケーション側の実装に合わせて書くのがScripterなので、仕方なくこういう記述をしてきましたが、納得はしていませんでした。

MacDownのsdefファイルを調べてみたところ、openコマンドのパラメータにlist=”yes”の記述があったので、これを削除。

<command name="open" code="aevtodoc" description="Open a document.">
 <direct-parameter description="The file to be opened.">
  <type type="file"/>
 </direct-parameter>
</command>

のように手元のMacDownのsdefの内容を書き換えてみたら、

set aFile to choose file of type {"net.daringfireball.markdown"}

tell application "MacDown"
	open aFile
end tell

リストで渡さないように書くと、macOS 10.14上でも問題なくAppleScriptから.mdファイルのオープンを実行できるようになりました。

Posted in Bug Markdown | Tagged 10.14savvy MacDown | Leave a comment

Numbersにも画期的なバグ〜特定のセルサイズの表を作るとエラーに

Posted on 8月 31, 2019 by Takaaki Naganoya

Numbers v6.1に、Keynote v9.1と同様の表作成バグが存在していることを確認しました。

Numbers v6.2でも修正されていないことを確認しました。

特定行数の表の新規作成を作成するとエラーになるという、「わざとやってないと出ないエラー」です。

それとも、何か型変換のミスとかそういう程度のひくーーいバグを作ったんじゃないかと。

とりあえず、サイズを指定せずにtableを作成して、あとから行数とカラム数を変更してもエラーになるので、回避方法がほぼありません(ーー;

データをCSV書き出ししておいてCSVをNumbersでオープンして新規に作成されたドキュメント上の表をコピーしてくる、ぐらいの回避策は考えないでもありませんが、、、、、何のためにコードを書いているのかよくわからなくなります(ーー;

探してみると、r/oではない属性値のオブジェクトに数値を突っ込んでもGUI側に反映されないなど、パラメータがいまひとつ正しく解釈されていない雰囲気が濃厚です。たとえば、active sheet上にimageを配置して、AppleScript側からpositionを変更することでY座標については制御できるものの、X座標の変更が行えていません、、、、

→ imageのpositionでX座標が制御できないバグについては、Numbers v6.2で修正されたことを確認しました

tell application "Numbers"
  tell front document
    tell active sheet
      tell image 1
        set position to {0, 0}
      end tell
    end tell
  end tell
end tell

★Click Here to Open This Script 

AppleScript名:Numbers書類上に表を新規作成.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2019/08/31
—
–  Copyright © 2019 jp.piyomarusoft, All Rights Reserved
—

use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

set aWidth to 3
set aHeight to 10

tell application "Numbers"
  set aDoc to make new document
  
tell aDoc
    tell active sheet
      set tRes to make new table with properties {row count:aHeight, column count:aWidth}
    end tell
  end tell
end tell

★Click Here to Open This Script 

Posted in Bug | Tagged 10.13savvy 10.14savvy Numbers | 3 Comments

Keynoteに画期的なバグ〜特定のセルサイズの表を作るとエラーに

Posted on 8月 9, 2019 by Takaaki Naganoya

Keynote v9.1+macOS 10.14.6上でAppleScriptのプログラムを組んでいたら「行数が正しくない」といったエラーになるので、徹底的に調べてみました。

Keynote v9.2でも修正されていないことを確認しました。
Keynote v9.2.1でも修正されていないことを確認しました。


▲5行の表を作ろうとするとエラー。4行でも6行でも大丈夫なのに5行の表を作るとエラー

tell application "Keynote"
  tell front document
    tell current slide
      set aTable to make new table with properties {header column count:0, header row count:0, row count:5, column count:3}

    end tell
  end tell
end tell

★Click Here to Open This Script 

すると、なんと「特定のセルサイズ(行数、列数)の表を作成させた場合にのみエラーになる」ことが判明。

make new table with propertiesコマンドで行/列を指定して作成するとエラーになる組み合わせは以下のとおり。

{{xNum:2, yNum:5}, {xNum:3, yNum:5}, {xNum:4, yNum:2}, {xNum:4, yNum:3}, {xNum:4, yNum:4}, {xNum:4, yNum:5}, {xNum:4, yNum:6}, {xNum:4, yNum:7}, {xNum:4, yNum:8}, {xNum:4, yNum:9}, {xNum:4, yNum:10}, {xNum:4, yNum:11}, {xNum:4, yNum:12}, {xNum:4, yNum:13}, {xNum:4, yNum:14}, {xNum:4, yNum:15}, {xNum:4, yNum:16}, {xNum:4, yNum:17}, {xNum:4, yNum:18}, {xNum:4, yNum:19}, {xNum:4, yNum:20}, {xNum:4, yNum:21}, {xNum:4, yNum:22}, {xNum:4, yNum:23}, {xNum:4, yNum:24}, {xNum:4, yNum:25}, {xNum:4, yNum:26}, {xNum:4, yNum:27}, {xNum:4, yNum:28}, {xNum:4, yNum:29}, {xNum:4, yNum:30}, {xNum:5, yNum:5}, {xNum:6, yNum:5}, {xNum:7, yNum:5}, {xNum:8, yNum:5}, {xNum:9, yNum:5}, {xNum:10, yNum:5}}

さらに、上記サイズでエラー発生時に追試を行い、安全なサイズの表(3×3)を作成したあとにリサイズを行ってもエラーになるのが、

{xNum:3, yNum:5}, {xNum:4, yNum:3}

の組み合わせであるようです。なんでやねーん、と関西人でもないのにツッコンでしまいました。いやー、作ろうとしないとできないバグなんでは?

特定サイズの表をAppleScript側から作らせないようにしているのでしょうか? とても不思議なパターンのバグです。思わず「わざとなのか?」と思ってしまったほどです。何かのイースターエッグなんでしょうか、とても不愉快なイースターエッグですが。

Core i5のマシンでも追試を行ってみて、同様にエラーが再現することを確認しました。Xeonでのみ発生するエラーということではないようです(それはそれでちょっと見てみたい)。

追試で、Keynote v8.1+macOS 10.12.6上で同じことをやってみたら、とくにエラーにはなりませんでした。

AppleScript名:keynoteTableTest.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2019/08/09
—
–  Copyright © 2019 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.4" — Yosemite (10.10) or later,
use framework "Foundation"
use scripting additions

set erList1 to {}
set erList2 to {}

tell application "Keynote"
  make new document
end tell

repeat with x from 2 to 10
  repeat with y from 2 to 30
    tell application "Keynote"
      tell front document
        tell current slide
          delete every table
          
set errorF to false
          
          
–First trial (make new table command)
          
try
            set aTable to make new table with properties {header column count:0, header row count:0, row count:y, column count:x}
          on error
            set errorF to true
            
set the end of erList1 to {xNum:x, yNum:y}
          end try
          
          
if errorF = true then
            –Second trial (Make safe size table and change its size after generation)
            
delete every table
            
set aTable to make new table with properties {header column count:0, header row count:0, row count:3, column count:3}
            
            
try
              set column count of aTable to y
              
set row count of aTable to x
            on error
              set the end of erList2 to {xNum:x, yNum:y}
            end try
            
          end if
          
        end tell
      end tell
    end tell
  end repeat
end repeat

return {erList1, erList2}

★Click Here to Open This Script 

Posted in Bug | Tagged 10.14savvy Keynote | 3 Comments

Post navigation

  • Older posts
  • Newer posts

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • 開発機としてM2 Mac miniが来たのでガチレビュー
  • macOS 15, Sequoia
  • 指定のWordファイルをPDFに書き出す
  • Pages本執筆中に、2つの書類モード切り替えに気がついた
  • Numbersで選択範囲のセルの前後の空白を削除
  • メキシカンハットの描画
  • Pixelmator Pro v3.6.4でAppleScriptからの操作時の挙動に違和感が
  • AdobeがInDesign v19.4からPOSIX pathを採用
  • AppleScriptによる並列処理
  • Safariで「プロファイル」機能を使うとAppleScriptの処理に影響
  • Cocoa Scripting Course 続刊計画
  • macOS 14.xでScript Menuの実行速度が大幅に下がるバグ
  • AppleScript入門③AppleScriptを使った「自動化」とは?
  • macOS 15でも変化したText to Speech環境
  • Keynote/Pagesで選択中の表カラムの幅を均等割
  • デフォルトインストールされたフォント名を取得するAppleScript
  • macOS 15 リモートApple Eventsにバグ?
  • AppleScript入門① AppleScriptってなんだろう?
  • macOS 14で変更になったOSバージョン取得APIの返り値
  • Keynoteで2階層のスライドのタイトルをまとめてテキスト化

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (438) 11.0savvy (283) 12.0savvy (212) 13.0savvy (194) 14.0savvy (147) 15.0savvy (132) CotEditor (66) Finder (51) iTunes (19) Keynote (117) NSAlert (61) NSArray (51) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (53) NSDictionary (28) NSFileManager (23) NSFont (21) NSImage (41) NSJSONSerialization (21) NSMutableArray (63) NSMutableDictionary (22) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (119) NSURL (98) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (76) Pages (55) Safari (44) Script Editor (27) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Beginner
  • Benchmark
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • check sum
  • Clipboard
  • Cocoa-AppleScript Applet
  • Code Sign
  • Color
  • Custom Class
  • date
  • dialog
  • diff
  • drive
  • Droplet
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Localize
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • parallel processing
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC