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

タグ: 11.0savvy

Pixelmator Proで指定の画像を複数の3D LUTを用いてカラー調整して画像書き出し

Posted on 5月 2, 2021 by Takaaki Naganoya

Pixelmator Pro v2.0.8で追加された3D LUT(Look Up Table)によるカラー調整機能。これを用いて、複数の3D LUTファイルによるカラー調整を行い、それぞれ3D LUTファイルのファイル名を反映させて書き出すAppleScriptです。

3D LUTファイルは、探してみるとあちこちで配布されており、割とありふれた存在のようです。実際にフリー配布されている3D LUTファイルをダウンロードしてきて、1つのフォルダに入れておき、指定画像に対してカラー調整を行わせてみました。

–> [全てフリー!] シネマティックなルックになる10のLUTsを紹介します!!

フォルダに入っている3D LUTファイルをすべてループで処理するので、3D LUTファイル100個でも1,000個でも処理できますし、ちょっと書き換えれば複数の画像に対してそれぞれすべての3D LUTファイルによる色調整を実行するようにもできます。

AppleScript名:指定の画像を複数の3D LUTでカラー調整して画像書き出し.scpt
—
–  Created by: Takaaki Naganoya
–  Created on: 2020/05/02
—
–  Copyright © 2020 Piyomaru Software, All Rights Reserved
—
use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

property |NSURL| : a reference to current application’s |NSURL|
property NSArray : a reference to current application’s NSArray
property NSPredicate : a reference to current application’s NSPredicate
property NSURLTypeIdentifierKey : a reference to current application’s NSURLTypeIdentifierKey

–処理対象の画像を選択
set anImage to choose file of type {"public.image"} default location (path to pictures folder) with prompt "Select Proc Image"
set imgParent to getParentPathFromAlias(anImage) of me

–3D LUTファイルを入れてあるフォルダを選択
set lutFolder to choose folder with prompt "Select 3D LUT folder"

–Filter 3D LUT (.cube) files only
tell application "Finder"
  set fList to (every file of folder lutFolder) as alias list
end tell

set lutList to getFilesWithUTI("com.blackmagicdesign.cube", fList) of me

–指定の画像ファイルをオープン
tell application "Pixelmator Pro"
  close every document saving no
  
open anImage
end tell

–Main Loop
repeat with i in lutList
  set aLut to contents of i
  
  
–ファイルパスの加工処理
  
set newImgName to ((current application’s NSString’s stringWithString:(POSIX path of aLut))’s lastPathComponent()’s stringByDeletingPathExtension()’s stringByAppendingString:".jpg") as string
  
set newImgFullPath to (imgParent as string) & "/" & newImgName
  
set newImgFile to POSIX file newImgFullPath
  
  
tell application "Pixelmator Pro"
    activate
    
tell front document
      tell color adjustments of first layer –ここだけ、ネスティングを分割するとエラーになる
        set its custom lut to aLut
      end tell
      
      
export to newImgFullPath as JPEG with properties {compression factor:0.5, bits per channel:8}
      
undo
    end tell
  end tell
end repeat

–後片付け
tell application "Pixelmator Pro"
  tell front document
    close without saving
  end tell
end tell

on getParentPathFromAlias(aliasPath)
  set aPath to POSIX path of aliasPath
  
set pathString to current application’s NSString’s stringWithString:aPath
  
set newPath to pathString’s stringByDeletingLastPathComponent()
  
return newPath
end getParentPathFromAlias

on getFilesWithUTI(acceptUTI, aliasList)
  set aList to {}
  
  
repeat with i in aliasList
    set anAlias to i as alias
    
set aUTI to getUTIfromPath(anAlias) of me
    
if aUTI is not equal to missing value then
      set uRes to filterUTIList({aUTI}, acceptUTI) of me
      
      
if uRes is not equal to {} then
        set the end of aList to contents of i
      end if
    end if
  end repeat
  
  
return aList
end getFilesWithUTI

–AliasからUTIを求める
on getUTIfromPath(anAlias)
  set aPOSIXpath to POSIX path of anAlias
  
set aURL to current application’s |NSURL|’s fileURLWithPath:aPOSIXpath
  
if aURL = missing value then return missing value
  
set aRes to aURL’s resourceValuesForKeys:{current application’s NSURLTypeIdentifierKey} |error|:(missing value)
  
if aRes = missing value then return missing value
  
return (aRes’s NSURLTypeIdentifierKey) as string
end getUTIfromPath

–UTIリストが指定UTIに含まれているかどうか演算を行う
on filterUTIList(aUTIList, aUTIstr)
  set anArray to NSArray’s arrayWithArray:aUTIList
  
set aPred to NSPredicate’s predicateWithFormat_("SELF UTI-CONFORMS-TO %@", aUTIstr)
  
set bRes to (anArray’s filteredArrayUsingPredicate:aPred) as list
  
return bRes
end filterUTIList

★Click Here to Open This Script 

Posted in Color file File path Image | Tagged 10.14savvy 10.15savvy 11.0savvy Pixelmator Pro | Leave a comment

Pixelmator Pro がv2.0.8で3D LUTをサポート

Posted on 5月 2, 2021 by Takaaki Naganoya

Pixelmator Proがv2.0.5からv2.0.8にバージョンアップして、3D LUT(Look Up Table)をサポートしました。

自分は知らなかったのですが、映像や画像の処理時に、色の明度カーブをテーブルで置き換えることで、色の調子を整えたり、「●●っぽい色(光)使い」のデータを他の映像/画像データに統一的に適用させたりと、カラーフィルタ的なものをプログラムではなくデータで表現したもの、と理解しました。カラーコレクション系の技術というか手法で、調べてみるとnVidiaとかAdobeとか、そういう会社が関わってきたようで。

3D LUTのファイル(拡張子「.cube」)のUTIを確認したところ、”com.blackmagicdesign.cube”。ビデオ編集関連のハードウェア/ソフトウェアでさまざまな製品を世に送り出しているBlackMagic Designが仕様の策定を行っているのでしょうか。

この3D LUTをPixelmator Proがサポート。42個のLUTをアプリケーション内で持っているほか、外部の3D LUTファイルを指定することも、Pixelmator書類から3D LUTを生成して書き出すこともできるようです。

AppleScript用語辞書的には、「export as lut」コマンドを新設したことと、「color adjustments」コマンドに「custom lut」を指定するオプションを追加しています。

AppleScript名:現在オープン中の写真に指定のLUTを反映させる.scpt
–Pixelmator Pro用語辞書内に掲載されているサンプルを、読みやすいように書き換えた
set lutFile to choose file with prompt "Choose the LUT you’d like to apply to the layer:" of type {"com.blackmagicdesign.cube"}

tell application "Pixelmator Pro"
  tell front document
    tell color adjustments of first layer –ここだけ、ネスティングを分割するとエラーになる
      set its custom lut to lutFile
    end tell
  end tell
end tell

★Click Here to Open This Script 

Githubを調べてみたら、Objective-Cで書かれた「CocoaLUT」というプロジェクトを見つけました。ずいぶん前から(7年以上前から)存在していたようで、自分は寡聞にしてこれを知りませんでした。ひととおり機能に目を通してみると、3D LUTのファイルを読み込んでNSImageにカラー変更を適用するといった処理が行えるようです。AppleScriptからダイレクトにCocoaLUTを呼び出して色変更できそうです。

一応、Pixelmator Proの「謝辞」を見てみたところ、「CocoaLUT」に関する記載はなかったので、Pixelmator Proでこのプロジェクトの成果物を利用しているといったことはなさそうです。

YouTubeにアップしたムービーをご覧いただければわかるように、Pixelmator Proで3D LUTによる色置換処理を行ってみると、とても高速です。

Posted in Color Image | Tagged 10.14savvy 10.15savvy 11.0savvy Pixelmator Pro | Leave a comment

Music v1.1.1+macOS 11.4で怪奇現象

Posted on 5月 1, 2021 by Takaaki Naganoya

macOS 11.4betaとMusicで動作確認を行っていたところ、怪奇現象に直面しました。

アプリケーションの名称を取得するという、たいへんにおかわいらしいレベルのAppleScriptを書いて実行したところ、propertiesでまとめて属性値を取得したときと、個別にnameを取得したときで、処理結果が異なります。

propertiesでまとめて取得するとローカライズされたアプリケーション名「ミュージック」が返ってきて、nameで個別に取得すると「Music」が返ってきます。

下手クソなのか? おもいっきり下手くそが開発してるのか??? なんか、学生レベルの人間が担当しているように見えます。

Posted in Bug | Tagged 11.0savvy Music | Leave a comment

ボツ・お蔵入りした本

Posted on 5月 1, 2021 by Takaaki Naganoya

これまでに、企画してはボツになったりお蔵入りした本は山のように。ここに挙げた本も、その後再検討して形になったものもあれば、塩漬けコースに入ったままのものもあります。

当初、Cocoa Scripting本はえほんシリーズの1つとして、ものすごく入門的に難易度を下げた本にする計画がありました。実際に設計してみると、内容は薄いわ分量は少ないわ、その割に誰でもわかるような内容ではないわで、なかなか辛いものがありました。

この本はボツになりましたが、のちにCocoa Scripting Courseで図を中心に説明するという、ボツになった元の本のコンセプトが引き継がれています(分量を減らすとろくなことにならないので、必要な量を書くことに)。

Cocoa Scripting本については、文章で説明するバージョンも試作してみたのですが、書いているうちにAppleへの恨みつらみを書きなぐっていたり、読んでみると書いた自分でも眠くなったりで大変でした。

NumbersとPagesを連携させる本です。最終的にはNumbers上の住所録をもとにPagesのレイアウト上にデータを差し込んでPDF書き出しするとか、プリンタで印刷するといったレベルを考えていました。これも、えほんシリーズの1冊として考えていたので、分量を抑えるのが大変でした。分量を抑えることは、とても大変です。

ボイスコマンドで音声認識によってAppleScriptを実行する本です。企画内容は悪くないのですが、どの程度のテーマをこなせると読者が納得するのかが設定しにくいところです。もう少し、どのあたりで初心者が詰まるかを調査できると「思いつき」から「企画」のレベルに昇華できるのではないでしょうか。

これは思いつきレベルの内容ですね。企画を出す場合には、1冊分だけでなくシリーズ構成で数冊分を出すことになりますが、その中の1つです。QuickTime Player 7であれば説明する意義と分量があるのですが、現行のQuickTime Playerだとできることが少なくて、なかなか困ります。この本で予定していた内容はCocoa Scripting Course本のNSImage編あたりで反映されることになるでしょう。

えほんシリーズの一環として企画していた頃のFileMaker Pro本です。画面図を中心に少ないページ数で構成すると、「言及しないこと」が多すぎて不満を抱えてしまうことでしょう。結局、えほんシリーズではなく「徹底解説シリーズ」にチェンジして、必要な内容はひととおり説明する方向に変更しました。また、オリジナルの企画どおり画面図を多用してわかりやすく説明するというコンセプトは維持されることに。

iPhoneからMac上のAppleScriptを操作するEntanglerやEventScriptsの解説本です。企画自体は悪くないと思うのですが、レベル設定がなかなか難しい内容です。付録のスクリプトをただiPhoneから実行できるようにする、というあたりが落としどころだと思いますが、スクリプトも何も知らない人に説明するのは大変ですし、スクリプトを知っている人に説明するといってもなかなかレベル設定が困難です(コピペでしか書けない人から、自分ですべて書ける人まで、Scripterといってもさまざまです)。

えほんシリーズのCotEditor本です。説明すべき内容が多くないので、1冊分の分量が多くありません。基礎だけだと32ページにもならないでしょう。なので、企画としては他のScriptableなエディタもまとめて説明するような本になることでしょう。単に企画を練り回している段階ではあるものの、ちょっといい感じになった気がします。

表紙だけ作ってみてなんとなく満足してしまいましたが、Pixelmator Proの操作がよくわからないので(簡単な編集とかAppleScriptから操作してまとまった画像処理を行わせるための部品としてしか使っていない)、「Photoshopで行う操作がPixelmator Proだとどう操作するか、わかるといいのに」と考え、こんな本を表紙だけ作ってみました。自分としては読んでみたいですね。

Posted in Books PRODUCTS | Tagged 10.14savvy 10.15savvy 11.0savvy | Leave a comment

macOS 11.3、11.4betaの変更点?

Posted on 4月 29, 2021 by Takaaki Naganoya

printコマンドでプリンタを指定して出力をする機能がmacOS 10.14から10.15、11.xまですべて利かなかったのが、11.3だか11.4Betaで直っていますね。

# 11.3がリリースされた直後に11.4Betaが降ってきて、どちらで修正されたのか自分には判断できません。少なくとも11.4Beta上ではプリンタ指定ができています

黒歴史入り確実なこのバグ、とっとと「なかったこと」にしたかったのか、さすがにド派手な機能だったからなのか、直っていますね。もしかしたらこれまでにも、細かくバグを出していたのかもしれませんが、ソフトウェア的にプリンタ名を取得する手段が提供されてこなかったので、そのバグが「見えていない」だけだったのかもしれません。

AppleScript Engineering Teamも、AppleScript Studioのお守りから解放されたので、前向きな機能の実装にもパワーを割いてほしいところです。個人的には、Blocks構文が必要なCocoa APIを呼べるようにしてほしいですわ。

Posted in Bug | Tagged 11.0savvy | Leave a comment

Keynoteの表の背景色がない箇所を白く塗る

Posted on 4月 29, 2021 by Takaaki Naganoya

Keynoteでオープン中の最前面の書類の現在表示中のスライド(ページ)の上にある表の背景色が塗られていないセルを白く塗るAppleScriptです。

一応、非同期処理モードを使うことでスピードを稼いでいますが、この処理は速くありません。非同期処理モードの宣言部分を外した姿が本当のスピードです。

全部一括で塗るとかRangeを指定して塗るといった処理ができるとスピードを稼げると思いますが、「辻褄合わせ」とか「例外」的な処理なので、(Apple側の対応は)あまり期待できないでしょう。


▲処理前


▲処理後

AppleScript名:Keynoteの表の背景色がない箇所を白く塗る
tell application "Keynote"
  tell front document
    tell current slide
      tell table 1
        set cList to every cell
        
repeat with i in cList
          tell i
            set tmpColor to background color
            
if tmpColor = missing value then
              ignoring application responses
                set background color to {65535, 65535, 65535}
              end ignoring
            end if
          end tell
        end repeat
      end tell
    end tell
  end tell
end tell

★Click Here to Open This Script 

Posted in Color list | Tagged 10.14savvy 10.15savvy 11.0savvy Keynote | Leave a comment

Keynoteで現在表示中のスライド上にあるすべての表のカラム幅を自動調整

Posted on 4月 28, 2021 by Takaaki Naganoya

Keynoteで現在オープン中の書類の表示中のスライド(ページ)に存在する表のカラム幅を自動調整するAppleScriptです。


▲スライド上のカラム幅が不揃いの表を….


▲1列目はそのままの幅で、残りは均等割で調整します

AppleScript名:Keynoteで現在表示中のスライド上にあるすべての表のカラム幅を自動調整
— Created 2017-10-06 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

tell application "Keynote"
  tell front document
    tell current slide
      set tList to every table
      
      
repeat with i in tList
        set j to contents of i
        
prepareCoumnWidthInATable(j) of me
      end repeat
    end tell
  end tell
end tell

on prepareCoumnWidthInATable(aTable)
  tell application "Keynote"
    tell aTable
      set cCount to count every column
      
set cWidth to width of every column
      
set aWidth to width –table width
      
      
set aveWidth to (aWidth – (first item of cWidth)) / (cCount – 1)
      
      
tell columns 2 thru cCount
        set width to aveWidth
      end tell
    end tell
  end tell
end prepareCoumnWidthInATable

★Click Here to Open This Script 

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

PDFにファイルサイズ縮小のQuartzフィルタをかけて出力

Posted on 4月 27, 2021 by Takaaki Naganoya

PDFに対して、Quartzフィルタをかけてファイルサイズを縮小する(はずの)AppleScriptです。

macOS標準搭載のPreview.appやColorSyncユーティリティを使うことで、PDFに対して各種Quartzフィルタを適用して加工できるようになっています。


▲/System/Library/Filtersに入っているQuartzフィルタ

フィルタする対象は「book20_Cocoa Scripting Course #03_v1.0_sampler.pdf」(16.7MB)です。

縮小した結果は22.2MB。オリジナルよりも大きくなってしまいました(実施前から分かっていたので、驚きはありません)。このテストはメインマシンのmacOS 10.14.6環境で実施しましたが、macOS 11.4betaの環境で実行してみたら22.1MB。オリジナルよりも大きくなるという意味では大差ありませんでした。

サンプルはKeynote書類から書き出したPDFで、AppleScriptによりTOCを添付してあるものです。Cocoa Scripting Course #3のリリース後も「もうちょっとPDF小さくなるんでは?」と試しています。Adobe Acrobatで縮小することでかなり小さくできることはわかっているものの、Acrobatとは縁を切りたい気持ちでいっぱいです。

色をいじくるフィルタについては問題なく動作しています。

AppleScript名:PDFにファイルサイズ縮小のQuartzフィルタをかけて出力.scptd
— Created 2014-12-26 by Takaaki Naganoya
— Modified 2021-04-27 by Takaaki Naganoya
— 2021 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "Quartz"
use framework "QuartzCore"

property QuartzFilter : a reference to current application’s QuartzFilter
property NSDictionary : a reference to current application’s NSDictionary
property PDFDocument : a reference to current application’s PDFDocument

property |NSURL| : a reference to current application’s |NSURL|

set aHFSPath to (choose file of type {"com.adobe.pdf"} with prompt "フィルタするPDFを指定してください")
set aPOSIX to POSIX path of aHFSPath
set aURL to (|NSURL|’s fileURLWithPath:aPOSIX)

set bHFSPath to (choose file name with prompt "出力先を指定してください")
set bPOSIX to POSIX path of bHFSPath

set origPDFdoc to PDFDocument’s alloc()’s initWithURL:aURL

set aFilterURL to |NSURL|’s fileURLWithPath:"/System/Library/Filters/Reduce File Size.qfilter"
set aQFilter to QuartzFilter’s quartzFilterWithURL:aFilterURL

set aDict to NSDictionary’s dictionaryWithObjects:{aQFilter} forKeys:{"QuartzFilter"}

origPDFdoc’s writeToFile:(bPOSIX) withOptions:(aDict)

★Click Here to Open This Script 

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

Piyo Menu Clicker for Stream Deckβ版を配布開始

Posted on 4月 26, 2021 by Takaaki Naganoya

ファイル名にクリックしたいアプリケーション名+メニュー名を書いておくと、そのメニューをクリックする「Piyo Menu Clicker for Stream Deck」のベータ版の配布を開始しました。

→ 配布ページ(@BOOTH)

β版のため2021/5/31までの試用期限を設けています。

旧称Dynamic Menu Clickerの機能強化版で、クリック先をファイル名から取得。メニュー項目の指定にワイルドカードが使えるなど、トグル式のメニュー項目にも対応しています。

Posted in PRODUCTS | Tagged 10.14savvy 10.15savvy 11.0savvy Streamdeck | Leave a comment

Pagesで最前面の書類中のテキストアイテムと本文テキストで文字サイズが最大のもののテキストを求める

Posted on 4月 12, 2021 by Takaaki Naganoya

Pagesの最前面の書類中のテキストアイテム(ボックス)中のテキストと、本文テキスト(body text)で文字サイズが最大のものを取得するAppleScriptです。Pagesで書いた書類からタイトルらしきものを抽出するために書いたものです。

まず、前提条件を書いておかなければなりません。

一般的なDTPアプリケーション(InDesignとか)やワープロであれば、書式スタイルが「タイトル」のテキストを求めるといった処理になりますが、Pagesにはその機能がありません。正確にいえば、PagesのAppleScript用語辞書にはその機能がありません。そこで、「各文書のタイトルには文章中で最大の文字サイズを設定しておく」というルールを自分に課して、文字サイズが最大のものを取得すればタイトル文字列が取得できるように決めておきました。

テキストアイテム中の最大サイズの文字を抽出し、そのあとで本文テキスト(body text)の最大サイズの文字を抽出、両者の間で最大サイズのものを求めて返します。

目下、実際に本を書き出すのに「指定フォルダ以下のPages、Markdown、Word Document、PDFをすべてPDF化してファイル名順でソートして結合」するAppleScriptを作って利用しているのですが、これにTOCつきPDFを書き出す機能を結合できるといいなーと思って書いています。

Keynote書類からTOCつきPDFを書き出すAppleScriptは実戦レベルのものを作って運用しており、これを用いて電子書籍を作っています(逆をいえば、このAppleScriptの開発に成功したのでバカスカ電子書籍を作れているわけで)。

TOCつきPDFをPagesなどの書類群から書き出せるようになれば、PagesやMarkdownで書いた書籍も自動でTOCつきPDFを生成できるわけで、PagesやMarkdown系の書類で作った書籍も手軽に生成できるようになるはずです。

AppleScript名:pagesTitleLib.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2020/06/12
–  Modified on: 2021/04/10
—
–  Copyright © 2020 Piyomaru Software, All Rights Reserved
—

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

property NSString : a reference to current application’s NSString
property NSCharacterSet : a reference to current application’s NSCharacterSet
property NSMutableArray : a reference to current application’s NSMutableArray

set aRes to pagesTitleGetter() of me
–> "商標、著作権について"

on pagesTitleGetter()
  set tiList to getLargestTextItem() of me –Text Item
  
set bList to getLargestBodyText() of me –Body Text
  
  
if tiList = {} and bList = {} then return ""
  
if tiList = {} and bList ≠ {} then set allList to bList
  
if tiList ≠ {} and bList = {} then set allList to tiList
  
  
set allList to tiList & bList
  
–> {{10.0, "Macrovector – jp.freepik.com によって作成された business ベクトル"}, {16.0, "商標、著作権について"}}
  
  
set allRes to returnMaxItem(allList, 1, 2) of me
  
set bRes to repChar(allRes, string id 10, "") of me
  
set bRes to repChar(bRes, string id 13, "") of me
  
  
return bRes
end pagesTitleGetter

–2D Listのうち、指定アイテム目の最大値をもとめ、その指定アイテムを返す
on returnMaxItem(aList, seekItemNum, retItemNum)
  script spd
    property aList : {}
  end script
  
  
set (aList of spd) to aList
  
  
set tmpMax to 0
  
set tmpItem to 0
  
set aCount to 1
  
repeat with i in (aList of spd)
    set tmpV to item seekItemNum of i
    
if tmpV > tmpMax then
      copy tmpV to tmpMax
      
set tmpItem to aCount
    end if
    
    
set aCount to aCount + 1
  end repeat
  
return item retItemNum of item tmpItem of (aList of spd)
end returnMaxItem

–Pagesの最大文字サイズのText Item中の最大テキストを返す
on getLargestTextItem()
  set rList to {}
  
  
tell application "Pages"
    if not running then return {}
    
if every document = {} then return {}
    
tell front document
      set tmpList to every text item
      
if length of tmpList = 0 then return –テキストアイテムがない場合には処理終了
      
      
set szList to size of object text of every text item
      
if szList is not equal to {} then
        set aMaxPoint to calcMax(szList) of me –最大の文字サイズを取得
        
        
–文字サイズが最大のテキストアイテムを抽出
        
–set resList to object text of every text item whose size of object text is aMaxPoint
        
set resList to every text item whose size of object text is aMaxPoint
        
        
repeat with ii in resList
          –指定のtet item内の文字のサイズをすべて取得
          
set cList to size of every character of object text of ii
          
          
–文字サイズのうち最大のものを取得
          
set cMax to calcMax(cList) of me
          
          
–最大サイズの文字のみ抽出
          
set cRes to (every character of object text of ii whose size = cMax)
          
set cText to cRes as string
          
          
–取得したテキストの前後の改行などを削除してクリーンアップ
          
set c2Text to cleanUpTextFromHEadAndTail(cText) of me
          
          
set c2Text to repChar(c2Text, string id 10, "") of me
          
set c2Text to repChar(c2Text, string id 13, "") of me
          
          
–何か結果が得られていたら、リストに加える
          
if c2Text is not equal to "" then
            set the end of rList to {cMax, c2Text}
          end if
        end repeat
      end if
    end tell
  end tell
  
  
return rList
  
–> {{10.0, "Macrovector – jp.freepik.com によって作成された business ベクトル"}}
end getLargestTextItem

on getLargestBodyText()
  set esList to {}
  
  
tell application "Pages"
    if not running then return {}
    
if every document = {} then return {}
    
tell front document
      set sCount to count every section
      
repeat with i from 1 to sCount
        tell section sCount
          set sList to size of every character of body text
          
if sList is not equal to {} then
            set cMax to calcMax(sList) of me
            
            
–最大サイズの文字のみ抽出
            
set cRes to (every character of body text of it whose size = cMax)
            
set cText to cRes as string
            
            
–取得したテキストの前後の改行などを削除してクリーンアップ
            
set c2Text to cleanUpTextFromHEadAndTail(cText) of me
            
            
set c2Text to repChar(c2Text, string id 10, "") of me
            
set c2Text to repChar(c2Text, string id 13, "") of me
            
            
            
set tmpList to {cMax, c2Text}
            
            
set the end of esList to tmpList
          end if
        end tell
      end repeat
    end tell
  end tell
  
return esList
end getLargestBodyText

on repChar(origText as string, targStr as string, repStr as string)
  set {txdl, AppleScript’s text item delimiters} to {AppleScript’s text item delimiters, targStr}
  
set temp to text items of origText
  
set AppleScript’s text item delimiters to repStr
  
set res to temp as text
  
set AppleScript’s text item delimiters to txdl
  
return res
end repChar

on calcMax(aList as list)
  set nArray to (NSMutableArray’s arrayWithArray:aList)
  
set maxRes to (nArray’s valueForKeyPath:"@max.self")’s doubleValue()
  
return maxRes
end calcMax

on cleanUpTextFromHEadAndTail(aStr)
  set aString to NSString’s stringWithString:aStr
  
set bStr to (aString’s stringByTrimmingCharactersInSet:(NSCharacterSet’s whitespaceAndNewlineCharacterSet()))
  
return bStr as string
end cleanUpTextFromHEadAndTail

★Click Here to Open This Script 

Posted in list | Tagged 10.14savvy 10.15savvy 11.0savvy Pages | 1 Comment

最前面の書類中のテキストアイテムの文字サイズが最大のものの中に入っている最大のテキストを求める

Posted on 4月 10, 2021 by Takaaki Naganoya

以前に作った、Pagesのページ中のテキストアイテムのうち最大文字サイズのものを抽出するAppleScriptの強化版です。その最大文字サイズの文字を含むテキストアイテムの中から、さらに最大文字サイズのテキストを取り出します。

タイトル部分(と思われるテキストアイテム)から、さらに最大文字サイズのものだけを抽出。

用途は、Blog新アーカイブ本の作成時に書類からタイトルを取り出す処理を行えないか実験してみたものです。このページだけ、この例外のデータだったのですが、あとから考えれば文字サイズの小さなサブタイトル的なものは別のテキストアイテム(ボックス)に分ければよかっただろうかと。

AppleScript名:最前面の書類中のテキストアイテムの文字サイズが最大のものの中に入っている最大のテキストを求める.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2020/06/12
–  Modified on: 2021/04/10
—
–  Copyright © 2020 Piyomaru Software, All Rights Reserved
—

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

property NSString : a reference to current application’s NSString
property NSCharacterSet : a reference to current application’s NSCharacterSet
property NSMutableArray : a reference to current application’s NSMutableArray

set rList to {}

tell application "Pages"
  tell front document
    set tmpList to every text item
    
if length of tmpList = 0 then return –テキストアイテムがない場合には処理終了
    
    
set szList to size of object text of every text item
    
set aMaxPoint to calcMax(szList) of me –最大の文字サイズを取得
    
    
–文字サイズが最大のテキストアイテムを抽出
    
–set resList to object text of every text item whose size of object text is aMaxPoint
    
set resList to every text item whose size of object text is aMaxPoint
    
    
repeat with ii in resList
      –指定のtet item内の文字のサイズをすべて取得
      
set cList to size of every character of object text of ii
      
      
–文字サイズのうち最大のものを取得
      
set cMax to calcMax(cList) of me
      
      
–最大サイズの文字のみ抽出
      
set cRes to (every character of object text of ii whose size = cMax)
      
set cText to cRes as string
      
      
–取得したテキストの前後の改行などを削除してクリーンアップ
      
set c2Text to cleanUpTextFromHEadAndTail(cText) of me
      
      
–何か結果が得られていたら、リストに加える
      
if c2Text is not equal to "" then
        set the end of rList to c2Text
      end if
    end repeat
  end tell
end tell

return rList
–> {"Shane StanleyのScript Toolの変遷"}

on calcMax(aList as list)
  set nArray to (NSMutableArray’s arrayWithArray:aList)
  
set maxRes to (nArray’s valueForKeyPath:"@max.self")’s doubleValue()
  
return maxRes
end calcMax

on cleanUpTextFromHEadAndTail(aStr)
  set aString to NSString’s stringWithString:aStr
  
set bStr to (aString’s stringByTrimmingCharactersInSet:(NSCharacterSet’s whitespaceAndNewlineCharacterSet()))
  
return bStr as string
end cleanUpTextFromHEadAndTail

★Click Here to Open This Script 

Posted in Text | Tagged 10.14savvy 10.15savvy 11.0savvy Pages | Leave a comment

アウトプットするとインプットもある?

Posted on 4月 5, 2021 by Takaaki Naganoya

いまからはじめるプログラミング②を書いていていろいろ新情報を見つけてしまいました。

すでにご存知の方もいるかもしれないので、「この俺がぁぁぁぁ、世界でぇぇぇぇ、一番に見つけたァァァァァァ!!!」と主張するわけではありません。「そういえばそうだよね」ぐらいの印象のものです。

長年deprecatedだと表示されてきたけど、そろそろそんな気がするinfo forコマンド

誰もがファイル情報の確認時に雑に使っているStandardAdditions.osax中の「info for」コマンド。長年「deprecated」扱いになっていました。

そんなにdeprecated感はなかったのですが、macOS 11上で使ってみるとその遅さにめまいがしました。

System Eventsでfileのpropertyを取得したほうがはるかに高速で、さすがにもうinfo forを用例で引き合いに出すのは無理があるなと感じました(②巻のリリース直前に気づいて書き直した次第です)。

ファイル処理は完全にCocoa系の機能を使ったほうが速くて強力なので、最近はまじめに深掘りしていなかったのですが、入門者向け本を書いてみて気になりました。入門者向け本にCocoaのコードはさすがに書けません、、、、

as alias listはないけれど……

Finderからまとめてfileを取得する際に、「as alias list」という用語が使えます。通常はfileなりdocumentなりのオブジェクトをlistで返してくるFinderですが、aliasで結果がほしい(ファイルパス情報だけほしい)というケースが多々あります。

それに応えるかたちで「as alias list」が、たしかMac OS X 10.4あたりで新設されました(selectionからファイルをとってくる処理が、えっらく簡単になった記憶があります)。

その後、Mac OS X 10.6あたりで(?)System Eventsにファイル関連のSuitesが新設され、「あー、こりゃFinderのないOS環境、ワンチャンくるかも?」と怯えていたのですが、さすがにFinderを廃止すると反発が大きいという判断をしたのでしょうか、「FinderレスMac OS X環境」という世界観はやってきませんでした(iOSあたりはそういう感じですけれども)。

で、System Eventsにファイル関連のSuitesができても「これ本気で使わせたり移行させたりするつもりがあるんか?」という雰囲気で、Finder上で行っていたファイル処理をそのまま移し替えられる様子ではなく、速度面でも腰が抜けるほど速いわけでもなく、Appleのエンジニアリングチームが何を考えているのか意図を測りかねていました。

指定フォルダ内のfile一覧をaliasで取得しようとして、

set aFol to choose folder
tell application "Finder"
	set aRes to every file of aFol
end tell

という処理を、

set aFol to choose folder
tell application "System Events"
	set aRes to every file of aFol
end tell

と、書き換えて、ふとaliasで欲しいと思って、

set aFol to choose folder
tell application "System Events"
	set aRes to every file of aFol as alias list
end tell

などと書いてみてもエラーに(知ってたけど)。そこで、冗談半分に、

set aFol to choose folder
tell application "System Events"
	set aRes to every alias of aFol
end tell

と、書いてみたら………期待どおりの動作に。aliasのlistで結果が返ってきます。

log on/log offってあったよね? ねえ、あったって言って

ログ(履歴)出力用のlogコマンド、そのログ出力を許可/禁止するlog on/log offコマンドがClassic Mac OSの時代には存在していま……

魔が差して、Classic Mac OSエミュレータ「SheepShaver」を起動してClassic Mac OS 8.6上で確認してみたら……

あっれえええええ???
log on/log offコマンドが存在していないよ?

現行のmacOSで確認されている(でも、AppleScript Language Guideに書かれていない)「start log」「stop log」を書いてみたら……通りますね。

当時流通していた何かのOSAXで提供されていたコマンドだったのか、ちょっとショックです。

駄目押しで、1999年に作成された「AppleScript Language Guide」で「logコマンド」まわりを確認してみたら「start log」「stop log」がある!!!

自分の「薄い資料集」を書き換える必要がありますね。
まー、気づいたのでヨシ!(よくない)

われながら、よくもまあこれだけド派手に間違ったもので。修正方法もいろいろ考えなくてはなりませんね。

なんといいますか、現在では現役ではないプラットフォーム(Classic MacOS)に関する言及の部分なので、しれっと「そんなことはなかったよ」という顔をして修正するのもアリなんですが、個人的にショックです(FileMaker選手権で落ちたときよりは大きくないですが)。

しばし放置しつつ、様子を見てみましょう、、、、
→ 相談したら、「誰も気にしてないので直せばいい」とのこと。直しておきました。すでに購入された方は再度購入ページからダウンロードしてください。

Posted in news | Tagged 10.14savvy 10.15savvy 11.0savvy | 2 Comments

Macとアップルスクリプトで学ぶ いまからはじめるプログラミング②

Posted on 4月 5, 2021 by Takaaki Naganoya

Piyomaru Softwareがはじめて刊行した入門者向け本「Macとアップルスクリプトで学ぶ いまからはじめるプログラミング」の続刊である「同 ②」を刊行しました(全34ページ)。期間限定で156ページほどの最新版のAppleScriptコマンドリファレンスその他いろいろなんやかんやの「薄い本」がつきます。

→ 販売ページ

# 既刊本の①巻のおまけもv1.1からv1.2にアップデートしておきました。オマケにエラーコード表を追加しています。お買い上げの方は購入ページからダウンロード可能です

ほかに、新規企画で「ヤバイAppleScript ベスト10」という本の企画が立ち上がりました。まだ企画段階ですが、企画が固まれば出せることでしょう(気楽で安全でためになる読み物本です)。

ほかにも、「泣けるAppleScriptベスト10」という企画も出たものの、こちらはさすがに無理だという結論になりました。泣かされたことならあるのですが、さすがに泣かせるようなものは無理です。

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

「Macとアップルスクリプトで学ぶ いまからはじめるプログラミング①」アップデート

Posted on 4月 1, 2021 by Takaaki Naganoya

Piyomaru Softwareがはじめて刊行した入門者向け本「Macとアップルスクリプトで学ぶ いまからはじめるプログラミング①」(全30ページ)をv1.1にアップデートしました。

本体:30ページ → 33ページ
オマケ:150ページ(体裁その他、いろいろ微調整。ページから表がはみ出していた箇所など全体的に修正)

購入ページから再ダウンロードを行なっていただけますよう、お願いいたします。

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

「Macとアップルスクリプトで学ぶ いまからはじめるプログラミング①」オマケアップデート予定

Posted on 3月 31, 2021 by Takaaki Naganoya

Piyomaru Softwareがはじめて刊行した入門者向け本「Macとアップルスクリプトで学ぶ いまからはじめるプログラミング①」(全30ページ)ですが、これには期間限定で150ページほどの最新版のAppleScriptコマンドリファレンスその他いろいろなんやかんやがつきます。

ほんの、150ページほどの薄い本です。期間限定です(いつまでとは言いませんが)。「こっちが本体だろ?!」という指摘はしてはいけないことになっています。

macOS 11.xの状況などを反映させた最新の状況を反映させたコマンドリファレンスですが、一部に体裁上の問題があったので、近日中にアップデートを行います。表の行の高さが狭かったとか、いろいろです。

→ じっくり読み直してチェックしたら、いろいろよくない点や足りない表記があったので、書き換えています。

Posted in Books PRODUCTS | Tagged 10.14savvy 10.15savvy 11.0savvy | Leave a comment

Keynote v11.0.1がリリースされる

Posted on 3月 31, 2021 by Takaaki Naganoya

Keynoteがv11.0からv11.0.1にアップデートされました。

AppleScript用語辞書(sdef)の差分をとって確認してみたところ、とくに変更点は見つかりません。

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

電子書籍「Cocoa Scripting Course Volume #2 NSArray」を発売

Posted on 3月 30, 2021 by Takaaki Naganoya

eSeminor: Cocoa Scripting Course Volume #2 NSArray

Cocoa Scripting本「Cocoa Scripting Course #2 NSArray」の販売を開始しました(通称:Cocoa本2)。

ページ数:245ページ(うち、Vol.2独立部分 94ページ 2021/3/30現在)
フォーマット:PDF+Zipアーカイブ(791ファイル)
特別特典:
Script Debuggerの15%割引購入コード入り
購入後3か月まで、本書の内容で理解できない箇所について3か所まで補足説明
理解度確認テストで合格した方に修了証明書を発行

→ Cocoa Scripting Course #2
→ Cocoa Scripting Course #2 (お試し版)

内容:

macOSのAPIであるCocoaをAppleScriptから利用し、macOSの持つ強力な機能をアプリケーションの補助なしに直接呼び出せる「Cocoa Scripting」は、日々の業務やデータ処理に、たいへん強力な武器になります。

この、Cocoa Scriptingについてはとくに日本語の書籍が存在しておらず、これまでは「Xcodeの使い方、GUIの作り方、各メソッドの使い方….」といった、体系がまったく異なるObjective-Cの入門書で断片的に情報を得ることしかできませんでした。

Vol.2では、NSArray/NSMutableArrayを解説。AppleScriptのlist型変数に該当するオブジェクトですが、ソート能力が強力で高速。さまざまな抽出機能を持っているため、いままで巨大な配列を扱うためだけにデータベースを併用していたような機能が、Cocoa Scriptingの導入で他のデータベースの手助けなしに実現できます。基礎的なサンプルから高度な使い方までていねいに解説。実際に巨大な配列をlist型変数とNSArrayで作成して作成時間やメモリ消費サイズなどを計測したうえでグラフ化して比較しています。

また、本書は「AppleScriptの穴」掲載AppleScriptのカテゴリ別アーカイブ集ともなっており、本書にはNSArrayなど配列処理を行うサンプルScriptをはじめ有用なAppleScriptのファイルを大量に添付しています。

続刊予定:

eSeminor: Cocoa Scripting Course Volume #1 NSString (Basic object to know Cocoa API)
eSeminor: Cocoa Scripting Course Volume #2 NSArray(Most valuable API to use Cocoa with AppleScript to sort data)
eSeminor: Cocoa Scripting Course Volume #3 NSDictionary (Key object to access various other APIs)
eSeminor: Cocoa Scripting Course Volume #4 NSURL (Cloud API Scripting)
eSeminor: Cocoa Scripting Course Volume #5 NSImage (image conversion and filtering)
eSeminor: Cocoa Scripting Course Volume #6 PDFKit (PDF Processing)
eSeminor: Cocoa Scripting Course Volume #7 NSAttributedString (Attributed string and HTMLs)
eSeminor: Cocoa Scripting Course Volume #8 NSFileManager (File processing)
eSeminor: Cocoa Scripting Course Volume #9 Webkit (WebView Scripting)
eSeminor: Cocoa Scripting Course Volume #10 System hardware & software Information

Posted in Books news PRODUCTS | Tagged 10.14savvy 10.15savvy 11.0savvy | Leave a comment

入門者向け本「Macとアップルスクリプトで学ぶ いまからはじめるプログラミング①」発売

Posted on 3月 30, 2021 by Takaaki Naganoya

入門者向け本はかねてからのPiyomaru Softwareの懸案事項でした。「AppleScriptえほんシリーズ」を出してはいますが、AppleScriptそのものの入門書というのは出していませんでした。

入門書というのは、いざ書いてみると上級者向けの本より難しいと感じます。例え話でたとえても嘘が多く入ってしまいますし、「変数という箱があって….」という説明も、実際に読んでみると「なんのことやらわからない」ことに。

なので、ある操作を行いたいんだけど、どうやったらいいのか分からない…というストーリーを作って、それに基づいてじょじょにレベルアップしていくという流れで説明しています。

ページ数30ページ、価格1,000円。いまなら期間限定で150ページほどの薄いコマンドリファレンスなどの別冊資料集がついてきます。発売です。

→ 正式版の販売ページ
→ お試し版のページ

Posted in Books news PRODUCTS | Tagged 10.14savvy 10.15savvy 11.0savvy | Leave a comment

画面スナップショット超解像バッチ処理 v1

Posted on 3月 25, 2021 by Takaaki Naganoya

Pixelmator Proの機能「ML Super Resolution」をAppleScriptから呼び出して、指定フォルダ内の画像をすべて超解像処理を行って、機械学習モデルをもとに解像度2倍化を行った画像を別フォルダに書き出すAppleScriptです。

超解像処理を行う対象は、別に画面のスナップショット画像でなくてもよいのですが、効果がわかりやすい用途です。

Keynoteに画面スナップショット画像を貼り付けていたときに、拡大倍率が上がると解像度が足りずに荒くなってしまいました。Retina環境で画面のスナップショットを取ると、けっこう綺麗に拡大できるのですが、等倍表示しかできない(&画面表示解像度を落とすことで2x Retina解像度で画面キャプチャ可能)環境なので、ちょっと困りました。


▲macOS 11.0、見た目の悪さで使う気が失せるはじめてのmacOS。12.0ではもう少しなんとかしてほしい。とくに、このダイアログ。ダイアログと見分けのつかないウィンドウ。ファイル保存ダイアログとかも

そこで、Pixelmator Proで画像のML Super Resolution機能(超解像機能)を用いてソフトウェアの力で画面スナップショット画像を高解像度化してみました。これが予想を超えていい感じだったので、指定フォルダ以下の画像をすべて処理するようにAppleScriptで処理してみました。

–> Download pixelmatorMLSuperResol(Script Bundle with libraries)

ML Super Resolution処理は自分の使っているIntel Mac(MacBook Pro 10,1)には荷の重い処理でささいな画像でも数秒かかりますが、おそらくApple Silicon搭載Macだと瞬殺でしょう。Core MLの処理が段違いに速いので。


▲オリジナル画像(左)、超解像処理を行なった画像(右)


▲オリジナル画像と超解像処理を行なった画像のファイルサイズの違い

本リストは実際にAppleScriptで開発を行う際に記述するコード量そのものを示したものです。本リストには2つのライブラリを利用していますが、ふだんはプログラムリストの再現性(実行できること)を優先して、ライブラリ部分もScript本体に一緒に展開しています。使い回ししている分も同じリストに展開しているので、「たくさん書かないといけない」と思われているようです。

実際には、共通部分はほとんど書いていないので、本処理もこんな(↓)ぐらいの記述量です。リアルな記述量を感じられるような掲載の仕方を考えなくてはいけないのかもしれません。本リストはその試みの第一歩です。

まー、超解像処理を行って72dpiの画面スナップショット画像を144dpiに上げているだけなんで、Retina Display環境で処理すれば不要なんですが、ソフトウェアだけで実現できるのはロマンを感じますし、無駄に2x Retina環境のスクリーンショットを処理して288dpiの高解像度画像に上げてみるとか。

ただ、WWDCのビデオなどを見ていると、画面のスナップショットそのものをベクターグラフィックで取るような仕組みも考えていそうな気配がします。当てずっぽうですが、そういう何かを考えていそうな….

AppleScript名:画面スナップショット超解像バッチ処理 v1
—
–  Created by: Takaaki Naganoya
–  Created on: 2021/03/25
—
–  Copyright © 2021 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use scripting additions
use cPathLib : script "choosePathLib"
use imgPicker : script "imgPickerLib"

–掃除
tell application "Pixelmator Pro" to close every document without saving

–必要なパス情報をユーザーに問い合わせる
set {inFol, outFol} to choose multiple path with titles {"Img Folder", "Output Folder"}
set outFolStr to outFol as string

–画像フォルダから画像のパス一覧を取得
set f1List to getFilepathListByUTI(POSIX path of inFol, "public.image", "alias") of imgPicker

–取得した画像を超解像処理して
repeat with i in f1List
  tell application "Pixelmator Pro"
    open i
    
tell front document
      with timeout of 3000 seconds
        super resolution
      end timeout
    end tell
  end tell
  
  
–新規保存ファイルパスの作成
  
set pathStr to POSIX path of i
  
set filenameStr to (current application’s NSString’s stringWithString:(pathStr))’s lastPathComponent() as string
  
set savePath to outFolStr & filenameStr
  
  
tell application "Pixelmator Pro"
    save front document in file savePath as PNG
    
    
tell front document
      close without saving
    end tell
  end tell
end repeat

★Click Here to Open This Script 

Posted in file File path Image UTI | Tagged 10.14savvy 10.15savvy 11.0savvy Pixelmator Pro | Leave a comment

Mac OS X 20周年

Posted on 3月 25, 2021 by Takaaki Naganoya

20周年だそうで。自分がQ&A系SNS「Quora」に投稿した内容を一部書き換えて掲載してみます。自分で書いたものなので、とくに問題はないでしょう。

「Windowsの各バージョンを家に例えると……という話があるが、Mac OS Xではどうか?」 という質問に答えたものです。

Public Beta モデルハウス、ガラスの家

新宿・髙島屋で販売されたので「髙島屋記念」品と呼ばれる。Unicode対応で「髙島屋」という文字を入力・表示できるようになった。ヒラギノフォントの美しさに住人が魅了された。ただし、電源コンセント(Appleロゴマーク)が部屋(画面上部)中央にある。実用性を拒否したオールガラス製のモデルハウス。「住めない家」「いつかは新築を」と眺める程度の完成度。DOSを思わせるメンテ用の工具(Terminal.app)が標準装備されてショックを受ける住人多数。

Mac OS X v10.0 土台だけ

土台と柱しかない。かろうじて美しいガラス窓がついているが、雨風をしのげない。ただし、土台だけは地下3階分あってやたらと豪華。太陽の光を必要としない地下住民(Unix民)にはウケた。

Mac OS X v10.1 きれいな窓がついた土台、しかし家とはいえない

むぎわらの屋根がついた。でも、ドアがついていない。生活に必要なものがそろっていないので、食事したり寝るのに前のあばら屋に帰る必要があった。

Mac OS X v10.2 完成目前の残念な家

はじめて、普通に生活できるようにひととおりの装備が加わった。ただし、家具が入らなかったり居心地が悪かったりしたが、外見はやたらと豪華になった。

Mac OS X v10.3 はじめて住めるようになった家

はじめて、引越し前のあばら屋(Classic Mac OS)に帰る必要を感じなくなった。ただし、ドアの建てつけが悪かったり、うまく動かない家電製品が散見された。

Mac OS X v10.4 住んでいる横で工事をやっている工事中の家

かなりよくなった。しかし、土台部分で以前からあった不具合がそのままだったので、過渡期感がすごかった。ガス(PowerPC)からオール電化(Intel)に切り替えたので、不具合がありつつも快適さが当社比2.5倍という謎仕様。工具(Xcode)の整備がすすみ、快適さをアップさせるためにはメーカー謹製のオール家電専用工具を使うことが必須となった。

Mac OS X v10.5 はじめて満足感が得られた家

土台の修正が行われた。細かい不具合はあったが、とても快適になった。その一方で、無理のしすぎで、家を建てるのに参加していた棟梁(アビー・テバニアン)が辞めてしまった。また、昔のあばら家から持ってきた家具をそのまま使うことができなくなった。引越し前のあばら家は解約された。

Mac OS X v10.6 完成レベルに達した家

家の完成度が増して、人によっては「過去最高」の完成度。ここから先に進むことを拒む住人が散見された。自動販売機が家の中に設置された最初のバージョン。前バージョンの不具合点の修正に全力で取り組むというCEOの公開土下座が評価された。

OS X v10.7 なぜかデザイナーズマンションに改築された家

電源規格が100Vから200Vに変更され、家具の買い替えが必要になったりした。無料配布されはじめ、土地があれば無料で家を建ててくれるようになった。趣味で仕事をしていた変態CEOが健康問題で一線を退き、その後の内紛が感じられる出来。

OS X v10.8 どこが変わったか不明な家

微細な変更なので、変更されたことに住人は気づかなかった。部屋の名前や家具の名前が、犬小屋に合わせて変更された。

OS X v10.9 時計が壊れて正しい時間がわからない家

巨大化した犬小屋に母屋の仕様が変更されはじめた。ただし、時計が狂うというバカみたいな問題点があり、修正できないことに住人が呆れはじめた。

OS X v10.10 愛着がうすれつつある家

野心的な装備が多数備わった、意欲的な改修である一方、あらたな機能不全も出てきた。

OS X v10.11 不具合修正の家

10.10の不具合点の修正を全力で行なった。

macOS v10.12 安定しつつもセキュリティ偏重で機能不全が出始めた家

セキュリティの強化が行われはじめた。機能が充実した名バージョン。しかし、セキュリティを実現するために階段が使えないなど、実用上問題のある機能がぼちぼち見られはじめた。

macOS v10.13 絶望の廃墟、毒の沼

完成直前までは高い評価を得ていたが、引き渡し時に廃墟になっていた事故物件。毒の霧が吹き出していて中に住めない家。macOS史上最悪にして最低。なぜこれで眉毛担当者の首が飛ばなかったのかが理解できない。住民からの嫌われようからmacOS「Vista」と呼ばれた。また、家中にひび割れがあり、眉毛出てこいと激怒するもの多数。この毒の沼をパスする住人多数。これをリリースした眉毛担当者とCEOへのヘイトが高まった。

macOS v10.14 最後の良心?

昔ながらの100V電源で動く家電を次のバージョンから家の中に置いておけなくなった。100Vの家電を動かすと警告を受けるようになった。初期はこまごまとした(無視できないレベルの)問題があったが、バージョン末期にはなんとかまとめられた。「偶数バージョンしかインストールしてはいけない。奇数バージョンは廃墟」との見方が強まった。

macOS v10.15 建築中に崩落した家

建築中に廃墟であることがわかった家。200V電源専用になったので、使えない家電は捨てるほかなかった。10.13で住人も慣れたもので「この家には住めない」ことが夏ごろにはわかっていた。使い勝手に目をつぶってセキュリティのために新聞受けをセメントで埋める(PDFViewのリンクに何かを埋め込まれた場合に備えて機能を大幅に制限した)など、やり方が乱暴(説明が一切ない)。リリース前からmacOS「Vista2」「毒の沼2号」と呼ばれていた。翌年にARM移行+11.0構想が発表されなかったら、かなりの住人がメーカーに直接文句を怒鳴り込んでいたことだろう。

macOS v11.0 犬小屋と一体化した家 模様替えが中心

このところ強化され続けた犬小屋と一体化されることが発表され、犬用のミニチュア家具が置けるようになるらしい家。犬でも使えるように犬用の取っ手や犬用のドアが新設されている。問題視されるような破滅的な機能が少ない一方で、見た目が犬用なのか人間用なのかはっきりしない。ただし、熱により不毛の荒野となりつつあった土地(Intel)から犬用の涼しい土地(Apple Silicon)に移し替えられることになった。でも油断はできない。最近は引き渡し時に事故を起こすパターンが増えているので、どんな事故が起こるかわからない。

とりあえず、v11.0は「偶数バージョン」(16.0)なので毒の沼になる可能性は低そうだが、v12.0(10.17)が毒の沼化しないことを祈る。

macOS 11.0の評価がとても難しい気がします。AppleScript系については、あまり問題が出ていない雰囲気なんですが、もっと下のレイヤー(ハードウェアに近いレイヤーとか)でいろいろ問題が散見されているので、v11.x台はお試し版みたいなものなんでしょう。

見た目もこなれていなくて、使い勝手が軽視されている印象があります。初期のβはデザイン面での出来がひどくて「見た目で使いたくなくなる初めてのmacOS」だと感じました。リリース版は幾分マシになりましたが、デザイン変更を強引に行いすぎて使い勝手を損ねています。ダイアログとウィンドウの区別がつきにくく、ツールバーアイコンの視認性が低い(iWork Apps)とかいう「これでどーしたいの?」という出来。ユーザーが文句を言いまくって12.0ではもう少しマイルドな仕上がりになってほしいところです。

自分自身はmacOS 10.14.6をメイン環境に据えつつ、10.15.7と11.3betaを並べて使っています。10.14.6もベストというわけではなく、Appleの度重なる改悪によってWebViewの動作がおかしくなっているし(バグレポートしても直せないし直らない)、メモリ管理は10.14.x台はわりとひどくて、アプリケーションで使用済みのメモリが解放されないなど、Kamenokoのアプリケーション開発時にmacOS 10.14特有の問題に悩まされました。

Posted in news | Tagged 10.14savvy 10.15savvy 11.0savvy | Leave a comment

Post navigation

  • Older posts
  • Newer posts

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

Google Search

Popular posts

  • 開発機としてM2 Mac miniが来たのでガチレビュー
  • macOS 13.6.5 AS系のバグ、一切直らず
  • CotEditorで2つの書類の行単位での差分検出
  • Apple純正マウス、キーボードのバッテリー残量取得
  • macOS 15, Sequoia
  • 初心者がつまづきやすい「log」コマンド
  • ディスプレイをスリープ状態にして処理続行
  • 指定のWordファイルをPDFに書き出す
  • Adobe AcrobatをAppleScriptから操作してPDF圧縮
  • メキシカンハットの描画
  • 与えられた文字列の1D Listのすべての順列組み合わせパターン文字列を返す v3(ベンチマーク用)
  • Pages本執筆中に、2つの書類モード切り替えに気がついた
  • 2023年に書いた価値あるAppleScript
  • Pixelmator Pro v3.6.4でAppleScriptからの操作時の挙動に違和感が
  • AdobeがInDesign v19.4からPOSIX pathを採用
  • Safariで「プロファイル」機能を使うとAppleScriptの処理に影響
  • Cocoa Scripting Course 続刊計画
  • NaturalLanguage.frameworkでNLEmbeddingの処理が可能な言語をチェック
  • macOS 14.xでScript Menuの実行速度が大幅に下がるバグ
  • スクリプトエディタで記入した「説明」欄の内容が消えるバグ

Tags

10.11savvy (1102) 10.12savvy (1243) 10.13savvy (1392) 10.14savvy (587) 10.15savvy (438) 11.0savvy (283) 12.0savvy (206) 13.0savvy (163) 14.0savvy (113) 15.0savvy (90) CotEditor (64) Finder (51) iTunes (19) Keynote (115) NSAlert (61) NSArray (51) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (51) NSDictionary (27) NSFileManager (23) NSFont (19) NSImage (41) NSJSONSerialization (21) NSMutableArray (62) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (117) NSURL (97) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (72) Pages (53) Safari (44) Script Editor (26) 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
  • 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)
  • 未分類

アーカイブ

  • 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