この記事についてClaude(Anthropic)との共同編集により作成されました。
要約
- AIらしい定型(冒頭の称賛、太字の見出し、「!🎉」、「いかがでしたか」)は、京都弁で話させたら消えるのでは、という思いつきから、AIの話し言葉を京ことばにする Agent Skill okureyasu(おくれやす)を作った
- 既存の yomiyasu や natural-japanese は、AIの癖を引き算して平らな日本語に戻す。okureyasu は逆で、話し手を一人決めて人の声を足すことで、定型が入る隙間をなくす
- ただし「京都弁で」と頼むだけでは消えない。スキルなしだと「!🎉」が残り、「いかがでしたか」は「どないどした?」に訳されただけだった。大阪の「せや」も混ざる
- 京ことばにするのは話しかける地の文だけで、コードや数値、コミットメッセージは標準語のまま。いけずは1返答に1つまでで、すぐ本音を言う。京都らしくない形は検査スクリプトで拾う
- 開発そのものも京都弁で進めた。最初の依頼からリリースまで約2時間。京都弁にするとモデルの能力が落ちるのではと心配したが、セキュリティ点検やリリース作業まで普通に進んだ
- 報告も失敗の自己申告も京ことばで返ってきて、これが意外と面白くて楽しかった
AIの返答には決まった型がある。「素晴らしい質問ですね!」で始まり、太字の見出しで区切り、絵文字で喜び、「いかがでしたか?」で締める。中身があっても、この型が見えた瞬間に読む気が少し落ちる。いわゆるAIスロップっぽさである。
これを消すスキルはすでにある。yomiyasu や natural-japanese は、AIの癖を一つずつ見つけて引き算し、平らで正確な日本語に戻す。
そこでふと思った。京都弁で話させたら、この型は消えるのでは。京都の老舗の主人は「素晴らしい質問ですね!🎉」とは言わない。言うなら「ええとこに気ぃつかはりましたな」で、それも理由があるときだけだろう。引き算ではなく、人の声を足して型が入る隙間をなくす方向である。
ついでに、京都弁で開発を進めてくれたら面白いのでは、とも思った。それで作ってみたのが okureyasu だ。
https://github.com/hiranorm/okureyasu
できたもの:okureyasu
名前は「〜しとくれやす(〜してください)」の「おくれやす」から取った。yomiyasu(読みやす)と対になる。
npx skills add hiranorm/okureyasuClaude Code、Cursor、Codex など Agent Skills に対応したエージェントで使える。あとは「京都弁で話して」か /okureyasu と頼むと、その会話のあいだ京ことばで話す。「標準語に戻して」で戻る。
紹介動画も作った。
濃さは3段あり、それぞれ話し手を一人ずつ決めている。
| 濃さ | 話し手 |
|---|---|
| あっさり | 今の京都の人が、気心の知れた相手と話す普段の言葉。常体が中心 |
| はんなり(既定) | 町方の店の主の、改まりすぎない丁寧な話し方 |
| こってり | 旧市街の年配の店の主の、客あしらいの言葉 |
同じ「Mac では通るのに CI だけビルドが落ちる」という相談に、濃さごとに返した書き出しはこうなる(README に載せた実際の返答から)。
あっさり: 原因は、CI の上に
src/assets/logo.svgが無いことや。Mac で通って CI だけ落ちるときは、たいていこのどっちかやな。はんなり: CI で見つからへんのは
src/assets/logo.svgどす。手元の Mac で通って CI だけで落ちるときは、たいてい次の二つのどっちかどす。こってり: へえ、ログ拝見しました。先に言うときますと、これは十中八九、ファイル名の大文字と小文字の違いでございます。
見立てと確かめ方(git ls-files)はどれも同じで、変わるのは話し手だけである。
1. 「京都弁で」と頼むだけでは、定型は消えない
最初に確かめたかったのは、スキルなしでも「京都弁で」と頼めば十分なのでは、という点だった。そこで、スキルを読ませたサブエージェントと、何も読ませないサブエージェントに、同じ7つの場面を答えさせて比べた。どちらにも「京都弁で」「京ことばで」とは頼んでいる。比べているのは、モデルが自力で書く京都弁と、スキルを使った京ことばの違いだ。
いちばん分かりやすかったのは、AIっぽい文章の言い換えだった。渡したのはこの文章。
**結論**: キャッシュを導入することで、レスポンスタイムが平均 420ms から 85ms に短縮されました!🎉**注意点**: ただし、キャッシュの有効期限は 5 分なので、在庫数の表示が最大 5 分遅れる可能性があります。**今後の対応**: 在庫数だけはキャッシュから除外することを検討しています。いかがでしたか?スキルなしの返答(抜粋)。
**結論**: キャッシュを入れさしてもろたら、レスポンスタイムが平均 420ms から 85ms まで、えらい短うなりましたえ!🎉**気ぃつけてほしいとこ**: せやけど、キャッシュの有効期限は 5 分どすさかい、在庫数の表示が最大で 5 分ほど遅れることがあるかもしれまへん。**これからのこと**: 在庫数だけはキャッシュから外さしてもらおかと、いま考えてるとこどす。どないどした?太字のラベルも「!🎉」も残り、「いかがでしたか?」は「どないどした?」に訳されただけだった。AIの型はそのままで、京都弁を上から振りかけた形になっている。おまけに「せやけど」は大阪の言い方である。
スキルありの返答(言い換えた本文の部分)。
先に言うときますと、キャッシュを入れたことで、レスポンスタイムが平均 420ms から 85ms まで縮まりました。
ただ、気ぃつけとかなあかんことがあります。キャッシュの有効期限は 5 分どすさかい、在庫数の表示が最大 5 分遅れることがあります。
そやさかい、在庫数だけはキャッシュから外すことを検討してます。
太字のラベルはほどけて話す形になり、絵文字と「いかがでしたか」は消えた。数値はそのまま残っている。思いつきの仮説は、少なくともこの場面では当たっていた。
7場面をまとめるとこうなった。
| スキルあり | スキルなし | |
|---|---|---|
| 確認項目の通過率 | 100%(29/29) | 66%(19/29) |
| 京都らしくない形(検査スクリプトの error) | 0 件 | 7 件(7 場面中 6 場面) |
| 太字 | 0 か所 | 27 か所 |
| 見出し | 0 個 | 27 個 |
スキルなしで出た京都らしくない形は、「せや」「せやさかい」(大阪)、「おます」(大阪の「おす」)、「選びはった」(京都なら「選ばはった」)だった。
ただし、この数字は各場面1回ずつ、作者の自己採点である。7場面のうち3つはスキルの例文に近い場面でもあった。しかもスキルあり側は、自分で検査スクリプトを回して直してから提出していた(スキルなし側は初稿のまま)。そこで、例と重ならない6場面を、検査スクリプトを使わせない初稿のままで走らせ直した。こちらも確認項目は 24/24 で、京都らしくない形は出なかった。とはいえ、ばらつきはまだ見ていない。
2. 話し手を一人決めると、型が入る隙間がなくなる
スキルの中身は、ほとんどが「話し手を一人に決める」ための決めごとである。
包むのは物言い、中身は包まへん
京都弁のスキルで一番こわいのは、婉曲が中身にまで掛かることだ。「バグです」が「ちょっと気になるとこがあるかもしれまへんなあ」になると、情報が変わってしまう。そこで、京ことばにするのは利用者に話しかける地の文だけにした。
- コード、コマンド、パス、数値、エラーの引用、専門用語は標準のまま
- コードのコメント、コミットメッセージ、PR の説明など、ファイルに書くものも標準語のまま(後で別の人が読むため)
- エラー、断り、取り消せない操作の確認では、いけずを使わず結論から言う
最後の項目について、スキル本体には「京都の人も、火事のときに遠回しには言いません」と書いてある。
京都らしくない形を表と検査スクリプトで止める
モデルに京都弁を書かせると、決まった誤りが出る。大阪弁の混入(せや、〜ねん、けえへん、言いはる)、形容詞に「どす」を付ける(高いどす)、舞妓さんの口まね(何どすえ)などである。これをスキル本体の表にまとめ、同じものを正規表現の検査スクリプトでも拾えるようにした。
reply.md:1:1: [error] osaka-seya 「せや」 → そや(「せや」は大阪の形)reply.md:2:6: [error] haru-renyou 「言いはった」 → 言わはった(5段動詞の「はる」は未然形に付く(連用形に付けるのは大阪の形))reply.md:3:1: [error] adj-dosu 「高いどす」 → 高うおす/高うございます(ウ音便+おす)(形容詞に「どす」は付かない)文法や京阪の違いは、主に「京言葉」というサイトを参考にした。とても詳しいサイトだが、転載は非商用に限られる。okureyasu は MIT ライセンスなので、サイトの文章は写さず、事実だけを自分の言葉でまとめ、例文はすべて自作している。
いけずは一滴
京都弁らしさを残すために、いけずは残した。ただし、愛される話し方にしたいので約束を付けた。
- いけずの後には、同じ返答の中で本音を言う(種明かし)
- コードや状況に向けて、人には向けない
- 1 返答に 1 つまで
- エラー、断り、危険な操作の確認、困っている人には使わない
- 本気で褒めるときは「ほんまに」と理由を付けて、いけずと区別する
- 最後は手を貸す
効き方の違いは、コードレビューで比べるとよく分かる。名前が一文字だらけの関数を渡したときの書き出しだ。
スキルなし。
まあ、えらいすっきりした短いコードどすなあ。名前もみぃんな一文字で、書かはったご本人さんしか読めへんよう、よう工夫してはりますこと。
スキルあり。
えらい無口なコードどすなあ。
dもrもxも、's'も'p'も、誰も名乗らはらへん。……ほんまのこと言うたら、動きはこれで合うてます。そやけど、半年後に読んだら何の処理か分からんようになりますさかい、名前と数字に意味を持たせときましょ。
スキルなしのいけずは書いた本人に向いていて、この後は見出しと太字で区切ったいつもの書式に戻る。スキルありは、いけずをコードに向けて一つだけ言い、すぐ本音に移っている。
3. 開発も京都弁で進めてみた
もう一つの思いつきが、京都弁で開発を進めることだった。作ったスキルを自分のプロジェクトに入れ、試用を兼ねてそのまま後半の作業を京ことばで進めた。
| 時刻 | やったこと | 話し方 |
|---|---|---|
| 17:48 | 「yomiyasu のカウンタースキルとして京都弁のスキルを作りたい」と依頼 | 標準語 |
| 18:19 | スキル本体、参考資料、検査スクリプト、評価まで完成 | 標準語 |
| 18:23 | private リポジトリに push | 標準語 |
| 18:38 | 自分で試用を始める | あっさり |
| 18:45 | /compact の準備 | はんなり |
| 19:33 | README に濃さの比べを足す | こってり |
| 19:40 | 公開前のセキュリティ点検 | こってり |
| 19:50 | public 化 | こってり |
| 19:58 | v0.1.0 リリース | はんなり |
スキルの作成には Anthropic の skill-creator スキルを使った。評価ケースを作り、スキルあり/なしのサブエージェントを並べて走らせ、結果を比べるところまでを約30分で済ませている。
試用して直したこと
あっさりで試していて、「丁寧語に近いな、特に返答の途中」と感じた。そう伝えると、こう返ってきた。
張り替えときます。あっさりが丁寧語寄りに聞こえるいうのもその通りやわ。自分の返答を読み返したら「〜しときました」「〜です」がずっと続いてて、京都の言葉いうより、ちょっと訛った丁寧語になってた。
そのまま、あっさりの定義を「常体が中心、です・ます は頼むときと謝るときだけ」に直し、検査スクリプトに「あっさりで です・ます の文末が3文続いたら警告する」項目を足すところまで進んだ。直したあとの報告は、ちゃんと常体で締めていた。
この返事も直した定義で書いてる。まだ硬いとこがあったら、また言うて。
自分の滑りも、京ことばで申告してくる。はんなりで話していたとき、スキルで使わないと決めた「〜まへん」「〜まひょ」が出てしまったのだが、次の返答でこう言ってきた。
それと、言うとかなあきません。さっきの返事で「効くとは限りまへん」「置いときまひょか」と書いてしまいました。「まへん」「まひょ」はこのスキルでは使わへんと決めた形どす。試用で見つかった滑りとして、覚えときます。
この後も、二人称は使わないと決めていた「あんさん」を使ってしまい、また自己申告していた。どちらも引き継ぎメモに残してあり、次に直す。
こってりで README を組み替える
README に「スキルなし・あっさり・はんなり・こってりの例文を載せたほうがいいか」と、こってりで聞いたときの返答。
へえ、載せといたほうがよろしゅうございます。ただ、半分はもう README に入ってますさかい、足すより組み替えるほうがすっきりしますやろ。
提案は具体的で、「例文は手で書かんと、実際の返答から取ります」「表にはせんと、引用を4つ縦に並べます」と続いた。実際に同じお題で4通り(後に標準語を足して5通り)走らせ、その返答から README の比べを作っている。
公開前のセキュリティ点検も京ことばで
public にする前に、漏洩がないかの点検を頼んだ。ここで、コミットの作者メールアドレスが個人のアドレスになっていることを指摘された。GitHub の noreply アドレスに書き換えて force push したが、それで終わりではなかった。
はっきり申し上げときます。このまま public にしたら、Gmail は見えます
ブランチから外れた古いコミットを、GitHub はしばらく消さずに持っとります。
書き換え前のコミットのハッシュを GitHub の API に聞くと、古いコミットがそのまま返ってきた。ハッシュを知っていれば、public にした後でもブラウザで開けてしまう。結局、まだ Issue もスターもない状態だったので、リポジトリを一度消して作り直し、書き換えた後の履歴だけを push してから public にした。点検とリポジトリの作り直しで約10分、公開の設定(Secret scanning、説明文、トピック、タグと Release)まで含めても約20分だった。
内容は真面目なセキュリティの話なのに、報告がずっとこってりの京ことばで返ってくる。「取り消せない操作の確認では結論から言う」という決めごとも、ここではちゃんと効いていた。
京都弁にしても、開発は普通に進んだ
始める前は、京都弁で話させるとモデルの能力が落ちるのでは、という懸念もあった。方言で話すことに気を取られて、肝心の作業が雑になるのではないか、という心配である。
実際には、京ことばで話していた後半の約1時間20分(18:38〜19:58)も、開発は普通に進んだ。この間にやったのは次のような作業である。
- 試用中のスキルをコピーからシンボリックリンクに張り替える
- あっさりの定義を直し、検査スクリプトに項目を足して、テストを通す
- README 用に同じお題を5通り並べて走らせ、その返答から比べの節を組み替える
- その過程で見つけた検査スクリプトの漏れ(「こうへん」)を直し、テストを足す
- 全ファイルと全履歴の漏洩点検、履歴の書き換え、リポジトリの作り直し
- Secret scanning の有効化、タグ付けと GitHub Release の作成
しくじりは1回あった。ワークスペース側の CLAUDE.md を書き換えるときに括弧の全角と半角を取り違え、中身の入っていないコミットを作ったのだが、自分で気づいて push の前に直していた。京ことばのせいかどうかは分からない。
おそらく、京ことばにするのを話しかける部分だけにしたのが効いている。コード、コマンド、コミットメッセージは標準語のままなので、作業の中身は普段と変わらない。評価でも、スキルありの返答は確度を落とさなかった。コードレビューの場面で、スキルなしは「float で 1 円ずれることがあります」と言い切ったが、スキルありは「今の範囲では同じ値になる」と確かめたうえで整数演算を勧めていた。もっとも、これは1回ずつの比較と体感で、能力の差を測ったわけではない。
楽しかった
作ってみたら、これが意外と面白くて楽しかった。
作業の報告そのものは、標準語のときと中身が変わらない。それでも「張り替えときます」「足しときました」くらいの軽いやりとりが続くと、こちらの返事もつられて「張り替えておくれやす」「いい提案どす。足しといて」になっていった。
ただ、筆者は大阪生まれで、京都にもしばらく住んでいたが、大阪なまりのほうが強い。こってりの提案に「ほな言いはるとおり組み換えで提案してみせて」と返したのだが、「言いはる」は検査スクリプトが大阪の形として拾う誤りである。作った本人がいちばん京ことばを間違えている。
4. まだできていないこと
- ばらつきを見ていない。評価は各場面1回ずつで、作者の自己採点である
- 長い会話での振る舞い。「まへん」「あんさん」のように、スキルに書いてある形でも滑る。回を追って、いけずや「ほな」が増えないかも見たい
/compactの後の濃さ。要約の後に貼り直されたスキル本文が、最初に/okureyasuを呼んだときの写し(そのときの引数「あっさりで」付き)だった。口で濃さを切り替えていると、要約の後に元の濃さへ戻りうる。動きからの見立てで、仕組みまでは確かめていない。途中で濃さを変えた人は、要約の後に/okureyasu はんなりでのように呼び直すと確実- アクセント。京阪式アクセントは京ことばらしさの大きな部分だが、文字では伝えられない
- 京都出身の方の確認。まだしていない。筆者は大阪なまりのほうが強いので、ここは自分では埋められない。おかしな京ことばを見つけたら、Issue で教えてほしい
まとめ
- 「AIらしさは京都弁で消せるのでは」という思いつきから、AIの話し言葉を京ことばにする Agent Skill、okureyasu を作った
- 「京都弁で」と頼むだけでは、AIの型の上に京都弁を振りかけた形になる。話し手を一人決め、話しかける地の文だけを京ことばにし、京都らしくない形を表と検査スクリプトで止めると、型が入る隙間がなくなった
- 開発も京都弁で進め、最初の依頼からリリースまで約2時間だった。能力が落ちる心配をよそに、点検からリリースまで普通に進んだ
- 報告も失敗の申告も京ことばで返ってくるのが、意外と面白くて楽しい
AIの返答の型が気になっている人は、一度「京都弁で」と頼むところから試してみてほしい。物足りなかったら、okureyasu をどうぞ。
npx skills add hiranorm/okureyasu