プログラム

プログラム

クロージャ(慣れないやつ)

クロージャを“変数”として持つことで、オブジェクトが「後から実行される処理」を自由に差し込めるこれは、AAA が「String を受け取って Void を返す関数」を持っているその関数は 後から自由にセットできるAAA が “処理を外部に任...
プログラム

RedoUndo

Undo/Redoの仕組み基本概念NSUndoManagerは2つのスタックを持っています:┌──────────────┐ ┌──────────────┐│ Undoスタック │ │ Redoスタック │├──────────────┤...
プログラム

メニューバー常駐化

例1:例2:MenuBarContentView のボタンに自分の非表示、再表示させる機能を持たせるMenuBarContentViewのポップオーバーを閉じるには、NSPopoverの参照が必要です。いくつか方法がありますが、最もシンプル...
プログラム

ショートカットキー&カスタムバインディング

カスタマイズ可能なショートカットキー1. なぜ初期化(init)が二つあるのか?理由:1つ目:コード内で普通に使うための初期化(例:KeyboardShortcut(key: "s", modifiers: .command))2つ目:JS...
プログラム

【?】ヘルプボタンとポップオーバー

macOS 15(Sequoia)では、helpButton()モディファイアを使用するのが最も簡単な方法です。以下のようなコードで実装できます:ポイント:Image(systemName: "questionmark.circle")でシ...
プログラム

インポート、エクスポート系

インポートNSOpenPanel より詳細な設定ドラッグ&ドロップも対応主要なプロパティエクスポートmacOSの新規テキストエディット(TextEdit.app)方法1: AppleScriptを使う方法2: 一時ファイルを作成してText...
プログラム

extension

extensionとは既存の型(クラス、構造体、列挙型、プロトコル)に、元のソースコードを変更せずに新しい機能を追加できる仕組みです。基本的な使い方1. メソッドの追加2. 計算プロパティの追加4. プロトコル準拠実用例OCR関数をCGIm...
プログラム

アプリのサイズが決まる要因

要因結論から申し上げますと、コードの量(テキストとしての文字数)も影響しますが、それ以上に「リソース(画像・音声・動画)」や「ライブラリ(外部機能)」の存在がサイズを決定づける大きな要因になります。プログラムのサイズがどのように決まるのか、...
プログラム

サムネイル化

ScreenshotItem を「遅延ロード対応」に進化させるBeforeAfter(重要)👉「URLが正」「画像はキャッシュ」という構造になります。サムネイル生成(超重要)macOSではこれを使う👉CGImageSourceThumbna...
プログラム

バンドルフォルダ(同梱ファイルとか)

macOSアプリが使えるフォルダは大きく5種類あります。アプリバンドル内(読み取り専用)Application Support(永続データ)Caches(キャッシュ・一時的)tmp(一時ファイル・超短命)ユーザーが明示的に選択したフォルダ(...