まくろぐ
更新: / 作成:

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)

関連記事

更新: / 作成:

何をやるか?

/p/s3subpp/img-001.png
図: 小指で IME の ON/OFF

Mac や Windows の日本語入力のオン/オフ (IME ON/OFF) 切り替えを、左手の小指だけでできるようにしてみます。

これまでずっと、Cmd + Space などのキーコンビネーションで IME の ON/OFF をしていたのですが、やはり IME ON/OFF 切り替えは別々のキーに割り当てた方が望ましい と思い、このたびがんばって設定することにしました。

新しい入力方法に慣れれば、「今 IME ON だっけ? OFF だっけ?」と悩むことがなくなるので、毎日のストレスがほんの少しだけ軽減すると思います。 また、Cmd + Space などのキーコンビネーションが、アプリケーションのショートカットキーとバッティングしてしまうトラブルも避けられます。

前提条件は次の通りです。

  • macOS と Windows の両方で同じようにキー操作できること
  • キーコンビネーションではなく、異なる単独キーで IME ON/OFF できること
  • US(英字配列)キーボードを使うので、「かな」「英数」などのキーがなくてもよいこと
  • 無料のソフトで設定できること

最終的には、次のように設定することにしました。

  • 使用するアプリケーション
  • キー設定
    • CapsLock キーの単押し → IME OFF
    • Shift キーの単押し → IME ON

今回は左小指で押せるキーを使いましたが、スペースキーの左右にある Cmd キーや Alt キーに割り当てるのもありだと思います。 最初は左右の Shift キーに割り当ててみたのですが、どうしても右側の Shift キーが押しにくく、上記のようなキー割り当てに落ち着きました。

macOS の設定

macOS では Karabiner-Elements を使って設定します。 メニューから、Complex ModificationsAdd your own rule を選択し、下記のように設定して保存すれば完了です。

Karabiner-Elements 用の設定ファイル
{
    "description": "CapsLockキー単押しでIMEオフ、左Shiftキー単押しでIMEオン",
    "manipulators": [
        {
            "from": {
                "key_code": "caps_lock",
                "modifiers": { "optional": ["any"] }
            },
            "parameters": {
                "basic.to_if_alone_timeout_milliseconds": 250,
                "basic.to_if_held_down_threshold_milliseconds": 250
            },
            "to": [
                {
                    "key_code": "caps_lock",
                    "lazy": true
                }
            ],
            "to_if_alone": [{ "key_code": "japanese_eisuu" }],
            "to_if_held_down": [{ "key_code": "caps_lock" }],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "left_shift",
                "modifiers": { "optional": ["any"] }
            },
            "parameters": {
                "basic.to_if_alone_timeout_milliseconds": 250,
                "basic.to_if_held_down_threshold_milliseconds": 250
            },
            "to": [
                {
                    "key_code": "left_shift",
                    "lazy": true
                }
            ],
            "to_if_alone": [{ "key_code": "japanese_kana" }],
            "to_if_held_down": [{ "key_code": "left_shift" }],
            "type": "basic"
        }
    ]
}

Karabiner-Elements は本当に色々な設定ができるので、使いこなせるようになったらすごく便利そうです。 でもやりすぎは禁物。

Windows の設定

Windows の場合は、AutoHotkey というソフトウェアを使います。 macOS のときより、若干手順は複雑です。

1. CapsLock キーと Control キーと入れ替える

まず、A キーの左にある CapsLock キーを Control キーに入れ替えておきます。 Happy Hacking Keyboard など、ハードウェアスイッチがあるキーボードの場合はそれで設定すれば OK です。

キーの入れ替えは、Microsoft が提供している下記のいずれかのツールで簡単に設定できます。

  • Ctrl2Cap.exe
    • キー入れ替え専用のツールです。
  • PowerToys
    • いろんな便利ツールが入ってるので、この中の Keyboard Manager という機能を使います。

2. IME の設定を変更す

次に、IME の設定を変更し、無変換 キーを「IME-オフ」、変換 キーを「IME-オン」に割り当てておきます。 Windows の設定から次のように開き、

  1. IME で検索
  2. 日本語 IME 設定 を選択
  3. キーとタッチのカスタマイズ を選択

次のように設定します。

/p/s3subpp/img-002.png
図: Windows の IME 設定

3. AutoHotkey のスクリプトの作成

最後に、AutoHotkey 用のスクリプトファイルを作成します。 .ahk という拡張子を付けて適当なディレクトリに保存してください。

C:\config\maku-keyconfig.ahk
#Requires AutoHotkey v2.0
; https://maku.blog/p/s3subpp/

; 左Controlキーが単独で離されたときの処理
~LControl Up::
{
    if (A_PriorKey = "LControl") {
        Send "{vk1Dsc07B}"  ; 「無変換」キーをエミュレート (IME OFF)
    }
}

; 左Shiftキーが単独で離されたときの処理
~LShift Up::
{
    if (A_PriorKey = "LShift") {
        Send "{vk1Csc079}"  ; 「変換」キーをエミュレート (IME ON)
    }
}

ここでは、左 Control キーを単独で押しときに 無変換 キーを押したかのように振る舞い、左 Shift キーを押したときに 変換 キーを押したかのように振る舞うように設定しています。

AutoHotkey がインストールされた環境でこのスクリプトファイルをダブルクリックして起動すると、キーの入れ替えが有効になります。 無事に起動すると、タスクトレイに アイコンが表示されます。

Windows の起動時にこの設定を有効にしたいときは、このファイルのショートカットを、Windows のスタートアップフォルダに作成しておきます。 スタートアップフォルダは、Win + Rshell:startup で開くことができます。

関連記事

メニュー

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