🦧

人生3回目のCSVエディタを作っている話

2024/09/12に公開
6

私は今、人生で3回目のCSVエディタを作っています。もはや狂気です。
なぜ作り始め、なぜ今また作り直しているかみたいな話を書きたいと思います。

About Me

  • 株式会社ヘンリーでソフトウェアエンジニア & アーキテクト的なことをしつつ、個人開発してます。
  • Social accounts:

今までに作ったCSVエディタたち

初代SmoothCSV(2011年〜)

https://smoothcsv.com/

私は新卒で入った会社で公共系のシステム開発に従事しており、CSVを扱う機会が多くありました。(今は医療スタートアップにいますがこの業界もよくCSVが現れます。)
既存のCSVエディタをいろいろ試してみたのですが、どれも求めるものと違うと感じ自分で作るしかないと思い、作りました。


SmoothCSV。時代を感じるUI

  • Java / Swingで作成 (当時Javaくらいしか習熟している言語がなかった)
  • 行によって列数が異なるCSVにも対応
  • キーマクロ、SQL、Grep検索、フィルタとか、なかなか高度な機能も
  • 大容量ファイルでも高速に動作
  • Windowsのみ
  • 日本語版のみ
  • フリーウェア("シェアウェア"にまだ夢のある時代だったのであわよくば...とかちょっと思っていたけど)
  • 影響を受けたアプリ: Excel, Sublime Text, Eclipse, サクラエディタ等

それなりにユーザーが付き、ネットや雑誌で紹介されたりもしました。


アイピー11月号

今でも楽天出品の手順紹介ページとかに載っていたりします。
ちなみにSmoothCSVという名前は、マイケルジャクソンのSmooth Criminalから取りました。

二代目SmoothCSV(2016年〜)

https://smoothcsv.com/2

初代SmoothCSVは新卒に毛が生えたレベルの技術で作ったということもあり、コードが汚く、メンテナンスが大変でした。
たまに来る問い合わせメールに対応するのも面倒になり、オープンソースにしてみんなで勝手にメンテナンスしてくれれば楽じゃんという浅はかな考えで作り直してGitHubに公開しました。


SmoothCSV 2

  • これもJava / Swingで作成(コードの再利用はほぼなし)
  • Javaランタイムを同梱してJavaのインストールを不要にした
  • 初代の機能をほぼ実装
  • 英語ファースト + 日本語ローカライゼーション
  • IDEの設計に影響を受けた
    • コマンドシステム(操作をコマンドとして用意し、キーバインドやメニュー、コマンドパレットから実行)
    • プラグインちっくな構造
    • コマンドやプラグインの遅延ロード(起動速度かなり改善される)
  • Windows、macOSに対応
  • CSVパーサーを自作し高速化
  • 影響を受けたアプリ: Excel, IntelliJ IDEA, Atom等

結局本業に忙殺されてメンテナンスが面倒になり、特にマーケティングもせずBeta版のまま放置していました...
macOSが更新されるたびに挙動や見た目がおかしくなっていくのが悲しかったです。やっぱJVMでデスクトップアプリ作るもんじゃない。。。

今作っているもの

三代目SmoothCSV(仮) (2024年〜)

2023年末頃にSmoothCSV 2に対してPull Requestを頂きましたが、もはや当時の開発環境の再現すらできずに泣く泣くクローズしました。その時にPR主から "SmoothCSV has been extremely helpful in my day-to-day work routine." という言葉を頂き、また作り直してみるか...?とちょっと思い始めました。
その後、世の中のCSVエディタをいろいろ調べていたのですが、これが覇権を取るだろうと思えるほどのものがまだないと感じ、作り直すことを決意しました。


SmoothCSV 3

  • Tauri(Rust, TypeScript, React)で作成
    • CSS最高(Swingでデザインするの辛すぎた)
    • 起動速い(JVM遅すぎた)
    • Tauri v2は良い感じだけどまだドキュメントが充実していない
  • VSCodeのAPIや構想をかなり参考にしている
    • 将来的に拡張機能を作れるようにというのもあるが、標準機能を実装しやすくするためという狙いもある
  • 一旦「SmoothCSV 3」と命名しているが、アプリ名やアイコンは変える予定
    • CSV以外にもテーブルデータ全般のエディタになりたい
  • 影響を受けたアプリ: VSCode, Google Sheets, SmoothCSV2等

内部の状態管理やAPIを構成するところの試行錯誤でかなり時間を使ってしまいましたが、なんとか形になりつつあります。
技術的にはなかなかイケてることをやっている気がするので、そう遠くないうちに何かしら技術記事を書きたいと思います。

試用版(macOSのみ)

α版を公開しました。まだ最低限の機能しかありませんが、よかったら使ってみてください。

https://github.com/kohii/smoothcsv3

  • まだApple Developer Programに登録していないので、開くためには一手間必要です
    • (この状態で使ってもらうのハードル高すぎるので早めに登録しよう...。特に非エンジニアには難しそう)
  • β版までにWindowsもサポートする予定です

ロードマップ

大まかにこんな感じで考えています。

  • α版をリリース
    • 基本操作の実装(ファイル読み書き、編集操作、Undo/Redo、コピペ、検索/置換、コマンドパレット等)
  • β版をリリース
    • アプリ名を変更。アイコンとかも変える
    • 旧SmoothCSVの全機能を実装
    • ウェブサイトを作成
    • 自動更新機能
    • 設定
    • 日本語ローカライゼーション
    • Windows対応
    • ダークモード
  • 安定版をリリース
    • Appleに99ドル払う(Developer Program)
    • Product Huntでローンチ
    • 他言語ローカライゼーション
    • パフォーマンス向上
    • 安定性向上
  • その先
    • 拡張機能を作れるようにする
    • オープンソース化
    • 他のファイルフォーマットのサポート
    • AIアシスタント

目指すところは

  • 最強のCSVエディタ(エンジニアにとっても非エンジニアにとっても)
  • 表形式エディタ界のVSCode

みたいな感じです。
オープンソースにするかどうかはまだ迷っているところです。

マネタイズ

これまで通り無料で使い続ける選択肢をなくすことはありません。
が、年初からプライベートの時間の8割以上を開発に費やしており、世の中に求められるソフトウェアになれた暁には何かしらの形で収益を得たいというのが本音です...。

いずれにしてもまずはより多くのユーザーに満足してもらうことが先決です。

おわりに

最後まで読んでいただきありがとうございました🙇‍♂️
質問や要望、フィードバック等があれば、コメントやDMまたはIssueでお知らせください。

おまけ

開発を支援して頂けると嬉しいです。

https://buymeacoffee.com/kohii

Discussion

kkddkkdd

こんにちは。
CSVファイルはsmoothcsv3で開いて編集すべしという常識が普及(?)すると良いですね。
そして、CSVファイルをExcelで開く人が一人でも減るよう願っております(データ取り込みの場合を除き)。(納品ファイルを壊してしまう人がいたなど、多くのトラブルを経験しましたので)

kohiikohii

ありがとうございます!多くの人に使ってもらえるプロダクトになれるようにがんばります!

PaalonPaalon

“tauri csv editor” で日本で日本語設定で Google で検索したらトップにこの記事が出てきました。国際的にも CSV エディターって需要はめちゃくちゃ高いはずなのに意外と OSS で(free and open source でなくても無料で)いいのがないので、自作しようと思ったけれども意外と大変で、色々探してました。今から試してみたいと思います。

kohiikohii

いいのがないので、自作しようと思ったけれども意外と大変で、色々探してました

めちゃくちゃわかります。笑

SmoothCSVをオープンソースにするかどうかはまだ迷っているところです...
が、無料ですのでぜひ使ってみてください!

kkddkkdd

こんにちは。
SmoothCSV 3 のCSVファイルのデータロードは高速かつ表示に至るまで早いとも思いました。これまで私は、データ表示には QuickLook (Mac, Windows) を使っておりましたが凌駕するようです。

なお表示機能を独立させ、普及すると良いだろうとも思いました(加えて QuickLook もそれを採用して欲しい)。データ表示に関しても、不幸な歴史が続いているという気がしておりますので。

kohiikohii

なるほど、Quick Look のことは全然考えたことがなかったです...
手元で試してみましたが結構遅いですね(5MB程度のCSVで20秒くらい)

Quick Look の開発には詳しくないですが、Tauri(SmoothCSV 3 で利用しているフレームワーク)はこれに未対応のようです...。技術的に可能になったら対応したいと思います!