Apple Silicon MacでUnity + VSCodeの補完を有効にするための設定

M1 MacでUnityのセットアップをしていてVSCodeの補完設定についてメモ。 arm64版のHomebrewのみを使用している環境の話です。 基本的な設定は下記ポストを参考にさせて頂いて、 Monoのインストールだけpkgからインストールするようにすればうまくいきました…

Big Sur + Xcode 12.2にXcode Source Editor Extensionを認識させる方法

対処方法 XcodeKit.frameworkを追加して、Embed & Signにする。 XcodeKit.frameworkは10.15用にビルドされているようなので必要ならDeployment Targetも見直す。 メモ 私の環境(Mac mini 2020 M1)ではこの対処で認識することを確認しました。 ビルドしないと…

SlackからGitHub Deploymentsで投げたEnvironment / TaskをGitHub Actionsで参照する方法

SlackからGitHub Deploymentsで投げたEnvironment / TaskをGitHub Actionsで参照する方法を調べたのでメモ。 GitHub REST API v3で投げた場合も同じだと思います。 この画面で指定した値がGitHub Actionsのワークフローで取れるのでstagingとproductionで動…

UISceneを使ったアプリをSpotlightから開いた時に呼ばれるデリゲートメソッド

iOS 13から追加されたUISceneを使用していると、Spotlightで検索した結果からアプリを開いた時に呼ばれるデリゲートがUIApplicationDelegateからUISceneDelegateに変わります。 iOS 13 import CoreSpotlight // UISceneDelegate func scene(_ scene: UIScene…

Mac CatalystでUIAlertControllerをシートとして表示する

確認バージョン:Xcode 11.3 let alertController = UIAlertController(title: "Alert", message: "", preferredStyle: .alert) alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in // handle })) present(alertContro…

Mac Catalyst環境でUITextViewのフォーカスリングを消す

Mac CatalystでUITextViewを編集状態にするとフォーカスリング(画像の青枠)が表示されます。 フォーカスリングON(デフォルト) これを消す方法がAppleのフォーラムで紹介されていたので引用します。 extension UITextView { #if targetEnvironment(macCatalys…

Mac Catalyst環境でのみコードを無効化・有効化する

#if !targetEnvironment(macCatalyst) // macOS環境で無効化するコード #endif #if targetEnvironment(macCatalyst) // macOS環境で有効化するコード #endif developer.apple.com

スクリプトでOBSにカウンタを導入する

昨日の夜〜早朝に配信していたVTuber(御伽原江良さん)の耐久ゲーム配信を6時間ほどみてたんですが、 リトライ毎に挑戦回数のテキストを編集するのが大変そうだったのでカウントを補助するOBSのスクリプトを作りました。 スクリプトをダウンロードしてOBSに登…

WWDC19 とりあえず見たいセッションリスト

概要 Keynote Platforms State of the Union Xcode What’s New in Xcode 11 Getting Started with Xcode Adopting Swift Packages in Xcode Debugging in Xcode 11 Testing in Xcode Creating Great Localized Experiences with Xcode 11 Great Developer Ha…

アラートを表示する(NSAlert)

アラートの表示 アラートを作る let alert = NSAlert() ダイアログとして表示 alert.runModal() 押されたボタンを確認 runModal()の戻り値で確認できます。 let response = alert.runModal() switch response { case .alertFirstButtonReturn: break case .a…

NSTextViewで折りたたみ

NSTextViewで折りたたみ(フォールディング)は、折りたたみたい文字のグリフをNullGlyphに置き換えることで実現できます。 下記に手順を紹介します。 折りたたむ文字列に目印をつける 折りたたみたい文字に目印となるカスタム属性を設定します。 ここではカス…

NSTextViewで文字列にリンクを設定する

任意の文字列にリンクを設定 NSTextStorageにキーがNSAttributedString.Key.linkで値がURLの属性を設定すれば任意の文字列にリンクを設定できます。 textView.string = "Link to Blog" let url = URL(string: "https://tid-a24.hatenablog.com/")! textView.…

NSPopoverを閉じる方法

BehaviorでNSPopoverの閉じる方法(挙動)を指定します。 let popover = NSPopover() popover.behavior = .transient Behaviorは3種類定義されています。 applicationDefined 開発者が動作を定義する。(閉じるボタンをつけるなど。) 自動で閉じることはない。 …

macOS appの環境設定:Escapeキーで閉じるようにする

環境設定のWindowをNSPanelにすることでEscapeキーで閉じるようにできます。 これだけでEscapeキー(または⌘-.)で閉じるようになります。

macOSの環境設定のようなレイアウトはNSGridViewで実装する

macOSの環境設定などで見かけるラベル:ユーザー入力可能なビューが規則的に並ぶレイアウトはNSGridViewを使うと楽に実装できます。 NSStackViewでも実装できないことはありませんが、 アラビア語などの右から左に読む言語へのローカライズが発生すると辛い…

MapKitとCoreLocationで現在地の地図を表示する

Xcode 9.2 / Swift 4.0.3 MapKit 地図を表示する CoreLocation 現在地を取得 MapKit + CoreLocation 現在地の地図を拡大して表示する 地図上の現在地にピンをつける 現在地情報はシミュレーターのデフォルト値を使用しています。 MapKit 地図を表示する impo…

try! Swift 2018 Tokyoに参加しました | Day 2

try! Swift 2018 Tokyo 2日目のスライドなどのまとめ+企業ブースメモ Expression Problem を解決する | Day 2-1 bkase.github.io Swift もくもく会 in Barcelona | Day 2-2 speakerdeck.com Swift によるアルゴリズムの可視化 | Day 2-3 speakerdeck.com Ki…

try! Swift 2018 Tokyoに参加しました | Day 1

www.tryswift.co try! Swift 2018 Tokyoに参加したので各セッションのスライドなどをまとめます。 2016, 2017に引き続き今年もniwatakoさんが聞き起こしをしてくださってるので細かいことはそちらを参照するといいと思います。 niwatako.hatenablog.jp 裏 Sw…

iOSでAlureを使うための準備

こちらを参考にビルドします。私の環境では修正が必要な箇所が異なっていたのでメモ。 flat-leon.hatenablog.com AlureをiOSシミュレーター向けにビルドする 公式からAlureをダウンロード https://github.com/cristeab/ios-cmake からCMakeのiOS用ツールチェ…

Bitriseでオーディオ再生をテストする(iOS)

趣味で音楽プレーヤーアプリを作り始めたのでBitriseをセットアップしました。 初回テストを兼ねて最初にオーディオを再生する簡素なコードとテストを書いてCIを動かしたところテストが失敗しました。 (もちろんローカル環境でのテストはパスしている状態で…

macOS appのCloudKitでカスタムコンテナを使う時に気をつけること

環境:Xcode 8.3.3 / Swift 3.1 追記 デフォルトコンテナとカスタムコンテナが一致している場合はCKContainer.default()が使えて、 一致していない場合はコンテナ名を指定する必要がある、、、ということでした。 問題 macOS appでCloudKitを使う際、Capabil…

複数のアプリで共通のiCloud Key-Value Storageにアクセスする方法

異なるapp(macOS appとiOS appなど)で共通のiCloud Key-Value Storageを使いたい場合、 どちらかの.entitlementsファイルを編集する必要があります。 具体的にはcom.apple.developer.ubiquity-kvstore-identifierキーの値を共通の値にしなければいけません。…

NSOutlineViewのNSTableCellViewを編集状態にする方法

View basedなNSOutlineViewでダブルクリックされたセルを編集状態にする方法です。 NSOutlineViewを継承してfunc mouseDown(with event: NSEvent)を オーバーライドする必要があります。 class MyOutlineView: NSOutlineView { override func mouseDown(with…

システムアイコンのNSImageを作る方法

Finderで表示されるフォルダーのアイコンなどを作る方法。 let folderIcon: NSImage = NSWorkspace.shared().icon(forFileType: NSFileTypeForHFSTypeCode(OSType(kGenericFolderIcon))) kGenericFolderIconを変更すれば色々なアイコンを取得できます。 元と…

macOS app FullScreen時にToolbarを隠す

画像のようなToolbarを持つアプリをFullScreenにした時に Toolbarを隠すにはNSWindowDelegateを設定します。 // NSWindowDelegateを設定 class WindowController: NSWindowController { override func windowDidLoad() { super.windowDidLoad() window?.dele…

指定したURLをFinderで開く

コンテキストメニューでよくみかけるShow in Finderを実装する方法です。 let url: URL! = URL(string: fileOrDirectoryPath) NSWorkspace.shared().activateFileViewerSelecting([url]) ディレクトリを指定した場合はopenでも開けますが、 ファイルを指定し…