<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>自動化 on Blackratel Blog</title>
    <link>http://localhost:1313/blog/ja/tags/%E8%87%AA%E5%8B%95%E5%8C%96/</link>
    <description>Recent content in 自動化 on Blackratel Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <copyright>© 2026 blackratel</copyright>
    <lastBuildDate>Tue, 05 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://localhost:1313/blog/ja/tags/%E8%87%AA%E5%8B%95%E5%8C%96/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Claude Code のカスタムスラッシュコマンドでワークフローを自動化する</title>
      <link>http://localhost:1313/blog/ja/posts/claudecodecommand/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate>
      
      <guid>http://localhost:1313/blog/ja/posts/claudecodecommand/</guid>
      <description>&lt;p&gt;このブログの記事作成フローは、以前の記事で紹介したように git commit・git push をトリガーにプレビューや本番反映が自動で流れる仕組みになっている。&lt;/p&gt;&#xA;&lt;p&gt;ただ、毎回 Claude Code を開いて「プレビューして」「本番に反映して」と伝えるのは手間だ。&lt;strong&gt;記事を書くことだけに集中したい。&lt;/strong&gt; そこで Claude Code のカスタムスラッシュコマンドを使って、これらの操作をワンコマンド化した。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;カスタムスラッシュコマンドとは&#xA;    &lt;div id=&#34;カスタムスラッシュコマンドとは&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%a0%e3%82%b9%e3%83%a9%e3%83%83%e3%82%b7%e3%83%a5%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%81%a8%e3%81%af&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Claude Code には、独自のスラッシュコマンドを作れる仕組みがある。所定の場所に Markdown ファイルを置くだけで、そのファイル名がそのままコマンド名になる。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;ファイル名 = コマンド名&lt;/strong&gt; というシンプルなルールだ。&lt;/p&gt;&#xA;&lt;p&gt;たとえば &lt;code&gt;preview.md&lt;/code&gt; というファイルを置けば &lt;code&gt;/preview&lt;/code&gt; というコマンドが使えるようになり、そのファイルの中身がプロンプトとして Claude に渡される。コマンドを入力するだけで、ファイルに書いた指示を Claude が実行してくれる。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;配置場所とスコープ&#xA;    &lt;div id=&#34;配置場所とスコープ&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e9%85%8d%e7%bd%ae%e5%a0%b4%e6%89%80%e3%81%a8%e3%82%b9%e3%82%b3%e3%83%bc%e3%83%97&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;コマンドファイルの置き場所によって有効範囲が変わる。&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;配置場所&lt;/th&gt;&#xA;          &lt;th&gt;スコープ&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;&amp;lt;プロジェクトルート&amp;gt;/.claude/commands/&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;そのプロジェクトのみ&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;~/.claude/commands/&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;全プロジェクトで有効&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;プロジェクト固有の操作はプロジェクト側に置く。こうすると他のプロジェクトで Claude を使っても同名のコマンドが干渉しない。git で管理できるので、チームで共有するときもそのまま使える。&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>git commit で Hugo ローカルサーバへの自動デプロイを実現する</title>
      <link>http://localhost:1313/blog/ja/posts/git-hook-ansible-auto-deploy/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate>
      
      <guid>http://localhost:1313/blog/ja/posts/git-hook-ansible-auto-deploy/</guid>
      <description>&lt;p&gt;このブログは Hugo で構築している。記事作成時は Ansible でローカルの Hugo を更新してプレビューし、確認後に本番へアップロードするフローで運用している。&lt;/p&gt;&#xA;&lt;p&gt;これまではコミット後に &lt;code&gt;ansible-playbook&lt;/code&gt; コマンドを手動で実行していたが、コミットしたら自動で Hugo が更新されプレビューに集中できる環境を作りたかった。&lt;/p&gt;&#xA;&lt;p&gt;この記事では、&lt;strong&gt;git の post-commit hook と Ansible を組み合わせた自動デプロイの仕組み&lt;/strong&gt;を紹介する。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;構成の概要&#xA;    &lt;div id=&#34;構成の概要&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e6%a7%8b%e6%88%90%e3%81%ae%e6%a6%82%e8%a6%81&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;このブログは以下の構成で運用している。&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;役割&lt;/th&gt;&#xA;          &lt;th&gt;内容&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;記事管理&lt;/td&gt;&#xA;          &lt;td&gt;git リポジトリの &lt;code&gt;files/*.md&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;ローカルデプロイ&lt;/td&gt;&#xA;          &lt;td&gt;Ansible Playbook (&lt;code&gt;ansible_connection=local&lt;/code&gt;)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;プレビュー&lt;/td&gt;&#xA;          &lt;td&gt;ローカルの Hugo サーバ&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;自動化の対象は「コミット → Ansible 実行」の部分だ。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;なぜ git hook を選んだか&#xA;    &lt;div id=&#34;なぜ-git-hook-を選んだか&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e3%81%aa%e3%81%9c-git-hook-%e3%82%92%e9%81%b8%e3%82%93%e3%81%a0%e3%81%8b&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;git hook にした理由は以下の通りだ。&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>git push で本番サーバへの自動同期を実現する</title>
      <link>http://localhost:1313/blog/ja/posts/git-push-production-sync/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate>
      
      <guid>http://localhost:1313/blog/ja/posts/git-push-production-sync/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://localhost:1313/blog/ja/posts/git-hook-ansible-auto-deploy/&#34; &gt;前回の記事&lt;/a&gt;では &lt;code&gt;git commit&lt;/code&gt; をトリガーに Ansible でローカルの Hugo を自動更新する仕組みを構築した。今回はその続きで、&lt;strong&gt;&lt;code&gt;git push&lt;/code&gt; のタイミングで本番サーバへの同期も自動化&lt;/strong&gt;した話を紹介する。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;やりたいこと&#xA;    &lt;div id=&#34;やりたいこと&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e3%82%84%e3%82%8a%e3%81%9f%e3%81%84%e3%81%93%e3%81%a8&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;これまでは本番反映を手動で実行していたが、&lt;code&gt;git push&lt;/code&gt; に統合し、push するだけで本番まで反映されるようにしたかった。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;git に post-push フックはない&#xA;    &lt;div id=&#34;git-に-post-push-フックはない&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#git-%e3%81%ab-post-push-%e3%83%95%e3%83%83%e3%82%af%e3%81%af%e3%81%aa%e3%81%84&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;git には &lt;code&gt;post-commit&lt;/code&gt; のように「push 後」に処理を実行する &lt;code&gt;post-push&lt;/code&gt; フックが存在しない。&lt;/p&gt;&#xA;&lt;p&gt;代わりに &lt;strong&gt;&lt;code&gt;pre-push&lt;/code&gt; フック&lt;/strong&gt;を使う。これは push が実行される直前に呼ばれるフックで、処理が失敗（exit 1）すると push 自体を中止できる。&lt;/p&gt;&#xA;&lt;p&gt;本番同期に失敗したまま GitHub へ push されるのを防げるため、むしろ都合がいい。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;実装&#xA;    &lt;div id=&#34;実装&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%ae%9f%e8%a3%85&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;.githooks/pre-push&lt;/code&gt; に本番同期の処理を記述し、実行権限を付与してコミットする。&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
