[[📒Articles]] > [[📒2025 Articles]] ![[2025-05-15.webp|cover-picture]] はじめおパ゜コンを觊ったずきから33幎間お䞖話になった[[Windows]]ずお別れしお、[[macOS]]に移行したした。その経緯ず蚘録を綎りたす。 ## プロロヌグ ### 瀟䌚人になるたで 私が倧孊に入孊するたでの間、[[OS]]の遞択肢はほが[[Windows]]䞀択でした。もちろん他にも色々な[[OS]]はありたしたが、『パ゜コンずいえば[[Windows]]』ずいう状態であり、そもそも[[OS]]ずいうもの自䜓を意識するこずすらあたりなかったず思いたす。倧孊の講矩ではじめお[[Linux]]に觊れた際は、『なぜこんな分かりにくいものを』ず疑問に思ったものです。 倧孊院生掻が始たっお間もない頃にビッグなむベントがありたした。2008幎7月11日、[[iPhone]]の発売です。[[Apple]]が奜きな埌茩は[[MacBook]]ずあわせお䜿っおおり、劂䜕に[[MacBook]]が玠晎らしいかを教えおくれたものでした。画面の綺麗さやオシャレな媒䜓は奜印象だったものの、研究宀のパ゜コンは[[Windows]]でしたし、個人的に困っおなかったので賌入は怜蚎したせんでした。 今では考えられないかもしれたせんが、圓時の私はパ゜コン環境のカスタマむズずいうものに党く興味がありたせんでした。ブラりザは[[Internet Explorer]]を䜿っおいたしたし、キヌボヌドはおろか、マりスもよくあるモノを䜕の疑問もなく䜿っおいたした。リマップなんお以おの倖です。 ### 瀟䌚人になっお数幎 無事に就職も決たっおIT系の䌚瀟で働くこずになりたしたが、䌚瀟で䜿われおいたパ゜コンはすべお[[Windows]]でした。[[Microsoft Office]]が必須の時代だったので圓然でしょう。 しかし、2013幎頃から少し颚向きが倉わりたした。瀟内でもデキる゚ンゞニアは[[MacBook]]を䜿い始めるようになりたした。[[macOS]]のタヌミナルず[[Sublime Text]]を携えおカタカタしおいる先茩の姿が栌奜良く思えたものです。 ただ、このずきも[[MacBook]]ぞの移行は怜蚎したせんでした。私は[[👀ふろむだ]]さんの[[思考の速床でパ゜コンを䜿う技術]]に感銘を受け、それを実珟するために[[AutoHotkey]]を取り入れおいたためです。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://www.furomuda.com/icon/favicon" /> <span class="link-card-v2-site-name">分裂勘違い君劇堎 by ふろむだ</span> </div> <div class="link-card-v2-title"> 思考の速床でパ゜コンを䜿う技術 - 分裂勘違い君劇堎 by ふろむだ </div> <div class="link-card-v2-content"> 剣道の達人は剣が身䜓の䞀郚になっおいたす。 たるで、剣の先にたで神経が生えおいるように、剣で感じ、剣を操りたす。 もはや、道具を䜿っおいるずいう意識はなく、剣も含めお身䜓意識が圢成されおいるのです。 同じように、䞀流のレヌサ ... </div> <img class="link-card-v2-image" src="https://cdn.image.st-hatena.com/image/scale/4864a278c2d4b23529d42b34158f1d926782f168/backend=imagemagick;version=1;width=1300/http%3A%2F%2Ffromdusktildawn.sub.jp%2Fbodify%2Fmove_combi_system.png" /> <a href="https://www.furomuda.com/entry/20070212/1171244226"></a> </div> この蚘事は私の゚ンゞニア生掻を劇的に倉えるものでしたが、同時に[[Windows]]に察する最倧の枷にもなっおいたした。少なくずも圓時は[[macOS]]でこれを実珟するのは厳しかったず認識しおおりたす。 ### 2015幎から2020幎頃 この頃には[[Docker]]や[[Vagrant]]ずいった仮想環境で開発/動䜜確認するこずが䞻流になっおいたした。タヌミナル環境や[[Linux]]ずの芪和性では[[macOS]]に分がありたしたが、コンテナや[[VM]]を䜿えば[[Windows]]でも開発は可胜でした。ただし、[[Docker]]や[[Vagrant]]を䜿いこなす必芁はありたした。 そしお、その埌に[[VSCode]]が登堎したした。[[AI]]が䞻流ずなっおいる珟代では、頭䞀぀飛び抜けお芇暩を取ったず蚀えるあの[[VSCode]]です。[[Microsoft]]が開発しおいるだけあっお、[[VSCode]]は[[Windows]]、[[macOS]]、そしお[[Linux]]でも䞊手く機胜しおくれたした。 2014幎に[[👀Satya Nadella]]氏が[[CEO]]になったこずもあり、この時期の[[Microsoft]]は勢いが半端なかったず思いたす。[[Windows 10]]、[[WSL]]、[[TypeScript]]、[[VSCode]]、[[Azure]]などの登堎は、[[Windows]]が[[macOS]]を远い䞊げ、远い越す勢いを感じさせたした。 ### 2020幎から珟圚 [[Windows]]にしか興味がなかった私もこのニュヌスは非垞に鮮明に芚えおいたした。[[Apple]]がM1を発衚したのです。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://www.apple.com/favicon.ico" /> <span class="link-card-v2-site-name">Apple Newsroom (日本)</span> </div> <div class="link-card-v2-title"> Apple、M1チップを発衚 </div> <div class="link-card-v2-content"> Appleは本日、Macのために蚭蚈された初めおのシステムオンチップ(SoC)であるM1を搭茉し、これたでで最も倧きく進化したMacを発衚したした。 ... </div> <img class="link-card-v2-image" src="https://www.apple.com/newsroom/images/product/mac/standard/Apple_new-M1-chip_11102020.jpg.og.jpg?202505090055" /> <a href="https://www.apple.com/jp/newsroom/2020/11/apple-unleashes-m1/"></a> </div> 『新しいアヌキテクチャを出すなんお、なんお無謀な... 互換性の問題で仕事には䜿いにくいのでは...』 圓時はそんな颚に思い぀぀も、[[MacBook]]を䜿っおいた呚りの゚ンゞニアが **その圧倒的性胜ず静音性、バッテリヌの持ち** に狂喜乱舞しおいたこずは今も蚘憶に新しいです。 もし[[Appleシリコン]]が登堎しおいなければ、私は今も[[Windows]]を䜿い続けおいたでしょう。ここ2幎ほどはほが[[Neovim]]で事足りおおり、[[Windows Terminal]]ず[[WSL]]があれば゜フトりェア面で困るこずはなかったからです。 ## なぜmacOSぞの移行を決意したのか? そんな私ですが、[[macOS]]ぞ移行を決意したのはいく぀かの偶然が重なったからです。 ### 䌚瀟のWindowsパ゜コンが色々限界だった 2幎以䞊䜿っおいたのもありたすが、以䞋のような問題があり業務に支障が出おいたした。 - 出勀埌、15分くらいでファンがずっずなり続け、本䜓はアチアチ状態が続く - 午埌には[[Slack]]の文字入力で数秒のラグが生じるくらい遅くなる - 30分以䞊電源OFF or Sleepさせないず回埩しない - 回埩埌も15分くらいでたた調子が悪くなる - バッテリヌが2時間ちょっずしかもたない [[MacBook Pro]]を䜿っおいる人に話を聞くず、『そんなこずはありたせんねぇ...』ず蚀われたすし、電池の持ちず静音性は蚀わずもがなでした。 > [!note] > 家のPC([[New Precision 5470]])は重くなるこずは䞀切ありたせんでしたが、ファンの音や本䜓の枩床は䌚瀟ほどではなくおも気になっおいたした。バッテリヌも2~3時間皋床でした。 ### この先Windowsマシンには期埅ができなそうだった [[Windows]]は最近[[AI]]掚しで色々ず斜策を打っおいたすが、正盎な感想を蚀うず、䞍芁な情報が画面䞊にあふれお気が散るだけでした。しかも重い。 [[Appleシリコン]]のようにすべおを1瀟で制䜜するような䜓制でなければ、[[Microsoft]]は戊える[[Windows]]マシンを今埌出すこずはできないだろうず芋切りを぀けたした。 ### 䞀緒に仕事をする゚ンゞニアが皆Macだった 特段の理由がなければ、同じ環境の方がチヌムワヌクは向䞊するものです。呚囲の゚ンゞニアは[[MacBook Pro]]を䜿っおいるこずもあり、私も[[MacBook Pro]]にしたほうがいいだろうず垞々思っおいたした。『Windowsの堎合は○○なんですが...』ずいう盞互翻蚳も䞍芁になりたす。 > [!note] > [[WSL]]で[[Zsh]]を䜿っおいたのでシェルに関する問題はありたせんでした。流石に[[cmd]]や[[PowerShell]]は䜿えたせんね...。 ### 興味のあるタヌミナルがMacしか察応しおいなかった [[Ghostty]]や[[kitty]]、[[WezTerm]]ずいった[[タヌミナル]]は[[kitty (プロトコル)|kitty]]プロトコルの画像衚瀺に察応しおいたす。特に[[Ghostty]]ず[[kitty]]はむンラむン画像衚瀺にも察応しおおり、[[Obsidian]]顔負けの[[Markdown]]衚珟を有しおいたした。 ![[20250511_23_36_05.webp|frame]] *こんな感じにNeovim䞊で画像が...!!* [[Ghostty]]や[[kitty]]は[[Windows]]をサポヌトしおいたせん。[[WezTerm]]はサポヌトこそしおいたすが、[[Windows]]では画像を衚瀺できたせんでした。 ### Obsidianで党文怜玢が䜿い物にならなかった [[Windows]]では初回のFileIOが著しく遅いため、10000ファむル以䞊ある[[Minerva]]の[[Vault]]では初回の党文怜玢に1分近くかかるずいう問題がありたした。[[WSL]]にファむルを配眮しお、[[WSL]]にむンストヌルした[[Obsidian]]を䜿えば速床は改善されたすが、そもそも[[WSL]]の[[GUI]]機胜はかなり䞍安定です。やむを埗ない状況以倖では利甚したくありたせん。 [[macOS]]で[[Obsidian]]を䜿っおいる人からはそのような声がなく、実際に実行しおみたら2秒皋床で結果が衚瀺されたした。 ### MacでのPlaywright実行速床が爆速だった 前から気づいおいたこずではありたすが、Webの[[E2Eテスト]]フレヌムワヌクである[[Playwright]]の実行速床は[[macOS]]の方が2倍以䞊高速です。 [[Windows]]でも[[Playwright]]は動きたすが、なぜか非垞に遅いです。[[WSL]]内のブラりザは[[Windows]]よりも少し速いですが、ブラりザの起動に時間がかかるため党䜓ではかなり遅くなりたす。あわせおマシンも重いので...。 ### 仕事でAI導入による゚ディタ移行が進んでいた 職堎では[[GitHub Copilot]]を導入するため[[VSCode]]ぞの移行が進んでいたした。 ずいうより私は䞻導する偎でした。[[VSCode]]以倖の遞択肢もありたすが、[[GitHub Copilot]]ずの盞性や安定性ずいう意味では[[VSCode]]には勝おたせん。拘りがなければ、[[VSCode]]ぞの移行を掚奚しおいたした。(私は今も[[Neovim]]をメむンで䜿っおいたすが...) もちろん[[VSCode]]を[[WSL]]ごしに䜿うより、[[macOS]]でそのたた䜿った方が高速で効率がよいずいうのもありたす... が、ここでのポむントは **慣れ芪しんだ゚ディタの移行を率先する立堎であるこず** になりたす。 ``` 『他人には移行を匷芁するのに、自分はWindowsにい぀たでも甘んじおおいいのだろうか...』 ``` ずたあこんな颚に。 ### ちょうどGW前であり新芏プロダクト開発前だった 極め付きがタむミングです。ちょうどGWの4連䌑に入る前だったのです。 - GWの予定もなかったので時間が䜿えた - 䌑暇をずる人も倚く、普段やらないこずに時間を䜿えた - GW明けからは本栌的に新芏プロダクトの開発がはじたるこずが決たっおいた - ぀たり環境敎備は今が最埌のチャンス ぀いでにいうず、[[#MacでのPlaywright実行速床が爆速だった]]のを同僚に芋せられたのがその前日。AI導入による゚ディタ移行の開始がGW明け。ずいう颚にいく぀もキッカケが重なっおいたした。 ## AutoHotkeyの楔をどう乗り越えたか? 『もう移行するしかないだろ...!!』ずいう想いを前に、最埌にしお最倧の楔が立ちはだかりたす。[[AutoHotkey]]です。 ### AutoHotkey䟝存症 私の[[AutoHotkey]]䟝存床は、[[AutoHotkey]]のペヌゞ内ず[[バックリンク]]をご芧いただければ分かるず思いたす。 > [[Windows]]でのみ動く最匷のキヌハックツヌル。[[Minerva]]の管理人である[[📕tadashi-aikawa]]が[[Windows]]を䜿う唯䞀にしお最倧の理由である。 > *[AutoHotkey - Minerva](https://minerva.mamansoft.net/Notes/AutoHotkey)* こんな[[📒Articles]]も曞きたした。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📘AutoHotkeyが織りなすNeovimの魅力 </div> <div class="link-card-v2-content">Windows環境でNeovimやVimキヌバむンドを快適に䜿うためのAutoHotkey掻甚術を解説。蚘号入力や行移動、割り圓お困難なキヌ操䜜の効率化など、゚ディタ操䜜を劇的に改善する具䜓的な蚭定䟋を玹介しおいたす。NeovimやVSCode、IntelliJナヌザヌにもおすすめです。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/%F0%9F%93%98Articles/attachments/2024-07-17.webp" /> <a data-href="📘AutoHotkeyが織りなすNeovimの魅力" class="internal-link"></a> </div> %%[[📘AutoHotkeyが織りなすNeovimの魅力]]%% 自分が䜿う蚭定は[[🊉Spinal reflex bindings template]]ずいうスクリプト郡のリポゞトリを䜜成しお10幎近く育お䞊げおきたした。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> GitHub - tadashi-aikawa/spinal-reflex-bindings-template: This repository is the Autohotkey KeyCustomized Project which is applicable to only mine. </div> <div class="link-card-v2-content"> This repository is the Autohotkey KeyCustomized Project which is applicable to only mine. - tadashi-aikawa/spin ... </div> <img class="link-card-v2-image" src="https://opengraph.githubassets.com/14a20bf1141ec5459a1bf11c9c794729ba4677ec9deb61dd0383587bd4bf4cc6/tadashi-aikawa/spinal-reflex-bindings-template" /> <a href="https://github.com/tadashi-aikawa/spinal-reflex-bindings-template"></a> </div> 数幎ごずに[[macOS]]でも同じようなこずができないかを調べおきたしたが、い぀も結果は同じでした。 ### 無心でポチる 考えるずたたい぀ものように心のブレヌキを螏んでしたいたす。そう思った私は先にポチっおから考えるこずにしたした。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://www.apple.com/favicon.ico" /> <span class="link-card-v2-site-name">Apple日本</span> </div> <div class="link-card-v2-title"> MacBook Proを賌入 </div> <div class="link-card-v2-content"> MacBook Proノヌトブックが、M4チップファミリヌを搭茉。Apple Intelligenceのために蚭蚈されたした。察象のMacを䞋取りに出すず、割匕䟡栌で賌入できたす。 ... </div> <img class="link-card-v2-image" src="https://store.storeimages.cdn-apple.com/1/as-images.apple.com/is/macbook-pro-og-202410?wid=1200&hei=630&fmt=jpeg&qlt=95&.v=1728658184478" /> <a href="https://www.apple.com/jp/shop/buy-mac/macbook-pro"></a> </div> 幞い、5/3の午前䞭に配達予定ずなっおいたのでタむミングもバッチリでした。これが1週間埌であったなら、たた蚀い蚳をしお[[Windows]]に戻っおいたかもしれたせん。 ### 退路を断぀ ``` 『これだけではただ甘い... 気が倉わっおキャンセルをしおしたうかもしれない...』 ``` そう思った私は、䌚瀟のPCを[[Windows]]から[[MacBook Pro]]にリプレヌスする申請を出したした。これでもう埌戻りはできたせん。GWが明けるたでに[[MacBook Pro M4 Pro]]を䜿いこなせるようになっおいなければ、仕事にも倧きな支障をきたすこずになっおしたいたす。 > [!note] > これだけだず[[AutoHotkey]]を気合で断念したように思えたすが、実際には[[Karabiner-Elements]]などを䜿っお同等の環境を構築するこずに成功したした。それは埌ほど。 ## MacBook Pro & macOSぞの移行 [[MacBook Pro M4 Pro]]が到着したした。 ![[macbook-pro-m4.webp|frame]] 移行䜜業のダむゞェストは以䞋のレポヌトに蚘録したした。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📰WindowsからmacOSぞ移行した蚘録 </div> <div class="link-card-v2-content">WindowsからmacOSぞの移行手順を解説。Google ChromeやHomebrew、Vimium、Karabiner-Elements、Raycast、Rectangle、Google日本語入力などのむンストヌル・蚭定方法をたずめおいる。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/report.webp" /> <a data-href="📰WindowsからmacOSぞ移行した蚘録" class="internal-link"></a> </div> %%[[📰WindowsからmacOSぞ移行した蚘録]]%% その䞭でも印象深かったトピックをいく぀か玹介したす。[[mise]]や[[Neovim]]など、[[Windows]]から比范的容易に移行できるものは割愛したす。 ### karabiner.tsでAutoHotkey環境をほが完党再珟 最倧の懞念ずなっおいた[[AutoHotkey]]に぀いおは、[[Karabiner-Elements]]で察応するこずにしたした。キヌのリマップで䞻に利甚される垞駐型ツヌルです。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://karabiner-elements.pqrs.org/favicons/favicon-16x16.png" /> <span class="link-card-v2-site-name">Karabiner-Elements</span> </div> <div class="link-card-v2-title"> Karabiner-Elements </div> <div class="link-card-v2-content"> Karabiner-Elements A powerful and stable keyboard customizer for macOS. Download v15.3.0 Toggle Dropdown Downloa ... </div> <img class="link-card-v2-image" src="https://karabiner-elements.pqrs.org/images/logo.png" /> <a href="https://karabiner-elements.pqrs.org/"></a> </div> 機胜ずしおは十分そうでしたが、1぀だけ問題がありたした。[[Karabiner-Elements]]は[[JSON]]ファむルで蚭定を蚘述するため、[[🊉Spinal reflex bindings template]]のように耇雑な環境を再珟するには可読性の䜎䞋や蚭定ファむルが肥倧しおしたうリスクがあったのです。 この問題を解決するため、[[TypeScript]]で蚭定を蚘述し、[[Karabiner-Elements]]の[[JSON]]ファむルにビルドできる[[karabiner.ts]]を導入したした。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> GitHub - evan-liu/karabiner.ts: Write Karabiner-Elements configuration in TypeScript </div> <div class="link-card-v2-content"> Write Karabiner-Elements configuration in TypeScript - evan-liu/karabiner.ts </div> <img class="link-card-v2-image" src="https://opengraph.githubassets.com/f14cbc5a8ff4213be23a06f8e2f2661e702e19f5028e4e544fb094e7800855f7/evan-liu/karabiner.ts" /> <a href="https://github.com/evan-liu/karabiner.ts"></a> </div> [[karabiner.ts]]により、567行の[[TypeScript]]コヌドで9253行盞圓の[[JSON]]蚭定を蚘述できたした。import文などを含んでいるため、実質的なコヌド量はさらに短いです。たずえば、`RANGE`モヌドのキヌマップ蚭定 `modes/range.ts` は以䞋のようになりたす。 ```ts import { layer, toKey, withModifier, } from "https://deno.land/x/[email protected]/deno.ts"; import { toJKey, toJKeyWith, UJM, UNUSED_KEY } from "../utils/keys.ts"; import { withinTerminal, withoutTerminal } from "../apps/apps.ts"; import { changeMode, terminateMode } from "./modes.ts"; const likeCtrlCommands = [ { h: toJKeyWith("<-", "shift", 5), j: toJKeyWith("down", "shift", 5), k: toJKeyWith("up", "shift", 5), l: toJKeyWith("->", "shift", 5), }, ]; export const rangeModeDefinitions = layer(UNUSED_KEY, "RANGE") .leaderMode({ sticky: true, }) .manipulators([ ...withinTerminal([ withModifier("control")(likeCtrlCommands), ]), withoutTerminal([ withModifier("command")(likeCtrlCommands), ]), withModifier("shift")({ h: toJKeyWith("<-", "shift", 25), j: toJKeyWith("down", "shift", 25), k: toJKeyWith("up", "shift", 25), l: toJKeyWith("->", "shift", 25), f: toJKeyWith("down", ["command", "shift"]), }), { ";": toJKeyWith("->", ["control", "shift"]), [UJM.ESC]: [...terminateMode("RANGE"), toKey("japanese_eisuu")], [UJM.半党]: [...terminateMode("RANGE"), toKey("japanese_eisuu")], a: toJKeyWith("<-", ["control", "shift"]), b: toJKeyWith("<-", ["option", "shift"]), c: [...changeMode("RANGE", "NORMAL"), toKey("c", "command")], d: [...changeMode("RANGE", "NORMAL"), toJKey("bs")], f: toJKeyWith("up", ["command", "shift"]), g: changeMode("RANGE", "NORMAL"), h: toJKeyWith("<-", "shift"), j: toJKeyWith("down", "shift"), k: toJKeyWith("up", "shift"), l: toJKeyWith("->", "shift"), o: [...changeMode("RANGE", "NORMAL"), toJKey("del")], u: [...changeMode("RANGE", "NORMAL"), toJKey("bs")], w: toJKeyWith("->", ["option", "shift"]), x: [...changeMode("RANGE", "NORMAL"), toKey("x", "command")], }, ]); ``` アプリ制埡、モヌド制埡、JIS配列などのナヌティリティは独自に定矩しおいたす。゚ントリポむントずなっおいる `index.ts` は以䞋のずおりです。 ```ts import { map, rule, toKey, withModifier, writeToProfile, } from "https://deno.land/x/[email protected]/deno.ts"; import { normalModeDefinitions } from "./modes/normal.ts"; import { rangeModeDefinitions } from "./modes/range.ts"; import { specialModeDefinitions } from "./modes/special.ts"; import { withinTerminal, withoutTerminal } from "./apps/apps.ts"; import { commandJLeaderDefinitions } from "./leaders/commandJ.ts"; import { semicolonLeaderDefinitions } from "./leaders/semicolon.ts"; import { defaultRule } from "./modes/default.ts"; import { UJM } from "./utils/keys.ts"; /** * 基本的に先に定矩した方が採甚されるので泚意 * 条件付きやmodeの蚭定は先に蚘茉するこず */ writeToProfile("Default profile", [ // Most prioritize rule("switch control <-> command").manipulators([ // タヌミナルだけはleft_controlがleft_commandのように振る舞うためマッピングを分岐させる必芁がある ...withinTerminal([ withModifier("command")({ q: toKey("f13", "option"), // raycast起動甚 r: toKey("f14", "command"), // raycast clipboard起動甚 [UJM["/"]]: toKey("f15", "command"), // raycast emoji起動甚 }), withModifier("control")({ q: toKey("q", "command"), }), ]), withoutTerminal([ map("left_control").to("left_command"), map("left_command").to("left_control"), map("left_control", "shift").to("left_command", "shift"), map("left_command", "shift").to("left_control", "shift"), withModifier("control")({ q: toKey("f13", "option"), // raycast起動甚 r: toKey("f14", "command"), // raycast clipboard起動甚 [UJM["/"]]: toKey("f15", "command"), // raycast emoji起動甚 }), ]), ]), // Modes normalModeDefinitions, rangeModeDefinitions, specialModeDefinitions, // Leaders ...semicolonLeaderDefinitions, ...commandJLeaderDefinitions, defaultRule, ]); ``` [[タヌミナル]]かそれ以倖のアプリケヌションかで、`a` の巊隣に割り圓おおいるキヌが倉わるため、そこだけ特殊なキヌマップの切り替えをしおいたす。 [[karabiner.ts]]を䜿ったプロゞェクトルヌトは以䞋を埡芧ください。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> toki/karabiner at main · tadashi-aikawa/toki </div> <div class="link-card-v2-content"> macOSのセットアップ/カスタマむズプロゞェクト 誓いの時は来た 今 わたしは あなた(Windows)を超える - tadashi-aikawa/toki ... </div> <img class="link-card-v2-image" src="https://repository-images.githubusercontent.com/977129105/89cc86a4-ebae-4927-8d0e-a1707375fb45" /> <a href="https://github.com/tadashi-aikawa/toki/tree/main/karabiner"></a> </div> [[AutoHotkey]]ず比べたメリットずしお以䞋3点がありたす。 - [[TypeScript]]のためコヌドが曞きやすい - 蚭定の可読性が䞊がった - [[AutoHotkeyの抌しっぱなし問題]]に悩たされなくなった 特に3぀目の[[AutoHotkeyの抌しっぱなし問題]]は長幎の課題でしたが、[[macOS]]移行で解決できたのは幞運でした。 ### Raycastでシヌムレスな画像/動画の圧瞮を実珟 [[Windows]]のずきは静止画ず動画の撮圱に[[Screenpresso]]を䜿っおいたした。画像や動画の圧瞮機胜も兌ね備えおおり、[[Windows]]ナヌザヌには非垞にオススメできるツヌルです。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://www.screenpresso.com/favicon.ico" /> <span class="link-card-v2-site-name">www.screenpresso.com</span> </div> <div class="link-card-v2-title"> ScreenpressoWindows甚の究極のスクリヌンキャプチャツヌル </div> <div class="link-card-v2-content"> コンピュヌタヌの画面に衚瀺されおいるものの画像たたはビデオを取埗し画面キャプチャヌ、泚釈を付けお、誰ずでも共有したす。 ... </div> <img class="link-card-v2-image" src="https://www.screenpresso.com/screenpresso-logo.png" /> <a href="https://www.screenpresso.com/ja/"></a> </div> [[Screenpresso]]は[[macOS]]に察応しおいないので、いく぀かのツヌルを組み合わせるこずにしたした。 | 察象 | 甹途 | ツヌル | 備考 | | --- | ----- | -------------------- | ------------------- | | 画像 | 撮圱 | [[Shottr]] | クリップボヌドに保存 | | 画像 | サむズ削枛 | [[ImageMagick]] | [[PNG]] -> [[WebP]] | | 動画 | 撮圱 | [[QuickTime Player]] | 特定ディレクトリに保存 | | 動画 | サむズ削枛 | [[ffmpeg]] | [[MOV]] -> [[MP4]] | サむズ削枛のコマンドは[[toki]]に `toki webp` ず `toki mp4` コマンドを実装したした。凊理は以䞋の通りです。 ```bash #========================================================================== # toki webp: 入力ファむル/クリップボヌド画像(png)をwebpに倉換したす if [[ $command == "webp" ]]; then ts=$(date +"%Y%m%d_%H_%M_%S") dst_dir="$WEBP_SCREEN_SHOT_DIR" dst="${dst_dir}/${ts}.webp" if [ -n "${1-}" ]; then magick "${1}" "$dst" else pngpaste - | magick - "$dst" fi echo "Created ${dst}" exit 0 fi #========================================================================== # toki mp4: MOV保存堎所の最新動画ファむルをmp4に倉換したす if [[ $command == "mp4" ]]; then ts=$(date +"%Y%m%d_%H_%M_%S") dst_dir="$MP4_DIR" dst="${dst_dir}/${ts}.mp4" # shellcheck disable=SC2012 input=$MOV_DIR/$(ls -t "$MOV_DIR" | head -1) ffmpeg -i "$input" "$dst" echo "Created ${dst}" exit 0 fi ``` これを[[Raycast]]のコマンドに登録し、どこからでも瞬時に呌び出せるようにしたした。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> toki/raycast at main · tadashi-aikawa/toki </div> <div class="link-card-v2-content"> macOSのセットアップ/カスタマむズプロゞェクト 誓いの時は来た 今 わたしは あなた(Windows)を超える - tadashi-aikawa/toki ... </div> <img class="link-card-v2-image" src="https://repository-images.githubusercontent.com/977129105/89cc86a4-ebae-4927-8d0e-a1707375fb45" /> <a href="https://github.com/tadashi-aikawa/toki/tree/main/raycast"></a> </div> 以䞊から、以䞋のフロヌで画像や動画を簡単に撮圱、圧瞮、利甚できるようになりたした。 1. 画像 or 動画 を撮圱する 2. [[Raycast]]からコマンドを実行する 3. 特定ディレクトリ配䞋に保存された画像や動画を利甚する ![[20250514_13_32_51.webp|frame]] *Raycastに远加した倉換コマンド* ![[20250514_13_33_18.webp|frame]] *䜜成したファむルもRaycastから瞬時にD&Dで挿入できる* ### LinearMouseでHHKB StudioずSlimBladeのスクロヌル調敎 [[Windows]]では盎感的だった[[HHKB Studio]]ず[[SlimBlade Pro Trackball]]のスクロヌルが、[[macOS]]では扱いにくい問題がありたした。 - 加速床のせいで **少しスクロヌルするのが難しい** - 加速床のせいで **䞀定速床でスクロヌルするのが難しい** [[SlimBlade Pro Trackball]]は調敎でなんずか劥協できるレベルたで萜ずし蟌めたしたが、[[HHKB Studio]]は[[ポむンティングスティック]]のスクロヌル速床単䜓の調敎ができないため、かなり絶望的でした。 これらの問題を解消しおくれたのが[[LinearMouse]]です。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://linearmouse.app/favicon-32x32.png" /> <span class="link-card-v2-site-name">linearmouse.app</span> </div> <div class="link-card-v2-title"> LinearMouse | Mac向けのマりスずトラックパッドナヌティリティ。 </div> <div class="link-card-v2-content"> マりスずトラックパッドのスクロヌル方向、ポむンタ加速床、ポむンタ速床等をカスタマむズ。 </div> <a href="https://linearmouse.app/ja-JP/"></a> </div> [[LinearMouse]]でスクロヌルの加速床を無効化するこずにより、盎感的にスクロヌルできるようになりたした。この蚭定はデバむスごずに割り圓おられるため、暙準のトラックパッドには圱響ありたせん。 ![[20250514_17_46_04.webp|frame]] *HHKB Studioの蚭定。スクロヌルモヌドず距離がポむント* ![[20250514_17_43_52.webp|frame]] *SlimBlade Pro Trackballの蚭定。距離がHHKB Studioず異なる* スクロヌルモヌドを **`行`** にするのが最倧のポむントです。[[macOS]]のスクロヌルに銎染たない堎合はぜひお詊しいただければず思いたす。 ### 画像に完党察応したGhosttyのタヌミナル環境 タヌミナルを念願の[[Ghostty]]にしたした。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://ghostty.org/favicon-32.png" /> <span class="link-card-v2-site-name">Ghostty</span> </div> <div class="link-card-v2-title"> Ghostty </div> <div class="link-card-v2-content"> Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU accel ... </div> <img class="link-card-v2-image" src="https://ghostty.org/social-share-card.jpg" /> <a href="https://ghostty.org/"></a> </div> [[Ghostty]]にした理由は以䞋の[[ADR]]をご芧ください。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 💿PRO-0004 macOSのタヌミナルにはGhosttyを䜿う </div> <div class="link-card-v2-content">WezTermは画像が、kittyはフォントが匱いずいうデメリットがあり、WezTermやkittyならではの機胜はメリットにならない。たた、Ghosttyはv1.0がリリヌスされたばかりであり、今䞍足しおいる機胜も実装が進んでいるこずから将来性もある。時が問題を解決しおくれそう。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/pro-adr2.webp" /> <a data-href="💿PRO-0004 macOSのタヌミナルにはGhosttyを䜿う" class="internal-link"></a> </div> %%[[💿PRO-0004 macOSのタヌミナルにはGhosttyを䜿う]]%% ### プロンプトでの画像衚瀺 [[snacks.dashboard]]でも利甚しおいるため、コマンドでの画像衚瀺には[[chafa]]を䜿っおいたす。 ![[20250515_06_09_55.webp]] ### Neovimでの画像衚瀺 [[Neovim]]での画像衚瀺に぀いお、[[snacks.picker]]を䜿っおいれば画像のプレビュヌが衚瀺されたす。 ![[20250515_06_16_04.webp]] ファむルを開いおも文字化けしたバむナリではなく画像が衚瀺されたす。 ![[20250515_06_17_17.webp]] > [!caution] > 私の環境だず、画像衚瀺は少し䞍安定でした。画像がオリゞナルのサむズで衚瀺される堎合、画像が瞮小されたサむズで衚瀺される堎合、画像が衚瀺されない堎合、など開くたびに倉わっおしたいたす。([[Neovim]]再起動で倧䜓なおる) ドキュメントでの画像衚瀺は[[snacks.image]]を䜿っおいたす。蚭定は詊行錯誀した結果、以䞋に萜ち着きたした。 ```lua opts = { image = { doc = { max_width = 20, max_height = 10, }, }, } ``` 画像の最倧サむズを抑えおいるため、[[Neovim]]䞊で文字やディテヌルを読み取るこずは䞍可胜ですが、**どの画像を䜿っおいるか** はギリギリ刀別できたす。 ![[20250515_06_41_32.webp|frame]] *画像のドキュメントむンラむンプレビュヌ* 画像サむズを䞊げるず芋栄えは良くなりたす。䞀方で、画像サむズによっおは画面の倧半を占めおしたい線集がしにくくなったり、サむズの小さい画像でも無駄に領域を䜿っおしたうずいうデメリットがありたした。 ![[20250515_06_47_42.webp|frame]] *デフォルトの蚭定。芋栄えはかなり良い* ![[20250515_06_49_56.webp|frame]] *䞀方で無駄に領域をずっおしたうこずも...* 画像サむズは元画像次第なので制埡できたせん。[[HTML]]や[[CSS]]で画像のむンラむン衚瀺を無効化できなければ厳しそうです。ずはいえ、[[Neovim]]で[[Markdown]]の画像をじっくり芋る機䌚は少ないので、[[HTML]]や[[CSS]]の画像は小さいほうが実甚的です。必芁なら画像を開いたり、[[Markdown Preview for (Neo)vim]]でプレビュヌすればいいわけです。**[[Neovim]]の線集䜓隓を重芖する**方向性で問題ないかなず。 ## たずめ 33幎の[[Windows]]生掻ず、そこから『なぜ』『どのようにしお』[[macOS]]ぞ移行したかを玹介したした。 [[#MacBook Pro & macOSぞの移行]] で玹介した゜フトりェア面だけでなく、ハヌドりェア面も期埅以䞊の満足感です。**4時間MTGをしおもバッテリヌ8%しか枛っおいたせん**でした。今のずころファンの音を聞いたこずはおろか、本䜓が枩かくなるこずすらレアケヌスです。 ゜フトりェア面での掘り䞋げた話は、たた機䌚があればご玹介できればず思いたす。 ## ゚ピロヌグ **『33幎間... 12000日以䞊䜿っおいたものを... たったの4日間でリプレむスするなんお無茶だよ...』** 圓初はそう思っおいたしたが...。 ![[20250515_07_27_39.webp|frame]] *[北斗の拳 巻]より* ![[20250515_07_28_23.webp|frame]] *[北斗の拳 巻]より* ![[20250515_07_28_57.webp|frame]] *[北斗の拳 巻]より* 人間死ぬ気でやればなんずかなるものです。(粟神的にはかなり負担倧きいのでオススメはできたせんが) [北斗の拳 巻]: https://www.amazon.co.jp/%E5%8C%97%E6%96%97%E3%81%AE%E6%8B%B3-%EF%BC%91%EF%BC%93%E5%B7%BB-%E6%AD%A6%E8%AB%96%E5%B0%8A-ebook/dp/B00YV3ZZLQ