CSVを開く度にExcelやLibreOfficeを起動するのが面倒、と思ったことはないだろうか。Cell(garritfra/cell)は、その問いに「Vimでいいだろ」と答えるRust製のターミナル表計算アプリだ。Garrit Franke氏が開発し、執筆時点でGitHub Stars 215、MITライセンス、2026年4月28日に v0.4.0をリリース。Excel互換の数式(SUM・AVERAGE・COUNT・MIN・MAX・IF)、CSV/TSV/独自.cell形式、ヘッドレスCLIモードまで揃っている。
この記事ではCell(Vimライクなターミナル表計算)を解説します。AI時代のオフライン作業ツール全体像はAI自動化ツール完全ガイド2026をご覧ください。
この記事のポイント
- Vimの完全モード編集(Normal/Insert/Visual/Visual Block)をターミナル表計算に持ち込んだRust製アプリ。
.cell独自形式は数式を保持したままプレーンテキスト=Git管理可能。- ヘッドレスCLI(
--read/--write/--eval)でshellパイプと自然に繋がり、CIに組み込める。 - 同領域の老舗 sc-im に対するRust + ratatui のモダン実装として再設計されている。
Source: garritfra/cell — ターミナルで動くVimライクな表計算UI。
Cellとは:ターミナルでExcelを開けるVim
Cellは、CLI上でスプレッドシート編集体験を提供する単一バイナリのアプリケーションだ。Rustで書かれており、Linux/macOS/Windowsの3プラットフォームで動く。cargo install cell-sheet-tui一発でインストールできる。
| 観点 | Cell | LibreOffice Calc | Excel | sc-im |
|---|---|---|---|---|
| 動作環境 | ターミナル | GUI | GUI | ターミナル |
| 起動時間 | <100ms | 数秒 | 数秒 | 速い |
| Vim操作 | 完全対応 | 不可 | 不可 | 部分対応 |
| 数式 | Excel互換(6関数) | 数百関数 | 数百関数 | @プレフィクス独自 |
| ファイル形式 | CSV/TSV/.cell | XLSX/ODS/CSV | XLSX/CSV | CSV/TSV/XLSX/ODS/MD |
| ヘッドレスCLI | 対応 | 限定的 | VBA | Lua/Cモジュール |
| プラットフォーム | Linux/macOS/Windows | 全OS | Windows/macOS | Linux/macOS主体 |
| 軽さ | 超軽量 | 重い | 重い | 軽い |
「Excel/LibreOfficeは大砲、Cellはハサミ」と捉えるとイメージが合う。多機能を求めるシーンには向かないが、「CSVを少しいじる」「サーバ上でTSVを直接読み書きする」「Gitリポジトリの.cell形式を編集する」といった日常タスクで圧倒的に速い。
GUIスプレッドシートが日常的なエンドユーザー向けなら、Cellは「ターミナルで生活している開発者・SRE・データエンジニア向け」の道具だ。CSV調査・小規模データ整形・設定値の管理にハマる。
インストールと最初の操作:3分で動かす
公式が提供するインストール経路は3通り。最も簡単なcargo installから見る。
# crates.io から(推奨)
cargo install cell-sheet-tui
# ソースから
git clone https://github.com/garritfra/cell.git
cd cell
cargo build --release
# プリビルドバイナリも GitHub Releases から取得可能
cell コマンドが入れば、引数なしで空のシートが、引数にファイルを指定すれば既存のCSV/TSV/.cellが開く。
cell # 空のシートを開く
cell data.csv # CSVを開く
cell data.tsv # TSVを開く
cell sheet.cell # ネイティブ形式
cell data.psv --delimiter '|' # カスタム区切り文字
cat data.csv | cell # stdinから読み込み
最後の cat data.csv | cell がポイントで、シェルパイプの末端にCellを置ける。curl https://example.com/data.csv | cell のように、ネット越しのデータをそのままターミナルで表示・編集できる。
Vimキーバインド完全マップ:本物のモード編集
Cellの最大の特徴は、Vimの完全なモード編集を表計算に持ち込んだ点だ。Normal/Insert/Visualの3モードが揃っており、移動・編集・削除・コピーペースト・undo/redoまで Vim そのものの操作感で動く。
Normal mode:移動と一括操作
| キー | 動作 |
|---|---|
h j k l |
セル間移動(左下上右) |
gg / G |
先頭行 / 最終行 |
0 / $ |
行頭 / 行末 |
w / b |
次/前のセル |
Ctrl-D / Ctrl-U |
半ページ送り/戻し |
Ctrl-F / Ctrl-B |
フルページ送り/戻し |
H / M / L |
画面の上/中/下端へ |
zz / zt / zb |
現在行を画面中央/上/下に |
Ctrl-O / Ctrl-I |
ジャンプ履歴 戻る/進む |
Marks(位置記録)
| キー | 動作 |
|---|---|
m{a-z} |
マークを設定 |
'{a-z} |
マークの行へジャンプ |
`{a-z} |
マークの正確なセルへジャンプ |
編集
| キー | 動作 |
|---|---|
i / a / Enter |
インサートモードへ |
x |
セルクリア |
dd |
行削除 |
d{motion} |
モーション範囲を削除 |
yy |
行ヤンク |
y{motion} |
モーション範囲をヤンク |
p / P |
ペースト |
Ctrl-A / Ctrl-X |
数値の +1 / -1 |
~ / guu / gUU |
大文字小文字操作 |
. |
直前の操作を繰り返し |
u / Ctrl-R |
undo / redo |
Visual modes(範囲選択)
| キー | 動作 |
|---|---|
v |
通常Visual |
V |
行Visual |
Ctrl-V |
矩形(ブロック)Visual |
gv |
直前の選択を再選択 |
y / d / c |
ヤンク / 削除 / 変更 |
検索とコマンドモード
| キー | 動作 |
|---|---|
/ ? |
前方/後方検索 |
n / N |
次/前の一致 |
* / # |
カーソルセルの値で前方/後方検索 |
f / F |
行内文字ジャンプ |
; / , |
f/Fの繰り返し |
: |
コマンドモードへ |
コマンドモード
| コマンド | 動作 |
|---|---|
:w |
保存 |
:w file.csv |
CSVとして名前を付けて保存 |
:w file.cell |
ネイティブ形式で保存 |
:w! |
強制保存 |
:q / :q! / :wq |
終了系 |
:e file |
別ファイルを開く |
:sort A asc |
列Aを昇順ソート |
:set delimiter=\| |
区切り文字変更 |
:help / :help <topic> |
ヘルプ |
「Vimユーザーなら追加学習コストほぼゼロ」が成立しているのが分かる。ddで行削除、yy/pで行コピペ、uでundoが効くというだけで、Excelで右クリック→メニュー→操作という流れの何倍も速い。
数式:Excel互換の6関数で十分なケースは多い
Cellの数式は Excel互換構文だ。=で始まる文字列は数式として解釈される。
=A1+B1 単純な四則演算
=SUM(A1:A10) 範囲の合計
=AVERAGE(B1:B5) 平均
=COUNT(C1:C100) 数値セルのカウント
=MIN(D1:D20) 最小値
=MAX(D1:D20) 最大値
=IF(A1>100, "high", "low") 条件分岐
サポート関数は SUM / AVERAGE / COUNT / MIN / MAX / IF の6つで、Excelの数百関数と比べると圧倒的に少ない。しかし日常で使う数式の8割はこの6関数で済む、というのも事実だ。
「数式が足りないケース」は明確で、VLOOKUP/INDEX-MATCH、PIVOT、財務関数、配列数式を必要とする業務では Excel/LibreOffice/Google Sheets が必要になる。一方で、「集計値を計算するだけ」「条件付きで分類するだけ」ならCellで完結する。
ヘッドレスCLI:シェルパイプとCIに組み込む
Cellの真価は、ターミナルUIを開かずにCLIだけで完結する操作ができる点にある。これがsc-im含む先行ツールに対する最大の差別化要素だ。
cell sales.cell --read A1 # セルの値を出力
cell sales.cell --read B1:B10 # 範囲をTSVで出力
cell sales.cell --eval '=SUM(B1:B10)' # 数式を評価して結果のみ出力
cell sales.cell --write A1 42 # セルに書き込み(保存)
cell sales.cell --write A1 42 --write B1 7 # 一括書き込み
cell sales.cell --write Total '=SUM(B:B)' --read Total # 書き→読み
cat data.csv | cell --read A1 # stdinからの入力
これがあればシェルスクリプトに組み込める。例えば月次のレポート生成を以下のように書ける。
#!/bin/bash
# 月次売上レポート生成
cell sales-202604.cell --eval '=SUM(B:B)' > /tmp/total.txt
TOTAL=$(cat /tmp/total.txt)
echo "2026年4月 売上合計: ${TOTAL}円" | tee -a report.txt
# データ取り込み・集計・通知を1スクリプトで
cat new-orders.csv | cell --read A:E > consolidated.tsv
cell consolidated.tsv --write Status "Confirmed" --write Date "$(date +%Y-%m-%d)"
CI(GitHub Actions等)でも素直に動く。
# .github/workflows/data-validation.yml
name: CSV Validation
on:
pull_request:
paths:
- 'data/**.csv'
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cargo install cell-sheet-tui
- run: |
cell data/orders.csv --eval '=COUNT(A:A)' > /tmp/count.txt
COUNT=$(cat /tmp/count.txt)
if [ "$COUNT" -lt 100 ]; then
echo "::error::Order count too low: $COUNT"
exit 1
fi
「データ品質チェックをPRごとに自動実行する」のような運用が、重いPandasやNumPyを入れずに、シングルバイナリで完結する。
.cell形式の意味:「Git管理可能なスプレッドシート」
Cellの最も独自性が高いのが、独自の .cellファイル形式だ。これはプレーンテキストで、人間が読める形式で、数式を保持したまま保存できるファイル形式になっている。
XLSXとの構造的な違い
| 観点 | XLSX | .cell |
|---|---|---|
| 形式 | バイナリZip(XML包括) | プレーンテキスト |
| 数式の保持 | あり(XML内) | あり(直接見える) |
| Git diff | バイナリdiff | 行単位の意味あるdiff |
| マージ | 不可能に近い | テキストマージ可能 |
| 人間可読性 | 不可能 | 可能 |
| ツール依存 | Excel/LibreOffice | catでも見える |
これが何を意味するか。「コードと一緒にスプレッドシートをGit管理する」運用が初めて現実的になる、ということだ。
# 例: PR Diff in .cell file
- A3: 100
+ A3: 150
- B3: =A3*1.1
+ B3: =A3*1.2
XLSXだと「ファイル全体のバイナリdiffが出るだけ」で何が変わったか追えない。.cellなら「3行目のA列が100→150に、B列の数式が×1.1から×1.2に変わった」という変更が一目で分かる。
実務インパクトが大きい場面は以下。
| 場面 | XLSX運用の問題 | .cellの改善 |
|---|---|---|
| 設定値・閾値表 | バージョン管理が機能しない | レビュー可能なコミット履歴 |
| データ品質チェック | 期待値の差分が見えない | テストケースとしてGit管理可能 |
| 営業ターゲット表 | 誰が何を変えたか追えない | git blameで責任が明確 |
| 競合解決 | XLSXのマージ不可 | テキストマージで解決可能 |
「スプレッドシートをコードと同じ作法で扱える」という、地味だが重要な転換だ。
sc-im / VisiData / spreadsheet-cli との比較
ターミナル系スプレッドシートはCellが初めての分野ではない。先行勢との比較を整理する。
| 観点 | Cell | sc-im | VisiData | spreadsheet-cli |
|---|---|---|---|---|
| 言語 | Rust | C | Python | Node.js |
| 起動速度 | 超速 | 速い | 数秒(Python) | 速い |
| 編集モード | 完全Vimモーダル | Vim風 | キーバインド独自 | 限定的 |
| 数式 | Excel互換6関数 | @プレフィクスで多数 |
Pythonで自由(強力) | 限定的 |
| ファイル形式 | CSV/TSV/.cell | CSV/TSV/XLSX/ODS/MD | 100+形式(強力) | CSV/TSV |
| 書式設定(色等) | 未対応 | 対応(太字・色) | 対応 | 限定的 |
| グラフ | 未対応 | GNUPlot連携 | matplotlib連携 | 未対応 |
| ヘッドレスCLI | 充実 | Lua/Cで拡張 | Python APIで自由 | 限定的 |
| Windows対応 | 完全対応 | 限定的 | 対応 | 対応 |
| クリップボード | 内蔵 | tmux/xclip/pbpaste | 内蔵 | 内蔵 |
「機能の網羅性」ではsc-imとVisiDataが上だが、「Vimユーザーの操作直感性」「Rustの起動速度」「Windows対応」「シンプルなCLIインタフェース」という4軸でCellが目立つ。
VisiDataはPythonで動くため「ターミナルで起動して数秒待つ」体感だが、Cellは100ms以下で立ち上がる。GitHubの操作で「コミット → CSVを開いて確認 → 閉じる」を繰り返すSREやデータエンジニアにとって、この起動速度差は累積で大きい。
AI時代の「ターミナル表計算」復権論
ここまでの整理を踏まえて、独自視点を1つ。2026年は「ターミナルツール」が復権する時期だ、というのが私見。
理由は単純で、AIエージェント(Claude Code、Codex、Gemini CLI)はターミナルが本拠地だから。エージェントが扱いやすい形にデータを置く設計が広がるほど、
- シングルバイナリ(依存少ない)
- シェルパイプで繋がる
- テキスト形式
- ヘッドレスCLI
を備えたツールの価値が再評価される。Cellはこの4軸すべてを満たしている。「AIエージェントがCellを介してCSVを操作する」というワークフローが普通になる、というのが1年後の予想だ。
ユーザー: 「sales.cellの4月の売上合計を計算して、結果をSlackに送って」
Claude Code: → cell sales.cell --eval '=SUM(B:B)' で合計取得
→ cellの結果を整形
→ curl で Slack Webhook に POST
→ 完了報告
このフローがExcelが必要な状況からCSV/.cell形式へ移っていく圧力を生む。Excelファイルをやり取りしている社内文化をターミナルで完結するワークフローへ徐々に移すツールとして、Cellは現実的な出発点になる。
エージェントが扱うデータが構造化テキストである方が運用が楽になるのは、Google LangExtract(LLMによる構造化抽出)の文脈とも一致する。テキスト中心の世界に再収束しているのが、2026年の流れだ。
実例ワークフロー:Cellをチームで使う3パターン
抽象論だけだと使い方が想像しにくいので、実例を3つ。
例1:データ品質チェックをGit管理する
# expected-values.cell に「期待される閾値」を保存
cell expected-values.cell --read MinDailySales > /tmp/min.txt
cell production-data.csv --eval '=MIN(B:B)' > /tmp/actual.txt
ACTUAL=$(cat /tmp/actual.txt)
EXPECTED=$(cat /tmp/min.txt)
if (( $(echo "$ACTUAL < $EXPECTED" | bc -l) )); then
echo "Quality check failed: $ACTUAL < $EXPECTED" | slack-notify
fi
expected-values.cell を Git で管理すれば、「データ品質の閾値変更」がコードレビュー対象になる。
例2:定型レポート生成
#!/bin/bash
DATE=$(date +%Y-%m-%d)
# データ取得 → Cellで集計 → Markdown出力
curl https://api.example.com/orders.csv \
| cell --read A:F \
> orders-${DATE}.tsv
cell orders-${DATE}.tsv --eval '=SUM(D:D)' > total.txt
cell orders-${DATE}.tsv --eval '=COUNT(A:A)' > count.txt
cat <<EOF > report-${DATE}.md
# 日次レポート ${DATE}
- 総注文数: $(cat count.txt)
- 売上合計: $(cat total.txt) 円
EOF
「ExcelやNotebookを起動せずに、シェルだけで月次・日次レポート」を作る最短経路になる。
例3:CSVの一括変換ジョブ
# 複数CSVを統合し、特定列を変換
for f in inputs/*.csv; do
cell "$f" --read A:Z >> consolidated.tsv
done
cell consolidated.tsv --write StatusCleared "Yes" --write CheckedAt "$(date)"
これら全部、追加の依存パッケージが要らない(cargoだけで入る)のがCellの強みだ。Pandas + Pythonで同じことをやろうとすると、venv + 依存解決で一手間増える。
日本語データを扱うときの注意点
日本語のCSVをCellで扱うときの実践的な注意点を整理する。
| 論点 | 状況 | 対処 |
|---|---|---|
| 文字エンコード | UTF-8前提 | Shift-JISのCSVは事前に iconv -f sjis -t utf8 で変換 |
| 全角空白 | 検索・ソートで意図しない挙動の可能性 | nkf 等で半角に正規化してから読み込み |
| カラム幅 | 日本語は1文字で2幅、自動調整不十分なケース | 必要に応じて手動で列幅を広げる |
| BOMの扱い | UTF-8 BOM付きCSVが日本では多い | 事前に sed -i '1s/^\xEF\xBB\xBF//' で除去 |
| ソート(あいうえお順) | ロケール依存 | LC_ALL=ja_JP.UTF-8 cell ... で起動 |
# Shift-JIS の日本のCSVを Cellで扱う準備
iconv -f shift_jis -t utf-8 input-sjis.csv | sed '1s/^\xEF\xBB\xBF//' > input-utf8.csv
LC_ALL=ja_JP.UTF-8 cell input-utf8.csv
これで日本のお役所CSVも、Cellで開ける。
1年後の予想:Cellが起点にする3つの変化
予想1:「CSVをExcelで開く」が老害行動になる
エンジニア界隈で「CSVをExcelで開いて編集する」のがダサく見えるフェーズが来る。Cellのような軽量ツール+.cell形式が普及すると、「CSVをそのままターミナルで開ける人」=スマートなエンジニアという認識が広がる。Vim/Emacsの普及プロセスと似た波が来る、という予想だ。
予想2:「.cell形式」が設定ファイル領域に進出する
YAML/TOML/JSONで管理している「行と列の構造を持つ設定」(環境変数の対応表、ロール定義、レート制限の設定等)が、.cell形式に置き換わる。Git diffが意味を持ち、テキストマージが可能というメリットは、テーブル状データ全般に効く。
予想3:「ターミナル表計算 + AI」のスタックが標準化する
Claude CodeやGemini CLI が.cell形式を直接生成・編集するワークフローが標準化する。「スプレッドシートをExcelで作る」から「LLMにプロンプトで指示してCellで開く」への移行が、データ系職種で進む。
アーキテクチャ:cell-sheet-coreとcell-sheet-tuiの2クレート設計
CellのRust実装は 2つのクレートに分離されている。これは中規模のRustプロジェクトで模範的な設計だ。
| クレート | 責任 | 依存 |
|---|---|---|
cell-sheet-core |
データモデル、数式エンジン、ファイルI/O | TUI非依存 |
cell-sheet-tui |
ratatui描画、Vimモード、イベントループ | cell-sheet-core を利用 |
この分離が何をもたらすか——cell-sheet-coreをライブラリとして使えば、TUIを介さずに別アプリにスプレッドシート機能を埋め込める。例えば:
- WebアプリのバックエンドにRustサーバを使い、
cell-sheet-coreで表計算ロジックを実装 - VS Code拡張やJetBrains Pluginの内部処理に組み込む
- バッチ処理ツールの数式評価エンジンとして使う
「TUIアプリだけど、コアロジックは別アプリでも使える」という設計は、コードベースの再利用性を最大化する。Cellが将来、別フォーマット対応・Web版・GUI版に展開する余地を残している証拠でもある。
// cell-sheet-core を別プロジェクトで使うイメージ
use cell_sheet_core::{Sheet, Formula};
let mut sheet = Sheet::new();
sheet.set_cell("A1", "10");
sheet.set_cell("A2", "20");
sheet.set_cell("A3", "=SUM(A1:A2)");
println!("{}", sheet.evaluate("A3")); // 30
これはあくまで概念例だが、TUIロジックとデータロジックの分離は、Rustプロジェクトの設計原則として参考になる。Rustの設計パターン全般を整理した Rustコーディング標準 などとも整合する流れだ。
ratatuiとは:CellのUIを支えるTUIフレームワーク
CellのUIは ratatui というRust製のTUI(ターミナルUI)フレームワークで描かれている。これは2026年現在、Rust界隈で最も活発なTUIフレームワークだ。
| ratatuiの特徴 | 中身 |
|---|---|
| 即時モード描画 | フレームごとに全体を再描画する設計、シンプルで予測可能 |
| クロスプラットフォーム | crossterm をバックエンドに、Linux/macOS/Windowsで動作 |
| ウィジェット豊富 | Block, Paragraph, List, Table, Chart など |
| 型安全 | Rustの型システムで描画ロジックの安全性確保 |
| GitHub Stars | 11k+ |
ratatuiは「VimとTUIを一緒に学べる教材」として優秀で、Cellのソースコード(特にcell-sheet-tui)を読むと、実用ratatuiコードのお手本になる。Rustでターミナルアプリを作りたい人がCellを参考にするのは合理的だ。
数式エンジンの実装:簡素だが教育的
Cellの数式エンジン(SUM/AVERAGE/COUNT/MIN/MAX/IF)は、シンプルなパーサ + 評価器で実装されている。Rustで再帰下降パーサを書く練習として、これも教育的だ。
// Cellの数式エンジン構造(概念)
enum Expr {
Number(f64),
String(String),
Cell(CellRef),
Range(CellRef, CellRef),
Func(String, Vec<Expr>), // SUM(...), IF(...) など
BinOp(Op, Box<Expr>, Box<Expr>),
}
fn eval(expr: &Expr, sheet: &Sheet) -> Value {
match expr {
Expr::Number(n) => Value::Number(*n),
Expr::Cell(c) => sheet.get(c).clone(),
Expr::Range(s, e) => Value::Range(sheet.range(s, e)),
Expr::Func(name, args) => apply_func(name, args, sheet),
Expr::BinOp(op, l, r) => apply_binop(op, eval(l, sheet), eval(r, sheet)),
...
}
}
実装はシンプルだが、「数式エンジンとは何か」を理解する出発点として、Cellのソースは読む価値がある。Excelのフル機能を再現するのは無理だが、6関数だけなら 300行くらいのRustコードでカバーできる、という感覚が掴める。
まとめ:「ターミナルで完結する分析ツール」を増やす一手
Cellは派手な新規概念のツールではない。「Vim操作で表計算が動く」「Rustで超軽量」「.cell形式でGit管理できる」「ヘッドレスCLIでシェルに馴染む」という4軸のシンプルなツールだ。
- Vim派の開発者:操作の延長で表計算が触れる、追加学習ほぼゼロ。
- データエンジニア:CIのデータ品質チェックに組み込める。
- SRE:本番サーバ上でCSVを直接いじれる。
- 個人開発:Excelを起動せずに済む選択肢が増える。
Excel/LibreOfficeの代替を全面的に狙うものではないが、「軽くて速くて、Vimの感覚で動く」という得意分野では、2026年現在もっとも完成度の高い選択肢の一つだ。
Cell vs Pandas/jqの位置取り:重なる部分・重ならない部分
「ターミナルでデータ操作」の選択肢として、Cellと並んでPandas(Python) と jq が候補に上がる。それぞれの得意領域を整理する。
| 観点 | Cell | Pandas | jq |
|---|---|---|---|
| 対象データ | CSV/TSV/.cell | あらゆるデータ(JSON/Excel/SQL/Parquet等) | JSON |
| 起動 | 即座 | Python起動が必要 | 即座 |
| 操作方式 | Vim操作 | コード | クエリ言語 |
| 数式・集計 | Excel互換6関数 | 数百関数 | jqフィルタ |
| 視覚的編集 | 可能 | Notebookで限定的 | 不可 |
| 大規模データ | 数十万行まで | GB級も可 | ストリーム処理 |
| 学習コスト | Vim経験者は低 | プログラミング | やや高 |
Cellが圧倒的に強いのは「視覚的に編集できる」点。Pandasでdf.iloc[3, 2] = 100 と書く操作が、Cellでは gg3j2l i 100 Esc で済む。「データを目で見て直接いじる」という昔ながらの操作感を、ターミナルで再現できる。
逆に「100万行のデータを集計して可視化する」ような重い分析業務は、Cellではなく Pandas + Jupyter が圧勝する。「軽い編集はCell、重い分析はPandas、JSONはjq」の3分業が現実的なワークフローになる。
チームでの導入:標準化のメリット
Cellをチームで使うとき、「.cell形式を社内標準化する」かどうかが分岐点になる。
.cell形式を標準化する場合
| メリット | デメリット |
|---|---|
| Git管理可能なスプレッドシート文化 | エクスポート時に変換が必要なケース |
| コードレビューの対象に | 社外(顧客等)に渡す時はCSV/XLSX変換 |
| 数式付きでバージョン管理 | 全員のCellインストールが前提 |
CSVを引き続き使う場合
| メリット | デメリット |
|---|---|
| 既存ツールとの互換性最大 | 数式は失われる |
| 学習コストゼロ | バージョン管理の不便さは残る |
「設定値表・閾値表は.cellで、外部やり取りはCSVで」のハイブリッドが、現実的に運用しやすい形だ。社内のCLAUDE.mdにこの方針を書いておけば、AIエージェントも「.cellで保存して、と言われたら.cellを使う」のように判断する。
エンジニア以外への展開可能性:「マーケがCSVを開く」習慣を変える
ターミナルツールというと「エンジニアだけのもの」と思われがちだが、Cellは「マーケ・営業・広報のCSV業務」にも展開可能性がある。理由は以下。
- インストールが簡単(macOSなら
brew install相当 /cargo install/ バイナリDL) - VimではなくExcel風キーバインドをカスタマイズ可能にすれば学習コストが下がる
.cell形式が共有可能で、エンジニアと非エンジニアが同じファイルを編集できる
すぐに普及するわけではないが、「マーケ担当がコマンドラインでCSVを開く」ことが珍しくない時代が、5年以内に来る可能性はある。AIエージェントによる作業自動化が広がるほど、「人間が触る作業空間 = ターミナル」の比重が上がるためだ。
FAQ
Q. Excelファイル(.xlsx)は開けますか?
A. 現状(v0.4.0時点)はXLSX非対応です。CSV/TSVで保存し直してから開く必要があります。XLSXサポートは将来的なロードマップに含まれる可能性がありますが、現時点ではsc-imのほうが多形式対応では優れます。
Q. 数式の関数はもっと増えますか?
A. 現在の6関数(SUM/AVERAGE/COUNT/MIN/MAX/IF)から拡張される可能性は十分あります。MITライセンスでRust実装なので、必要な関数を自分でPRを送る選択肢も現実的です。コードベースは比較的読みやすく構成されています。
Q. Cellの.cell形式は他ツールで開けますか?
A. プレーンテキスト形式なので、cat や vim で開いて中身を読むことは可能です。ただしCellの数式エンジン無しでは数式の評価値は得られません。「人間可読 + Cell専用の評価」という位置付けです。
Q. 巨大なCSV(100万行)は扱えますか?
A. ratatui + Rustの実装上、メモリ展開しているため1ノードのRAMサイズが上限になります。100万行(数百MBクラス)なら最近のラップトップで扱えますが、数十GBクラスは厳しいです。大きなデータは事前にgrep/awk/jqでフィルタしてからCellで開くのが定石です。
Q. Vimのキーバインドは全部カバーされていますか?
A. 基本的なモーション・編集・検索・コマンドモードはほぼ網羅されています。一方、.vimrc相当の設定ファイルでキーバインドをカスタマイズする機能や、マクロ(q)は現時点では未対応です。今後のバージョンで追加される可能性があります。
Q. クラウドストレージ上のCSVをそのまま編集できますか?
A. CellはローカルファイルシステムのCSV/TSV/.cellを扱う設計です。クラウドストレージ(S3 / Google Drive 等)からは事前にダウンロードする必要があります。aws s3 cp s3://bucket/file.csv - | cellのようにstdin経由なら直接ターミナルで開けます。
Q. AIエージェントから操作させたい場合のベストプラクティスは?
A. ヘッドレスCLI(--read / --write / --eval)を使うのが最も確実です。Claude Codeのスキルとして「.cellファイルを編集するスキル」を作ると、自然言語からの指示で集計・編集・レポート生成が動かせます。
Q. Windows でも快適に動きますか?
A. 完全対応しています。sc-im等の先行ツールがLinux/macOS主体なのに対し、CellはWindowsを最初から対象に設計されています。WSL不要でPowerShell上から直接動きます。
Q. プラグイン機構はありますか?
A. v0.4.0時点では公式のプラグイン機構は提供されていません。拡張したい場合は、cell-sheet-core をライブラリとして取り込んだ別アプリを作るか、フォークしてビルドする方式になります。今後の拡張機構の追加はGitHub Issuesで議論されています。
Q. リアルタイム共同編集はできますか?
A. ローカルのファイル単位で動くため、Google Sheetsのようなリアルタイム共同編集は対象外です。Gitリポジトリの.cellファイルを共有→ローカルで編集→pushしてマージという流れが、Cellでの「共同編集」の現実的な形です。これがコードレビュー文化と一体化したスプレッドシート運用の出発点になります。
Q. 既存のVimプラグインと競合しませんか?
A. CellはVimそのものではなくVim風キーバインドを内蔵した独立アプリです。.vimrcは読み込まれません。Vimのプラグイン(NERDTree・Telescope等)との競合は発生せず、Vim自体に影響を与えません。
Q. 数値以外(日付・通貨)のフォーマット表示は?
A. v0.4.0時点では基本的な数値・文字列の表示が中心で、書式設定(通貨記号・桁区切り・日付フォーマット)は限定的です。数値は内部的にfloatで保持され、表示時にそのまま出力されます。書式が重要な業務では、エクスポート時に整形スクリプトを噛ませる運用が現実的です。
Q. Cellで作った.cell形式を、他人がCellなしで読めるようにするには?
A. :w output.csv でCSVに書き出せば、誰でも開けます。ただし数式は評価値に置き換わる(フラット化される)ため、.cellの元の数式は失われます。「数式付きの.cellと配布用CSVを両方Gitに置く」のが運用の定石です。