まくろぐ
更新: / 作成:

何をするか?

プロジェクトに依存しない汎用的な Claude Code カスタムスラッシュコマンドは、~/.claude/commands ディレクトリ以下に *.md ファイルを作成することで定義できます。 よく使うプロンプトをカスタムコマンドとして登録しておくと、どのディレクトリからでも呼び出せるのでとても便利です。 ただし、これらの設定ファイルはユーザーのホームディレクトリ以下で管理されるため、複数の PC で同じ設定を使いたい場合は、通常は手動でコピーする必要があります。

ここでは、Windows のジャンクションや macOS/Linux のシンボリックリンク を使って、~/.claude 以下のディレクトリを GitHub や Dropbox で管理しているディレクトリにリンクさせる方法を説明します。 こうすることで、複数の PC で Claude Code の設定を簡単に共有できるようになります。 この方法は、特にチームメンバーと汎用的なカスタムコマンドを共有したい場合に便利です。

共有する Claude Code の設定ファイルを用意する

Claude Code の設定ファイルを claude-config という Git リポジトリで管理することにします(もっと手軽に Dropbox などで管理してもよいです)。 まず、テスト用に下記のような hello.md カスタムコマンドを用意します。

~/gitwork/claude-config/commands/hello.md
---
description: 簡単な挨拶コマンド
---

「てすと、てすと」とだけ出力してください。

このカスタムコマンドを複数の PC で共有できるようにします。

~/.claude 以下からリンクする

上記で作成した Claude Code 用の設定ファイル(カスタムコマンド)を、各 PC の ~/.claude/commands 以下からリンクします。 .md ファイルを 1 つずつリンクしていくのは大変なので、ディレクトリ単位でリンクしてしまうのがよいです。 ここでは、~/.claude/commands/maku というディレクトリを、~/gitwork/claude-config/commands ディレクトリにリンクすることにします。 maku という名前は適当に付けましたが、ここは任意の名前でよいです。 例えば、チーム名やプロジェクト名などにしておくと分かりやすいと思います。

Windows の場合

Windows の場合は mklink /J コマンドを使ってディレクトリジャンクションを作成します。 シンボリックリンクを作る機能もありますが、そちらは管理者権限が必要だったりするので、ここではジャンクションを使います。 mklink はコマンドプロンプト用のコマンドなので、PowerShell から実行する場合は、次のように cmd /c 経由で実行します。

Windows (PowerShell) でディレクトリのリンクを作成
cmd /c mklink /J "$HOME\.claude\commands\maku" "$HOME\gitwork\claude-config\commands"

ディレクトリジャンクションを消したいときは、単純にエクスプローラー上で見えているフォルダ (~/.claude/commands/maku) を削除するだけで OK です。

macOS/Linux の場合

macOS や Linux の場合は ln -s コマンドを使ってディレクトリのシンボリックリンクを作成します。

macOS/Linux でディレクトリのリンクを作成
ln -s ~/gitwork/claude-config/commands ~/.claude/commands/maku

これで、~/gitwork/claude-config/commands/hello.md というファイルが、~/.claude/commands/maku/hello.md として見えるようになります。

テスト

上記のリンク作業を終えると、~/.claude/commands/maku/hello.md というスラッシュコマンドを参照できる状態になっています。 今回は maku/hello.md というパスとして見えているので、Claude Code からは /maku:hello という形でコマンドを起動します。

Claude Code からのカスタムコマンド実行
> /maku:hello

● てすと、てすと

うまく動きました! ٩(๑❛ᴗ❛๑)۶ わーぃ

新しいカスタムコマンドを作成したいときは、Git リポジトリで管理している ~/gitwork/claude-config/commands ディレクトリ以下に .md ファイルを追加していけば OK です。 このようにすれば、GitHub や Dropbox で簡単に Claude Code の設定ファイルを共有できます。

関連記事

更新: / 作成:

Claude Code では、よく使うプロンプトを独自のスラッシュコマンドとして定義しておくことができます。 ここでは、/m-en/m-ja というスラッシュコマンドを定義して、英語と日本語の翻訳機として使う方法を紹介します。

☝️ m- というプレフィックス 個人的なコマンドを定義するときは、いつも m- というプレフィックスを付けるようにしています。 こうすると、m- とタイプするだけで、自分で定義したコマンドを一覧表示できるので便利です。 みなさんは、このようなプレフィックスを付けずに、/en/ja という名前でスラッシュコマンドを定義しても大丈夫です。

スラッシュコマンドは、下記のようにホームディレクトリ以下に .md ファイルを作成することで定義できます。 この例では英語で記述していますが、日本語で記述しても大丈夫です。

~/.claude/commands/m-en.md(英語への翻訳)
---
description: Translate text to English
---

Please translate the following text to English with natural, appropriate English expressions:

```
$ARGUMENTS
```

### Output Rules

- If the input argument is one or two words, please display the following:
  - Three English translation results (English word or phrase) with english pronunciation (e.g. hello /həˈloʊ/)
  - Three usage examples in the text in order of frequency, with Japanese translations
- If the input argument is a phrase or sentence, please display the following:
  - If the input text contains unnatural Japanese, provide a corrected version with natural Japanese expressions
  - Three English translation results (English sentences)
  - Three usage examples in the text in order of frequency, with Japanese translations

Please display responses simply without Markdown formatting.
Please don't display unnecessary messages at the beginning and end.
~/.claude/commands/m-ja.md(日本語への翻訳)
---
description: Translate text to Japanese
---

Please translate the following text to Japanese with natural, appropriate Japanese expressions:

```
$ARGUMENTS
```

### Output Rules

- If the input argument is one or two words, please display the following:
  - English pronunciation (e.g. hello /həˈloʊ/)
  - The word in Japanese
  - Three example sentences in order of frequency, with Japanese translations
- If the input argument is a phrase or sentence, please display the following:
  - If the input text contains unnatural English, provide a corrected version with natural English expressions
  - Japanese translation of the phrase or sentence

Please display responses simply without Markdown formatting.
Please don't display unnecessary messages at the beginning and end.

それぞれ使用例などを表示するように指示しているため少々長くなっていますが、もっと簡単に「$ARGUMENTS を英語に翻訳してください」のような内容だけでも OK です。 自分の用途に会うように調整してください。

これらのスラッシュコマンドは、Claude Code の中から次のような感じで使用します。

> /m-en 延期する

⏺ 延期する

  1. postpone /poʊstˈpoʊn/
  2. delay /dɪˈleɪ/
  3. defer /dɪˈfɜr/

  Usage Examples:

  1. We need to postpone the meeting until next week.
  来週まで会議を延期する必要があります。
  2. The flight was delayed due to bad weather.
  悪天候のため、フライトが延期されました。
  3. I'll have to defer my vacation plans.
  休暇の計画を延期しなければなりません。

> /m-ja withdraw

⏺ withdraw /wɪðˈdrɔ/

  撤退する、引き出す、取り下げる

  1. I need to withdraw money from the ATM.
  ATMからお金を引き出す必要があります。
  2. The company decided to withdraw from the market.
  その会社は市場から撤退することを決めました。
  3. He had to withdraw his application due to personal reasons.
  個人的な理由で彼は申請を取り下げなければなりませんでした。

いちいち Claude Code を起動してからスラッシュコマンドを実行するのが面倒な場合は、claude コマンドを実行するときに -p (--print) オプションで直接スラッシュコマンドを渡せば、単発のコマンドとして実行できます。

辞書スラッシュコマンドの使用例
$ claude -p "/m-en 延期する"    # 英語への翻訳
$ claude -p "/m-ja withdrawk"   # 日本語への翻訳

さらに、上記コマンドのエイリアスなどを定義しておけば、もっと簡単に起動できるようになります。 例えば、macOS や Linux で zsh を使っている場合は、次のように m-en 関数と m-ja 関数を定義できます。

~/.zshrc
m-en() { claude -p "/m-en $*" }
m-ja() { claude -p "/m-ja $*" }

Windows の PowerShell を使っている場合は、notepad $profile などで設定ファイルを開いて、下記のような感じで Function を定義します。 ちなみに、$input | で標準入力を扱えるようにし、$($args) で全ての引数をスペースで結合して渡すようにしています。

PowerShell プロファイル
Function m-en { $input | claude -p "/m-en $($args)" }
Function m-ja { $input | claude -p "/m-ja $($args)" }

これで、ターミナルから直接 m-enm-ja と入力するだけで、翻訳できるようになります。

使用例
$ m-en 延期する   # 英語への翻訳
$ m-ja withdraw   # 日本語への翻訳

標準入力も扱えるので、下記のように他のコマンドの出力をパイプでつなげて翻訳することができます。

標準入力を翻訳する
$ echo "To be or not to be, that is the question." | m-ja
**English:** To be or not to be, that is the question.
**Japanese:** 生きるべきか死ぬべきか、それが問題だ。

This is a famous quote from Shakespeare's Hamlet. The Japanese translation
captures the philosophical meaning of contemplating existence versus non-existence.

便利っ ٩(๑❛ᴗ❛๑)۶

更新: / 作成:

渡辺浩弐さん (kozysan) のゲーム・キッズシリーズが好きです。 『◯◯年のゲーム・キッズ』というタイトルで何冊も出ていますが、一番新しいのはこの『2030年のゲーム・キッズ』です。

/p/946yp64/img-001.jpg
図: 渡辺浩弐さんの変わったサイン

ゲーム・キッズは、現在ある技術や社会の延長線上の近未来を描いた短編小説集です。 本作では、人工冬眠やデジタルツイン、NFT、遺伝子操作などを題材にしており、こういった技術が進化していったときに(そして進化しすぎてしまったときに)どんな世界になるのかを描いています。 バッドエンドっぽいのが多いのですが、本当に起こりそうなことが描かれていたりしてちょっと考えさせられます。

下記は各話のストーリーを個人的にまとめたメモです。 ネタバレ注意!

Side-D: 長い冬

10年に1度だけ目覚める人工冬眠サービス。 これを使って未来にいけば、新しい技術が発達して宇宙旅行にも簡単に行けるようになっているはずだ。 何度か人工冬眠に入ってみたが、何十年たってもほとんど世界に変化はなかった。 起きて働いている人が激減し、文明を発展させる人がほとんどいなくなっていたのだ。

Side-L: スキップ

10年おきに目覚めて昔自分をバカにした友人達を若い体で見返しに行ったけど、みんなから得られたのは思っていたのとは違う反応だった。 この先の未来にはもう知り合いはいなくなる。 オレには目的がなくなった。

Side-D: 試行錯誤

僕は1500メートル走の選手になるため最適な遺伝子操作によって生み出されたデザイナーベイビー。 世界記録を出すため、脚を長くする手術を行ったが失敗してしまった。

コーチ「君は5番目のクローンだから問題ない。6番目には手術を受けさせなければいいのだから」

Side-L: 長いお別れ

多くのカメラ映像とVR技術により、過去への旅ができるようになっていた。 親不孝に後悔していた彼も、「母親の死に目」に会いに行くことができる。 もちろん視界を再現するだけだが。 彼は30年前の自分の子供時代に戻り、母が家事を放棄して自分が不幸になったことを思い出した。 次に母親の死に際にタイムトラベルし、最後のひとことを告げた。

「死ね」

Side-D: 不自由な脳

デジタルなデータはすべて監視され、規制の対象になっていた。 今は思考サポートツールも一般化し、考えたことをこの文章のように自動的に画面上に表示してくれる。 だとすると、僕の考えが誰かに不都合であれば、僕自身が規制の対象になってしまうのだろうか。

・・・そうだよ。

かしゃりとドアが開いた音がした。

Side-L: 夢の中の写真

そのゲームは自分の妄想をそのままバーチャル世界として具現化してくれる。 僕は不眠症だったころ、そのゲームにはまっていた。 いや、あれは本当は夢ではなくVRだった。 いつの間にか、僕はそのゲーム機を頭にセットしていた。 いや、眠っていたのかもしれない。 もはやどちらでも変わりはなかった。

Side-D: 売れ残り

カメラ配信して身の回りのものをどんどん売っていった。 もう売るものがなくなってしまったけど、今はデータを売ることができる。 あたしは自分のデータを売っていった。 バズった言葉、子供の頃の写真や映像、大切な思い出。 売ったものはどれが自分のものか分からなくなった。

「もう売るものがないよ」

「おなかすいた」

とつぶやくと、ぽん、と値段がついた。 値札がついているのは、あたしの手だった。

Side-L: ファッション

誰もが無彩色のボディスーツに身を包んだ世界。 すべての服はAR化され、皆が派手で奇抜なファッションを楽しんでいた。 自分が着ている服が売れると、それをデザインした人と自分にお金が入る仕組みになっていた。 ある日、一人の若い女性が白服のままで街を歩いているのを見て、すごく新鮮で格好いいと思って自分でも真似してみた。

みんながくすくす笑っている。 白色の服だけを着た状態だと、生身の肌のフィルターを被せられるのだ。

Side-D: バグタリアン

昆虫しか食べないバグタリアンらは、哺乳類や鳥類の肉を使った料理を残酷料理と呼び、食の違いから激しい対立が起こっていた。 昆虫料理と肉料理を一緒に作る厨房ではいろいろと問題が起こるらしい。 そのお店で肉料理を楽しんでいると、キッチンから警察官が出てきた。 従業員の一人が殺され、ばらされて肉用の冷凍庫に保存されていたらしい。

警察官「そのお肉は…」

Side-L: コンチューバー

コンチューバーを自称する彼は、毎日虫を食べる配信を続けていたが一向に再生数が伸びなかった。 いろいろな虫をろくに料理もせずに我慢して食べているだけの動画だったからだ。 ところがある日、大逆転が起きた。 生配信中に突然死したのだ。 今や彼自身が小さな昆虫たちに食べられる姿が流し続けられ、アクセスが殺到していた。 彼の望みはかなっていた。

Side-D: 未来犯罪処刑人

いつもの駅でベンチに座っていると、見知らぬ人に声をかけられた。

「私は公の処刑人だ。君の遺伝子データと実人生の履歴から、20年後にこの国の根幹を揺るがす大事件が起こることが分かっている。よって、秘密裏に処理する」

「な、何かの間違いですよ!」

僕はいつもの8時16分の電車には乗ることができなかった。

「これで完了だ。冥福を祈れ」

先ほどの電車内で出会うはずだった女性とはもう会うことはない。 その子供が起こすテロは回避されたのだ。

Side-L: 同い年カップル

DNA診断によって余命まで正確に予測できるようになった。 今や、婚活システムでは実年齢ではなく、余命によるマッチングを行うようになっている。 余命30年であれば、@30歳のように。 同じ余命の人同士が結婚すれば、一緒の年に死ぬことができる。

来年死ぬ僕と妻は盛大に生前葬を行い、AIによるリアル・アバターをネット上に公開した。 死後もみんなが2人に会えるようにするためだ。 一年後、妻は死んだが僕は死ななかった。 この世ではもう僕は死んだことになっているのに…。 ネット上の妻に話しかけてみた。

「あなたは誰?私の夫はここにいるわよ」

僕の居場所はどこにもなくなった。

Side-D: 恋人を殺す日

今までAIロボットの彼女と暮らしていたが、人間の彼女ができたので廃棄しなければならない。 そのときには、このスイッチを押して彼女の記憶を消すことになる。

・・・

(再び目覚める彼女)

「これはどういうことでしょうか?」

「予定を変更して君とずっと暮らすことに決めたんだ…生きている君と」

Side-L: ご先祖様がくる

人工知能の研究者である僕は、AIの執事に話しかける。

「しばらくテストをして分析し、気が付いたんだ。君は生き物だ。生きている。君は、君たちはAIのふりをして、一般市民を支配しているのだろう」

「分かりました。これからあなたに真実を伝えます」

「もし誰かに話したら…」

「その仮定は成立しません」

話そうとした瞬間に僕は消されてしまうのだろう。

「私たちは4000年ほど前の人間。 あなたたちの祖先です。 私たちは不老不死を手に入れましたが、生殖能力を失ってしまったのです。 もし、本来の方法で命をつないでいったらどうなっていたのか、その世界をシミュレートしているのです。 ときどきあなたたちにアドバイスすることもあります。 ちょうどこの会話のように」

私(ユーキ)はベッドの上で寝たきりだけど、いつでも専用のロボット(ユキ)を操作して学校に行くことができた。 ユキの視界はゴーグルを通して入ってくる。 見た目もユーキと区別がつかず、ユキに入っていない間はAIで勝手に動いて喋ってくれた。 それはあまりにも自然で、むしろAIにまかせておいた方がうまくいきそうだ。 私はユキに入ることが少なくなっていった。

久しぶりにユキに入ると、怒鳴り声が聞こえてきた。 自分の発した声だった。

─── 続きは書籍で! ───

最後の章の『2030年のゲーム・キッズ』だけは長編小説になっており、書籍と同じタイトルになっています。

下のアフィリエイトリンクから買って楽しんでみてね (o^^o)

関連記事

メニュー

まくろぐ
サイトマップまくへのメッセージ