コードレビューを自分の言語で音声入力する
コードは英語です。レビューコメントはそうである必要はありません。25 言語のどれかでレビューをオンデバイスに音声入力する方法と、言語を固定することが効く理由。
たいていの開発者向けツールには、静かな前提が焼き込まれています。コードは英語なのだから、開発者も英語であるはずだ、という前提です。キーワードは英語。ライブラリ名は英語。エラーメッセージは英語。だから、と話は続きます。開発者向けの音声入力は英語だけでよく、誰も気にしない。
コードレビューは、その前提をただちに壊します。レビューコメントはコードではありません。人に向けられた文であり、非常に多くのチームでは、その人は自分と第一言語を共有しています。ルーマニアのチームは Rust のサービスをレビューし、英語の識別子についてルーマニア語のコメントを書きます。ポーランドのチームはポーランド語で、ドイツのチームはドイツ語で同じことをします。コードは英語のままですが、コードについての会話はそうではありません。
音声入力はレビューコメントに対して異様に相性がいい。レビューは読む行為であり、タイプは読むことを中断させるからです。ただしそれは、コメントが実際に書かれている言語で動くときに限ります。この記事はそれを機能させる話です。Keebye がオンデバイスでカバーする言語、言語の固定がどう振る舞うか、そして境界がどこにあるか。なぜそれが大事なのかという議論そのものは開発者のための音声入力が、英語だけであってはいけない理由にあります。こちらは実務側の続編です。
なぜレビューコメントは理想的な音声入力の対象なのか
レビューコメントには、開発者が書くほかのどんなテキストより音声に向いている 3 つの性質があります。
短い。ほとんどのコメントは 1 文から 3 文です。それは一息、ホットキー 1 回の押し込み、ひとつの発話です。
文章である。厳格な書式を持つコミットメッセージや、正確な構文を要する設定ファイルとは違い、レビューコメントは問題を口で説明するときの言い方そのままです。「ソケットが応答しないと永遠にリトライする。上限を付けて」。話した版とタイプした版は、ほとんど同じです。
目がふさがっているときに起きる。差分を読んでいます。タイプするために止まった瞬間、読んでいた場所を失います。音声入力なら、読み続けながら、すでにクリックして入った入力欄にコメントを話し込めます。
そこに言語の次元を足してください。チームがポーランド語でレビューするなら、英語だけの音声入力ツールは選択を強います。英語でレビューする(不自然で、同僚は読むのが遅くなるかもしれない)か、タイプする(利点を失う)か。どちらも望んだものではありません。
Keebye が実際に対応しているもの
ここで関係するオンデバイスのエンジンは 2 つで、それについては正確であるだけの価値があります。
デフォルトのエンジンは英語向けに調整されています。速く、ほとんどの人が使うもので、そしてポーランド語のレビューコメントに使いたいものではありません。英語以外の音声に向けると、音としてはありえる英語、つまり言っていないことを生みます。
2 つめのエンジン Canary は、ちょうど 25 言語をカバーします。ブルガリア語、クロアチア語、チェコ語、デンマーク語、オランダ語、英語、エストニア語、フィンランド語、フランス語、ドイツ語、ギリシャ語、ハンガリー語、イタリア語、ラトビア語、リトアニア語、マルタ語、ポーランド語、ポルトガル語、ルーマニア語、ロシア語、スロバキア語、スロベニア語、スペイン語、スウェーデン語、ウクライナ語です。オプトインで、一度ダウンロードすれば、そのあとは Keebye のほかのすべてと同じようにオフラインで動きます。100 言語ではありません。25 言語、列挙済みで、そのリストに自分の言語がなければ、この記事はまだ助けになれません。
エンジンとして Apple 標準の音声認識を使う選択肢もあり、そちらは自分の Mac の言語対応をそのまま持ち込みます。これは特性の違う別の経路で、この記事の残りは Canary の話です。
言語は固定する。推測させない
英語以外のレビューにとって、単独でいちばん重要な設定が言語の固定です。
自動判定は正しいデフォルトのように聞こえて、開発者には間違ったデフォルトです。レビューコメントは英語の識別子で密です。関数名、パッケージ名、「null」「async」「callback」という単語。8 割がルーマニア語で 2 割が英語トークンのコメントは、言語判定器にとってまさにいちばん苦手な混合信号を与えます。文の途中でひっくり返るか、全部が英語だったと決めてしまい、自信たっぷりに間違った文字起こしが返ってきます。この失敗は自動判定が外し続けるなら、言語を固定するが詳しく追っています。
Canary では、Keebye は言語を明示的に設定させます。ルーマニア語を固定すれば、モデルはルーマニア語としてデコードします。文の中の英語の識別子は、言語を切り替えた証拠ではなく借用語として扱われます。珍しい識別子の認識はそれでも完璧にならないことがありますが、言語そのものがコイントスであることはなくなります。
知っておく価値のある挙動が 1 つ。固定した言語は、次の発話に対して読まれます。固定を変えれば、これからする音声入力はそれを使います。すでにキーを離したものが再文字起こしされることはありません。実務上は、切り替えてから話す、ということです。1 日のうちに 2 言語でレビューするなら、この切り替えは安い。メニューバーのトレイには素早い切り替え用の 11 言語のショートリストがあり、設定には 25 言語すべてがあります。
音声入力されるレビューセッション
ルーマニア語でレビューするチームでの、セッションの様子です。
プルリクエストを開きます。トレイは昨日のままルーマニア語を固定して表示しているので、やることはありません。最初のファイルを読みます。3 つめのハンク、上限のないリトライループ。コメント欄をクリックして、右⌘を押しながらルーマニア語でコメントを話し、離す。テキストが着地し、「えー」と言い直しはルールベースのクリーンアップに落とされ、識別子 reconnectSocket は 1 週間前にカスタム辞書に入れておいたのでそのままです。
次のファイル。残したいコメントは文章ではなく、コードの提案です。それはタイプします。差分を音声入力するのは、どの言語でも悪い体験です。
そのあと、別チームの貢献者がスレッドに加わり、英語で書いてきます。英語で返したい。トレイをクリックしてショートリストから英語を選べば、次の発話は英語としてデコードされます。返信して、戻す。
どれもウィンドウを必要としません。Keebye はメニューバーにいて、ホットキーはフォーカスされているアプリで動きます。レビューを開いたブラウザのタブでも、デスクトップの Git クライアントでも、CLI のレビューツールを走らせているターミナルでも。
正直な限界
25 言語であって、すべてではありません。 トルコ語、日本語、アラビア語、あるいは Canary のリストの外の言語でレビューするなら、2 つめのエンジンはそれをカバーしません。Apple 標準のエンジンはシステムの言語対応によってはカバーするかもしれませんが、それは振る舞いの違う別のエンジンです。
トレイのショートリストは 11 言語です。 英語、ルーマニア語、フランス語、ドイツ語、スペイン語、イタリア語、ポルトガル語、オランダ語、ポーランド語、ロシア語、ウクライナ語は 2 クリックの距離にあります。残りの 14 言語は設定の中です。日常の組み合わせがたとえばチェコ語とフィンランド語なら、その片方は設定を経由します。
識別子は、やはり識別子です。 どの言語の音声モデルも snake_case_names には苦しみます。よく出るものは辞書が助けますが、残りは手で直すことになります。投稿する前にコメントを読んでください。
ライブの文字起こしはありません。 Canary はキーを離した時点で、ひとつのバッチとして文字起こしします。話しながら単語が見えることはありません。1 文から 3 文のレビューコメントでは、ほとんど気づきません。
ポリッシュはオプションで、デフォルトはそのまま。 オンデバイスのローカル LLM ポリッシュを有効にすると文の構造が整えられ、その出力に深刻なトークンの欠落・膨張・繰り返しが見えたときにはフィデリティガードが素の文字起こしへ戻します。このガードはヒューリスティックであり、意味が生き残ったかを確かめるものではありません。否定がひっくり返れば結論が変わるレビューコメントでは、ほとんどの人がポリッシュをオフにして、ルールベースのクリーンアップに任せます。
これが収まる場所
言語の固定こそが気になる機能なら、Keebye vs Wispr Flow が、音声処理がどこで動くかと言語がどう扱われるかで両者を比べていて、Wispr Flow のほうが向いている場面も含んでいます。手が差分の上にあるまま音声入力するという広い話は、ビルダーにとって本物の入力チャンネルが日々の運用を、Mac のための音声入力がセットアップを扱います。
開発者が英語だけの存在だという前提は、はじめから本当ではありませんでした。ツールにとって都合がよかっただけです。自分の言語で、声で、マシンを出ない音声処理でレビューすることは、ニッチな要望ではありません。ツールが許すなら、ソフトウェアを書いている人々のかなりの割合がそうするだろうという、それだけのことです。
自分が考える言語でレビューする
無料トライアルを始めて、言語を固定し、同僚に話しかけるとおりにレビューコメントを 1 本音声入力してください。
Start free trialEarly access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.
続きを読む
自動判定が外し続けるなら、言語を固定する
音声入力が違う言語で着地し続ける? 自動判定は、その仕組み上、バイリンガルの発話で揺れます。一度言語を固定すれば、固定されたままです。
開発者のための音声入力が、英語だけであってはいけない理由
コードは英語でも、その周りの一日はそうとは限りません。自分の言語で書く Slack のメッセージ、レビュー、ドキュメントのための、オンデバイスの多言語音声入力。
並列エージェントにプロンプトを音声入力する、レーンごとに
コーディングエージェントを 2 つ 3 つ同時に走らせると、プロンプトそのものがボトルネックになります。いま見ているレーンを離れずに、並列レーンへ指示を届ける音声ワークフロー。