しばらくブログをご無沙汰していました。久しぶりの投稿はスプレッドシートの開発&公開の話です。
エンジニアの皆さんの多くはターミナルや(Windows であれば)コマンドプロンプトといった、いわゆる CLI(Command Line Interface) で操作するツールを普段から使っている人は珍しくないと思います。現に git などは GUI のアプリもありますが、多種多様なオプションを指定して操作しようとすると、必要なオプションを自由に指定できる CLI 版の方が使いやすいと感じます。
私自身は普段は Windows PC を使っていて、ターミナルは WSL を導入した上で Ubuntu のターミナルを開いて操作していることが多いです。このように Linux (おそらく macOS も)を使っている間は多くのツールが CLI で提供されていることもあってあまり不便に感じることはありません。
ただ、これが Windows のコマンドプロンプト(cmd.exe)を使っていると使えるツールの少なさから困ることもあります。比較的最近まではコマンドプロンプト内で使えるテキストエディタがなかったので、テキスト編集のためにいちいちメモ帳(notepad.exe)を起動して編集し、編集し終わったらまたコマンドプロンプトに戻って・・・ といったいかにも面倒な感じで操作してました。Linux なら有名な vi を使えたり、vi が苦手でも nano エディタなどターミナル内で使える多くの選択肢があるのに・・・ ただこの問題は Microsoft が edit という謹製ツールを提供してくれたおかげで解決しました。
そこで残った問題がスプレッドシートでした。エクセルを使う程でもないちょっとした演算が可能な表計算ツールを使いたい時にコマンドプロンプト内で動作するツールの選択肢が(私の知る限り)存在していないのです。ちなみに Linux であれば sc というツールが存在していて、ターミナル内でもこのスプレッドシートを使って計算することができます。
#おまけに言うと Windows の前の DOS 時代には Lotus 1-2-3 という DOS プロンプト内で動作するスプレッドシートがあったのですが、これは 16bit 環境でしか動かないので現在の 64bit Windows では互換モードも用意されていないのでした。。
・・・という背景の中、生成 AI の力を借りつつ苦手な .NET C# プログラミングに挑戦して、64bit Windows のコマンドプロンプト内で動くスプレッドシート・アプリケーションを作ってみました。以下、そのツールを簡単に紹介します。
ツールの名前は Cli SpreadSheet の略で css としています(Cascade StyleSheet ではないです)。css はこちらでソースコード含めて公開しています:
https://github.com/dotnsf/css
ツールのダウンロードは上記ページ内の「インストール」節のリンクから css.exe をダウンロードしてください(このファイル1つだけで動きます)。シンプルなツールですが .NET Runtime を内蔵していることもあって 30MB 以上あります。そして PATH の通ったフォルダにコピーします:

起動するにはコマンドプロンプト内で "css" を実行します。パラメータでファイル名を指定(例 "css test.csv")して読み込むことも可能です。このパラメータ例で分かるかもしれませんが、CSV ファイルから読み込んだり、CSV ファイルに出力することが可能です:

css が起動すると下図のようにコマンドプロンプト内でスプレッドシートが起動します:

青く背景になっている部分がアクティブセルです。矢印キーまたは hjkl キーでアクティブセルを動かすことが可能です。この状態で Enter キーまたは i キーを押すと編集モードに切り替わり、次に Enter キー(確定)または ESC キー(取消)を押すまでアクティブキーの内容を編集できます:

SUM, AVERAGE, IF, ・・・といった代表的なエクセル互換関数をサポートしています。詳しくは「関数リファレンスガイド」を参照ください:

":" キーを押すと画面がコマンドモードになり、":e ファイル名" で CSV ファイル読み込み、":w" で CSV ファイル書き込み(ファイル名を指定する場合は ":w test.csv")、":width 数値" でアクティブのセルのある列の列幅変更、といった操作が可能です。この辺りは vi キーバインドを参考にしています。
また vi に詳しくない人向けにコマンドモードをメニューから利用できるようにもしています。その場合は "/" キーを押すことでメニューを表示し、ここから選択することでもコマンド実行が可能です(このあたりは Lotus 1-2-3 互換です):

終了はコマンドモードから ":q" です。編集中のファイルがある場合はすぐには終了できませんが、編集を破棄して強制終了する場合は ":q!" で終了します。終了後はコマンドプロンプトに戻ります:

概ねの使い方は以上です。詳しくは README.md や他のドキュメントを参照ください。
自分が使うことを前提(大事)に、vi キーバインドや Lotus 1-2-3 互換メニューのような機能を実装しました。最低限の関数も実装したおかげもあって、自分的には使いやすいものができたと思ってます。同じようにコマンドプロンプト内のままスプレッドシート機能を使ってみたい人がいたら是非使ってみてください。
ちなみに、このアプリを作る上で IBM Bob という生成 AI を使いました。自分が普段不慣れな言語だったこともありますが、いやあ「すげー便利」ですね。。
エンジニアの皆さんの多くはターミナルや(Windows であれば)コマンドプロンプトといった、いわゆる CLI(Command Line Interface) で操作するツールを普段から使っている人は珍しくないと思います。現に git などは GUI のアプリもありますが、多種多様なオプションを指定して操作しようとすると、必要なオプションを自由に指定できる CLI 版の方が使いやすいと感じます。
私自身は普段は Windows PC を使っていて、ターミナルは WSL を導入した上で Ubuntu のターミナルを開いて操作していることが多いです。このように Linux (おそらく macOS も)を使っている間は多くのツールが CLI で提供されていることもあってあまり不便に感じることはありません。
ただ、これが Windows のコマンドプロンプト(cmd.exe)を使っていると使えるツールの少なさから困ることもあります。比較的最近まではコマンドプロンプト内で使えるテキストエディタがなかったので、テキスト編集のためにいちいちメモ帳(notepad.exe)を起動して編集し、編集し終わったらまたコマンドプロンプトに戻って・・・ といったいかにも面倒な感じで操作してました。Linux なら有名な vi を使えたり、vi が苦手でも nano エディタなどターミナル内で使える多くの選択肢があるのに・・・ ただこの問題は Microsoft が edit という謹製ツールを提供してくれたおかげで解決しました。
そこで残った問題がスプレッドシートでした。エクセルを使う程でもないちょっとした演算が可能な表計算ツールを使いたい時にコマンドプロンプト内で動作するツールの選択肢が(私の知る限り)存在していないのです。ちなみに Linux であれば sc というツールが存在していて、ターミナル内でもこのスプレッドシートを使って計算することができます。
#おまけに言うと Windows の前の DOS 時代には Lotus 1-2-3 という DOS プロンプト内で動作するスプレッドシートがあったのですが、これは 16bit 環境でしか動かないので現在の 64bit Windows では互換モードも用意されていないのでした。。
・・・という背景の中、生成 AI の力を借りつつ苦手な .NET C# プログラミングに挑戦して、64bit Windows のコマンドプロンプト内で動くスプレッドシート・アプリケーションを作ってみました。以下、そのツールを簡単に紹介します。
ツールの名前は Cli SpreadSheet の略で css としています(Cascade StyleSheet ではないです)。css はこちらでソースコード含めて公開しています:
https://github.com/dotnsf/css
ツールのダウンロードは上記ページ内の「インストール」節のリンクから css.exe をダウンロードしてください(このファイル1つだけで動きます)。シンプルなツールですが .NET Runtime を内蔵していることもあって 30MB 以上あります。そして PATH の通ったフォルダにコピーします:

起動するにはコマンドプロンプト内で "css" を実行します。パラメータでファイル名を指定(例 "css test.csv")して読み込むことも可能です。このパラメータ例で分かるかもしれませんが、CSV ファイルから読み込んだり、CSV ファイルに出力することが可能です:

css が起動すると下図のようにコマンドプロンプト内でスプレッドシートが起動します:

青く背景になっている部分がアクティブセルです。矢印キーまたは hjkl キーでアクティブセルを動かすことが可能です。この状態で Enter キーまたは i キーを押すと編集モードに切り替わり、次に Enter キー(確定)または ESC キー(取消)を押すまでアクティブキーの内容を編集できます:

SUM, AVERAGE, IF, ・・・といった代表的なエクセル互換関数をサポートしています。詳しくは「関数リファレンスガイド」を参照ください:

":" キーを押すと画面がコマンドモードになり、":e ファイル名" で CSV ファイル読み込み、":w" で CSV ファイル書き込み(ファイル名を指定する場合は ":w test.csv")、":width 数値" でアクティブのセルのある列の列幅変更、といった操作が可能です。この辺りは vi キーバインドを参考にしています。
また vi に詳しくない人向けにコマンドモードをメニューから利用できるようにもしています。その場合は "/" キーを押すことでメニューを表示し、ここから選択することでもコマンド実行が可能です(このあたりは Lotus 1-2-3 互換です):

終了はコマンドモードから ":q" です。編集中のファイルがある場合はすぐには終了できませんが、編集を破棄して強制終了する場合は ":q!" で終了します。終了後はコマンドプロンプトに戻ります:

概ねの使い方は以上です。詳しくは README.md や他のドキュメントを参照ください。
自分が使うことを前提(大事)に、vi キーバインドや Lotus 1-2-3 互換メニューのような機能を実装しました。最低限の関数も実装したおかげもあって、自分的には使いやすいものができたと思ってます。同じようにコマンドプロンプト内のままスプレッドシート機能を使ってみたい人がいたら是非使ってみてください。
ちなみに、このアプリを作る上で IBM Bob という生成 AI を使いました。自分が普段不慣れな言語だったこともありますが、いやあ「すげー便利」ですね。。
