メインコンテンツへ移動
AIチュートリアル

cc-stretchでClaude Codeの返信をフレーズ単位で読む

cc-stretchがClaude Codeにストレッチテキスト機能を追加する仕組みを紹介します。簡潔な返信をざっと読み、必要なフレーズだけを展開し、位置を失わずに再び折りたためます。インストール、使い方、対応環境、制限事項、開発コマンドについて解説します。

cc-stretchでClaude Codeの返信をフレーズ単位で読む

cc-stretchの機能

cc-stretchは、長い返信を読みやすくするClaude Codeプラグインです。Claudeはまず回答の短いバージョンを表示します。リンクされた語句をクリックすると、その語句がその場で展開され、追加の説明が表示されます。もう一度折りたたむには«をクリックします。

すでに読んだテキストは同じ位置に残ります。追加の語句がその周囲に表示されるため、位置を見失わずに回答を段階的に読み進められます。

語句をクリックするとClaude Codeの返信がその場で展開される様子

プラグインをインストールする

次のコマンドを使い、Claude Codeのセッション内からcc-stretchをインストールします。

/plugin install cc-stretch --marketplace pro-vi/cc-stretch
/tui fullscreen

ターミナルでは、2つ目のコマンドによってClaude Codeがフルスクリーンレンダラーに切り替わります。クリック可能な展開を正しく動作させるには、この操作が必要です。コマンドを実行するとセッションが再起動され、再開されます。

Claudeデスクトップアプリでは、展開部分は自動的にリンクとして動作します。展開するには展開部分をクリックし、閉じるには«をクリックします。追加設定は必要ありません。

cc-stretchで返信を読む

1. 短い形式から始める

Claudeが返信を送ると、cc-stretchは最初に短いバージョンを表示します。READMEではこれを、すべての展開部分を閉じた返信という意味でskimと呼んでいます。

2. 語句を展開する

より詳しい文脈が必要なリンク付きの語句をクリックします。すでに読んだ語句は置き換えられず、その場で展開されて詳細が追加されます。

たとえば、短い説明は次のように始まります。

モナドとは、値を包み、それぞれが包まれた値を返す手順を連結できる型です。

文を展開すると、元の表現を保ったまま、より詳しい内容を示せます。

プログラミングにおいて、モナドとは値を包む汎用型であり、さらに、各手順が通常の値を受け取り、包まれた値を返すような手順を連結できます。手順の間で手作業によるアンラップを行う必要はありません。

3. 詳細を折りたたむ

«をクリックすると、展開された語句が短い形式に戻ります。これにより、注意の向け方に応じて、概要と詳しい説明を行き来できます。

3つの読解レベルを理解する

語句をクリックするとClaude Codeの返信がその場で展開される様子

cc-stretchでは、返信を次の3つの用語で表します。

  • Skim: すべての展開部分を閉じた返信。デフォルトで読むのはこの形式です。
  • Full: すべての展開部分を開いた同じ返信。Claudeが書いた内容をすべて含みます。
  • Read: skimに、開いた展開部分を組み合わせたもの。

このプラグインは、skimとfullの間にある領域を活用するよう設計されています。どの詳細に注意を向けるかを、語句ごとに自分で決められます。これは、インターフェースだけでなく読者が制御する段階的開示です。

主な機能

  • 入れ子になった展開: より長く展開されたセクションに、さらに詳しい内容を示す展開部分を含められます。
  • スムーズなストリーミング: Claudeが返信を生成中でも、すでに利用可能な展開部分は短い形式で表示されます。
  • 控えめなツール呼び出し: 完了したツール呼び出しのグループは、Ran 3 shell commands ▸ showのようなClaude Code独自の1行サマリーに折りたたまれます。
  • 失敗と実行中の処理を表示: 実行中のツール呼び出しやエラーが発生した呼び出しは、折りたたまれず開いたままになります。

ターミナルとデスクトップでの動作

クリックは、Claude CodeのターミナルのフルスクリーンレイアウトとClaudeデスクトップアプリで機能します。それ以外の環境では、インターフェースがテキストを隠したり更新したりできないため、すべての展開部分が開いたままになります。ターミナルのメイン画面にも同じ制限があり、表示後に印刷済みの返信を変更できません。

最初の返信が完全に展開された状態で表示される場合は、Claude Codeがフルスクリーンモードで実行されているか確認してください。Claude Code 2.1.300の時点では、フルスクリーンが設定されていても、一部の構成でメイン画面から起動することがあります。これにはtmux -CC、WindowsからのSSH接続、以前のフルスクリーン起動に失敗したマシンなどが含まれます。その場合は、次のコマンドでClaude Codeを起動します。

CLAUDE_CODE_NO_FLICKER=1

Windowsユーザーは、クリックがまだ機能しないという報告があることにも注意してください。状況はissue #1で確認できます。

重要な制限

  • Claudeは返信のすべてのレベルを最初に書き出します。読む語数は少なくなりますが、レスポンスにはプラグインなしの場合とおよそ同じ数のトークンが必要です。
  • cc-stretchが読み込まれていない場所では、{{short|long}}のマークアップがそのままテキストとして表示されます。
  • このプラグインはClaude Codeの早期アクセス版function-hookプラグインAPIを基盤としており、リリースごとに変更される可能性があります。
  • Claudeデスクトップアプリでは、cc-stretchによるツール呼び出しの折りたたみは描画されません。アプリ独自のツール呼び出し表示が使われます。
  • ターミナルセッションがデスクトップアプリにも接続されている場合、返信のストリーミング中にマークアップが表示されることがあります。デスクトップアプリはそのマークアップからリンクを作成するためです。

読解量の削減について

4つのコーディングプロジェクトから得た69件の実際の返信を測定した結果、クリック前に表示されたバージョンに含まれていた語数は、プラグインなしでClaudeが生成した語数の17%でした。最も重要なポイントのおよそ3分の2が含まれ、残りの詳細は展開して読める状態でした。

結果は、Claudeの返信が普段どのくらい長いかによって変わります。もともと返信が短い場合、cc-stretchで短縮できる読了時間は少なくなります。リポジトリのベンチマークディレクトリでは、測定方法と、自分のトランスクリプトで実行する方法を説明しています。

開発用コマンド

プロジェクトを開発する場合は、リポジトリの設定に従って依存関係をインストールし、次のコマンドを使用してください。

npm test            # claude plugin validate . && claude plugin test .
npm run typecheck   # ベンチマークスクリプト

このプロジェクトには映像制作ワークフローも含まれています。film/take.mjsスクリプトはWezTermのペインでClaude Codeを操作して画面を記録し、film/compose.mjsが映像をレンダリングします。映像で使用したアーカイブ画像の出典とライセンス情報は、film/CREDITS.mdに記載されています。

まとめ

cc-stretchは、Ted Nelsonのストレッチテキストの考え方をClaude Codeにもたらします。まず簡潔な回答を表示し、必要な説明だけを開き、読んでいた位置を失わずに折りたためます。プラグインをインストールし、必要に応じてターミナルを全画面表示に切り替え、リンク付きのフレーズを使ってClaudeの返信をどこまで読むかを調整してください。

詳しい背景や実装の詳細については、cc-stretchリポジトリをご覧ください。