whisper.cppとBlackHoleを使って、Macで流れている音声を文字起こしする環境を作る。
whisper.cppのインストール # git clone https://github.com/ggml-org/whisper.cpp.git cd whisper.cpp ./models/download-ggml-model.sh large-v3 brew install cmake sdl2 cmake -B build -DWHISPER_SDL2=ON cmake --build build --config Release # サンプルのwavファイルでテスト ./build/bin/whisper-cli -m models/ggml-large-v3.bin -f samples/jfk.wav 仮想キャプチャデバイス BlackHoleのインストール # brew install blackhole-64ch Macで再生されている音声を文字起こしするために必要な、仮想キャプチャデバイスBlackHoleをインストールする。
インストール後、Macを再起動して、Audio MIDI設定アプリを起動する。
複数出力装置を作成し、M4とBlackHole 64chをチェックする。
私の環境ではスピーカーを接続しているオーディオインタフェースM4とBlackHole 64chを指定している。
その後、Macの音声出力先を複数出力装置に設定する。これで、スピーカーで音声を再生しながら、BlackHoleへも音声を流すことができる。
Macのサウンド設定 # 設定 > サウンド > 出力にさきほど作成した複数出力装置を指定し、入力はBlackHole 64chを設定する。
whisper-streamで文字起こし # あとは、ターミナルから以下のコマンドでMacで再生されている音声を文字起こしできる。
Launchpad Pro MK3は、Ableton LiveやLogic ProなどのDAWとシームレスに連携する、Novation社製のMIDIパッドコントローラー。64個のRGB感圧パッドを搭載し、トラックメイクからライブパフォーマンスまで幅広い用途に対応する。
主な特徴・機能 # 強力なスタンドアロンシーケンサー
PCなしで外部のMIDI対応シンセサイザーやドラムマシンを直接コントロールできる、4トラック・32ステップシーケンサーを内蔵。 設定したキーに合わせてパッドの音階が配置されるため、楽器の演奏スキルがなくても音を外さずに美しいメロディやベースラインを弾くことができる。8282 Ableton Liveとの深い統合
クリップやシーンの再生、ミキサー、デバイス、トランスポートの操作がマウスを使わず本体から行える。「Capture MIDI」機能を使えば、思いつきで弾いたフレーズを逃さずクリップに記録できる。 自由なカスタマイズ性
専用ソフト「Novation Components」を使用することで、自分だけのカスタムモードを作成し、あらゆるMIDI機器やソフトウェアを自在に操作できる。 使い方のメモ # ノートモード # ノートモードの設定: Shift + Note クロマチック・スケールモード切り替え: Chro/Schale 作成したプリセット・スクリプト # YAMAHA SEQTRAK用のカスタムモード # 作成したSEQTRAK用カスタムモード(自分の環境ではカスタムモード5にアサイン) カスタムモードの切り替えは パッドの割り当て # No. トラック名 トラックグループ MIDIチャンネル 1 KICK Drum 1 2 SNARE Drum 2 3 CLAP Drum 3 4 HAT1 Drum 4 5 HAT2 Drum 5 6 PERC1 Drum 6 7 PERC2 Drum 7 SYNTH1 Synth 8 SYNTH2 Synth 9 DX DX 10 11-16 SAMPLER SAMPLER 11 SYNTH1, SYNTH2, DXを鳴らす場合はShift + Noteを押しMIDIチャンネルを8〜10に変更してから使う SEQTRAK Mode.syx

サンプル音源を管理するアプリはいくつか持っていたはずだが、なぜか見当たらない。しかたがないので、Codexを使ってMacでサンプル音源管理アプリを開発した。
以下の基本機能は数時間でできた。
ディレクトリを指定すると、配下のサンプル音源を再帰的に検索して登録する ファイル名からジャンル、楽器、BPM、キーなどを検出して自動タグ付け。手動でのタグ追加にも対応 サンプル音源の波形を見ながら試聴する タグによる絞り込み検索 ワンショット、ループの判定(厳密ではない) 聴いているサンプルと似た音を探す(ファイル名、タグ、オーディオ特徴量の距離計算、時間、波形エンベロープの形状) 選択したファイルのコピー、パスの取得 目立ったバグもないため、さっそく実践投入するかと、Native InstrumentsのExpansionsのサンプル約9万ファイルを登録したところ、動きがもっさりして使い物にならない。
Codexと一緒に原因を調べたところ、リスト件数ぶんのSQLを無駄に発行していたり(つまり9万回!!)、その場面では不要なデータを取得していたりと、いろいろな問題が見つかった。
このようなAIと一緒に原因を調べて方針を決定する過程では、(現時点では)ソフトウェアの知見があったほうが、よりよい対応ができそうだ。
今回の開発での反省点としては、設計時に機能要件の定義にのみ注力し、性能要件を詰めなかったこと。大量のデータを扱うことを事前に伝えて、そのために性能をどう作り込むかを、実装の前に詰めておくべきだった。
ただ、きっとこれも「現時点」での反省になるんだろうな。
将来的には、実装に入る前に非機能要件をヒアリングしてきたり、勝手に性能要件を類推してコスパの良い設計をしてきたりするはず。
現在、自分がCodexで使っているのはGPT-5.5だが、そのコード生成能力はPoCを速攻で回すような用途においては、もはや人間の出番はなさそうなレベルに達している印象がある。
このアプリの開発をしながら、少し前に読んだ以下のポストを思い出した。生成AIの出現による「ソフトウェアエンジニアリングという仕事の変化」を認識・予測し将来に備えて準備しておかないと、途方に暮れることになりそうだよね、というお話。 Software engineering may no longer be a lifetime career
よく見られる悲劇的なケースは、スポーツ選手が「自分のキャリアは永遠に続く」と思い込み、引退後の生活に備えないことです。もしかすると、ソフトウェアエンジニアの世界でも、今がまさにその世代に当たるのかもしれません。

Ghosttyはクロスプラットフォームのターミナルエミュレーター。動作が軽くカスタマイズ性が高い。
Macへのインストールと設定 # brewでインストールした。
brew install --cask ghostty 各種の設定はGUIではなくconfigファイルで行う。 ~/Library/Application Support/com.mitchellh.ghostty/config
設定ファイルをターミナル内から再読み込みするのはcmd+shift+,
ターミナルから以下のコマンドを入力すると、使用できる(インストールされている)フォントファミリのリストが表示される。
ghostty +list-fonts 以下のコマンドでインストールされているテーマのリストが表示される。
ghostty +list-themes このようにプレビューを表示しながらテーマを選ぶことができる。
現時点での設定ファイルは以下の通り。
theme = "Dracula" font-family = "UDEV Gothic" font-thicken font-size = 20 mouse-hide-while-typing window-theme = dark background-opacity = 0.8 background-blur = true macos-titlebar-style = transparent window-inherit-working-directory = true window-save-state = always 設定可能な項目の説明はConfigurationにある。かなりの数があるが、自分は必要最低限のものに絞った。
Alfred関連の設定 # デフォルトで使用するターミナルをGhosttyに変更するため、Alfredの設定変更とワークフローの修正を行った。
Teminalの設定変更 # 以下のGhosttyとの連携スクリプトを手順に従って設定する。
zeitlings/alfred-ghostty-script: AppleScript for Ghostty Alfred integration
terminalfinderワークフローの修正 # ファインダとターミナルを行き来するのに使っているAlfredのtermmialfinderワークフローにGhostty用のトリガーとスクリプトを追加した。

ObsidianのVimモードでNORMALモードに移行した際、デフォルの動作ではIMEのON/OFFが変わらないため、日本語のテキストを書いているときに不便なので、im-select + Karabiner-Elementsを使ってEsc押下でIME OFFにする設定を追加した。
自分の環境では既にターミナルやGhostty用にその設定を入れているので、対象とするアプリとしてObisidianを追加するだけだった。
具体的にはbundle_identifiersに"^md\\.obsidian$"を追加した。
Obsidianのbundle_identifierは以下のようにして調べた。
osascript -e 'id of app "Obsidian"' md.obsidian 以下はKarabiner-Elementsに表示で入っている「TerminalまたはMacVimでESCあるいは^[を押したときに日本語入力を英数に切り替える」にGhosttyとObsidianを追加したもの。
{ "description": "指定したアプリでESCあるいは^[を押したときに日本語入力を英数に切り替える。", "manipulators": [ { "conditions": [ { "bundle_identifiers": [ "^com\\.apple\\.Terminal$", "^org\\.vim\\.", "^com\\.mitchellh\\.ghostty$", "^md\\.obsidian$" ], "type": "frontmost_application_if" } ], "from": { "key_code": "escape", "modifiers": { "optional": ["any"] } }, "to": [ { "key_code": "japanese_eisuu" }, { "key_code": "escape" } ], "type": "basic" }, { "conditions": [ { "bundle_identifiers": [ "^com\\.apple\\.Terminal$", "^org\\.vim\\." ], "type": "frontmost_application_if" } ], "from": { "key_code": "open_bracket", "modifiers": { "mandatory": ["left_control"] } }, "to": [ { "key_code": "japanese_eisuu" }, { "key_code": "escape" } ], "type": "basic" } ] }
azooKeyという高精度なニューラルかな漢字変換エンジンをサポートしたiOS用キーボードアプリのmacOS版を試している。
ライブ変換もサポートしていて、標準のIMEより変換精度が高くて素晴らしい。問題なく常用できそうな感じ。
ただ、いくつかのIMEでサポートしている「きょう」で本日の日付に変換する機能がないんですよね。これはXでも話題になっていて、以下のような改善策も見つけました。
azooKey-Desktop で日付を入力する - terfnoのScrapbox
しかし、個人的には「昨日」や「明日」「先週の金曜日」などの日付を得たいケースが多く、ChatGPTでAlfred用のワークフローを作成した。
動作イメージ # ワークフローを起動して、キーワードを入力すると対応するものがサジェストされる。 キーワードを決定すると、複数の日付フォーマットを選択できる。 対応キーワード # today:今日 yesterday:昨日 tomorrow:明日 dayaftertomorrow(略:dat):明後日 daybeforeyesterday(略:dby):一昨日 mon / tue / wed / thu / fri / sat / sun:各曜日 曜日を入力した場合は 「直近の過去の同曜日」「次に来る同曜日」を候補に表示 出力フォーマット # ISO形式:YYYY-MM-DD ISO + 曜日:YYYY-MM-DD(Fri) 日本語形式:YYYY年M月D日(金) 和暦形式(令和):令和X年M月D日(金) ダウンロード # 作成したワークフローを置いておきます。Alfred 5.7で動作確認しました。
2025/02/08購入 概要 # 公式サイト XREAL One
XREAL Oneは、XREAL社が開発したAR(拡張現実)グラス。USB-Cに接続したスマートフォン、ノートパソコン、ゲームコンソールの映像を仮想的な大画面へ投影できる。
USB-Cビデオ出力を備えたすべてのデバイスに接続可能。iPhone 16/15、iPad、一部のAndroidスマートフォン(DP出力対応)、Steam Deck、ROG Ally、MacBook、Windows PCなど
項目 詳細 チップ XREAL X1 チップ 視野角 50° スクリーン SONY製 0.68 インチ Micro-OLED 解像度 400万ピクセル / 1920×1080 リフレッシュレート 120 Hz M2P遅延 3 ミリ秒 高水準の明るさ 600 ニト 3 DoF 3 DoF 対応 グラスによる制御 調整可能な調光機能 / 3 つのモード エレクトロミック調光 対応 IPDの調整 瞳孔間距離 (IPD) 調整の対応 ソフトによるIPD調整 瞳孔間距離 (IPD) ソフト調整対応 音声 Sound by Bose 重さ 82 g iPhoneを接続 # iPhoneはミラーリングのみ。エンタメ系コンテンツを大画面で観るのには使えそうだが、一部のアプリは再生できず。
使っているApple WatchがヘタってきたのでGarminのForerunner 255 Musicを買った。
GARMIN(ガーミン)Forerunner 255 Music対応モデル/Music非対応モデル ランニングウォッチ【日本正規品】
このForerunner 255 Musicは単体で音楽を聴けてSuicaも使えるので、家の鍵だけ持ってウオーキングやジョギングへ行ける気軽さは継続できる。
初期設定のため以下のアプリをインストールしたが、2点ハマりどころがあった。
Garmin Connect Mobile (iPhone) Garmin Connectは、Garminデバイスで記録した健康とフィットネスのアクティビティをモバイルアプリまたはWebで管理、分析、共有するためのツールです。 Garmin Connect IQ Store (iPhone) Connect IQストアは、お好きなアプリやウィジェット、ウォッチフェイス、データ項目、音楽ストリーミングサービスをGarminデバイスに無料でダウンロードできるオールインワンソースです。 Garmin Express (Mac) Garmin Expressを使用して、地図とソフトウェアの更新、Garmin Connectとの同期、デバイスの登録を行います。このデスクトップソフトウェアは、更新が利用可能になると通知し、インストールをサポートします。 Spotify連携ができない # Garmin Connect MobileとGarmin Connect IQ Storeでいろいろ試したものの、Spotify連携がうまく行かずSpotifyとGarminのスマートウォッチvenu sq musicの連携を頑張った話 – うなぎっしゅ日記を参考にしてなんとか設定できた。
Wi-Fi接続に失敗する # SSIDとパスワードを入力して接続を試みたがうまくいかなかった。ルーターをAny接続許可に設定変更し、SSIDを一覧から選びパスワードだけ入力してみたら接続できた。
Suicaは設定したもののまだ使っていない。Apple Watchもそうだったけど、新しいデバイスで最初にSuicaなどの電子マネーを使うとき、少し緊張するよね。
Forerunner255_OM_JA.pdf
MacにインストールされているKindleアプリのデータから蔵書一覧を生成
kindle_books_mac.rbrequire 'rexml/document' require 'date' require 'csv' # Kindle for Mac KINDLE_XML = "#{ENV['HOME']}/Library/Containers/com.amazon.Kindle/Data/Library/Application Support/Kindle/Cache/KindleSyncMetadataCache.xml" doc = REXML::Document.new(File.read(KINDLE_XML)) csv = CSV.generate(force_quotes: true) do |csv| doc.elements.each("//response/add_update_list/meta_data") do |e| csv << [ e.elements["ASIN"].text, e.elements["title"].text, e.elements["authors"].map{|item| item.text}.join('/'), e.elements["publishers"].map{|item| item.text}.join('/'), e.elements["publication_date"].text, e.elements["purchase_date"].text ] end end puts csv
スニペット # Mac用のツールPopClip for Macの自作スニペット。スニペット全体を選択すればPopClipのメニューからインストールできる。
アイコンの指定方法はIcons — PopClip Developerにある。
物書堂の辞書を検索する # #popclip extension to search MkDictionaries name: MkDictionaries icon: square filled 物 url: mkdictionaries:///?text=*** Googleのカスタム検索 # 検索エンジンIDは定義したカスタム検索のIDを指定する Programmable Search - すべての検索エンジン
#popclip extension to Googleカスタム検索 name: Googleカスタム検索 icon: circle filled G url: https://cse.google.com/cse?cx=検索エンジンID#gsc.tab=0&gsc.q=***&gsc.sort= エクステンション # 全角→半角変換 # 選択文字列中の全角英数字・記号・カナを半角に変換する。たまにある半角文字しか受け付けないサイトなどで使う。
PopClip-Extensions/ZenHan.popclipext at main · htakeuchi/PopClip-Extensions
半角→全角変換 # 選択文字列中の半角英数字・記号・カナを全角に変換する。ついでなので逆変換もつくった。
Remeber the Milk、Todoist、Appleのリマインダーなどを経て、ここ1〜2年はMicorosoft To Doを使ってタスク管理をしている。
私がタスク管理アプリに求めるものは、
期限管理できること 繰り返しタスク(毎週、毎月など)が使えること コンテキスト、プロジェクトなどでタスクをカテゴライズできること であり、有償のタスク管理サービスで提供される豊富な機能は、自分にとってオーバースペックで、機能的にはシンプルなMicrosoft To Doで必要十分だ。
しかし、データがサーバに保管されクローズドであり、かつエクスポートすらできない点がずっと気になっていた。
このため、テキストファイルを使ったタスク管理であるTodo.txtを使い始めることにした。
iOSではSwiftoDoを使うことにした。
標準でDropboxをサポートしており、ファイルアプリでアクセスできるようにしていれば、iCloudやGoodle Driveなどにもファイルを置けるが、私はDropboxへ置くことにした。
DropboxはGoogle DriveやiCloudなどと比較し同期が速く、この手の運用をするのであれば未だに優位性があると思う。 MacとWindowsではオープンソースのsleekを使いはじめた。
todo.txtの標準シンタクスには定義されていない、繰り返しタスクの記法(例 rec:1w)がSwiftoDoと共通なのが嬉しくUIも美しい。
ransome1/sleek: todo.txt manager for Linux, Windows and MacOS, free and open-source (FOSS)
ただ、sleekには登録済みタスクのテキストを修正できない不具合があるっぽい。(2025/02/17現在 Macで再現)
2025/03/05追記 sleekは私の環境(Mac)では動作が不安定なため使用を止めた。
Happy Hacking Keyboard Studio(日本語配列) ユーザーズガイド 接続と接続機器の切り替え # 機能 キー 備考 Bluetoothペアリングモード Fn+Q Fn+Xで解除 2台目以降のペアリング Fn+Control+数字 ペアリングモードにしてから←のキー入力。4台まで Bluetooth機器の切り替え Fn+Control+数字 0を押すとUSB接続に切り替え プロフアイル変更 Fn+C の後に数字 MacOS: 1, Windows:2に設定 キーマップの変更 # Happy Hacking Keyboard Studio キーマップ変更ツール デバイス制御のキー # キーの種類 機能 Spd ポインティングスティックを動かすときのスピードを設定できます。
数字が大きいほど速く、小さいほど遅くなります。 Gspd ジェスチャーパッドの感度を設定できます。 GLS 左側面のジェスチャーパッドの有効 / 無効の切り替え / 設定ができます。 GFL 左正面のジェスチャーパッドの有効 / 無効の切り替え / 設定ができます。 GFR 右正面のジェスチャーパッドの有効 / 無効の切り替え / 設定ができます。 GRS 右側面のジェスチャーパッドの有効 / 無効の切り替え / 設定ができます。 Pstck ポインティングスティックの有効 / 無効の切り替え / 設定ができます。 初期状態ではポインティングスティックもジェスチャーパッドも感度が良すぎるため、以下のように設定した。
2024/11/11購入
M4 Pro (14コアCPU/20コアGPU)
64GBユニファイドメモリ
512GB SSDストレージ
Thunderbolt 5ポート x 3、HDMIポート、USB-Cポート x 2、ヘッドフォンジャック

軽量なテキスト読み上げ(TTS)モデルKokoro-82Mを試してみる。
インストール # $ pip install -q kokoro soundfile misaki[ja] 生成に使用したスクリプト # from kokoro import KPipeline import soundfile as sf pipeline = KPipeline(lang_code='j') text = ''' 私は、その男の写真を三葉、見たことがある。 一葉は、その男の、幼年時代、とでも言うべきであろうか、十歳前後かと推定される頃の写真であって、その子供が大勢の女のひとに取りかこまれ、(それは、その子供の姉たち、妹たち、それから、従姉妹たちかと想像される)庭園の池のほとりに、荒い縞の袴をはいて立ち、首を三十度ほど左に傾け、醜く笑っている写真である。醜く? けれども、鈍い人たち(つまり、美醜などに関心を持たぬ人たち)は、面白くも何とも無いような顔をして、 「可愛い坊ちゃんですね」 といい加減なお世辞を言っても、まんざら空お世辞に聞えないくらいの、謂わば通俗の「可愛らしさ」みたいな影もその子供の笑顔に無いわけではないのだが、しかし、いささかでも、美醜に就いての訓練を経て来たひとなら、ひとめ見てすぐ、 「なんて、いやな子供だ」 と頗る不快そうに呟き、毛虫でも払いのける時のような手つきで、その写真をほうり投げるかも知れない。 ''' generator = pipeline( text, voice='jf_alpha', speed=1, split_pattern=r'\n+' ) for i, (gs, ps, audio) in enumerate(generator): print(i) # i => index print(gs) # gs => graphemes/text print(ps) # ps => phonemes sf.write(f'{i}.wav', audio, 24000) 実行 # $ time python kokoro-sample.py (中略) python kokoro-sample.py 139.01s user 61.26s system 945% cpu 21.171 total Mac mini(M4 Pro)の実行速度。マルチスレッドで実行されている。
今年買って良かったものベスト9(中途半端)をまとめておく。
Mac mini 2024 # Mac mini 2024
M1 ProのMacbook Proに変わるメインマシンとして以下のスペックで購入した。
4コアCPU、20コアGPU、16コアNeural Engine搭載Apple M4 Proチップ 64GBユニファイドメモリ 512GB SSDストレージ 電源スイッチが底面にあるという、きっとジョブズが存命なら許されないであろうインタフェースデザインは残念だが、フットプリントが小さくとりまわしが楽だし、パフォーマンス面でも不満はまったく無い。長く使えそうだ。
Anker 675 USB-C ドッキングステーション] # Anker 675 USB-C ドッキングステーション

Kofax Power PDF for MacというURLスキームに対応していないアプリを対応させるためのメモ。このアプリ限定の手順ではないので他のアプリへも応用可能だと思います。
プロトコルハンドラ用のアプリケーション作成 # AppleScriptを使ってKofax Power PDF for MacでPDFファイルを開くスクリプトを作成する。スクリプトエディタで以下のスクリプトを入力。
on open location theURL set pdfPath to do shell script "echo " & quoted form of theURL & " | sed 's/kofaxpdf:\\/\\/open\\?file=//g'" if (do shell script "test -f " & quoted form of pdfPath & " && echo true || echo false") is "true" then do shell script "open -a 'Kofax Power PDF for Mac'.app " & quoted form of pdfPath else display dialog "ファイルが見つかりません: " & pdfPath buttons {"OK"} default button "OK" end if end open location このスクリプトはkofaxpdf://open?file=/path/to/file.pdfで呼び出さると、ファイルパスを抽出しそのファイルを指定してKofax Power PDF for Macを起動するもの。スクリプトを保存し、ファイルメニューの書き出すでアプリケーションとして書き出す。
このアプリケーションがカスタムプロトコルを処理することになる。
Info.plistの編集 # Finderで上記で作成したアプリケーションを右クリックしパッケージの内容を表示を選択する Content/Info.plistを開き以下の内容を追加する <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>MyApp Protocol</string> <key>CFBundleURLSchemes</key> <array> <string>kofaxpdf</string> </array> </dict> </array> これによりkofaxpdf://というカスタムプロトコルがこのアプリケーションに関連付けられる。ここでいちどこのアプリケーションを起動しておく。
Kensington SlimBlade Proは、プロフェッショナルユーザーのために設計された高性能トラックボールです。優れた操作性、柔軟な接続オプション、そして長時間の使用でも快適な人間工学的デザインを兼ね備えています。
Kensington ケンジントン Slimblade Pro ワイヤレストラックボール 4ボタン 左右対称デザイン 55㎜ボール 有線接続 2.4GHzワイヤレス接続 Bluetooth接続 Mac対応 K72081JP
主な特長: # トリプル接続機能: Bluetooth 2.4GHzワイヤレス 有線USB接続 柔軟性を最大化し、様々な使用環境に対応します。 充電式バッテリー: USB-C接続で充電可能。フル充電で最大4ヶ月の使用が可能です。 革新的なスクロール機能: 55mmの大型トラックボールを回転させることで、ウェブページやドキュメントを素早く正確にスクロールできます。 人間工学に基づいたデザイン: 高さを抑えた設計 右利き・左利き両対応 コンパクトで場所を取らない 長時間の使用でも快適な操作が可能です。 高精度オプティカルトラッキング: デュアルセンサーによる正確なトラッキングで、少ない手や手首の動きで精密な操作が可能です。 カスタマイズ可能な操作: 8種類のプログラム可能なボタン(4つの物理ボタンと4セットのコンボボタン) KensingtonWorks™ ソフトウェアで簡単にカスタマイズ可能 セキュリティ機能: 128ビットAES暗号化により、ワイヤレス接続での情報セキュリティを確保 クロスプラットフォーム互換性: Windows 7以降(32ビット/64ビット)、Windows 11(64ビットのみ) macOS 10.13以降 DPI切り替え: DPIボタンで400DPI→800DPI→1200DPI→1600DPIを切り替え可能 89096670-739c-415a-b285-1d0f62629036.pdf
Obsidianの標準の検索機能に関するメモ。検索 - Obsidian 日本語ヘルプ - Obsidian Publishより良く使うものを抜粋した。
ショートカットキー # Ctrl+Shift+Fまたは⌘+⇧+F
検索結果表示のオプション # 検索窓の右にあるボタンを押すと検索結果表示のオプションを設定できる。検索結果が多い場合などは、折りたたんでノート名であたりをつけたりするのに便利。 検索結果の埋め込み # ```query embed OR search ``` などとするとノート内に検索結果を埋め込むことができる。この機能はObsidian PublishでもQuartzでもサポートされていない。
検索クエリ # 検索条件 書きかた 説明 AND検索 foo bar fooとbarが含まれる OR検索 foo OR bar fooまたはbarが含まれる NOT検索 foo -bar fooを含むがbarを含まない foo スペースを含む文字列の検索 “foo bar” foo barという文字列を探す 特殊記号のエスケープ \" \\に続けて書くと通常の文字して検索 グループ化 ((a OR b) (c OR d)) 検索条件のグループ化 正規表現 /f../ //の中に正規表現を書く ファイル名検索 file:".jpg" ファイル名に.jpgを含むファイルを検索 ファイルパス検索 path:“journal/” ファイルパスにjournalを含むファイルを検索 タグ検索 tag:#mac タグに#macを含むノートを検索 大文字小文字を無視 ignore-case:(ABC) 大文字小文字を区別せずにABCを検索 大文字小文字を区別 match-case:(ABC) 大文字小文字を区別してABCを検索 ユースケース # 特定のディレクトリ配下を除外して検索 # 検索結果にノイズが含まれてしまうため、作業ログを置いているjournalというディレクトリは除外して検索したい。
事前にfmpegをインストールしておく。
ボイスメモのすべての録音で変換したいファイルを選択する 右クリックしサービス - Finderに表示 を選択 ターミナルを開きffmpeg -i を入力し2.をDrag&Dropする 続けて-acodec libmp3lame hogehoge.mp3と入力して実行する この例ではhogehoge.mp3というファイル名でMP3ファイルが作成される 入力するコマンドの全体はこうなる。
ffmpeg -i foo.m4a -acodec -acodec libmp3lame hogehoge.mp3 以下のようにすれば192kbpsのビットレートでMP3を作成できる。(デフォルトは128kbps)
ffmpeg -i foo.m4a -acodec -acodec libmp3lame -b:a 192k hogehoge.mp3
MacBook Pro(M1 Pro)にイヤホンをBluetooth接続すると音がブツブツ切れる事象が発生していた。
Webで対処方法を調べ、
デバイスの接続解除&再接続 デバイスのペアリング解除&再ペアリング MacのBluetoothをOFF&ON 不要なBluetoothデバイスのペアリング解除 Bluetooth設定情報(/Library/Preferences/com.apple.Bluetooth.plist)の削除 WiFiルーターの2.4GHz帯を不使用 などを試したが、ことごとく改善しなかった。
そういえばM1チップはBluetooth関係でトラブルがあったよな、M3 Proへアップグレードしかないか?などと考えつつ、ふとロジクールのトラックボールMX ERGO MXTB1sの電源を切ったところ、ブツブツが解消した!
とは言え、MX ERGO MXTB1sは引き続き使いたいため、Bluetooth接続はやめてロジクールのワイヤレス接続技術であるUnifying接続に変更してみたところ、ブツブツは発生しなくなった。
どうやら、私の環境ではトラックボールのBluetooth接続が原因だったようだが、上に書いたような手順をひととおり試して、それでも改善しない場合、イヤホン以外のBluetoothデバイスの接続をひとつずつ切ってみると、原因究明ができるかもしれない。
sveinbjornt/Platypus: Create native Mac applications from command line scripts.
スクリプト(Shellスクリプト、Perl、Python、Rubyなど)を標準のMac OS Xアプリケーション(.app)に変換するツール。
Platypusを使用すると、コマンドラインやターミナルを介さずに、スクリプトを直接実行可能なアプリケーションとして実行できる。
生成されるappのinfo.plistを編集することで、スクリプトをURLスキームに対応させることができる。
RubyではURLスキームで指定された文字列へARGVでアクセスできた。
MacBook Pro 14インチ(以下MBP)をクラムシェルモードで使っていたが、Apple Watchを使うのをやめたのでスクリーンロックの解除が煩わしくなった。
このため、いわゆる尊師スタイルで使い始めた。
と言っても、いわゆるキーボードブリッジ的なものを使うとTouch IDが使えなくなるので、MBPのキーボード上に直接HHKB Professional HYBRID Type-S 墨を乗せている。野蛮である。
ただ、HHKBの裏面にはHHKB吸振マットHGを貼っているため、直接プラスチックがガツガツあたるようなことはない。
MBPのトラックパッドはかなり使いやすいが、私はトラックボール愛好家なのでトラックパッドのエリアは殺しても良い。
このため、HHKBをいちばん手前に置くのもありなのだが、2枚目の写真のようにハンドレストと併用するのが良いかな。しばらく試してみる。
PCやスマホで作成したメモをどのように管理するか。方法やツールを替えながら長年模索してきたが、ここ最近は以下の考え方を元に運営し安定している。
(1) PKMツールとしてのObsidian # ObsidianはいわゆるPKM(Personal Knowledge Management)のツールとして使用しており、自分で考えたことや調べてまとめたこと(主に技術的な話題)を管理している。
ページ間のリンクなどObsidianらしい機能はあまり使っていないが、メモ管理ツールとしてこなれているし、プラグインで機能拡張できるところも良い。
有償のObsidian Syncを契約しており、iPhone・iPad・Mac・PCの各アプリでメモを同期している。
また、すべてのメモではないがquartzというツールでWebサイトとして公開している。
NamaraiiBox Obsidianでのノート編集から公開までの流れは、このページにまとめてある。
(2) 覚え書きを中心としたメモを管理するApple謹製メモ # メモを外部へエクスポートする有効な手段がないという大きな不満はあるものの、アプリとしては年々良くなっているし、Apple製品は今後も使っていくだろうということで、覚え書きを中心としたメモはApple謹製の「メモ」で管理している。
メモのジャンルはこんな感じ。
写し・控え(各種手続きの写し。スキャンしたPDFを添付する) モノ(買ったもの。型番やマニュアルのPDFを一緒に管理) 家族(家族のもろもろの覚え書き) 飲食店(好きな店、行ってみたい店) カメラ・写真(撮影スポット、持っているカメラ、レンズ、機材など) キャンプ(キャンプ場のメモ、持っている道具、キャンプ飯レシピ) 人物(スキャンした名刺とメモ) クルマ(車検証や保険証の写し、メンテナンス記録、マニュアルなど) 雑多なメモ(洋服のサイズ、粗大ゴミの出しかたなど) Appleのメモは添付したPDFの中も検索できるので、取説やスキャンした紙などをバンバン添付して使っている。
iCloudでiPhone・iPad・Mac間で同期している。ひと昔前はメモの容量が大きくなると同期が不安定になっていたが、ここ最近は安定しているようだ(自分の環境では)
MacのMicrosoft Remote DesktopからWindowsにRDP接続する際、キーボードがUS(英語)配列で認識される場合の解消方法。MacからWindowsへRDP接続するとキーボードがJISではなくUS配列になるとき | 晴耕雨読からの引用です。
自分の環境では3.の前にWindowsを再起動する必要があった。
対処方法 # 接続先のWindowsで以下の作業を行います。
Win+R で regedit を入力してレジストリエディタを開き、以下のレジストリを開きます。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411
Layout File を「KBDJPN.DLL」から「kbd106.dll」に書き換えます。
MacOSからRDP接続し、日本語キーボードとして認識されているか確認します。

用途によって配置するフォルダを選ぶ # フォルダ 使用法 /System/Library/LaunchDaemons Appleが提供するシステムデーモン /System/Library/LaunchAgents Appleが提供するエージェント。すべてのユーザに対してユーザごとに適用されます /Library/LaunchDaemons システムデーモン /Library/LaunchAgents すべてのユーザに対してユーザごとに適用されます ~/Library/LaunchAgents ログイン中のユーザにのみ適用されます LaunchAgentsはログイン前提、LaunchDaemonsはログインに依存せず実行される。
有効化・無効化 # 有効化
launchctl load /path/to/your.plist 無効化
launchctl unload /path/to/your.plist plistのサンプル # 20秒毎に実行・ログ出力 # 標準出力、標準エラー出力をログに出力 コマンドのサーチパスを指定 ワーキングディレクトを指定 /usr/local/bin/node main.jsを実行 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.demo.daemon.plist</string> <key>RunAtLoad</key> <true/> <key>StartInterval</key> <integer>20</integer> <key>StandardErrorPath</key> <string>/Users/chet/demo/stderr.log</string> <key>StandardOutPath</key> <string>/Users/chet/demo/stdout.log</string> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string><![CDATA[/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin]]></string> </dict> <key>WorkingDirectory</key> <string>/Users/chet/demo</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/node</string> <string>main.js</string> </array> </dict> </plist> 指定日時に実行 # <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>sample</string> <key>Program</key> <string>/Users/user_name/script/sample.sh</string> <key>StartCalendarInterval</key> <dict> <key>Minute</key> <integer>0</integer> <key>Hour</key> <integer>3</integer> </dict> <key>StandardOutPath</key> <string>/Users/user_name/script/sample.out</string> <key>StandardErrorPath</key> <string>/Users/user_name/script/sample.err</string> </dict> </plist> 参考にしたページ # Macの「ターミナル」でのlaunchdを使ったスクリプトの管理 - Apple サポート (日本) Creating Launch Daemons and Agents A Simple Launchd Tutorial. Suppose you’ve written a little script… | by Chet Corcos | Medium
Textwell - The Modeless Textbox for iPhone, iPad, iPod touch, Mac, and Watch.
メモ、メッセージ、ブログ、検索、投稿など、あらゆる文章作成タスクに使用できる多目的テキストエディタ
ファイリングやスタイリングのための機能はないが、JavaScriptベースのカスタマイズ可能なアクション、自動履歴、クラウド同期などをサポートしており、シンプルで拡張性が高い
Mac版、iOS版、AppleWatch版がある
Textwell | URL Schemes
自作のアクションなど # ソートして重複行を削除するTextwellのアクション Obsidianのデイリーノートへ追記するTextwellのアクション Amazonから書誌情報をTextwellへ取り込むブックマークレット
Macでグローバルホットキーで特定アプリを起動できるようにするのはショートカット.appがお手軽。
アプリを起動し、ショートカットの追加ボタンを押してから、以下の手順で設定する。
Alfred - Productivity App for macOS
Mac用のキーボードショートカットアプリ。キー入力だけでアプリを起動したり、Web検索をしたり、コンピュータ上のファイルを検索したり、システムコマンドを実行したりできる。
Alfred関連ノート # AlfredからObsidianの保管庫を検索する Alfred常用のための設定と導入ワークフロー AlfredでDeepL翻訳するワークフロー deepl-alfred-workflow2
日常生活で良くある「電卓以上Excel未満」の計算で便利なMac用のアプリ
Numi. Beautiful calculator app for Mac. 起動するとApple標準のメモ.appよりもシンプルな画面が開く。 ここへおもむろに数式を入力していくと、リアルタイムに計算結果が右側へ表示される。
上の画面では2021-1997をタイプしたところで、計算結果の24が表示されている。
改行すると次の数式を入力でき、感覚としてはテキストエディタで数式混じりの文書を書くと勝手に計算されていくイメージ。
他にもビット演算や平均値の計算、各種変換(通貨・タイムゾーン・CSS・単位)、変数、関数などもサポートし手いる。
Documentation · nikolaeu/numi Wiki · GitHub 計算式 # 数値・ビット演算 # 平均・通貨 # 変数・関数 # タイムゾーン・CSS・単位の変換 # Numi関連のノート # Numiの使用例
パスとしては/Users/ユーザ名/Library/Mobile\ Documents/配下になるが、iOSのアプリが作ったフォルダと、自分が直接iCloud Driveへ作成したドライブでこの後のパスが違ったりわずらわしいので、 Finderからドラッグ&ドロップするのがお手軽
FinderでiCloud Driveのフォルダを選択しターミナルへDrag&Dropする ターミナルへパスが展開される。ちゃんとスペースをエスケープされた状態で展開されるので、そのままコマンドで使用できる
Kindleで持っている本の一覧が欲しくなり方法を調べたところ、そのものズバリの情報があった。
Kindle蔵書一覧を取得する方法 - Qiita
このページでは、以下の3つの方法が紹介されている。
コンテンツと端末の管理ページからスクレイピングする Kindle Cloud Readerが使っているWeb SQL Databaseのクライアント側のDBからそのまま取得する Kindle for PC(Kindle for Mac)で生成されるXMLを参照する いちばんお手軽そうな2.を試してみたが、自分の環境ではうまく動作しなかったため、3.のXMLをパースして蔵書一覧をCSVで出力するスクリプトを書いた。
出力されたCSVを眺めてみると、
最初に買ったKindle本は、2011年11月のThe Rails 3 Wayだった 所有情報は存在するが、読めなくなっている本があるようだ XML上はASINのみ出力され、書籍名は—などとなっており、どの本が読めなくなったのかわからない トータル1035冊あった Kindle Unlimitedで読んでいる本はXMLに出力されない などがわかり、なかなかおもしろかった。
Kindle for Macが生成するXMLからは、
ASIN 書籍名 著者 出版社 出版日 購入日 を取れるっぽいが、これに図書分類コード的なものがあれば、ジャンル別に分類したりもできたんだけどね。
2020年の3月末ぐらいから、ほぼ全期間テレワークしています。最初の頃はオンライン会議でさまざまなトラブルがあったり、機材選びに悩んだりしていたのですが、ここ最近はかなり安定してきましたので、現時点での環境を書き記しておきます。