<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/styles.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Daiki Sato</title><description>Daiki Satoのブログ</description><link>https://sur33.com/</link><language>ja-jp</language><item><title>理想の家のアイデア</title><link>https://sur33.com/dreamhouse/</link><guid isPermaLink="true">https://sur33.com/dreamhouse/</guid><description>どんな家に住みたい？</description><pubDate>Sun, 21 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;全体&lt;/h2&gt;
&lt;h3&gt;照明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ダウンライト
&lt;ul&gt;
&lt;li&gt;大きなシーリングライトで照らすのではなく間接照明等を使う&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;スマート照明
&lt;ul&gt;
&lt;li&gt;対応の電球などで実現し、埋め込み式は避ける&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;たまに行く部屋はセンサー式
&lt;ul&gt;
&lt;li&gt;たまにしか行かない部屋はセンサーで自動的に照明をつける&lt;/li&gt;
&lt;li&gt;トイレ、廊下、物置等&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;空調&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;床暖房
&lt;ul&gt;
&lt;li&gt;冬の寒い日にも足元から暖かい&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;全館空調
&lt;ul&gt;
&lt;li&gt;いちいち部屋ごとにエアコンを操作せずとも家中快適&lt;/li&gt;
&lt;li&gt;空気清浄機能付きが理想&lt;/li&gt;
&lt;li&gt;これもスマートホーム的に自動的に調整させたい&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;電源&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;アース付きの3穴コンセント
&lt;ul&gt;
&lt;li&gt;特にデスク近くには多めに欲しい&lt;/li&gt;
&lt;li&gt;デスク近くに関しては全部これだっていい&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;台所&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ビルトイン食器洗浄機&lt;/li&gt;
&lt;li&gt;パントリー&lt;/li&gt;
&lt;li&gt;生ごみ用のごみ箱は棚や流しの下などに入るように&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;洗面所&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ガス衣類乾燥機
&lt;ul&gt;
&lt;li&gt;外で洗濯物を干すのは面倒&lt;/li&gt;
&lt;li&gt;花粉症対策にもなる&lt;/li&gt;
&lt;li&gt;ガス式は電気式よりも速く乾く&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;体重・体組成計を置けるくらいのスペース
&lt;ul&gt;
&lt;li&gt;ずっと置きっぱなしにするくらいでないと使わなくなる&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;洗面台には2つ以上のコンセント穴&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>オーディオインターフェースを机の裏に設置した</title><link>https://sur33.com/posts/audio-interface-under-the-desk/</link><guid isPermaLink="true">https://sur33.com/posts/audio-interface-under-the-desk/</guid><description>オーディオインターフェースを両面テープで机の下に設置するために、突っ張り棒を使って仮固定しました。</description><pubDate>Thu, 16 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;オーディオインターフェースを机の裏に設置したい&lt;/h2&gt;
&lt;p&gt;机の上が狭いので、机の裏にオーディオインターフェースを固定してみました。ちなみに、使っているオーディオインターフェースはSteinbergのUR22mkIIです。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.steinberg.net/ja/audio-interfaces/ur22c-recording-pack/ur22mkii/&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;www.steinberg.net&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.steinberg.net&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;実はこれまでも色々試していて、例えば&lt;a href=&quot;https://amzn.to/3WKgHn8&quot;&gt;面ファスナー&lt;/a&gt;を机の裏とオーディオインターフェースに貼り付けて固定してみたり、&lt;a href=&quot;https://amzn.to/3WGNWrq&quot;&gt;貼り付けられる磁石シート&lt;/a&gt;を使ってみたりしましたが、どれも失敗に終わっていました。&lt;/p&gt;
&lt;p&gt;そこで、今回はもう両面テープを使って固定してしまうことにしました。ただ、完全にくっつけてしまうのは怖いので&lt;a href=&quot;https://amzn.to/3QRBelV&quot;&gt;Scotchの「あとからはがせる」シリーズ&lt;/a&gt;を使っています。さらに、両面テープでちゃんと固定するためにある程度の時間（約1日）は重力が掛かってほしくないので、突っ張り棒を使って仮固定しています。&lt;/p&gt;
&lt;h2&gt;今回やったこと&lt;/h2&gt;
&lt;p&gt;大したことはないのでダイジェストでお送りします。&lt;/p&gt;
&lt;p&gt;これを&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;こうして&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;こうじゃ！&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;この状態で1日放置します。この突っ張り棒は100均で買ってきました。&lt;/p&gt;
&lt;p&gt;にしても机の足元が汚いね…&lt;/p&gt;</content:encoded></item><item><title>CotEditor向けCatppuccinテーマを作った</title><link>https://sur33.com/posts/catppuccin-coteditor/</link><guid isPermaLink="true">https://sur33.com/posts/catppuccin-coteditor/</guid><description>CotEditor向けのCatppuccinテーマを作成した。初めてのOSS貢献。</description><pubDate>Sun, 27 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Catppuccin&lt;/h2&gt;
&lt;p&gt;ここ数年ずっと &lt;a href=&quot;https://draculatheme.com/&quot;&gt;Dracula&lt;/a&gt; テーマを使っていて、最近 &lt;a href=&quot;https://catppuccin.com/&quot;&gt;Catppuccin&lt;/a&gt; に乗り換えた。ダーク/ライトモード両方に対応していて、パステルカラーでかわいい。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/catppuccin/catppuccin&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - catppuccin/catppuccin: 😸 Soothing pastel theme for the high-spirited!&lt;/div&gt;
    &lt;div&gt;😸 Soothing pastel theme for the high-spirited! Contribute to catppuccin/catppuccin development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;CotEditorにCatppuccinテーマを&lt;/h2&gt;
&lt;p&gt;最近使い始めてお気に入りのテキストエディタが CotEditor。macOS純正のアプリであるかのような美しいUIで、使いやすい。Markdownファイルを編集するのによく使ってる。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://coteditor.com/&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;CotEditor&lt;/div&gt;
    &lt;div&gt;Text Editor for macOS&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;coteditor.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;ただ、調べたところCatppuccin公式ではCotEditorテーマが無い。非公式のものはあるけど、せっかくなら公式のものを使いたいよねってことで……&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/catppuccin/coteditor&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - catppuccin/coteditor: 🖊️ Soothing pastel theme for CotEditor&lt;/div&gt;
    &lt;div&gt;🖊️ Soothing pastel theme for CotEditor. Contribute to catppuccin/coteditor development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;自分で作ってみた。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/catppuccin/catppuccin/blob/main/docs/port-creation.md#creation&quot;&gt;公式のドキュメント&lt;/a&gt;に従ってリポジトリを作り、&lt;a href=&quot;https://github.com/catppuccin/catppuccin/issues/2829&quot;&gt;Issue&lt;/a&gt;を立てて、受けた指摘に従って修正して、リポジトリをTransferした。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/catppuccin/catppuccin/blob/main/docs/port-creation.md&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;catppuccin/docs/port-creation.md at main · catppuccin/catppuccin&lt;/div&gt;
    &lt;div&gt;😸 Soothing pastel theme for the high-spirited! Contribute to catppuccin/catppuccin development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h3&gt;whiskers&lt;/h3&gt;
&lt;p&gt;Catppuccinには Latte、Frappé、Macchiato、Mochaという4つのフレーバーがあり、それぞれに対応するテーマファイルを用意する必要があった。&lt;/p&gt;
&lt;p&gt;ここで興味深かったのが、Catppuccinでは &lt;code&gt;whiskers&lt;/code&gt; というコマンドが用意されていて、 &lt;code&gt;foobar.tera&lt;/code&gt; のようにテンプレートファイルを用意すれば、Catppuccinのフレーバー4つ分のテーマファイルを自動生成してくれること。4つ分のテーマファイルを一つずつ手で作らなくても良いらしい。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/catppuccin/whiskers&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - catppuccin/whiskers: 😾 Soothing port creation tool for the high-spirited!&lt;/div&gt;
    &lt;div&gt;😾 Soothing port creation tool for the high-spirited! - catppuccin/whiskers&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;これのおかげで &lt;a href=&quot;https://github.com/catppuccin/coteditor/blob/main/coteditor.tera&quot;&gt;&lt;code&gt;coteditor.tera&lt;/code&gt;&lt;/a&gt; を用意して、&lt;code&gt;whiskers coteditor.tera&lt;/code&gt; を実行するだけで済んだ。すばらし～&lt;/p&gt;
&lt;p&gt;ちなみに、 &lt;code&gt;catwalk&lt;/code&gt; というのもあり、これを使うとフレーバー4つのスクリーンショットを合成して一つの画像にすることができる。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/catppuccin/catwalk&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - catppuccin/catwalk: 🚶 Soothing pastel previews for the high-spirited!&lt;/div&gt;
    &lt;div&gt;🚶 Soothing pastel previews for the high-spirited! Contribute to catppuccin/catwalk development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;初のOSS貢献&lt;/h2&gt;
&lt;p&gt;これまでIssueを立てたりコメントをしたりしたことはあったけど、コードを書いてOSSに貢献したのは初めての経験だった。OSSのOrganizationに参加したのも初めてだし、OSSのメンテナーからコードに指摘をもらったのも、メンテナーに指定されたことも初めてだった。&lt;/p&gt;
&lt;p&gt;友達でも同僚でもない、全然知らない海外の人とコミュニケーションを取って、指摘を受けて、褒められて。楽しいかも、これ。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;うーん嬉しい。&lt;/p&gt;</content:encoded></item><item><title>手を乾かすために卓上扇風機を買った</title><link>https://sur33.com/posts/fan-for-my-right-hand/</link><guid isPermaLink="true">https://sur33.com/posts/fan-for-my-right-hand/</guid><description>手汗対策のためにエレコムの卓上扇風機を買ってみました。</description><pubDate>Sun, 10 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;手汗対策&lt;/h2&gt;
&lt;p&gt;普段から手汗が多めなのですが、特にFPSゲーム中はマウスを握る右手の手汗が気になります。その対策としてエレコムの卓上扇風機を買ってみました。適度に手が乾いて良い感じです。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.elecom.co.jp/products/FAN-U177BK.html&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;USB扇風機(多機能タイプ) - FAN-U177BK&lt;/div&gt;
    &lt;div&gt;ノートパソコン、タブレット冷却台として使える！ 縦置き、横置きで使い方を選べる多機能USBクーラー。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.elecom.co.jp&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://amzn.to/3TIb5H3&quot;&gt;エレコム USB扇風機 FAN-U177BK - Amazon&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Intel Core i5-13600KFでゲームがクラッシュする問題</title><link>https://sur33.com/posts/intel-core-i5-13600kf-game-crash/</link><guid isPermaLink="true">https://sur33.com/posts/intel-core-i5-13600kf-game-crash/</guid><description>Intel Core 第13/14世代プロセッサに関する不具合により、ゲームが頻繁にクラッシュする問題に関して、試したことやIntelのサポートとのやり取りをまとめました。</description><pubDate>Wed, 31 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;ゲームプレイ中にゲームが頻繁にクラッシュして落ちる症状に悩まされています。多分、もう1年以上。&lt;/p&gt;
&lt;p&gt;最初は数十分に1度程度の頻度でしたが、最近はひどい時は数分に一度発生するようになり、実質プレイ不可能な状況です。ただ、全てのゲームでこれが起きるわけではなく、一部ゲームのみです。また、グラフィック設定を下げると頻度が下がる傾向にあります。&lt;/p&gt;

































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;ゲームタイトル&lt;/th&gt;&lt;th&gt;症状の発生有無&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Forza Horizon 5&lt;/td&gt;&lt;td&gt;&lt;strong&gt;あり&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Monster Hunter: World&lt;/td&gt;&lt;td&gt;&lt;strong&gt;あり&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Valorant&lt;/td&gt;&lt;td&gt;なし&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Overwatch 2&lt;/td&gt;&lt;td&gt;なし&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Apex Legends&lt;/td&gt;&lt;td&gt;なし&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Civilization VI&lt;/td&gt;&lt;td&gt;なし&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;PCの構成&lt;/h2&gt;





































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;パーツ&lt;/th&gt;&lt;th&gt;製品名&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;CPU&lt;/td&gt;&lt;td&gt;Intel Core i5-13600KF&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;マザーボード&lt;/td&gt;&lt;td&gt;ASUS PRIME Z790-A WIFI-CSM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;メモリ&lt;/td&gt;&lt;td&gt;Crucial 16GB DDR5-4800 (2枚)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GPU&lt;/td&gt;&lt;td&gt;GeForce RTX 4070Ti (Manli M-NRTX4070TIG)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CPUファン&lt;/td&gt;&lt;td&gt;Noctua NH-U12S&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ストレージ&lt;/td&gt;&lt;td&gt;Crucial P5 Plus 2TB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;電源&lt;/td&gt;&lt;td&gt;SilverStone SST-DA750-G&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;まず試したこと&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ゲームのインストールし直し&lt;/li&gt;
&lt;li&gt;PCの初期化（クリーンインストール）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;もちろん、これでは解決しませんでした。&lt;/p&gt;
&lt;h2&gt;Intel Core 第13/14世代プロセッサの不具合&lt;/h2&gt;
&lt;p&gt;ここで色々調べているうちに、Intel Core 第13/14世代プロセッサに関する不具合が報告されていることを知りました。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.theverge.com/2024/7/22/24203959/intel-core-13th-14th-gen-cpu-crash-update-patch&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Intel says it has found the issue causing 13th and 14th Gen CPUs to crash&lt;/div&gt;
    &lt;div&gt;The patch that could fix it is still weeks away.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.theverge.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;この問題はCPUの電圧設定に関連しているようで、この問題に関してすでに問題が起こっている場合、CPUは物理的に故障しており、ソフトウェアのアップデートで修正できない可能性があるようです。絶望。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;the company confirmed a patch is coming in mid-August that should address the “root cause” of exposure to elevated voltage. But if your 13th or 14th Gen Intel Core processor is already crashing, that patch apparently won’t fix it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.theverge.com/2024/7/26/24206529/intel-13th-14th-gen-crashing-instability-cpu-voltage-q-a&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;There is no fix for Intel’s crashing 13th and 14th Gen CPUs — any damage is permanent&lt;/div&gt;
    &lt;div&gt;We got some answers from Intel, and more are on the way.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.theverge.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;8月にはIntelがこの問題に対するパッチをリリース予定ですが、このパッチを適用しても問題が解決しない可能性があるということになります。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://pc.watch.impress.co.jp/docs/news/1610334.html&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Intel、第13/14世代Coreにおける不安定動作の根本原因を解明。8月にパッチ提供  &lt;/div&gt;
    &lt;div&gt;　Intelは7月22日(米国時間)、デスクトップPC向けの第13世代Coreおよび第14世代Coreの不安定性について調査結果を報告。これによれば不安定な動作を引き起こす根本的な原因はマイクロコードのアルゴリズムにあり、プロセッサに誤った電圧要求(より高い電圧)が送信されてしまうことにあったという。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;pc.watch.impress.co.jp&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;Intelに問い合わせ&lt;/h2&gt;
&lt;p&gt;Intelはこの問題に関して不安定動作が起こっている場合、サポートに問い合わせるように呼び掛けています。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://community.intel.com/t5/Processors/July-2024-Update-on-Instability-Reports-on-Intel-Core-13th-and/m-p/1617113#M74792&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;community.intel.com&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;span&gt;community.intel.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;そこで、Intelのサポートに問い合わせてみました（2024/7/24）。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.intel.co.jp/content/www/jp/ja/support/contact-us.html&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;サポート・ソリューションのインテルへのお問い合わせ&lt;/div&gt;
    &lt;div&gt;インテル® 製品やプログラムに最適なサポートオプションと同様に、世界中のあらゆるインテルのキャンパスおよび OEM パートナー向けの情報を確認するには、インテルにお問い合わせください。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.intel.co.jp&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h3&gt;返信1 （2024/7/25）&lt;/h3&gt;
&lt;p&gt;すると、以下の内容を求める回答がありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;製品情報
&lt;ul&gt;
&lt;li&gt;CPUのATPO番号&lt;/li&gt;
&lt;li&gt;CPUのFPO番号&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;私の情報
&lt;ul&gt;
&lt;li&gt;名前&lt;/li&gt;
&lt;li&gt;住所&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;パソコンの構成
&lt;ul&gt;
&lt;li&gt;マザーボード&lt;/li&gt;
&lt;li&gt;メモリ&lt;/li&gt;
&lt;li&gt;グラフィックボード&lt;/li&gt;
&lt;li&gt;電源ユニット&lt;/li&gt;
&lt;li&gt;CPU冷却ユニット&lt;/li&gt;
&lt;li&gt;その他増設機器など&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;また、これらに加え、マザーボードのBIOSのアップデートの提案がありました。&lt;/p&gt;
&lt;p&gt;当時、BIOSのバージョンは1658でしたが、最新のバージョン1661がリリースされていました。このバージョンには、eTVBをIntelの設定に合わせて動作するようにするmicrocode 0x125の更新が含まれています。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.asus.com/jp/motherboards-components/motherboards/prime/prime-z790-a-wifi/helpdesk_bios?model2Name=PRIME-Z790-A-WIFI&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;PRIME Z790-A WIFI｜マザーボード｜ASUS 日本&lt;/div&gt;
    &lt;div&gt;ASUS Prime Z790-A WIFI, an Intel Z790 LGA 1700 ATX motherboard with PCIe® 5.0, four M.2 slots, 16+1 DrMOS, DDR5, Intel WIFI 6E, 2.5 Gb LAN, HDMI®, DP, USB 3.2 Gen 2x2 Type-C®, front USB 3.2 Gen 2 Type-C®, Thunderbolt™ (USB4®) support&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.asus.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;これは今回の問題の原因の一つとして考えられているもので、一時的な解決策のようです。結局、根本的な問題を解決するためには8月のパッチを待つ必要があるようですが、とりあえずサポートの指示通りにBIOSのアップデートを行いました。が、やはり問題は解決しませんでした。&lt;/p&gt;
&lt;p&gt;上記の内容をIntelに返信しました。&lt;/p&gt;
&lt;h3&gt;返信2 （2024/7/30）&lt;/h3&gt;
&lt;p&gt;ここで、驚くべきことに、交換対応の提案がありました。&lt;a href=&quot;https://www.theverge.com/2024/7/26/24206529/intel-13th-14th-gen-crashing-instability-cpu-voltage-q-a&quot;&gt;The Vergeによる問い合わせ結果&lt;/a&gt;によるとリコールや保証の延長の予定は無いということだったので、交換もしてもらえないと思い込んでいたので、正直驚きました。&lt;/p&gt;
&lt;p&gt;具体的な手順は、こちらからCPUを着払いで送り、IntelがCPUを検査した後に交換品（良品）を送ってくれるというものです。つまり、その間はPCが使えないということになります。辛い……。&lt;/p&gt;
&lt;p&gt;とりあえず60日以内に済ませれば良いようです。交換品が届いてもまた壊れたら意味がないので、8月のパッチがリリースされるまで様子を見ることにしました。&lt;/p&gt;</content:encoded></item><item><title>VIAでキーボードを設定していて知った/気がついたTips</title><link>https://sur33.com/posts/keyboard-settings-tips/</link><guid isPermaLink="true">https://sur33.com/posts/keyboard-settings-tips/</guid><description>VIAでキーボードの設定をしている時のメモ。随時更新。</description><pubDate>Thu, 28 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;VIA&lt;/h2&gt;
&lt;p&gt;VIAはカスタムキーボードのキーマップ設定などに使われる、ブラウザベースのソフト。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://caniusevia.com/&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;VIA | VIA&lt;/div&gt;
    &lt;div&gt;Your keyboard&apos;s best friend&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;caniusevia.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h3&gt;Hyperキー&lt;/h3&gt;
&lt;p&gt;Hyperキーという概念は、自分は&lt;a href=&quot;https://manual.raycast.com/hyperkey&quot;&gt;Raycastで知った&lt;/a&gt;が、&lt;a href=&quot;https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/&quot;&gt;もっと前からあるっぽい&lt;/a&gt;。とにかく、 &lt;code&gt;Command + Control + Option + Shift&lt;/code&gt; の同時押しを1キーで実現することをHyperキーと呼ぶらしい。
これにより、実質的に修飾キーをひとつ増やすことができる。&lt;/p&gt;
&lt;p&gt;VIAでは、Keymap &amp;gt; Special から Any を選択して、 &lt;code&gt;HYPR(KC_NO)&lt;/code&gt; を設定すれば良いだけ。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.reddit.com/r/Keychron/comments/17yv7nk/comment/ks710n9/?utm_source=share&amp;amp;utm_medium=web3x&amp;amp;utm_name=web3xcss&amp;amp;utm_term=1&amp;amp;utm_content=share_button&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Reddit - Please wait for verification&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.reddit.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://docs.qmk.fm/feature_advanced_keycodes#modifier-keys:~:text=and%20press%20kc-,HYPR(kc),-Hold%20Left%20Control&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Modifier Keys | QMK Firmware&lt;/div&gt;
    &lt;div&gt;Documentation for QMK Firmware&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;docs.qmk.fm&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;例えばMacの音声入力キー。ここに &lt;code&gt;Hyper+V&lt;/code&gt; を設定した。ちなみに、今のところDictation（音声入力）キーのQMKキーコードは無いっぽい。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;他にも、ウィンドウ操作アプリのLoopではTriggerキーとしてHyperキーを設定したり。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/MrKai77/Loop&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - MrKai77/Loop: Window management made elegant.&lt;/div&gt;
    &lt;div&gt;Window management made elegant. Contribute to MrKai77/Loop development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h3&gt;Spaceキーをレイヤーキーとして使うと便利&lt;/h3&gt;
&lt;p&gt;Spaceキー単押しの時はSpaceキーとして使って、他のキーと組み合わせて使ったときだけレイヤー切り替えキーとして動作するようにすると便利。実際、VIAにはこれ専用のキーがある。これをスペースキーに割り当てれば良いだけ。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;</content:encoded></item><item><title>Logicool MX Liftを買ってみて、MX Masterの良さを再認識した</title><link>https://sur33.com/posts/logi-mx-master-is-better-than-lift/</link><guid isPermaLink="true">https://sur33.com/posts/logi-mx-master-is-better-than-lift/</guid><pubDate>Mon, 25 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Logicool MX Master&lt;/h2&gt;
&lt;p&gt;6年前からMX Masterシリーズを使用しており、現在はMX Master 3を使っています。特に純正コンパニオンアプリのLogi Options+が使いやすく、マウスはずっとLogicool製品を使い続けています。&lt;/p&gt;
&lt;p&gt;ただ、最近になって経年劣化によりマウス表面の一部がボロボロになってきたことや、手首の違和感が気になり始めたことから、Logicoolのエルゴマウスを試してみることにしました。&lt;/p&gt;
&lt;h2&gt;Logicool Liftを買ってみた&lt;/h2&gt;
&lt;p&gt;Logicoolのエルゴマウスには、現在（トラックボール式を除けば）MX VerticalとLiftがありますが、手が小さい自分にとってMX Verticalは大きすぎたため、Liftを買ってみました。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.logicool.co.jp/ja-jp/products/mice/lift-vertical-ergonomic-mouse.html&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;www.logicool.co.jp&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.logicool.co.jp&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://amzn.to/3IYOiS3&quot;&gt;Logicool Lift M800GR - Amazon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;MX Master 3を使い続けている主な理由に、ジェスチャーによる仮想デスクトップの切り替えがあります。Liftでもマウスホイールの下にあるボタンをジェスチャー操作に割り当てることができるため、同様の操作が可能です。&lt;/p&gt;
&lt;h2&gt;でも、やっぱりMX Masterが最高だった&lt;/h2&gt;
&lt;p&gt;MX Masterでは親指を置く部分を下に押し込むことでジェスチャー操作ができるため、ジェスチャー操作時を大きく動かす必要がありません。一方でLiftでは、マウスホイールの下にあるボタンを押しながらマウスを動かす必要があるため、ジェスチャー操作時に人差し指を左クリックの位置から動かす必要があります。これが意外とストレスで、頻繁に仮想デスクトップを切り替える作業内容の時に使いづらいと感じてしまいました。&lt;/p&gt;
&lt;h2&gt;MX Master 3Sを買うのがベストかも&lt;/h2&gt;
&lt;p&gt;というわけで、次に買うべきマウスはMX Master 3Sかもしれないという結論に至りました。ただ、今MX Master 3Sを買おうとすると16,900円もするんですよね…&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.logicool.co.jp/ja-jp/products/mice/mx-master-3s.html&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;www.logicool.co.jp&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.logicool.co.jp&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://amzn.to/4aD6soy&quot;&gt;Logicool MX Master 3S - Amazon&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Nature Remo Lapis does not Matter with Sesame 5</title><link>https://sur33.com/posts/nature-remo-lapis/</link><guid isPermaLink="true">https://sur33.com/posts/nature-remo-lapis/</guid><description>Matter対応と、Sesame 5連携機能に期待してNature Remo Lapisを買ってみましたが、Matter経由ではSesame 5は連携されませんでした。ただ、オートエコ機能は思ったよりいい感じです。</description><pubDate>Fri, 12 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Nature Remo Lapisを買ってみた&lt;/h2&gt;
&lt;p&gt;Nature Remo Lapisは、その本体の小石のような見た目と、内蔵された温湿度計を使ってエアコンの設定を自動で最適化するオートエコ機能が特徴です。今回は公式サイトからの予約限定で1000円引きの6980円になっていたので、そこから購入しました。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://shop.nature.global/products/nature-remo-lapis&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Nature Remo Lapis&lt;/div&gt;
    &lt;div&gt;Nature Remo Lapisは、空気をととのえ、節電機能を備え、快適と健康までサポートする次世代のスマートリモコンです。機能とデザインを従来の「Nature Remo」よりも大幅にアップデートし、迫り来る地球沸騰化時代においても、人々に寄り添い、暮らしにナチュラルに溶け込む新しい形のプロダクトです。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;shop.nature.global&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://amzn.to/3Wkj6EC&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Nature Remo Lapis スマートリモコン 温湿度センサー対応&lt;/div&gt;
    &lt;div&gt;Amazon.co.jp: Nature Remo Lapis ネイチャーリモ スマートリモコン 温湿度センサー搭載 エアコンの節電を快適に Alexa/Google Home/Siri対応 Remo-2W3 : ホーム＆キッチン&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;amzn.to&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;オートエコ機能&lt;/h3&gt;
&lt;p&gt;オートエコ機能は思ったよりいい感じで、室温と時間帯に応じてエアコンの設定を自動で最適化して、快適性と省エネのバランスを取ってくれます。節約額の目安はアプリのホーム画面にも表示され、効果が分かりやすいのが良い感じです。&lt;/p&gt;
&lt;h3&gt;Matter&lt;/h3&gt;
&lt;p&gt;オートエコ機能以外にも期待していた機能があります。それが、Matter対応と、Candy HouseのスマートロックであるSesame 5との接続機能です。Nature Remo Lapisはサードパーティー機器との接続も謳っており、その中にSesame 5も含まれています。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Matter対応により、このSesame 5をAppleホームアプリから操作できるようになることを期待していましたが、残念ながらNature Remo LapisをMatter経由でAppleホームアプリに接続しても、Sesame 5は連携されませんでした。Nature HomeのアプリからはSesame 5を操作できますが、それであれば別にセサミアプリを使えば良いかなという印象です。&lt;/p&gt;
&lt;p&gt;ただ、Matter対応によりHomebridgeを介さずともAppleホームアプリからエアコンを操作できるようになったのは単純に素晴らしいです。特にSiriから操作できるのが最高ですね。&lt;/p&gt;
&lt;h3&gt;スマートリモコンとして&lt;/h3&gt;
&lt;p&gt;これまで使っていたSwitchBotハブミニと比較しながらNature Remo Lapisを見ていこうと思います。まずリモコンの登録については、どちらもリモコンを本体の近くで操作するだけでほぼ完了し、大きな差は感じられませんでした。&lt;/p&gt;
&lt;h4&gt;操作画面&lt;/h4&gt;
&lt;p&gt;左のSwitchBotはリモコンのボタンをそのままアプリに持ってきているようなデザインです。右のNature Homeアプリはそれとは少し違っていて、まず中央に温度調節のスライダーがあり、その下には各ボタンが機能ごとに配置されている感じです。温度のスライダーの上に実際の今の室温と湿度が表示されるというのが気が利いているなと感じました。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;また、これはエアコンの機種によると思うのであまり一般的な話ではないかもしれませんが、自分のエアコンには内部クリーンという機能があり、このボタンがNature Homeアプリでは表示されるのが地味に嬉しいポイントでした。いちいちオンオフするような機能では無いので大した問題ではないのですが、SwitchBotアプリではそれが表示されないのが少し気になっており、Nature Remoではそういった細かいところまで気を遣って対応しているのが好印象でした。&lt;/p&gt;
&lt;h2&gt;まとめ&lt;/h2&gt;
&lt;p&gt;Sesame 5連携については期待外れでしたが、オートエコ機能には今のところ満足しています。Matter対応で本体デザインも良く、アプリの操作感も良いので、このまま使い続けていこうと思います。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://shop.nature.global/products/nature-remo-lapis&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Nature Remo Lapis&lt;/div&gt;
    &lt;div&gt;Nature Remo Lapisは、空気をととのえ、節電機能を備え、快適と健康までサポートする次世代のスマートリモコンです。機能とデザインを従来の「Nature Remo」よりも大幅にアップデートし、迫り来る地球沸騰化時代においても、人々に寄り添い、暮らしにナチュラルに溶け込む新しい形のプロダクトです。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;shop.nature.global&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://amzn.to/3Wkj6EC&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Nature Remo Lapis スマートリモコン 温湿度センサー対応&lt;/div&gt;
    &lt;div&gt;Amazon.co.jp: Nature Remo Lapis ネイチャーリモ スマートリモコン 温湿度センサー搭載 エアコンの節電を快適に Alexa/Google Home/Siri対応 Remo-2W3 : ホーム＆キッチン&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;amzn.to&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;</content:encoded></item><item><title>Perplexity Proを契約してみた</title><link>https://sur33.com/posts/perplexity-pro-is-cheaper-on-ios-app/</link><guid isPermaLink="true">https://sur33.com/posts/perplexity-pro-is-cheaper-on-ios-app/</guid><description>ChatGPT PlusやClaude Proの代わりにPerplexity Proを契約してみました。</description><pubDate>Sun, 14 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;$20.00 + $20.00 + …&lt;/h2&gt;
&lt;p&gt;先月OpenAIの&lt;a href=&quot;https://chat.openai.com/&quot;&gt;ChatGPT&lt;/a&gt;からAnthropicの&lt;a href=&quot;https://claude.ai/chats&quot;&gt;Claude 3&lt;/a&gt;に乗り換えましたが、時々Claude 3 OpusとChatGPTのGPT-4 Turboを比較したくなります。しかし、それぞれ20ドルで合計40ドルは支払いたくありません。そこで、Perplexity Proの契約を検討しました。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://claude.ai/chats&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;claude.ai&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;claude.ai&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;AIツールの標準月額価格=20ドルというような風潮ができつつあり、一つ契約するたびに月額3000円かかるのは本当につらいですね。先日もCursor Proを契約しようとして、20ドルという価格を見て断念してしまいました。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://cursor.sh/pricing&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Cursor · Pricing&lt;/div&gt;
    &lt;div&gt;Choose the plan that&apos;s right for you&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;cursor.sh&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;Perplexity Pro&lt;/h2&gt;
&lt;p&gt;PerplexityはAIモデルを使った強力な検索ツールくらいに思っていたのですが、Writingモードに変更すればChatGPTやClaudeのようなテキスト・チャット生成ツールとして使うこともできることがわかりました。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;また、Perplexityの有料プランであるPerplexity Proに契約すると、GPT-4 TurboやClaude 3 Opusなどの強力なAIモデルを利用できるようになります。つまり、ChatGPT PlusやClaude Proを別々に契約することなく、Perplexity Pro一つでこれらのAIモデルを利用できるわけです。ただ、ChatGPTとは違いコード実行や様々なプラグインを活用することはできないため、その点には注意が必要です。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://perplexity.ai/pro?referral_code=9RY9B1DG&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;perplexity.ai&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;perplexity.ai&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;iOSアプリ内課金のほうが安い&lt;/h2&gt;
&lt;p&gt;Perplexity Proはウェブで契約すると月額20ドルですが、iOSアプリ内課金では月額3000円に設定されています。2024年4月14日現在、20ドルは約3,065円なので、iOSアプリ内課金で契約する方が若干安くなります（円安……）。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;一般的には、ウェブからの契約とiOSアプリ内課金が用意されているサービスでは、iOSアプリ内課金の方が高いことが多い（Appleの手数料が原因）ところ、円安のせいかここでは逆転しているようです。&lt;/p&gt;
&lt;h2&gt;Perplexityのフォントを変更する&lt;/h2&gt;
&lt;p&gt;Perplexityのデフォルトのフォントの設定ではカギかっこの表示が崩れます。おそらく、最近のChromeの仕様変更に関わる問題が原因のようです。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://zenn.dev/inaniwaudon/scraps/f224417d4c51ee&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Yu Gothic UIに text-spacing-trim を適用するとバグる&lt;/div&gt;
    &lt;div&gt;いなにわうどんさんのスクラップ&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;zenn.dev&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;これを避ける意味も含めて、&lt;a href=&quot;https://aminoeditor.com/&quot;&gt;Amino&lt;/a&gt;を使ってユーザーCSSを追加しました。今回は、Google Fontsから&lt;a href=&quot;https://fonts.google.com/specimen/BIZ+UDPGothic&quot;&gt;BIZ UDPGothic&lt;/a&gt;を読み込んで使うことにしました。&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;@import&lt;/span&gt;&lt;span&gt; url&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&amp;amp;display=swap&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.font-display&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.font-sans&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  font-family&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&apos;BIZ UDPGothic&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sans-serif&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://aminoeditor.com/&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Amino | Live CSS Editor&lt;/div&gt;
    &lt;div&gt;Customize any website in seconds with CSS. Amino is a compact and powerful browser extension that allows you to customize any website with CSS that persists. Use the editor to create your own website themes and skins.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;aminoeditor.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://fonts.google.com/specimen/BIZ+UDPGothic&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;BIZ UDPGothic - Google Fonts&lt;/div&gt;
    &lt;div&gt;モリサワのBIZ UDゴシックは、教育やビジネス文書作成などに活用できるよう、より多くの方にとって読みやすく使いやすいように設計されたユニバーサルデザインフォントです。読みやすさとデザインバランスに優れた、すっきりとしたUDゴシック書体で、漢字の省略できるハネやゲタを取ることで、文字をクリアに見せています。大きめな字面&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;fonts.google.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;</content:encoded></item><item><title>remark-link-card-plusへ移行しました</title><link>https://sur33.com/posts/remark-link-card-plus/</link><guid isPermaLink="true">https://sur33.com/posts/remark-link-card-plus/</guid><description>メンテナンスの停滞している remark-link-card から remark-link-card-plus へ移行しました。</description><pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;gladevise/remark-link-card&lt;/h2&gt;
&lt;p&gt;remark-link-card はリンクをカード形式で表示するためのRemarkプラグインで、本サイトでもリンクカードの実現のためにこれを使用していました。ただ、現在はほぼメンテされていないので、移行することにしました。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://sur33.com/posts/remark-link-card-with-astro&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Astroにおけるremark-link-cardを使ったリンクカード — Daiki Sato&lt;/div&gt;
    &lt;div&gt;Astroで、remarkプラグインであるremark-link-cardを使いリンクをカード形式で表示できるようにしました。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;sur33.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;okaryo/remark-link-card-plus&lt;/h2&gt;
&lt;p&gt;remark-link-card-plus は remark-link-card を改善したものらしいです。実際、remark-link-card ではOpen Graphのデータが大きすぎるとエラーになる問題がありましたが、この remark-link-card-plus では解消されていました。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/okaryo/remark-link-card-plus&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - okaryo/remark-link-card-plus: Remark plugin to convert text links to link cards&lt;/div&gt;
    &lt;div&gt;Remark plugin to convert text links to link cards. Contribute to okaryo/remark-link-card-plus development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h3&gt;移行作業&lt;/h3&gt;
&lt;h4&gt;1. インストール&lt;/h4&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;pnpm&lt;/span&gt;&lt;span&gt; rm&lt;/span&gt;&lt;span&gt; remark-link-card&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;pnpm&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt; remark-link-card-plus&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4&gt;2. astro.config.mjs に設定追加&lt;/h4&gt;
&lt;p&gt;今回は移行なので、やったことはimportの &lt;code&gt;&apos;remark-link-card&apos;&lt;/code&gt; を &lt;code&gt;&apos;remark-link-card-plus&apos;&lt;/code&gt; に置き換えただけ。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;astro.config.mjs&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; remarkLinkCard &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;remark-link-card-plus&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; default&lt;/span&gt;&lt;span&gt; defineConfig&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // ...&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  markdown: {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    remarkPlugins: [&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      [&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        remarkLinkCard,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          cache: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      ],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // ...&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4&gt;3. CSS追加&lt;/h4&gt;
&lt;p&gt;基本的に&lt;a href=&quot;https://sur33.com/posts/remark-link-card-with-astro&quot;&gt;remark-link-cardの時のCSS&lt;/a&gt;をremark-link-card-plus用に書き換えただけ。ただ、Tailwind CSS化してあるため、 &lt;code&gt;@apply&lt;/code&gt; を多用しており、純粋なCSSはほぼありません。Tailwind CSSを使っていないプロジェクトでは、AIなどで頑張って生CSS化して使ってください。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;remark-link-card.css&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;/* ブレークポイント: 60ch（Tailwindcss/Typographyのproseのmax-widthを参考に） */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.remark-link-card-plus__container&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  --padding-x&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;rem&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  --padding-y&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.7&lt;/span&gt;&lt;span&gt;rem&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  --border-radius&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;calc&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;span&gt;rem&lt;/span&gt;&lt;span&gt; -&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; rounded-&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;calc&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--border-radius&lt;/span&gt;&lt;span&gt;)+1&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;)];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; border&lt;/span&gt;&lt;span&gt; border-&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--tw-prose-hr&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; transition-colors&lt;/span&gt;&lt;span&gt; hover&lt;/span&gt;&lt;span&gt;:bg-gray-50 &lt;/span&gt;&lt;span&gt;dark&lt;/span&gt;&lt;span&gt;:hover:bg-gray-800;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; mb-&lt;/span&gt;&lt;span&gt;5 &lt;/span&gt;&lt;span&gt;w-full&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.remark-link-card-plus__card&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; grid&lt;/span&gt;&lt;span&gt; grid-cols-&lt;/span&gt;&lt;span&gt;[1&lt;/span&gt;&lt;span&gt;fr&lt;/span&gt;&lt;span&gt;_116&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;] &lt;/span&gt;&lt;span&gt;gap-&lt;/span&gt;&lt;span&gt;4;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; no-underline&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;media&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;min-width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; grid-cols-&lt;/span&gt;&lt;span&gt;[1&lt;/span&gt;&lt;span&gt;fr&lt;/span&gt;&lt;span&gt;_220&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.remark-link-card-plus__main&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; flex&lt;/span&gt;&lt;span&gt; flex-col&lt;/span&gt;&lt;span&gt; justify-center&lt;/span&gt;&lt;span&gt; font-normal&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; max-w-full&lt;/span&gt;&lt;span&gt; min-w-full&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; col-&lt;/span&gt;&lt;span&gt;1;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; py-&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--padding-y&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;pr-&lt;/span&gt;&lt;span&gt;0 &lt;/span&gt;&lt;span&gt;pl-&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--padding-x&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; rounded-tl-&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--border-radius&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;rounded-bl-&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--border-radius&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.remark-link-card-plus__content&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.remark-link-card-plus__title&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; text-base&lt;/span&gt;&lt;span&gt; leading-&lt;/span&gt;&lt;span&gt;5 &lt;/span&gt;&lt;span&gt;font-bold&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; text-&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--tw-prose-headings&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; line-clamp-&lt;/span&gt;&lt;span&gt;2 &lt;/span&gt;&lt;span&gt;text-ellipsis&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.remark-link-card-plus__description&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; text-xs&lt;/span&gt;&lt;span&gt; text-gray-&lt;/span&gt;&lt;span&gt;500 &lt;/span&gt;&lt;span&gt;dark&lt;/span&gt;&lt;span&gt;:text-gray-400;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; mt-&lt;/span&gt;&lt;span&gt;1 &lt;/span&gt;&lt;span&gt;mb-&lt;/span&gt;&lt;span&gt;3;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; line-clamp-&lt;/span&gt;&lt;span&gt;1 &lt;/span&gt;&lt;span&gt;text-ellipsis&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.remark-link-card-plus__meta&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; flex&lt;/span&gt;&lt;span&gt; items-center&lt;/span&gt;&lt;span&gt; gap-&lt;/span&gt;&lt;span&gt;2;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.remark-link-card-plus__favicon&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; m-&lt;/span&gt;&lt;span&gt;0 &lt;/span&gt;&lt;span&gt;mt-&lt;/span&gt;&lt;span&gt;0.5;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.remark-link-card-plus__url&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; text-xs&lt;/span&gt;&lt;span&gt; text-gray-&lt;/span&gt;&lt;span&gt;600 &lt;/span&gt;&lt;span&gt;dark&lt;/span&gt;&lt;span&gt;:text-gray-300;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; line-clamp-&lt;/span&gt;&lt;span&gt;1 &lt;/span&gt;&lt;span&gt;text-ellipsis&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.remark-link-card-plus__thumbnail&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; col-&lt;/span&gt;&lt;span&gt;2 &lt;/span&gt;&lt;span&gt;aspect-square&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;media&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;min-width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; aspect-&lt;/span&gt;&lt;span&gt;[1.91/1];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.remark-link-card-plus__image&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; m-&lt;/span&gt;&lt;span&gt;0 &lt;/span&gt;&lt;span&gt;h-full&lt;/span&gt;&lt;span&gt; w-full&lt;/span&gt;&lt;span&gt; object-cover&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @&lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt; rounded-tr-&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--border-radius&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;rounded-br-&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--border-radius&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;使い方&lt;/h3&gt;
&lt;p&gt;使い方は変わらずで、&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;https://github.com/okaryo/remark-link-card-plus&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;のようにリンクだけ裸で置けばリンクカードになります。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/okaryo/remark-link-card-plus&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - okaryo/remark-link-card-plus: Remark plugin to convert text links to link cards&lt;/div&gt;
    &lt;div&gt;Remark plugin to convert text links to link cards. Contribute to okaryo/remark-link-card-plus development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;参考&lt;/h2&gt;
&lt;div&gt;
  &lt;a href=&quot;https://blog.okaryo.studio/20250108-release-remark-link-card-plus/&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Markdown内のリンクをカード化するremarkプラグインremark-link-card-plusをリリースした | okaryo.log&lt;/div&gt;
    &lt;div&gt;正月駆動開発&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;blog.okaryo.studio&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/okaryo/remark-link-card-plus&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - okaryo/remark-link-card-plus: Remark plugin to convert text links to link cards&lt;/div&gt;
    &lt;div&gt;Remark plugin to convert text links to link cards. Contribute to okaryo/remark-link-card-plus development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://ilapaj.com/posts/2025-03-16-remark-link-card-plus/&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;[Astro] remark-link-card-plus が神 - じゃぱり書庫&lt;/div&gt;
    &lt;div&gt;Astroでリンクカードを実現しようとしたときの記録。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;ilapaj.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;</content:encoded></item><item><title>Astroにおけるremark-link-cardを使ったリンクカード</title><link>https://sur33.com/posts/remark-link-card-with-astro/</link><guid isPermaLink="true">https://sur33.com/posts/remark-link-card-with-astro/</guid><description>Astroで、remarkプラグインであるremark-link-cardを使いリンクをカード形式で表示できるようにしました。</description><pubDate>Fri, 05 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;更新（2026/02/12）&lt;/h2&gt;
&lt;p&gt;remark-link-card-plus に移行しました。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://sur33.com/posts/remark-link-card-plus/&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;remark-link-card-plusへ移行しました — Daiki Sato&lt;/div&gt;
    &lt;div&gt;メンテナンスの停滞している remark-link-card から remark-link-card-plus へ移行しました。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;sur33.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;remark-link-card&lt;/h2&gt;
&lt;p&gt;remark-link-card は、remarkプラグインで、リンクをカード形式で表示するためのプラグインです。カード形式のリンクとは、以下のようなものです。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/gladevise/remark-link-card&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - gladevise/remark-link-card&lt;/div&gt;
    &lt;div&gt;Contribute to gladevise/remark-link-card development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.astro.build/ja/guides/markdown-content/#markdown%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3&quot;&gt;Astroはデフォルトでremarkプラグインをサポートしている&lt;/a&gt;ため、この &lt;code&gt;remark-link-card&lt;/code&gt; を使ってリンクをカード形式で表示することができます。&lt;/p&gt;
&lt;h2&gt;実装&lt;/h2&gt;
&lt;h3&gt;1. インストール&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/gladevise/remark-link-card&quot;&gt;GitHubのページ&lt;/a&gt;を参考にインストールします。ここでは &lt;code&gt;bun&lt;/code&gt; を使っていますが、 &lt;code&gt;npm&lt;/code&gt; や &lt;code&gt;yarn&lt;/code&gt; など、他のパッケージマネージャを使っても構いません。&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;bun&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; remark-link-card&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;2. 設定&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;astro.config.mjs&lt;/code&gt; を以下のように追記します。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;astro.config.mjs&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; remarkLinkCard &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;remark-link-card&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;// https://astro.build/config&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; default&lt;/span&gt;&lt;span&gt; defineConfig&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // ...&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  markdown: {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    remarkPlugins: [&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      [&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        remarkLinkCard,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          cache: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          shortenUrl: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      ],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // ...&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;今回は &lt;code&gt;cache&lt;/code&gt; と &lt;code&gt;shortenUrl&lt;/code&gt; を &lt;code&gt;true&lt;/code&gt; にしています。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;remark-link-card&lt;/code&gt; はデフォルトではAstroの毎コンパイル時にリンク情報を取得しに行きます。リンク先にかける負荷を減らすために、&lt;code&gt;cache&lt;/code&gt; を &lt;code&gt;true&lt;/code&gt; にして、リンク情報をキャッシュするようにしています。キャッシュは &lt;code&gt;/public/remark-link-card/&lt;/code&gt; に保存されます。&lt;/p&gt;
&lt;p&gt;また、&lt;code&gt;shortenUrl&lt;/code&gt; を &lt;code&gt;true&lt;/code&gt; にすることでリンク先のURLをドメインのみに短縮して表示するようにしています。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;remark-link-card&lt;/code&gt; ではCSSは提供されていないので、自分でCSSを用意する必要があります。
CSSは以下のようにしました。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;remark-link-card.css&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;/* ブレークポイント: 60ch（Tailwindcss/Typographyのproseのmax-widthを参考に） */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.rlc-container&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  --padding-x&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;rem&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  --padding-y&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.7&lt;/span&gt;&lt;span&gt;rem&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  --border-radius&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;calc&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;span&gt;rem&lt;/span&gt;&lt;span&gt; -&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  border&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt; solid&lt;/span&gt;&lt;span&gt; var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--tw-prose-hr&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  border-radius&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;calc&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--border-radius&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  text-decoration&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;none&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  transition&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;background-color&lt;/span&gt;&lt;span&gt; 150&lt;/span&gt;&lt;span&gt;ms&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;amp;&lt;/span&gt;&lt;span&gt;:hover&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;#f5f5f5&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    @media&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;prefers-color-scheme&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;dark&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      background-color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;#262626&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  margin-bottom&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1.25&lt;/span&gt;&lt;span&gt;em&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  display&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;grid&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  grid-template-columns&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;fr&lt;/span&gt;&lt;span&gt; 116&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  gap&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;rem&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @media&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;min-width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    grid-template-columns&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;fr&lt;/span&gt;&lt;span&gt; 220&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .rlc-info&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    display&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;flex&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    flex-direction&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;column&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    justify-content&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;center&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    font-weight&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;normal&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    grid-column&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    padding&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--padding-y&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--padding-y&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--padding-x&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    max-width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    min-width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    border-radius&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--border-radius&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt; var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--border-radius&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    .rlc-title&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      font-size&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;rem&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      font-weight&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;bold&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      line-height&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1.3&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--tw-prose-headings&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      overflow&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;hidden&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      display&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;-webkit-box&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      text-overflow&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;ellipsis&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      -webkit-box-orient&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;vertical&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      -webkit-line-clamp&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    .rlc-description&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      font-size&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.8&lt;/span&gt;&lt;span&gt;rem&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;#737373&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      @media&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;prefers-color-scheme&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;dark&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;#a3a3a3&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      margin-bottom&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;span&gt;em&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      overflow&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;hidden&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      text-overflow&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;ellipsis&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      white-space&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;nowrap&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      -webkit-line-clamp&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    .rlc-url-container&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      display&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;flex&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      align-items&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;center&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      gap&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;span&gt;rem&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      .rlc-favicon&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        margin-top&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.15&lt;/span&gt;&lt;span&gt;rem&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        margin-bottom&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      .rlc-url&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        font-size&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.8&lt;/span&gt;&lt;span&gt;rem&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;#525252&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        @media&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;prefers-color-scheme&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;dark&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;#d4d4d4&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        overflow&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;hidden&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        text-overflow&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;ellipsis&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        white-space&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;nowrap&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        -webkit-line-clamp&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .rlc-image-container&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    grid-column&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    aspect-ratio&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; /&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    @media&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;min-width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      aspect-ratio&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1.91&lt;/span&gt;&lt;span&gt; /&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    .rlc-image&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      object-fit&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;cover&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      height&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      margin&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      border-radius&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--border-radius&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--border-radius&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;3. 使い方&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;remark-link-card&lt;/code&gt; は生のURLのみに適用されます。以下のように記述すると、リンクがカード形式で表示されます。&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;https://github.com/gladevise/remark-link-card&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/gladevise/remark-link-card&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - gladevise/remark-link-card&lt;/div&gt;
    &lt;div&gt;Contribute to gladevise/remark-link-card development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&amp;lt;&amp;gt;で囲っても適用されます。&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;https://github.com/gladevise/remark-link-card&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/gladevise/remark-link-card&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - gladevise/remark-link-card&lt;/div&gt;
    &lt;div&gt;Contribute to gladevise/remark-link-card development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;インライン形式のリンクには適用されません。&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;remark-link-card - GitHub&lt;/span&gt;&lt;span&gt;](&lt;/span&gt;&lt;span&gt;https://github.com/gladevise/remark-link-card&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/gladevise/remark-link-card&quot;&gt;remark-link-card - GitHub&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;参考&lt;/h2&gt;
&lt;div&gt;
  &lt;a href=&quot;https://docs.astro.build/ja/guides/markdown-content/#markdown%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Markdown in Astro&lt;/div&gt;
    &lt;div&gt;Learn about Astro&apos;s built-in support for Markdown.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;docs.astro.build&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/gladevise/remark-link-card&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - gladevise/remark-link-card&lt;/div&gt;
    &lt;div&gt;Contribute to gladevise/remark-link-card development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://roboin.io/article/2024/02/09/how-to-use-remark-link-card/&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Markdownでリンクカードを表示する「remark-link-card」の使い方 - ろぼいんブログ&lt;/div&gt;
    &lt;div&gt;ブログなどでは、リンクを埋め込む際にリンクカードを表示することがあります。リンクカードは、リンク先のページのタイトルやサムネイル、概要などを一覧表示でき、リンク先の情報を簡単に把握できるため、ユーザーにとって便利な機能です。Markdownでリンクカードを表示するための「remark-link-card」の使い方について解説します。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;roboin.io&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://futabooo.com/blog/2023/link-card/&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;futabooo.com&lt;/div&gt;
    &lt;div&gt;Home - futabooo.com&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;futabooo.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;</content:encoded></item><item><title>sidekick.nvimでCodexを使うと表示される [features].web_search_request is deprecated を解消する</title><link>https://sur33.com/posts/resolve-sidekick-nvim-codex-search-error/</link><guid isPermaLink="true">https://sur33.com/posts/resolve-sidekick-nvim-codex-search-error/</guid><description>sidekick.nvimでCodexを使うと毎回エラーが表示されてしまうので、PRを作成しつつ、一時的な回避策を講じることにしました。</description><pubDate>Mon, 16 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Info&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;sidekick.nvim 側で修正されたため、現在はこの問題は解消しています。
&lt;a href=&quot;https://github.com/folke/sidekick.nvim/pull/257&quot;&gt;https://github.com/folke/sidekick.nvim/pull/257&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;NeovimでClaude CodeやCodexなどを使うために &lt;a href=&quot;https://github.com/folke/sidekick.nvim/&quot;&gt;sidekick.nvim&lt;/a&gt; を使っているのですが、Codexを使った際に&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;[features].web_search_request` is deprecated. Use `web_search` instead&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;というエラーが表示されます。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;このエラーは sidekick.nvim の &lt;code&gt;lua/sidekick/config.lua&lt;/code&gt; で &lt;code&gt;--enable web_search_request&lt;/code&gt; が付加されていることによって起こっています。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;lua/sidekick/config.lua:106&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;codex &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; { cmd &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;&quot;codex&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;--enable&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;web_search_request&quot; &lt;/span&gt;&lt;span&gt;} },&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/folke/sidekick.nvim/blob/c2bdf8cfcd87a6be5f8b84322c1b5052e78e302e/lua/sidekick/config.lua#L106&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;sidekick.nvim/lua/sidekick/config.lua at c2bdf8cfcd87a6be5f8b84322c1b5052e78e302e · folke/sidekick.nvim&lt;/div&gt;
    &lt;div&gt;Your Neovim AI sidekick. Contribute to folke/sidekick.nvim development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;code&gt;--enable web_search_request&lt;/code&gt; はCodexがウェブ検索できるようにするためのオプションです。ただ、&lt;a href=&quot;https://developers.openai.com/codex/changelog/#codex-2026-01-28-mdx&quot;&gt;現在のCodexはウェブ検索がデフォルトで有効化されている&lt;/a&gt;ため、このオプションは不要になりました。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://developers.openai.com/codex/changelog/#codex-2026-01-28-mdx&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Changelog – Codex | OpenAI Developers&lt;/div&gt;
    &lt;div&gt;Latest updates to Codex, OpenAI’s coding agent&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;developers.openai.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;回避策（workaround）&lt;/h2&gt;
&lt;p&gt;sidekick.nvim の設定で &lt;code&gt;cli.tools.codex.cmd&lt;/code&gt; を上書きし、シンプルに &lt;code&gt;codex&lt;/code&gt; のみにします。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;lua/plugins/sidekick.lua&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    &quot;folke/sidekick.nvim&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    config&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; function&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      require&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sidekick&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;setup&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        cli &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          tools &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            codex &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              cmd &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;&quot;codex&quot; &lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      })&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    end&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;根本的な修正&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/folke/sidekick.nvim/&quot;&gt;folke/sidekick.nvim&lt;/a&gt; に向けてこの問題を解消するためのPRを作成しましたが、 folke/sidekick は最近あまり更新されていないようで、いつマージされるか不明です。そのため、この記事を作成しました。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;2026年3月16日にマージ済&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/folke/sidekick.nvim/pull/257&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;fix(config): remove web search option from codex command by Suree33 · Pull Request #257 · folke/sidekick.nvim&lt;/div&gt;
    &lt;div&gt;Description
When using Codex, the following error is displayed:
The Codex command was originally defined as codex --search, and was later changed to codex --enable web_search_request in #167 to k...&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;参考&lt;/h2&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/folke/sidekick.nvim/&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - folke/sidekick.nvim: Your Neovim AI sidekick&lt;/div&gt;
    &lt;div&gt;Your Neovim AI sidekick. Contribute to folke/sidekick.nvim development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/folke/sidekick.nvim/pull/257&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;fix(config): remove web search option from codex command by Suree33 · Pull Request #257 · folke/sidekick.nvim&lt;/div&gt;
    &lt;div&gt;Description
When using Codex, the following error is displayed:
The Codex command was originally defined as codex --search, and was later changed to codex --enable web_search_request in #167 to k...&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://developers.openai.com/codex/cli/features/#web-search&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Features – Codex CLI | OpenAI Developers&lt;/div&gt;
    &lt;div&gt;Overview of functionality in the Codex terminal client&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;developers.openai.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;</content:encoded></item><item><title>Obsidian Syncは高いので、Self-hosted LiveSyncを使う</title><link>https://sur33.com/posts/setup-obsidian-livesync/</link><guid isPermaLink="true">https://sur33.com/posts/setup-obsidian-livesync/</guid><description>Obsidian公式のSyncは高いので、コミュニティプラグインのSelf-hosted LiveSyncを使って同期、Obsidian Gitでバックアップするようにしてみました。</description><pubDate>Mon, 15 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Obsidian Sync&lt;/h2&gt;
&lt;p&gt;メインのPCがMacからWindowsに変わったために、Obsidianの同期方法を再検討しました。これまではiCloudによる同期を使っていましたが、Windows版のiCloudはあまり信用していないため、他の手段を探す必要があります。&lt;/p&gt;
&lt;p&gt;Obsidianが公式に提供している同期サービスObsidian Syncには、主にSyncとSync Plusの2つのプランがあります。Sync Plusには容量が100GBのプランもあり、通常のSync Plusの倍額に設定されています。&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;Sync&lt;/th&gt;&lt;th&gt;Sync Plus&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;料金&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;月額5ドル / 年額48ドル&lt;/td&gt;&lt;td&gt;月額10ドル / 年額96ドル&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;最大vault数&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;容量&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1GB&lt;/td&gt;&lt;td&gt;10GB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;1ファイル当たり最大サイズ&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;5MB&lt;/td&gt;&lt;td&gt;200MB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;バージョン管理&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1カ月&lt;/td&gt;&lt;td&gt;12カ月&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;（2024年4月15日現在）&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://obsidian.md/sync&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Obsidian Sync&lt;/div&gt;
    &lt;div&gt;Obsidian Sync is the simple and secure way to synchronize your Obsidian notes across any device and OS.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;obsidian.md&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Obsidian Syncは公式サービスであることから、安定していることが期待されますが、1GBの容量は画像などを含む文書を扱うには心許ないサイズです。10GBあれば当面は困らないかもしれませんが、ノートアプリに月額10ドルは高すぎます。&lt;/p&gt;
&lt;h2&gt;Self-hosted LiveSync&lt;/h2&gt;
&lt;p&gt;そこで、色々と調べた結果、ObsidianのコミュニティプラグインであるSelf-hosted LiveSyncを使ってみることにしました。Self-hosted LiveSyncは、ObsidianのvaultをCouchDBのサーバを使って同期するプラグインです。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/vrtmrz/obsidian-livesync/tree/main&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - vrtmrz/obsidian-livesync&lt;/div&gt;
    &lt;div&gt;Contribute to vrtmrz/obsidian-livesync development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;上記GitHubの&lt;a href=&quot;https://github.com/vrtmrz/obsidian-livesync/tree/main?tab=readme-ov-file#how-to-use&quot;&gt;How to use&lt;/a&gt;を参考にし、fly.ioを使ってCouchDBのサーバを立ち上げ、Self-hosted LiveSyncを使ってみました。&lt;/p&gt;
&lt;p&gt;fly.ioでは無料でCouchDBのサーバを立ち上げることができ、3GBの容量が無料で与えられます。3GBを超える場合、1GBあたり0.15ドルの月額料金がかかります。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://fly.io/&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Build fast. Run any code fearlessly.&lt;/div&gt;
    &lt;div&gt;Build fast. Run any code fearlessly.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;fly.io&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;本記事を書いた直後にfly.ioのCouchDBサーバは無料ではなくなりました。最初の$5分のHobby Trial Usageを使い切ると、その後は課金されるようになります。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3&gt;1. CouchDBの設定&lt;/h3&gt;
&lt;p&gt;Self-hosted LiveSyncの設定ドキュメントに自動セットアップスクリプトが用意されているため、それを利用してCouchDBのサーバを立ち上げていきます。&lt;/p&gt;
&lt;p&gt;この手順は、Self-hosted LiveSyncの作成者による動画がYouTubeにアップされているため、そちらを参考に進めていきます。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.youtube.com/watch?v=7sa_I1832Xc&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt; - YouTube&lt;/div&gt;
    &lt;div&gt;Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.youtube.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;まず、&lt;a href=&quot;https://github.com/vrtmrz/obsidian-livesync/blob/main/setup-flyio-on-the-fly-v2.ipynb&quot;&gt;setup-flyio-on-the-fly-v2.ipynb&lt;/a&gt; を開き、 &lt;code&gt;Open in Colab&lt;/code&gt; をクリックします。
すると、Google Colabが開かれます。そこで、regionを &lt;code&gt;nrt/Tokyo, Japan&lt;/code&gt; に設定します（日本の場合）。&lt;/p&gt;
&lt;p&gt;（今回は最初から&lt;code&gt;nrt/Tokyo, Japan&lt;/code&gt;になっていたので、何も弄らずに進めました）&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;regionを選択したら、各セルを上から順番に実行していきます。
なお、最後の&lt;code&gt;!./delete-server.sh&lt;/code&gt; のセルを実行すると、立ち上げたサーバインスタンスが削除されるため、注意してください。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;# Install prerequesties&lt;/code&gt; のセルを実行し、依存関係のインストールが行います。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Login up sign up&lt;/code&gt; のセルを実行すると、fly.ioにログインするためのリンクが表示されます。表示されるリンクをクリックしてログインします。fly.ioのアカウントが無い場合は、ここでアカウントを作成します。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;ログインすると、Google Colabのセルの実行結果に &lt;code&gt;successfully logged in as name@example.com&lt;/code&gt; のように表示されます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;サーバを立ち上げる前に、fly.ioに支払い情報を登録しておく必要があります。登録せずにサーバを立ち上げようとすると、エラーが表示されます。fly.ioのダッシュボードの&lt;strong&gt;Billing&lt;/strong&gt;ページから、Hobby Planを選び、支払い情報を登録します。ここで登録すると、5GBの無料クレジットがアカウントに追加されます。この登録では支払いは発生しません。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支払い情報を登録出来たら、&lt;code&gt;# see https://fly.io/docs/reference/regions/&lt;/code&gt; から始まるセルを実行すると、CouchDBのサーバが立ち上がります。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;サーバインスタンスの立ち上げが完了すると、以下のような形式でセットアップ用のURIと、そのコピーボタン、セットアップ用パスワードが表示されます。この情報は、Obsidianの設定で使います。再度表示することができないため、メモしておきます。&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;--- setup uri ---&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;obsidian://setuplivesync?.......&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Copy your setup-URI with this button! -&amp;gt; Copy setup uri&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Importing passphrase is `*****`.&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;If you want to synchronise in live mode, please apply a preset after ensuring the imported configuration works.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;2. Obsidianの設定&lt;/h3&gt;
&lt;p&gt;CouchDBのサーバが立ち上がったら、ObsidianのSelf-hosted LiveSyncの設定を行います。以下の手順をPC版ObsidianとiOS版Obsidianの両方で行うことで、同期を開始することができます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Obsidianの設定画面から、&lt;strong&gt;コミュニティプラグイン&lt;/strong&gt;を開き、&lt;strong&gt;閲覧&lt;/strong&gt;をクリックして、&lt;strong&gt;Self-hosted LiveSync&lt;/strong&gt; をインストールします。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Self-hosted LiveSyncをインストールしたら、&lt;strong&gt;有効化&lt;/strong&gt; をクリックして有効化します。すると、ポップアップが開かれるため、一番下の &lt;strong&gt;Use the copied setup URL&lt;/strong&gt; をクリックします。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;先ほどのセットアップ用のURIを貼り付けて、&lt;strong&gt;Ok&lt;/strong&gt;をクリックします。
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;パスワードを求められるので、先ほどのセットアップ用パスワードを入力し、&lt;strong&gt;Ok&lt;/strong&gt;をクリックします。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Importing LiveSync&apos;s conf, OK?&lt;/code&gt; と表示されるので、&lt;strong&gt;OK&lt;/strong&gt;をクリックします。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;How would you like to set it up?&lt;/code&gt; と表示されたら、 &lt;strong&gt;Set it up as secondary or subsequent device&lt;/strong&gt; を選択すると、初期設定が開始されます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Hidden file sync&lt;/code&gt; のポップアップが表示されますが、これは &lt;strong&gt;keep them disabled&lt;/strong&gt; を選択します。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Obsidian Git&lt;/h2&gt;
&lt;p&gt;Self-hosted LiveSyncでは同期はできますが、何らかの要因でデータが消えてしまう不安があるため、Obsidian Gitを使ってバックアップを取ることにしました。これはPC版Obsidianのみに設定しました。また、基本的にバックアップのみが目的のため、定期実行はCommitとPushのみとし、定期的なPullは無効化しました。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/denolehov/obsidian-git&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - Vinzent03/obsidian-git: Integrate Git version control with automatic commit-and-sync and other advanced features in Obsidian.md&lt;/div&gt;
    &lt;div&gt;Integrate Git version control with automatic commit-and-sync and other advanced features in Obsidian.md - Vinzent03/obsidian-git&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;参考にしたサイトなど&lt;/h2&gt;
&lt;div&gt;
  &lt;a href=&quot;https://note.com/wolf_horo/n/n94388d45a83e&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Obsidianの同期について         (Windows + iPhone)｜wolf_horo&lt;/div&gt;
    &lt;div&gt;ここ最近、サブスクの整理をしており、Obsidian Syncも解約候補にあがりました。Obsidian Syncとは月10ドル(およそ1500円)で複数のデバイス間のObsidianのvaultを同期できる公式サービスです。  筆者は9ヶ月程、Obsidian Syncを使っていましたが、これまで一度もConflictが発生したことは無く、素晴らしいサービスだと思います。 しかし、メモアプリの同期に月10ドル(年払いで8ドル/月)はあまりに高い!   今回、筆者はObsidian Syncの代替手段を探し回り、 現在(2024/01/04)時点での個人的な結論(諦め)に辿り&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;note.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://zenn.dev/ayumukob/articles/3b034fcb6874d2&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Obsidian Gitを導入してみた&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;zenn.dev&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;obsidian-livesync/README.md at main · vrtmrz/obsidian-livesync&lt;/div&gt;
    &lt;div&gt;Contribute to vrtmrz/obsidian-livesync development by creating an account on GitHub.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;</content:encoded></item><item><title>GitHub Actions × Tailscale で Palworld サーバーを自動デプロイする</title><link>https://sur33.com/posts/tailscale-github-actions-to-deploy-palworld-server-docker/</link><guid isPermaLink="true">https://sur33.com/posts/tailscale-github-actions-to-deploy-palworld-server-docker/</guid><description>GitHub ActionsからTailscale経由でサーバーへアクセスしてデプロイできるようにしました。</description><pubDate>Sun, 26 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;palworld-server-docker&lt;/h2&gt;
&lt;p&gt;自宅のミニPCでPalworldのサーバーを立てて遊んでいます。
使っているのは &lt;a href=&quot;https://github.com/thijsvanloef/palworld-server-docker&quot;&gt;&lt;code&gt;thijsvanloef/palworld-server-docker&lt;/code&gt;&lt;/a&gt; とDocker Composeで、設定に使っているのは基本的に&lt;code&gt;docker-compose.yml&lt;/code&gt; のみです。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/thijsvanloef/palworld-server-docker&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - thijsvanloef/palworld-server-docker: A Docker Container to easily run a Palworld dedicated server.&lt;/div&gt;
    &lt;div&gt;A Docker Container to easily run a Palworld dedicated server. - thijsvanloef/palworld-server-docker&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;そのため、何か設定を変える場合（パルタマゴの孵化時間を変えるなど）は以下の手順で行っていました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt; を書き換える&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker compose down &amp;amp;&amp;amp; docker compose up -d&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;設定ファイルはGitHubで管理していたのに、デプロイの時はSSHしてからコマンドを打つという非効率な方法だったので、これをGitHub Actionsで自動化します。今回は、Releaseを作成した時に自動でデプロイするようにします。&lt;/p&gt;
&lt;p&gt;前提：サーバーのPCにはTaiscaleを設定済みです。友人がサーバーにアクセスする際にもTailscale経由で接続しています。&lt;/p&gt;
&lt;p&gt;GitHub ActionsからTailscale経由でサーバーにアクセスするために、Tailscale公式の &lt;a href=&quot;https://github.com/tailscale/github-action&quot;&gt;&lt;code&gt;tailscale/github-action&lt;/code&gt;&lt;/a&gt; を使います。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/tailscale/github-action&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;GitHub - tailscale/github-action: A GitHub Action to connect your workflow to your Tailscale network.&lt;/div&gt;
    &lt;div&gt;A GitHub Action to connect your workflow to your Tailscale network. - tailscale/github-action&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;github.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://tailscale.com/kb/1276/tailscale-github-action&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Tailscale GitHub Action · Tailscale Docs&lt;/div&gt;
    &lt;div&gt;Secure CI/CD workflows in GitHub using the Tailscale GitHub Action.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;tailscale.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;Tailscaleの設定&lt;/h2&gt;
&lt;p&gt;TailscaleのAdmin Consoleから設定を行います。&lt;/p&gt;
&lt;h3&gt;ACLの設定&lt;/h3&gt;
&lt;p&gt;Access Controlsに追記して、タグを追加します。&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt; &quot;tagOwners&quot;: {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;span&gt;+&lt;/span&gt;    &quot;tag:ci&quot;: [&quot;autogroup:admin&quot;],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt; &quot;acls&quot;: [&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;     {&quot;action&quot;: &quot;accept&quot;, &quot;src&quot;: [&quot;*&quot;], &quot;dst&quot;: [&quot;*:*&quot;]},&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;span&gt;+&lt;/span&gt;    {&quot;action&quot;: &quot;accept&quot;, &quot;src&quot;: [&quot;tag:ci&quot;], &quot;dst&quot;: [&quot;tag:ci:*&quot;]},&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt; ],&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;デバイスにタグを追加&lt;/h3&gt;
&lt;p&gt;Machinesからデプロイ先のサーバーを選択して、Machine settings &amp;gt; Edit ACL tags…から、上で設定したタグ（今回は &lt;code&gt;tag:ci&lt;/code&gt;）を追加します。&lt;/p&gt;
&lt;h3&gt;OAuth clientsを追加&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://login.tailscale.com/admin/settings/oauth&quot;&gt;Settings &amp;gt; OAuth clients&lt;/a&gt; から新しいOAuth clientを追加します。&lt;/p&gt;
&lt;p&gt;必要な権限は &lt;code&gt;Devices &amp;gt; Core&lt;/code&gt; の &lt;code&gt;Read&lt;/code&gt; / &lt;code&gt;Write&lt;/code&gt; の両方と、 &lt;code&gt;Keys &amp;gt; Auth Keys&lt;/code&gt; の &lt;code&gt;Read&lt;/code&gt; / &lt;code&gt;Write&lt;/code&gt; の両方です。ここで &lt;a href=&quot;#oauth-clients%E3%81%AEauth-keys%E6%A8%A9%E9%99%90&quot;&gt;Auth Keysが必要なこと&lt;/a&gt;に気が付かず少しハマりました。&lt;/p&gt;
&lt;p&gt;Tagsには、先ほど設定したタグを指定します。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Generate client&lt;/code&gt; をクリックして、表示された &lt;code&gt;Client ID&lt;/code&gt; と &lt;code&gt;Client Secret&lt;/code&gt; を控えておきます。&lt;/p&gt;
&lt;h2&gt;GitHub Actionsの設定&lt;/h2&gt;
&lt;p&gt;リポジトリの Settings &amp;gt; Secrets and variables &amp;gt; Actions &amp;gt; New repository secret から、 &lt;code&gt;TS_OAUTH_CLIENT_ID&lt;/code&gt; と &lt;code&gt;TS_OAUTH_CLIENT_SECRET&lt;/code&gt; を追加し、それぞれ先ほど控えた &lt;code&gt;Client ID&lt;/code&gt; と &lt;code&gt;Client Secret&lt;/code&gt; を入力します。&lt;/p&gt;
&lt;p&gt;さらに、SSH用の情報もSecretsに追加しておきます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SSH_HOST&lt;/code&gt;: Tailnet上のサーバーのIPアドレス（Admin Consoleなどから確認できる）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SSH_USERNAME&lt;/code&gt;: SSHのユーザー名&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SSH_KEY&lt;/code&gt;: SSHの秘密鍵&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GitHub Actionsの設定ファイル &lt;code&gt;.github/workflows/deploy.yml&lt;/code&gt; を作成します。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;deploy.yml&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;Deploy to server&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;on&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  release&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    types&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;published&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;jobs&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  deploy&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    runs-on&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;ubuntu-latest&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    environment&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      name&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;Deploy&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    steps&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      - &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;Setup Tailscale&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        uses&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;tailscale/github-action@v3&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        with&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          oauth-client-id&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;${{ secrets.TS_OAUTH_CLIENT_ID }}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          oauth-secret&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;${{ secrets.TS_OAUTH_SECRET }}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          tags&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;tag:ci&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      - &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;Deploy&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        uses&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;appleboy/ssh-action@master&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        with&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          host&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;${{ secrets.SSH_HOST }}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          username&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;${{ secrets.SSH_USERNAME }}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          key&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;${{ secrets.SSH_KEY }}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          script&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            cd /path/to/directory/palworld&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            git fetch --all&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            git checkout ${{ github.event.release.tag_name }}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            docker compose down&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            docker compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;SSHは &lt;a href=&quot;https://github.com/appleboy/ssh-action&quot;&gt;&lt;code&gt;appleboy/ssh-action&lt;/code&gt;&lt;/a&gt; を使います。ここに特にこだわりはありません。&lt;/p&gt;
&lt;p&gt;これで、Releaseを作成すると自動でデプロイされるようになりました。&lt;/p&gt;
&lt;p&gt;タグを切ってGitHubからReleaseを作成すると、自動でActionsがTailnet経由でサーバーにアクセスし、リリースのタグで &lt;code&gt;docker compose down &amp;amp;&amp;amp; docker compose up -d&lt;/code&gt; を実行してくれます。&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; tag&lt;/span&gt;&lt;span&gt; -a&lt;/span&gt;&lt;span&gt; v1.0.0&lt;/span&gt;&lt;span&gt; -m&lt;/span&gt;&lt;span&gt; &quot;Release v1.0.0&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; push&lt;/span&gt;&lt;span&gt; --tags&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;あら便利。&lt;/p&gt;
&lt;h2&gt;ハマったところ&lt;/h2&gt;
&lt;h3&gt;OAuth ClientsのAuth Keys権限&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;OAuth Clients&lt;/code&gt; のところで、多くの解説記事では &lt;code&gt;Devices&lt;/code&gt; の &lt;code&gt;Read&lt;/code&gt; / &lt;code&gt;Write&lt;/code&gt; のみで動作すると書かれており、ここでハマりました。&lt;/p&gt;
&lt;p&gt;Tailscale Docsの &lt;a href=&quot;https://tailscale.com/kb/1215/oauth-clients#generating-long-lived-auth-keys&quot;&gt;OAuth Clients&lt;/a&gt; にあった以下の記述から、「これ、Auth Keysの権限も要るんじゃないか…？」と追加してみたら動きました。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Instead of a long-lived auth key, you can generate an OAuth client with the &lt;code&gt;auth_keys&lt;/code&gt; scope. Use the OAuth client to generate new auth keys as needed, by making a POST request to the &lt;code&gt;/api/v2/tailnet/:tailnet/keys&lt;/code&gt; API method. When you create an OAuth client with the scope auth_keys, you must select one or more &lt;code&gt;tags&lt;/code&gt;, which can be any tag or set of tags in your tailnet. Additionally, these tags need to be specified in the API call.&lt;/p&gt;&lt;/blockquote&gt;
&lt;div&gt;
  &lt;a href=&quot;https://tailscale.com/kb/1215/oauth-clients#generating-long-lived-auth-keys&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;OAuth clients · Tailscale Docs&lt;/div&gt;
    &lt;div&gt;Use OAuth clients to provide ongoing access to the Tailscale API.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;tailscale.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;2024年11月14日からOAuth Clientsのスコープが変わったようです。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;As of November 14, 2024 new OAuth clients will use the scopes listed in the scopes section. Existing OAuth clients using the below scopes, and keys generated using these clients, are still valid.&lt;/p&gt;&lt;/blockquote&gt;
&lt;div&gt;
  &lt;a href=&quot;https://tailscale.com/kb/1215/oauth-clients#legacy-scopes&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;OAuth clients · Tailscale Docs&lt;/div&gt;
    &lt;div&gt;Use OAuth clients to provide ongoing access to the Tailscale API.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;tailscale.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;</content:encoded></item><item><title>欲しいものリスト 2024.04</title><link>https://sur33.com/posts/wishlist-2024-04/</link><guid isPermaLink="true">https://sur33.com/posts/wishlist-2024-04/</guid><description>欲しいものがありすぎるので、自分の中で整理するためにまとめました。お金が足りない。</description><pubDate>Thu, 18 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;PC周り&lt;/h2&gt;
&lt;h3&gt;Logicool MX Master 3s&lt;/h3&gt;
&lt;p&gt;価格: ¥16,900&lt;/p&gt;
&lt;p&gt;4年使ったMX Master 3から買い換えたい。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://sur33.com/posts/logi-mx-master-is-better-than-lift&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Logicool MX Liftを買ってみて、MX Masterの良さを再認識した — Daiki Sato&lt;/div&gt;
    &lt;div&gt;Daiki Satoのブログ&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;sur33.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.logicool.co.jp/ja-jp/products/mice/mx-master-3s.910-006568.html&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;www.logicool.co.jp&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.logicool.co.jp&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://amzn.to/3Um98Bq&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Amazon.co.jp: ロジクール MX MASTER3s アドバンスド ワイヤレス マウス 静音 MX2300PG Logi Bolt Bluetooth Unifying非対応 8000dpi 高速スクロールホイール USB-C 充電式 windows mac iPad Chrome Android OS 無線 ワイヤレスマウス MX2300 ペイルグレー 国内正規品 : パソコン・周辺機器&lt;/div&gt;
    &lt;div&gt;Amazon.co.jp: ロジクール MX MASTER3s アドバンスド ワイヤレス マウス 静音 MX2300PG Logi Bolt Bluetooth Unifying非対応 8000dpi 高速スクロールホイール USB-C 充電式 windows mac iPad Chrome Android OS 無線 ワイヤレスマウス MX2300 ペイルグレー 国内正規品 : パソコン・周辺機器&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;amzn.to&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h3&gt;Nuphy Halo75 V2&lt;/h3&gt;
&lt;p&gt;価格: $148.95&lt;/p&gt;
&lt;p&gt;Nuphy Halo75の後継機。新しいキーキャップのプロファイルが気になる。20000円台でクオリティの高いキーボードを買えるのは魅力的。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://nuphy.com/products/halo75-v2-qmk-via-wireless-custom-mechanical-keyboard?variant=41197390069869&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;NuPhy Halo75 V2&lt;/div&gt;
    &lt;div&gt;The Nuphy Halo75 V2 is a wireless gaming mechanical keyboard with a 75-key compact layout available in black, blue, and pink. It combines portability with performance, ideal for gamers.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;nuphy.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h3&gt;Nuphy NuFolio V3 for Air75&lt;/h3&gt;
&lt;p&gt;価格: ¥3,520&lt;/p&gt;
&lt;p&gt;NuPhy Air75用のケース。キーボードを裸で持ち歩きたくないので、ケースが欲しい。これは純正のケースで、キーボードにピッタリフィットするので便利そうだし、見た目がすごく良い。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://amzn.to/4aJrlik&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Amazon | Nuphy NuFolio V3 Air75 専用折りたたみケース (ノスタルジック タン) | nuphy | タブレットケース 通販&lt;/div&gt;
    &lt;div&gt;Nuphy NuFolio V3 Air75 専用折りたたみケース (ノスタルジック タン)がタブレットケースストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。アマゾン配送商品は、通常配送無料（一部除く）。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;amzn.to&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://nuphy.com/products/air75&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;NuPhy Air75&lt;/div&gt;
    &lt;div&gt;NuPhy Air75 is an innovative 75% ultra-slim wireless mechanical keyboard. With the world’s thinnest PBT spherical keycap, low-latency 2.4G wireless connection, and hot-swappable function, Air75 aims to become the new standard for slim mechanical keyboards.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;nuphy.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h3&gt;DDR5-4800 メモリ&lt;/h3&gt;
&lt;p&gt;価格: 約¥15,000&lt;/p&gt;
&lt;p&gt;デスクトップPCのメモリが現状32GBで、WSLなどを使っているとメモリが足りなくなることがある。32GB+32GBで64GBに増設したい。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://amzn.to/3Q7YtYG&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Amazon | CFD販売 デスクトップPC用メモリ DDR5-4800 (PC5-38400) 16GB×2枚 (32GB) 相性保証 無期限保証 Crucial by Micron W5U4800CM-16GS | Crucial(クルーシャル) | メモリ 通販&lt;/div&gt;
    &lt;div&gt;CFD販売 デスクトップPC用メモリ DDR5-4800 (PC5-38400) 16GB×2枚 (32GB) 相性保証 無期限保証 Crucial by Micron W5U4800CM-16GSがメモリストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。アマゾン配送商品は、通常配送無料（一部除く）。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;amzn.to&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h3&gt;CIO マグネットシリコンケーブル&lt;/h3&gt;
&lt;p&gt;¥1,850&lt;/p&gt;
&lt;p&gt;デスク上でキーボードやマウスなどを充電する際に抜き差しが面倒なので、マグネットケーブルが欲しい。CIO製だし結構良さそう。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://connectinternationalone.co.jp/cioproduct/cable/%e3%83%9e%e3%82%b0%e3%83%8d%e3%83%83%e3%83%88%e3%82%b1%e3%83%bc%e3%83%96%e3%83%ab%e3%82%b7%e3%83%aa%e3%83%bc%e3%82%ba/s_cio-slmg-cc05/&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;CIO マグネットシリコンケーブル CtoC 0.5m | 株式会社CIO（シーアイオー）公式HP 充電器・モバイルバッテリーメーカー&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;connectinternationalone.co.jp&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://amzn.to/49HtI3R&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Amazon.co.jp: CIO マグネットシリコンケーブル 100W対応 USB Type-C 磁石で脱着 防水規格 IPX5対応 iphone15/16/17 タイプC ケーブル (L字,パープル, 0.5m) : 家電＆カメラ&lt;/div&gt;
    &lt;div&gt;Amazon.co.jp: CIO マグネットシリコンケーブル 100W対応 USB Type-C 磁石で脱着 防水規格 IPX5対応 iphone15/16/17 タイプC ケーブル (L字,パープル, 0.5m) : 家電＆カメラ&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;amzn.to&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;PC周り（ゲーム）&lt;/h2&gt;
&lt;h3&gt;Pulsar ParaBrake V2 XL Black&lt;/h3&gt;
&lt;p&gt;価格: ¥2,490&lt;/p&gt;
&lt;p&gt;マウスパッドを買い換えたい。これくらい安いやつを定期的に買い換えていきたい。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://pulsargg.jp/products/para-brake-v2-mouse-pad-xl-slow-speed?variant=47283642171685&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;PARA BRAKE V2 Mouse Pad XL-XXL (Slow Speed)&lt;/div&gt;
    &lt;div&gt;緻密で正確に織られた超微細マイクロファイバークロスは、従来の布製パッドよりも優れた制動力を提供します。これは、スーパーグライドフィートや超軽量マウスと一緒に使用するのに理想的です。マイクロコントロールや急激な停止を行うのが非常に簡単です。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;pulsargg.jp&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://amzn.to/3Q5D3eI&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Amazon.co.jp: Pulsar Gaming Gears eSports仕様 ゲーミングマウスパッド XLサイズ ParaBrake V2 中摩擦 ソフトタイプ 滑り止め 49cm × 42cm 国内正規品 (XL, Black) : パソコン・周辺機器&lt;/div&gt;
    &lt;div&gt;Amazon.co.jp: Pulsar Gaming Gears eSports仕様 ゲーミングマウスパッド XLサイズ ParaBrake V2 中摩擦 ソフトタイプ 滑り止め 49cm × 42cm 国内正規品 (XL, Black) : パソコン・周辺機器&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;amzn.to&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;スマートホーム&lt;/h2&gt;
&lt;h3&gt;Philips Hue フルカラー シングルランプ E26 1600lm&lt;/h3&gt;
&lt;p&gt;価格: ¥6,423&lt;/p&gt;
&lt;p&gt;今は800lmのホワイトシングルランプを使っていて、フルカラーのHueを使ってみたい &amp;amp; 1600lmが気になる。ただ、&lt;a href=&quot;https://amzn.to/441r6fS&quot;&gt;4つ買う&lt;/a&gt;と結構な金額になるので、悩んでいる。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.philips-hue.com/ja-jp/p/hue-white-and-color-ambiance-a21---e26-smart-bulb---1600/8719514360808&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Hue E26 A21 LED 電球 - フルカラー | Philips Hue JP&lt;/div&gt;
    &lt;div&gt;こちらの E26 LED スマート電球で、ご自宅の一番広いスペースに明るくカラフルなスマートライトをセットしませんか。リビングルームやキッチンなどのお部屋を色彩で彩ることができます。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.philips-hue.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://amzn.to/3JmNbfj&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Amazon | フィリップスヒュー(Philips Hue) スマート電球 E26 100W相当 フルカラー 1個 - スマート照明 Alexa対応 1600lm マルチカラー 1600万色 電球色 昼白色 調光 調色 スマートホーム 間接照明 LED スマートライト 音声操作 アプリ操作 Matter対応 | フィリップスヒュー(Philips Hue) | 白熱電球 通販&lt;/div&gt;
    &lt;div&gt;フィリップスヒュー(Philips Hue) スマート電球 E26 100W相当 フルカラー 1個 - スマート照明 Alexa対応 1600lm マルチカラー 1600万色 電球色 昼白色 調光 調色 スマートホーム 間接照明 LED スマートライト 音声操作 アプリ操作 Matter対応が白熱電球ストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。アマゾン配送商品は、通常配送無料（一部除く）。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;amzn.to&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;h3&gt;SwitchBot ハブミニ(Matter対応)&lt;/h3&gt;
&lt;p&gt;価格: ¥5,980&lt;/p&gt;
&lt;p&gt;SwitchBotデバイスは&lt;a href=&quot;https://github.com/OpenWonderLabs/homebridge-switchbot&quot;&gt;Homebridgeプラグイン&lt;/a&gt;でもHomeKit対応できるが、ロボット掃除機が照明として認識されるのが不満。Matter対応のハブミニなら、HomeKitで正しく認識されるっぽい。&lt;/p&gt;
&lt;div&gt;
  &lt;a href=&quot;https://www.switchbot.jp/products/switchbot-hub-mini-matter&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;SwitchBot ハブミニ(Matter対応)&lt;/div&gt;
    &lt;div&gt;売上No.1のスマートリモコンが今Matter対応へ&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;www.switchbot.jp&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://amzn.to/3vMod61&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;スイッチボット(SwitchBot) Hub Mini マター対応 スマートリモコン&lt;/div&gt;
    &lt;div&gt;【熱中症対策】SwitchBot スマートリモコン ハブミニ(Matter対応) Alexa - スイッチボット 簡単セットアップに対応 Hub Mini マター対応 スマートホーム 学習リモコン 赤外線家電を管理 節電·省エネ Echo Google Home Siri IFTTT SmartThings対応が補助錠・錠前ストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。アマゾン配送商品は、通常配送無料（一部除く）。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;amzn.to&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;</content:encoded></item><item><title>.zshrc の起動が遅い原因を Codex に調査させたら、10倍速くなった</title><link>https://sur33.com/posts/zshrc-startup-slow-cause-and-fix/</link><guid isPermaLink="true">https://sur33.com/posts/zshrc-startup-slow-cause-and-fix/</guid><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近 &lt;code&gt;.zshrc&lt;/code&gt; の起動が体感で遅くなっていたので、原因調査から修正まで Codex に丸投げしてみた。&lt;/p&gt;
&lt;p&gt;作業後、この記事もCodexに下書きしてもらった。ほぼ全部手直ししたけど。&lt;/p&gt;
&lt;h2&gt;症状&lt;/h2&gt;
&lt;p&gt;まず Codex に現状の計測から始めてもらった。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;.zshrc で時間がかかっています。何が原因か調べたい。どうしたらいい？&lt;/p&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;1..5}&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;do&lt;/span&gt;&lt;span&gt; /usr/bin/time&lt;/span&gt;&lt;span&gt; zsh&lt;/span&gt;&lt;span&gt; -i&lt;/span&gt;&lt;span&gt; -c&lt;/span&gt;&lt;span&gt; exit&lt;/span&gt;&lt;span&gt; &amp;gt;&lt;/span&gt;&lt;span&gt;/dev/null&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;done&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;実行結果（実測）:&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;1.33 real&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;1.17 real&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;1.01 real&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;1.04 real&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;1.18 real&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;平均して 1 秒台前半かかっていたっぽい。実際 &lt;code&gt;time zsh -i -c exit&lt;/code&gt; を手動で何度か実行してみたら、2秒を超える時もあった。遅すぎ。&lt;/p&gt;
&lt;h2&gt;改善策を練る&lt;/h2&gt;
&lt;p&gt;CodexのPlanモードで、具体的な改善策を練ってもらった。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;具体的にどうすべきか、詳細をまずは検討してください&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3&gt;1. zprof で内訳を見る&lt;/h3&gt;
&lt;p&gt;Codex が &lt;code&gt;zprof&lt;/code&gt; を使って処理時間の内訳を可視化してくれた。&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;tmp&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;mktemp&lt;/span&gt;&lt;span&gt; -d&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &amp;gt;&lt;/span&gt;&lt;span&gt; &quot;&lt;/span&gt;&lt;span&gt;$tmp&lt;/span&gt;&lt;span&gt;/.zshrc&quot;&lt;/span&gt;&lt;span&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span&gt;&apos;ZPROF_EOF&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;zmodload zsh/zprof&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;source ~/.zshrc&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;zprof&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;ZPROF_EOF&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;ZDOTDIR&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;$tmp&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; zsh&lt;/span&gt;&lt;span&gt; -i&lt;/span&gt;&lt;span&gt; -c&lt;/span&gt;&lt;span&gt; exit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;実際の &lt;code&gt;zprof&lt;/code&gt; 出力（抜粋）:&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;num  calls                time                       self            name&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;-----------------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt; 1)    2         470.73   235.36   47.02%    470.73   235.36   47.02%  compdump&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt; 2)    2         968.56   484.28   96.74%    354.90   177.45   35.45%  compinit&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt; 3) 1963         124.10     0.06   12.40%    124.10     0.06   12.40%  compdef&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Codex によると &lt;code&gt;compinit&lt;/code&gt; / &lt;code&gt;compdump&lt;/code&gt; が時間の大半を占めており、しかも &lt;code&gt;calls=2&lt;/code&gt; と 2 回呼ばれていることが問題らしい。&lt;/p&gt;
&lt;h3&gt;2. compinit の呼び出し元を特定&lt;/h3&gt;
&lt;p&gt;Codex が &lt;code&gt;compdump&lt;/code&gt; をラップして呼び出し元をトレースし、&lt;code&gt;~/.bun/_bun&lt;/code&gt; 内で &lt;code&gt;compinit&lt;/code&gt; が呼ばれていることを突き止めてくれた。&lt;/p&gt;
&lt;p&gt;呼び出し元トレースの実際の出力:&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;COMPDUMP caller=/usr/share/zsh/5.9/functions/compinit:549 | /Users/sur33/.bun/_bun:964 | /Users/sur33/.zshrc:66 | ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;該当箇所（&lt;code&gt;~/.bun/_bun&lt;/code&gt;）:&lt;/p&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; !&lt;/span&gt;&lt;span&gt; command&lt;/span&gt;&lt;span&gt; -v&lt;/span&gt;&lt;span&gt; compinit&lt;/span&gt;&lt;span&gt; &amp;gt;&lt;/span&gt;&lt;span&gt;/dev/null&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  autoload&lt;/span&gt;&lt;span&gt; -U&lt;/span&gt;&lt;span&gt; compinit&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;compinit&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;.zshrc&lt;/code&gt; 側でも後段で &lt;code&gt;compinit&lt;/code&gt; を呼んでいたため、二重実行に近い構成になっていたみたい。&lt;/p&gt;
&lt;h2&gt;修正&lt;/h2&gt;
&lt;p&gt;Codex が提案してきた計画は概ねこれだけ:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;source ~/.bun/_bun&lt;/code&gt; を &lt;code&gt;compinit&lt;/code&gt; の後ろに移動する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;とにかく「&lt;code&gt;compinit&lt;/code&gt; を先に 1 回実行して、&lt;code&gt;_bun&lt;/code&gt; 側での &lt;code&gt;compinit&lt;/code&gt; 発火条件を満たさないようにする」ことが重要らしい。&lt;/p&gt;
&lt;h2&gt;結果&lt;/h2&gt;
&lt;p&gt;修正後の計測:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;起動時間: &lt;code&gt;0.17s〜0.6s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;zprof&lt;/code&gt; 上の &lt;code&gt;compinit&lt;/code&gt; 呼び出し回数: &lt;code&gt;1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.zcompdump&lt;/code&gt; の mtime: 連続起動で変化なし（毎回再生成しない）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bun&lt;/code&gt; 補完: &lt;code&gt;_comps[bun]=_bun&lt;/code&gt; で有効を確認&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;大体0.1〜0.2秒で、たまに0.6秒くらいかかる感じ。特に手戻りなく&lt;strong&gt;一発で10倍速くなって神&lt;/strong&gt;。&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;compinit -C&lt;/code&gt; について&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;compinit -C&lt;/code&gt; するとキャッシュを利用してくれるけど、これだけだとキャッシュを生成してくれないので、結局たまにキャッシュを再生成しないといけなくなるっぽい。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;compinit&lt;/code&gt; はデフォルトでキャッシュを使うかどうかも判断してくれるので、それがベストプラクティスなんだって。とはいえ参考にした記事も一つ目はAI臭い感じの文章だったので、どれくらい正しいかは不明。&lt;/p&gt;
&lt;h2&gt;参考&lt;/h2&gt;
&lt;div&gt;
  &lt;a href=&quot;https://zenn.dev/i9wa4/articles/2026-01-01-zsh-startup-optimization-compinit&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;Zsh compinit の仕組みを理解して起動時間を短縮する&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;zenn.dev&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://qiita.com/vintersnow/items/c29086790222608b28cf&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
  &lt;div&gt;
    &lt;div&gt;zshの起動が遅いのでなんとかしたい 2 - Qiita&lt;/div&gt;
    &lt;div&gt;関連記事 zshの起動が遅いのでなんとかしたい 最速のZsh プラグインマネージャーを求めて TL;DR zplugを使うのやめた。 zcompile最強 はじめに 男たるもの常に最速を目指さないといけないと思っているvinterです。 嘘です。ちょっと卒論がやばい...&lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
    
    &lt;span&gt;qiita.com&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;</content:encoded></item></channel></rss>