第184回
CURSORやWindsurfのための表示行番号の拡張機能を作った
ビヨンドAIの知的生産のキーワードは「YAML」と「エディタ」か?
2025年04月18日 10時45分更新
なぜOpenAIはエディタの「Windsurf」が欲しいのか?
ふだん原稿を書くのに「CURSOR」というエディタを使っている。文章を書いてまとめるスピードもさることながら、ストレスが大幅に低減するのがうれしい。あまりに気に入ってしまったので、たてつづけに2回もここで取り上げて記事にしてしまった。次の2つの記事である。
いま文章を書くのに「CURSOR」を使わないのは損だ
「めちゃめちゃ文章を書くのが楽になった」―― AIと共に書く時代
ところが、この原稿を書いている間に大きなニュースが飛び込んできた。上記の記事でも触れたのだがCURSORにとてもよく似た「Windsurf」というエディタがあるのだが、これをOpenAIが買収しようとしているというのだ。この記事が公開されるまでに買収が決まってしまう可能性もあると思う。
CURSORとWindsurfは、本当によく似ているのだが、使えるLLMの部分が異なっている。CURSORは、自社でも専用の言語モデルを持っていて、GPT-4や1o、Claude-3.7-sonnet-max、Gemini-2.5-pro-maxなど、それぞれ得意な場面で使い分けているとしている。また、ユーザーが設定することもできる。それに対して、Windsurfは、そうした柔軟性は提供されていない。
OpenAIの立場からすれば、モデルは自分のところで十分にあるから、Windsurfのほうが相性がいい。また、コードの編集に関して現状のChatGPTのCanvas機能では、あまりに心もとないというわけだ。CURSORやWindsurfの元になっているマイクロソフト製のVS Codeへの対抗の意味もあるだろう。
「YAML」と生成AIはよく似合う
ビヨンドAI(beyond AI)、すなわちAIが当たり前になって誰も「AI」という言葉を使わなくなる時代がくる。そのビヨンドAIの時代の知的生産の技術は、「チャット」(おしゃべり)ではなく、「エディタ」(書く・作る)が本命だったということだ。
そもそも、そんなことは織り込みずみで「チャット」では、我々は、言葉を吸い取られて訓練なりに使われただけだったのだが。
そのことを証明してみせたのが、CURSORだったというわけだが、これはプログラムのコードを書くものとして作られたものだ。それが、これから人間が読むための文章を書く道具として使われるようになるというのが、上記2つのCURSORに関する記事の主張だった。
そうした分野の主役が、CURSORからWindsurfやほかのソフトウェアなりサービスにとって代わったとしてもこの傾向は変わらないと思う。
このようなAIの浸透と関係する現象として、YAMLというファイル形式が、ますます注目されてきている。YAML(ワイエーエムエル、ヤメル、ヤムル)は、2001年に提案されたものなのでけして新しいものではないのだが、「YAML Ain't a Markup Language.」(YAMLはマークアップ言語ではない)の意味だとしたのが、それを象徴している。
JSONに似ているなどと解説されることがあるが、JSONやXMLに比べはるかに可読性が高い。要するに、十分に賢くなったAIと人間とをつなぐものとしてYAMLは好都合なのだ。グーグルトレンドでみても、ここ10年ほど上昇トレンドとなっていて、2015年頃に比べると4倍という具合だ。
CURSORで、プロジェクトごとに与えるルール(たとえば、開発プロジェクトなりある連載記事なりごとにAIに与える基本的な指示)もYAMLで書くようになっていて、私も気軽にガシガシ書いている。
CURSOR、Windsurfで文章を書くとき欲しいのが表示行番号だ
CURSORを「これから確実に人間が読むための文章を書く世界にむかう」と書いたが、実際にその目的で使っていると気になる点がいくつかある。上記2つ目の原稿でもそのことについて書いた。Grepが「秀丸」や「サクラエディタ」より弱いというのもあるが、私にとって重要なのが、「表示行番号を使えない」という点である。
文章を書くという用途では、コードの1行が長くなって何行にも折り返すことはごく必然的なことである。ソフトウェアの開発で使うというのなら、行番号は、エラーがどこで出たか知らせる程度の価値しかない。だから、いわゆる論理行番号さえあれば折り返しで1行と数える必要はない。
そして、日本語で文章を書くとなると「〇文字✕〇行」という形で原稿の依頼というものはきたりするものなのである。ウェブなど電子媒体では「〇文字程度」という場合がほとんどだが、新聞・雑誌などの紙メディアでは、この「〇文字✕〇行」という原稿依頼なのだ(もっと複雑な場合もあるのだがここでは触れない)。
そうした「〇文字✕〇行」という原稿依頼の場合、決まった文字数で行を折り返してそれも含めて何行目を書いているかがわかると都合がよい。「一太郎」や「Microsoft Word」のようなワープロソフト、「秀丸」や「サクラエディタ」のような日本語が使えるエディタは、それが表示できるようになっている。
ところが、CURSORでは、この「〇文字✕〇行」のための1行を〇文字の幅にして折り返して表示しているときに、自分がいま何行目を書いているかがわからない。「論理行番号」の表示しかできず「表示行番号」の表示ができないからだ。もちろん、数えればいいのだが、私の場合、この「表示行番号」がないとなんとも中途半端な気分になる。
ウェブの原稿なら気にならないのだが、紙媒体の「〇文字✕〇行」の原稿の場合には、ほとんど書くことに集中できなくなってしまうのだ。
ということで、なんとかCURSOR、およびVS Code、Windsurfで表示行番号を出せないかと思って拡張機能を作ることにした。それなりに詳しく調べたのだが、いい感じで表示行番号を表示する方法が見つからなかった。そこで、私が作ったのが「Gyobango2」という拡張機能である。
これは、現在編集中のウィンドウの左に表示行番号専用のウィンドウを開いてしまうという応急的な解決策である。まあ、いま書いているウィンドウの左に表示行番号がわかる「ものさし」がウィンドウとして開くものだとイメージしていただきたい。したがって、編集中のウィンドウをスクロールさせたり、表示幅を変更すると、表示行番号が対応しなくなる。
まったくカッコいい実装ではないのだが、これで、文章に集中できるという心の平安を得ることができている。せっかく作ったのと、世の中には私と同じような性癖の方もおられる可能性もあるので、以下、その使い方を画面とともに紹介しておくことにする。

gyobango2の組み込み(1)。プルダウンメニューから「表示(V)」「拡張機能(X)」などの方法で画面左ペインに拡張機能が開いたら「Marketplace」とグレーで出ている窓から「gyobango2」(必ず最後まで入力=CURSORはそこまでやらないと最新バージョンを取ってきてくれないことがある)と入力。出てきた「Gobango2」を選択。「インストール」をクリックする。

gyobango2の組み込み(2)。「表示(V)」「コマンドパレット Ctrl-Shift-P」を選び。画面中央上の窓から「keyboard」などと入力すると出てくる「基本設定:キーボードショートカットを開く Preferences: Open Keyboard Shortcuts」選択。

gyobango2の組み込み(3)。表示された画面の「入力してキーバインド内を検索」の窓に「gyobango」と入力。出てきた「gyobango2: Gyo Bango2 」を右クリックして「キーバインドを追加する」選び、ショートカットを割り当てる。

入力・編集のテキストウィンドウ内で割り当てたショートカットを入力。最初に行番号だけのウィンドウが編集中のウィンドウの左に開く。ここでちょっとしたおまじないが必要。自動化してもよいのだが端をポイントして手でこのウィンドウは最小限の幅にしてほしい。編集中のウィンドウは幅も変わりカーソル位置も変わるので再度ショートカットを入力する。
Gyobango2がある以上、Gyobango1という拡張機能も作った。これは、表示行番号を出すのではなく、カーソルの行位置を教えてくれるだけのものである。気分的には、表示行番号が常に表示されているほうがよいのだが、これだけで十分という人もいるはずである。
ちなみに、1行の文字数は当然のことながら表示フォントによって大きく変わってくる。CURSORでは、「Ctrl-,」で設定メニューに入り「Editor: Font Family」でフォントを設定することができる。「Consolas, 'Courier New', monospace」などと設定されているが、三番目の優先度になるフォントで日本語フォントを設定している。
私は、気分で変えているのだが「華康Scゴシック体W4-JP(P)」や「メイリオ」、「HackGen35 Console NF」を指定している。HackGen35 Console NFは、プログラミング向けにチューニングされた等幅フォントなのだが、DOS時代に戻ったような懐かしさがある。日本語の文章を書く場合にも整然とした見た目でよい感じだったりする。英数の文字種しだいで正確な文字数を得ることもできる。
さて、私が、今回のように「プログラムを作った」などとコラムで書くのは30年ぶりくらいかもしれない。ひょっとしたら、1987年6月に『近代プログラマの夕』で「素数を求める世界最速プログラム」を紹介して以来の可能性がある(ちょっとしたトリックなのだが数の上限はあるもののちゃんと計算して世界最速プログラムになっている)。
要するに、それくらい久しぶりにゴリゴリと楽しい気分でコードを書いてみたくなる楽しさがCURSORにはある。
gyobango1もgyobango2も、200行程度の小さなプログラムなのだが、バグが含まれている可能性がある。まだ修正したい点もいくつもあるのだが、とりあえずVS CodeのMarketplaceに公開しておくことにした。ただし、プレーンなテキストファイルを前提としており拡張子によって挙動がおかしくなる可能性がある。また、これを使ったことで何らかの損害が生じても責任は負えないのであらかじめご了承いただきたい。
遠藤諭(えんどうさとし)
株式会社角川アスキー総合研究所 主席研究員。MITテクノロジーレビュー日本版 アドバイザー。ZEN大学 客員教授。ZEN大学 コンテンツ産業史アーカイブ研究センター研究員。プログラマを経て1985年に株式会社アスキー入社。月刊アスキー編集長、株式会社アスキー取締役などを経て、2013年より現職。趣味は、カレーと錯視と文具作り。2018、2019年に日本基礎心理学会の「錯視・錯聴コンテスト」で2年連続入賞。その錯視を利用したアニメーションフローティングペンを作っている。著書に、『計算機屋かく戦えり』(アスキー)、『頭のいい人が変えた10の世界 NHK ITホワイトボックス』(共著、講談社)など。
X:@hortense667
Bluesky:https://bsky.app/profile/hortense667.bsky.social
mixi2:@hortense667
週刊アスキーの最新情報を購読しよう
本記事はアフィリエイトプログラムによる収益を得ている場合があります