
こんにちは、塩羽間つづりです
私は小説の執筆をメインに創作活動を行っているのですが、「こういう機能がほしい!」と思いつつも、その機能がすべて備わっているエディタというのには、なかなか出会えません。
多くのエディタを触った結果、私はVSCodeでテキストデータのまま書いていくという方式でした。
というのも、思考しながら書きなぐるというのをデジタルでもやっていまして、Nolaとかは便利なんですけど、「ここはプロット」、「ここは人物」みたいに決まっていて、そのかっちり決まる前段階の書きなぐりをしにくく(決まっているとなんとなく脱線しにくい)、結局自由なテキストファイルになりました。笑
VSCodoは、エンジニアの方とかがよく使っているのを目にしますが、意外と小説エディタとしても便利。なぜなら、自由な画面分割ができるからです。右にプロット、左に原稿とか、右に設定書、真ん中にプロット、左に原稿とか。
エディタの話は置いておきまして、今回この小説執筆の際に「こんな機能がほしいな~」というのをGeminiに相談したら作ってくれたので、そのお話をしていきたいと思います。
やる気アップする文字数カウンターがほしい!
作ろうと思った動機はタイトルの通りです。
目に見える形で、成果を確認できる機能がほしいな~という思いから、「本日あと何文字」と自動で計測してくれる機能を作ろうと思い立ちました。ちなみに、小説の原稿としての文字カウントなどは、すでにVSCodeの拡張機能として、「novel writer」というのが存在します。私も愛用させていただいているのですが、今回はこの「novel writer」にはない機能を作ろうという感じです!
そもそも、本当に動くコードが書けるの?
私のスペックです
頑張って読めばなんとなくコードの意味はわかる(かもしれない)
けれどもそもそも意味不明なコードを読むのは辛い
Gitは名前と雰囲気は知っている
拡張機能の意味は知っているが作成経験なし
コードが間違っていても判別不能
清々しいくらいのボロボロスペックです。ようするに、「こんなの欲しい!」ということはできても、なにもできない人とう感じです。
今回依頼をしたのは、最新バージョンのGemini2.5proです。SNSでコードがすごい!というのを見かけていたので、「やってみようかな?」と思いたち試してみることにしました。
まずは本当にコードが書けるかのチェック
最初は、PC上で動くアプリを作ってもらいました。
一日目標文字数を設定し、記録した文字数から「あと何文字」かわかるアプリを依頼しました。ついでに、月の目標からも「あと何文字」ができるようにしてもらいました。それがこちらのアプリ。

ひな形が完成し、動くのを見て「おおお!」となりました。私がしたこと?こんなのがほしい!と伝えただけです笑
で、なら、もう少し機能を足せるのでは?と欲張り、レベル機能をつけてもらいました。

すごい!だいぶいい感じになっています!レベル機能も指示した通り!かなりいい感じです。プラス機能の実装時間は3分もしなかったと思います。速すぎる……!!!
AI時代、一番重要になるのは、この速さだと思います。時間が加速する。できる人はAIを使ってどんどん身の回りを便利にしていく。それも、ひっそりと。
今(2025年5月現在)はまだAI批判の風潮がありますからね。このように公開するメリットはぶっちゃけないのです。リスクしかない。けれども、こんなことできるよ!と知ってほしくて、この記事を書いています。
とそれはいったん置いておき、ここまできて、人には欲というのがあります。そうです。「この機能をそのまんま愛用のエディタにもってきたい!」という、愚かな欲が……。
そのためには、VSCodeの拡張機能開発が必要です。早速Geminiに聞きました。

この機能をそのままVSCodeの拡張機能にしたいんだけど、できる?
Geminiは頼もしく可能です!と答えてくださいました。ということで、ここから初めての拡張機能作成へと発展します。
コードも読めないど素人がVSCodeの拡張機能を作る
タイトルのまんまです。頼みの綱はGemini。君しかいない。
そんな状態での、はじめての拡張機能作り。
そもそも、どうやったら拡張機能になるのかもわかりません。今回は配布をせず、自分だけが使う(PCに保存している拡張機能をインストールさせる)方法で行いました。これもGeminiに教えてもらいました。
拡張機能を作るには、事前準備がいくつか必要とのことでしたが、それも全部Geminiが手順として出してくれました。インストールしていないソフト(?)があったのでインストールし、その後、コマンドを入力する。
でもど素人は困ります。

コマンドを入力するターミナルの出し方がわからない!
コマンド入力のターミナルというのは、すごい人が使うイメージの黒い画面です。
さすがにこれはネットで調べました。ショートカットキーが紹介されていたので、その通り実行します。けれども、ここでふと疑問が。Geminiはコマンドを入力すると言っていたのですが、ターミナルはVSCode内にもあるのです。VSCode内でコマンドを入力するのか、自分のPCでコマンドを入力するのかわからない!
困ったので、Geminiに聞きました。
すると、丁寧に自分のPCのターミナルですよ!とさらに細かく教えてくれました。
ありがとう、Gemini。なにもわからなくてごめん。
ここからは、指示通りにコマンドを入力。よくわからないプログラムが実行されていきます。(これ、今はいいけれど、後々悪用する人が出てくるかもしれないのでウィルスに気をつけてくださいね。数年後の当たり前になった世界では、もしかしたら起こりうるかもしれません。いや、もっとAIが進化しているかな?)
Geminiがこういう風に表示されるはずですよと丁寧に記してくれていたのですが、ど素人ゆえに、その後なにをしたらいいのかわからない。
こういうのが表示されたけど、どうしたらいい?と聞くと、そのこういう風に表示されるはず~というのは、カーソルキーで移動し、エンターで決定を押していくのだとさらに丁寧に教えてくれました。そして、またこういう文言とだしてくれます。どれどれとカーソルキーを触ってみたら、たしかに動く。選択式だった!
Geminiの指示通り操作していきます。
無事にターミナル操作を終え、ついにVSCode内の操作に移ります!
拡張機能のためのプロジェクト?のようなものが立ちあがっている状態です。すでになんだかよくわからないファイルたちも作成されています。
ここに、Geminiの指示通り、提示されたコードをコピペする!!
ファイルを間違えないように、ファイル名を慎重にチェック。そして、全コピペ!
だけど……よく見ると、Geminiの出してくれたコードには、VSCodeのバージョンに合わせて随時変えてね!という箇所が……。

VSCodeのバージョンって、どこでわかるの!?
大ピンチです。困りました。とりあえずGeminiに聞きます。そして、最初のファイルに設定は書いてあることが多いと教えてもらい、コピペ前に戻します。見たら、たしかに記載されている。けれども、「これでいいの?」と不安。
なので、その初期ファイルのコードをGeminiにぶん投げました。
コピペです
こうなっていた!と報告をし、そのまま全コピペできるように書き換えてほしいとお願いしました。Geminiは尽くしてくれました。コードを読み、現在のバージョンに合わせて修正を加えた新たなコードを出してくれました。
それを、今度こそコピペ。ほかのファイルもコピペ。
完成しました!
その後の操作方法も全部Geminiが教えてくれます。「ビルド」というのをするショートカットキーから、デバックウィンドウの開き方まで……。そのとおりに実行すると、ちゃんとイメージ通りの拡張機能ができたことが確認できました!すごい!ありがとう、Gemini!ですが……。

人の欲は、計り知れないのです。
この拡張機能は、今日何文字書いたよと、手動入力式だったのです。最初のアプリがそのようになっていたので、Geminiはそのまんま拡張機能にしてくれました。
でも、愛用のエディタについたなら、もっと楽をしたい……。そう思ってしまうのが人間です。
なので、Geminiに聞きました。この文字数カウントを、自動化できる?と。
Geminiは少し複雑になるけれど、できないことはないと答えてくれました……。が、ここからが泥沼のはじまり。
まず私がどのように自動化したいのかを伝えます。
目標文字数を設定し、書いた文字数から自動的に引いてほしい。日付が変わったときには、そのときの情報を記録してほしい。レベルアップ機能のそれに併せて反映させてほしい(レベル機能もついてます)という感じで、なんとなくの要望を伝えました。
Geminiは新たなコードを出してくれました。それをまた、コピペ。けれども、入力した文字が上手くカウント反映されない。なぜか改行は2文字カウント。日本語NGという状態になってしまいました。
困った、なにが原因なのかさっぱりわからない。頼れるのはGeminiしかいないのだ。
とりあえず、文字カウントされないことを伝え、どうしよう!と聞きます。すると、どのように動作しているのか知りたいので、このコードをこのファイルに追加してほしいと指示と一緒にコードの一部を出されました。

追加……?この長いコードのいったいどこに?わからない、なにも!
とりあえず、どこに追加したらいいのかわからないから、全部上書きコピペできるようにしてほしいとお願いしました。その通りに、書き直したコードを出してくれます。古いのは別で保存しておき、そのコードを貼り付けます。そしてまた、Geminiの指示通りに、ログが表示されるというところを見て、「こんな感じだったよ」とデータを送ります。
それを解析するgemini。半角英数ならできるか見たいとおっしゃったので、その通りに打っていきます。でも、なんだか違う様子?何度かのやり取りのあと、私が見ていた画面が違うことが判明しました!笑
Geminiと会話がかみ合っていないなという気がして、いろいろと見ていたら、デバック画面のログではなく、コード記載しているほうのログを見る必要があったと気づいたのです。とりあえず、見ていた画面が違ったことと謝罪をし、今度こそ正確なログを送りました。それを解析するGemini。またコードを貼り付ける私。何度か繰り返したあと、私は思います

やっぱり無理なのでは?手動式が完成しているから高望みはしないほうがいいかも
ということを、Geminiにお伝えしました。Geminiはものすごく残念そうにしていました。
きっとできるし、あと少しのところまできている、けれどもそう決めたのならしかたながない。と
そう言われてしまうと、なんとも後ろ髪を引かれる。私は、最後にここができていないからできない。これをなんとかできないかと聞いてみました。本当にこれで最後にするつもりでした。
すると……
なんと、完璧に動く完全版のコードが出てきたのです!!

え!動いた!そんなことある!?
びっくりしつつ、動いたことを報告します。リアルタイムで日本語も計測され、それがきっちり反映される。すごい!完成した!
早速その拡張機能を使っていると、また問題が。すでに文字の入力があった場合、つまり、続きを書き始めたときに、その元の文字数も計測してしまう事態が発生したのです。それも伝えて、どういう風に動いてほしいかを説明しました。
実際の超雑な説明……。これで伝わるのだから、Geminiすごい……。そのときの実際の会話ログ↓

Geminiが出してくれたコードで、一発で治りました。さらに、ファイルを跨いだときもカウント問題も伝えると、それも修正してくれる。こんなことがあっていいの……?
最終的に、私は「どうしよう!」と聞いただけで、Geminiがすべて作ってくれました。ありがとう、Gemini。これからも欲しい機能があったらおせわになるね。
完成した拡張機能。
常に下に表示されている「今日の残りも文字数とレベル」

詳細を出したときの記録

正直に申しますと、具体的な操作方法はありません。私は基本的に会話型で、ここができない、こう動いてほしいと言っていただけなので、随時そんな感じで会話してください、という感じです。笑

ありがとう、Gemini!


