👻

ClaudeCodeで変数名生成コマンドを作ってみた

に公開

プロローグ:きっかけのSNS投稿

ある日の昼休み、Aくんは何気なくSNSを眺めていた。フォローしている技術系アカウントの投稿に目が留まる。


Claude Code、インタラクティブだけじゃもったいない!
-pオプション使うとワンライナーで色々できるよ!

git log --oneline | head -5 | claude -p "これらのコミットを要約して"

みたいな感じで、既存のコマンドと組み合わせ放題🔧
AIをパイプラインに組み込めるのって画期的よね
#ClaudeCode #シェル #自動化

「へぇ、-pオプションなんてあったんだ」

Aくんは普段Claude Codeをインタラクティブモードでしか使っていませんでした。確かにこの使い方なら、従来のCLIツールと同じ感覚でAIを活用できそうです。

「面白そうだな...何かコマンドを作ってみよう」

第1章:美咲との試行錯誤

午後、美咲がAくんのデスクにやってきた。

「先輩、お疲れ様です!何か楽しそうなこと考えてますね?」

「あ、美咲ちゃん。ちょうど良かった。面白いSNS投稿を見つけたんだ」

AくんはSNSの投稿を見せながら、-pオプションの使い方を説明した。

「わぁ、すごいです!AIをコマンドラインで使えるなんて!」美咲の目がキラキラと輝いた。「でも、どんなコマンドを作ったらいいんでしょう?」

「そうなんだよね...」Aくんは顎に手を当てて考えた。「AIでしか実現できなくて、日常的によく使う処理...何があるかな」

「あ!」美咲が手を上げた。「写真を撮ったら自動でインスタ映えする加工を提案してくれるコマンドは?」

「写真ってスマホで撮るよね?スマホアプリの話じゃないよ?」

「じゃあ、音楽サブスクでプレイリスト作ってもらうとか?」

「それもう実装されてるし。SpotifyのAI DJとか」

「あ、ランチの提案をしてもらうのはどうですか?毎日何食べようか悩むんです」

「それは…案外良いかも」

claude -p "今日のランチを提案してください。簡潔に1つだけお願いします。"

# 出力: 鮭弁当

「わぁ、ちゃんと答えてくれました!じゃあ、今日の運勢も聞いてみましょう!」

claude -p "今日の運勢を占ってください"

# 出力: 申し訳ございませんが、私は占いを行うことができません。私はソフトウェア開発を支援するためのCLIツールです。

「あ...怒られちゃいました」

「Claude Codeなりのプライドがあるんだろうね」

「でも、ランチは答えてくれたのに運勢はダメなんですね。線引きが不思議です」

「確かに。AIにも得意分野と苦手分野があるってことかな」

その時、隣のデスクの結愛が小さく「ふふ」と笑った。
何やらスマートフォンに文字を打ち込んでいる。

「結愛さん、何か面白いことでも?」美咲が声をかけた。

「あ...SNSを見てただけよ」結愛は慌てたようにスマートフォンを置いた。

第2章:現実的な試行錯誤

気を取り直して、二人はもう少し実現可能な線で考えてみた。

「あ、そうだ!」美咲が何かを思い出したように言った。「SEDコマンドの代替はどうでしょう?」

「SED?」Aくんは首をかしげた。

「ほら、テキストを置換したりするコマンドです。でも、SEDって正規表現が複雑で覚えられないじゃないですか」

「確かに...SEDは難しいよね」

「だから、『この文字列をこの文字列に置換して』って自然言語で指定できたら便利だと思うんです!」

「なるほど、それは確かにAIならではだね」Aくんは感心した。「でも...」

「でも?」

「僕たちSEDコマンドを使えないから、どういう時に使うのかイメージが湧かないんだよね」

「あ...」美咲も気づいた。「確かに、普段使わないコマンドの代替を作っても意味ないですね」

「使えない人が使えない人のためのコマンドを作る、みたいな?」

「なんか本末転倒です...」

二人は苦笑いを浮かべた。

第3章:行き詰まり

そのとき、背後から声が聞こえた。

「何やってるの?」

振り返ると、結愛が立っていた。いつものようにやや面倒そうな表情を浮かべている。

「あ、結愛さん!」美咲が手を振った。「ちょうどいいところに!実は...」

美咲は経緯を説明し、AI活用コマンドを探している旨を話した。

「ふーん」結愛は腕を組んで考えた。「で、何が問題なの?」

「良いアイデアが思い浮かばないんです」美咲が困った顔をした。

「なるほどね」
結愛は少し考えてから言った。

「たとえば『ユーザーの最終ログイン日時』の変数名を付ける時、どうやって考えてる?」

「え?」Aくんは突然の話題転換に戸惑った。「何ですか唐突に...」

「lastLoginDateTime...かな?」美咲が答えた。

「そうね。でも、それって日本語から英語に翻訳して、さらに命名規則に合わせて変換してるわけでしょ?」

「あ!」Aくんの目が輝いた。「それって、AIに任せられる作業じゃないか!」

「まあ、そういうことよ」結愛は肩をすくめた。「Pythonの変数名はsnake_caseでしょ?クラス名はPascalCase。JavaScriptならcamelCaseとか、言語によって命名規則も違うし」

「確かに!」美咲が手を叩いた。「『ユーザーの最終ログイン日時』って入力したら、自動で適切な変数名を提案してくれるってことですか?」

「そういうこと。試してみる?」

echo "ユーザーの最終ログイン日時" | claude -p "この機能を表すPythonの変数名を英語で提案してください。snake_case形式で、1つだけ出力してください。"

# 出力: last_login_datetime

「わぁ!本当に出てきました!」美咲が驚いた。

「クラス名もできるわよ」

echo "商品在庫管理" | claude -p "この機能を表すPythonのクラス名を英語で提案してください。PascalCase形式で、1つだけ出力してください。"

# 出力: ProductInventoryManager

「これは便利だな!」Aくんも感心していた。

「JavaScriptならこうね」

echo "データベース接続エラー" | claude -p "この機能を表すJavaScriptの変数名を英語で提案してください。camelCase形式で、1つだけ出力してください。"
# 出力: databaseConnectionError

「bashやzshなら関数化しておくと便利よ」

camel() {
    local input="$1"
    if [ -z "$input" ]; then
        echo "Usage: camel 'description'" >&2
        return 1
    fi
    echo "$input" | claude -p "この機能を表すプログラミングの変数名を英語で提案してください。camelCase形式で、1つだけ出力してください。"
}

「すごい!これなら毎日使えそう!」Aくんが興奮していた。

「でも」美咲が首をかしげた。「これって、AIを使わなくても実装できますよね?翻訳サービスとか使えば」

「まあ、技術的には可能だけど...」結愛が答えた。「翻訳APIに登録して、APIキーを管理して、エラーハンドリングして、camelCaseの変換ロジックを書いて...」

「あー...」美咲の表情が曇った。「それだけで結構大変そう」

「そういうこと。AIを使えば1行で済むことが、従来の方法だと何十行にもなるのよ」

「なるほど!」美咲が納得した顔をした。「AIって、複雑なことをシンプルにしてくれるんですね」

「それから」結愛は何気なく付け加えた。「slugifyにも使えるわね」

「slugifyって?」美咲が首をかしげた。

「たとえばブロガーさんが記事のタイトルを日本語で設定した後に、それをURLに使えるようにすることよ」

「ブロガーさん?」

「たとえば『おそ松さんで学ぶオブジェクト指向』なら『learning-object-oriented-programming-with-osomatsu-san』になるわね」

「そんな記事あるんですか?面白そう!」

美咲は興味深そうにスマートフォンを取り出し、検索を始めようとした。

「ちょっと待って!」結愛が慌てて美咲の手を制した。「べ、別に実在する記事じゃないのよ!ただの例よ、例!」

「でも、もしかしたら似たような記事があるかもしれないじゃないですか」美咲は純粋な好奇心で言った。

「あ、思い出した!」結愛が突然声を上げた。「さっきのコマンド、claude -pの部分をgemini -pに変えても動くのよ」

「え?」美咲が首をかしげた。「Geminiって、Googleの?」

「そう。gemini-cliをインストールしていれば、全く同じように使えるの。AIを切り替えるだけで、違う回答が得られるから面白いわよ」

「すごい!」美咲の目が輝いた。「AIによって変数名の提案も変わるんですか?」

「まあ、そういうことね」結愛は少しホッとした表情を見せた。(ごまかせたかな…)

エピローグ

その日の夜、いつものように技術系SNSをチェックしていると、新しい投稿が目に留まった。


【フィクション】
私「claude -p "今日の運勢教えて"」
Claude「僕は真面目なツールなんだから、ちゃんとした用途に使ってよ!ヽ(`Д´)ノ」

擬人化すると可愛い💕 でも確かに適材適所は大事よね AIツールにもプライドがある...のかも? #ClaudeCode #AI擬人化 #ツールのプライド

「あれ、今日僕たちがやったのと同じような...」

Aくんは少し不思議に思いながらも、「まあ、同じようなことを試す人は多いのかな」と納得した。

GitHubで編集を提案

Discussion