Mac アプリで日本語入力の確定 Enter が送信になる問題|Safari(WKWebView)の仕組みと直し方
Lyric Machine 開発記(5本目) 公開日 2026年10月13日
日本語で文字を打っていて、変換を確定しようと Enter を押したら、そのまま送信されてしまった。そんな経験はありませんか。自分専用の作詞アプリ「Lyric Machine」でも、この問題が起きました。この記事では、原因と、Claude Code(文章で頼むとプログラムを書いてくれる AI)がどう直したかを書きます。同じ症状で困っている人の参考になればうれしいです。
何を作りたかったか
Lyric Machine には、文字を打つ欄がたくさんあります。作詞家との会話欄、メモ欄、確認の入力欄、ストック(言葉のメモ)の欄などです。さらに、アプリの左側には ChatGPT、Claude、Suno のサイトの窓もあり、そこでも日本語を打ちます。
作詞のアプリなので、日本語を打つのはいちばん基本の作業です。ここでつまずくのは、さすがに困ります。
何が起きていたか
ある日、Claude Code にこう伝えました。
私エンターを押すと変換確定ではなく一気に送信されてしまう仕様で日本語入力に向いていないので直して欲しい
すべての入力欄で
Claude Code直しました(v0.38.1)。日本語入力で変換を確定するエンターは、確定だけになって送信されません。
確定したあと、もう一度エンターを押したときだけ送信になります。
日本語入力の不満を伝えた(やりとりを再現したもの)
日本語入力では、ひらがなを打って変換し、Enter で確定します。ところが、その確定の Enter が「送信」として扱われ、変換途中の文が送られてしまっていました。
原因:Safari と同じ仕組みの「くせ」
原因は、Mac アプリの窓の仕組みにありました。
Claude CodeMac のアプリの窓は Safari と同じ仕組みで動いていて、確定のエンターを「変換中ではない普通のエンター」として送ってきます。
Claude Codeそのため、メモやストックの入力欄、確認画面などで、確定したつもりがそのまま送信されていました。
直したときに聞いた原因(やりとりを再現したもの)
Lyric Machine の画面は、Mac の中で Safari と同じ仕組み(WKWebView)を使って表示しています。WKWebView は、アプリの中に Web ページを表示するための Mac の部品です。
この仕組みには、日本語入力について 1 つ「くせ」があります。変換を確定するときの Enter を、「変換中ではない、普通の Enter」として送ってくるのです。
アプリ側は「変換中の Enter なら送信しない」と判断していました。でも、Safari 系では確定の Enter が「変換中ではない」と報告されるため、送信してしまっていました。この問題は Chrome では起きにくく、Safari 系で起きやすいです。
どう直したか
Claude Code が入れたのは、「変換中かどうか」以外の手がかりも見て確定の Enter を見分ける、小さな仕組みです。
見ている手がかりは次の 3 つです。
- 変換中かどうか(いちばん基本の判定)
- 特別なキー番号(229)が付いているか
- 変換を確定した直後かどうか
キー番号 229 は、日本語入力などで変換に関わるキーを押したときに付く番号です。
どれかに当てはまる Enter は、送信の処理に届く前に止めます。確定の動作そのものは止めないので、文字は普段どおり確定されます。確定したあとにもう一度 Enter を押したときだけ、送信になります。
この仕組みは、アプリの全部の画面に入っています。右の作業場、左の「作詞家」タブ、スマホ用の画面、さらに左の窓で開いている ChatGPT、Claude、Suno の入力欄にまで入れました。
Claude Code変換中のエンターと、確定した直後のエンターを見分けて、送信の処理に届く前に止めるようにしました。確定そのものは普段どおり効きます。
Claude Code左のタブの ChatGPT や Claude、Suno のページの入力欄にも効きます。読み込み時に小さな仕掛けを入れていますが、クリックしたり中身を読んだりはしません。
直し方の説明(やりとりを再現したもの)
詰まった所と解決
詰まったのは、確かめ方です。開発環境はクラウドの Linux なので、実際の Mac の日本語入力が使えないんですね。
そこで、ブラウザの中で「Safari と同じ順番で届く、確定の Enter」をわざと作って再現しました。そのうえで、確定では送信されず、2 回目の Enter で送信されることを確かめました。
Claude Code今、ブラウザで Safari と同じ「変換確定のエンター」を再現して、送信されないことを確かめています。
Claude Code確認画面もストックの欄も送信されず、もう一度エンターを押すと送信されました。実際の Mac で日本語入力を使った確認はまだです。
確かめている途中と、終わったときの報告(やりとりを再現したもの)
そのあと、実際の Mac でも日本語を打って確かめました。
使ってみた感想
確定の Enter で勝手に送られなくなって、本当にストレスなく打てるようになりました。
同じことで困っている人へ
この問題は、Mac のアプリだけでなく、Safari で開く Web サービスでも起きることがあります。自分でアプリを作っている人向けに、伝え方のコツをまとめます。
症状をそのまま伝える
「Enter で変換を確定しようとすると送信される」と書くだけで、原因の見当がつきます。
「すべての入力欄で」と範囲を伝える
1 か所だけ直しても、結局は別の欄で同じことが起きます。私は最初から「すべての入力欄で」と頼んだので、修正がアプリ全体に一度で入りました。
自分の環境を伝える
Mac のアプリなのか、Safari なのか、Chrome なのかで原因が変わります。
まとめ
- 日本語入力で「確定の Enter が送信になる」のは、Safari 系(WKWebView)の仕組みのくせが原因のことがある
- 「変換中か」だけでなく、キー番号 229 や「確定した直後か」も見ると見分けられる
- 止めるのは送信の処理だけにして、確定そのものはそのまま効かせる
- 自分で作ったアプリなら、自分が困っていることを伝えるだけで、全部の入力欄をまとめて直してもらえる
次の記事では、「調べて」と頼んだ AI が、私の Chrome を勝手に動かしていた話を書きます。