2024年12月23日
CSVエディタ「Cassava Editor」開発者
あすかぜ(海津 智宏)
ソフトウェアエンジニア。1981年生まれ。2006年に東京工業大学(現・東京科学大学)修士課程を修了後、大手電機メーカーや社会人博士課程(情報科学)を経て、外資系IT企業に勤務。2000年には、個人サイト「あすかぜ・ねっと(当初はあすかぜ factory)」を開設。同年、フリーソフト「Cassava Editor」を公開。以来、24年間CSVエディタの更新・保守を続ける。好物は雪印北海道100のチェダー クラッシュとゴーダ クラッシュ。3児の父。
https://www.asukaze.net/
X
2000年に公開されたCSVエディタ「Cassava Editor」は、個人開発のフリーソフトとして20年以上も更新が続いている数少ない例のひとつです。CSVファイルの数値を自動補正せずそのまま表示するシンプルなエディタで、「Microsoft Excelと異なり、セルの先頭に数字『0』を入れても勝手に消えない」「ファイル全体で10MB未満の軽量設計」といった直感的で軽快な使い心地が人気を博してきました。開発者は、ソフトウェアエンジニアのあすかぜさんです。
Excelに加え「LibreOffice」やGoogleスプレッドシートといった有力な選択肢もCSV編集に存在する現在、「Cassava Editor」の名を耳にする機会は減ったかもしれません。あすかぜさん自身、2018年にはX上で「いい加減、賞味期限切れなソフト」とつづっています。それでも、アップデートの手が止まることはなく、サポート用の掲示板に寄せられたユーザーの問い合わせには、欠かさず24時間以内に支援するという徹底した対応を続けています。
一体、どんな思いでこのツールを手がけ続けてきたのか? そう聞くと、あすかぜさんは「そもそものきっかけは、各地の郵便番号の桁が変わったことでした…」と語りはじめます。約四半世紀の物語を通して見えてきたのは、すさまじいまでの、ユーザーファーストの精神でした。
あすかぜ:きっかけは1998年。全国で新しい郵便番号制度が始まり、各地の郵便番号が、3桁や5桁から7桁に変更されたことです。
私の両親は知人が多く、毎年12月に入ると、約300通もの年賀状をしたためて方々に送っていました。手書きだけでは用意が追いつかないので、宛名印刷のパソコンソフトを使ってはがきにプリントしていました。しかし、郵便番号の桁数が変わったことで、それまで用いていたソフトが使えなくなったのです。なので、新しいソフトに買い替えようという話が家族会議に浮上しました。
それまで使っていたソフトは、登録してある送付先名簿をCSV形式でエクスポートできました。当時、高校生だった私は「CSVデータを印刷データに変換する程度なら、自分でソフトをつくれるんじゃないか?」と考え、7桁対応の宛名印刷ソフトを自作しました。これが「Cassava Editor」の前身です。初期名は「Athena(宛名)」でした。
ついでに「宛名印刷だけでなく住所や名前の情報もソフト上でいじれたら、住所変更のあった人がいた時に楽じゃないか?」とも考えて、CSV内の各フィールドを編集できる機能を追加しました。すると、いつの間にかCSV編集に適したツールとして「Cassava Editor」が完成していたのです。その名残で、今もメニュー内には宛名印刷機能が残されています。
あすかぜ:大学進学時に、“ホームページ”を開設したのが背景にあります。
ブロードバンド黎明期の2000年当時、周りの学生はこぞって「Yahoo!ジオシティーズ」などに個人サイトを開設していました。私も流行りに乗って、「あすかぜfactory」(現あすかぜ・ねっと)というサイトをつくってみたのですが、掲載コンテンツに迷いまして。
普通の学生ですし、発信に向いた魅力的なコンテンツが特段なかったのですが、掲示板や日記だけというのも物寂しいと感じたんですよ。どうしようか悩んでいたときに、自分がCSVエディタやちょっとしたゲームなどを趣味でつくっていることを思い出して「Cassava Editor」を公開し、「自作ソフト」をメインコンテンツにすえることにしました。
あすかぜ:はい。それも友人に向けて自分のソフトを紹介しつつ、仲間内で交流するのが主な目的でした。
でも「Cassava Editor」の公開から少し経ったら、見知らぬネットユーザーからも、サイトの掲示板に「使ってみました、よかったですよ」とのコメントが寄せられるようになったんです。Web上のフリーソフトを「無料ソフト100選」などと銘打って紹介する雑誌に、掲載いただくこともありました。
軽い気持ちで公開したシンプルなソフトに、ネットを通して見知らぬ人からも反応がもらえるというのは完全に予想外でした。同時に、いろんな人に喜んでもらえるのが「とても気持ちがよい」と強く感じたものです。
「そんなに喜んでくれるなら」と、次第に「Cassava Editor」のメンテナンスに夢中になっていきました。
あすかぜ:把握している限りですが、2000年の時点では、CSV編集専門のフリーソフトは他になかったような気がしています。当時から Excelで開くのが当たり前でしたし。
しかし2000年代半ばになると、「Cassava Editor」の他にも、CSVエディタがちらほら登場し始めました。
あすかぜ:いいえ。一部のCSVエディタに触れてみて「うっ、『Cassava Editor』よりも洗練されていてかっこいいなあ」と思ってからは、他ソフトの存在をあえて意識しないようになりました。見て見ぬふりです(笑)。その代わりに、「自分なりのベスト」なソフトをつくっていこうと決めました。
あすかぜ:「実装における、自分なりの正解」だけを追求するために、余分な情報をインプットしないほうがいいと考えたんです。他ツールに振り回されると、開発方針が変にぶれて、精神的に疲れてしまうからです。
例えばUI面でいうと、Excelは列をA、B、C…Zとアルファベット順で命名しますよね。Zまで至ると、AA、AB、AC…AZとさらに英字が重なっていく。でも私は、こうした仕様を一切参考にしません。数字順に「1、2、3…99」とした方が自然で直感的だと思うので、「Cassava Editor」ではアラビア数字だけで行・列を表記しています。
もちろん、普通の開発なら競合ソフトの良い面も悪い面も分析し、より優れた設計を練って自分のプロダクトを改善するのが正道でしょう。
でも、私は学業や仕事の合間の限られた時間で「Cassava Editor」のメンテナンスをしているので、あれもこれもと取り入れて開発するのはリソース上難しいんですよ。それに本音を言うと、分析を通して「他のソフトの優れた面」と向き合っていると、技術やセンス面で自分が負けたような気持ちになってしまうんです…。
そんなことが続けば、いずれ心が折れてしまい、開発自体を投げ出すことになりかねない。現状の仕様でもユーザーには受け入れられていますし、中止のリスクを冒すよりは、自分なりのベストだけを無理なく追求した方が結果的に皆にとっていいのかなと。そんな気持ちで、開発に臨んできました。
あすかぜ:「ユーザーを驚かせないこと」です。
あすかぜ:余計な機能をいきなり追加してユーザーに押しつけることは決してしないよう心がけています。ユーザー体験を損なわずに済みますし、私自身も無駄なリソースをかけて開発する必要がなくなるので。
これは公開当初から意識しているのですが、過去にいちど、この決めごとに反してしまったことがあります。
昔、ふと「枠に収まりきらないほど長い文字列が入ったセルにマウスポインタを重ねると、テキストの全文をポップアップで表示する」という機能を思いつきました。「いちいちセル枠を拡張しなくても中身を確認できて便利じゃん!」と思い、特にユーザーには機能追加の告知をせず実装を行いました。
しかしその後、サポート用の掲示板に「編集時にあのポップアップが邪魔でセルがクリックできない時があります」との書き込みが寄せられました。「え、邪魔なの?」と驚き、Google検索で口コミを調べたら、Twitter(現X)上でも「『Cassava Editor』って便利だけど、ポップアップがうざいよね」などと言われていたんです。よかれと思って追加した機能なのですが、何も告知がなされないままUIに大きな変更が加わるのは、ユーザーにとって必ずしも良いことではないと気づき、がっくりとしました。
「驚かせないこと」をより徹底するようになった、大きなきっかけです。2017年のアップデートで、このポップアップ機能はデフォルト設定では切り、必要に応じてオプションでオンにできるよう変更しました。
あすかぜ:更新に関する仕様が挙げられます。
「Cassava Editor」公開から数年経つと、世の多くのソフトウェアには、ユーザーの起動後に最新のアップデートがないか確認して通知したり、自動更新をかけたりする機能が搭載されるようになっていきました。
「それ便利でいいな」と思い、私も2010年に「Cassava Editor」に更新通知や自動更新機能の追加を検討しました。しかし、「待てよ」と踏みとどまりました。「更新のためとはいえ、『Cassava Editor』がいきなり勝手にネット接続をするようになったら、ユーザーを驚かせるかもしれない…」と感じたのです。
結局、自動化はせず、任意でアップデートの確認を行う仕様に落ち着きました。ユーザーがヘルプメニュー内の「更新の確認」のボタンを押すまでは、「Cassava Editor」がネットに接続することはありません。
あすかぜ:でも、ユーザーを驚かせることがない領域では、好き勝手に機能を追加していますよ。具体的には、「Cassava Editor」に搭載しているマクロ機能がそれにあたります。これはJavaScript風に記述できる独自言語により、様々な編集作業を自動化できる、というものです。
マクロ機能においては、私の好奇心を満たすために、ラムダ式で関数オブジェクトを生成できるよう関数定義に変更をかけたり、使える演算子や組み込み関数を増やしたりと、気の向くままにいじっています。開発のきっかけは、大学時代。授業でコンパイラのつくり方を教わった時に「自分でも言語をつくってみたい」との衝動に駆られ、夏休みを潰して実装したんです。
マクロはライト層なら深く触らない領域なので、こっそりと仕様を追加しても、特にユーザーを驚かせることもありません。しかもマクロ言語を拡張し続けた結果、ユーザーの「こういう機能が欲しい」という要望の多くを、マクロのサンプルコードを提示することで叶えられるようになったんですよ。「特殊な文字を含む行を一括削除できる機能が欲しい」「日付の形式を一括変換したい」といったリクエストがきてもマクロだけで対応可能で、いちいち本体をアップデートせずに済みます。
あすかぜ:それこそが、私のモチベーションの源泉ですから! 24時間以内にお返事することを、開発以上に最も大事にしているくらいです。なぜならば、その瞬間だけは、間違いなく誰かを「ハッピー」にできるからです。
実をいうと、私は「Cassava Editor」のユーザーが実際に何人いるのか把握できないんですよ。サイトからのダウンロード数を見ても、ダウンロードしたきり使わないユーザーや、フリーソフトを収集しているbotが混在している可能性が大いにあります。また、先ほど「ネットには勝手に接続しない」という話をしたように、ユーザーが手動で更新確認した時しか「Cassva Editor」はオンラインにつながらないので、アクティブユーザーの集計ができないのです。
この24年間、ユーザーを喜ばせるために開発を続けてきたのですが、現在も使ってくださっているユーザーははたして何人いるのか? 私はどのくらいの人々を幸せにしているのか? それが、私にはわからない。
それでも、掲示板に「困っています、助けてください」と書き込みがあったとき、その投稿者は確実にこのソフトを使っているわけじゃないですか。そして、その困りごとをすぐに解決できれば、「少なくとも、掲示板の向こうにいるあなたのことはハッピーにできた!」という実感が得られるんですよ。だから、どんな困りごとだろうと、掲示板に書き込みをしていただくのがすごくありがたいのです。
あすかぜ:ある企業さんから「ソースコードを売ってほしい」と連絡があったのが発端です。「業務の中で『Cassava Editor』を使いたいが、社内規定により素性の知れないソフトウェアは扱えないため、ソースコードをもとに自分でビルドしたい」という内容でした。
ソースコードの提供自体は大歓迎でした。ですが「Cassava Editor」の開発環境がネックでした。「Cassava Editor」は「C++ Builder」というツールの無料版で開発しており、ビルド時にもこれが必要になるのですが、一定規模の組織が利用する場合は「C++ Builder」の無料ライセンスが使えず、10万円以上の費用がかかるのです。そうお伝えしたら、返信がパタッと止まってしまって。
連絡が途絶えたことは残念でしたが、「なるほど、そういう要望もあるのか」と妙に納得もしました。確かに、私が自作ソフトにマルウェアを仕込んでいない保証はどこにもないですから、ソースコードを公開してほしいという意見も一理あるなと。「ならば公開してしまえ」と勢いそのまま、GitHubにリポジトリを作成しました。
あすかぜ:はい。特に「Cassava Editor」で儲ける気はないので。
ライセンスへのこだわりもないため、必要な人には好きに改変してもらいたくて、自由度の高いMITを選びました。
公開から約3年経ちますが、寄せられたPull Requstは、UI内アイコンの縮尺に関する内容が1件のみ。それはマージしました(笑)。
あすかぜ:アイコンの変更だけとはいえ、とてもうれしかったですよ。「共同開発」にも憧れはあったので。
実はソースコード公開前の2021年、掲示板でユーザーサポートをしていると、他のユーザーさんが2人、やりとりに加わってくださったことがあったんです。
その時は、「大量の行を削除すると動作が遅くなる」という問題が浮上しており、私はどのように問題を解決すべきか悩んでいました。しかし、そのユーザーさんたちが解決に向けて協力してくれました。ある人は画面描画を一時的に停止し処理負荷を軽減できるAPIの活用を提案し、別の人は具体的なサンプルコードで所要時間を計測して「Cassava Editor」の修正案を提示してくれました。まるで即席の開発チームのように、皆で知恵を出し合った結果、次のアップデートで削除処理を大幅に高速化することに成功したのです。
Cassava Editorの開発ではいつも自分ひとりで頭を悩ませてきたから、皆で協力して問題を解決していったあの過程は、とても新鮮で、楽しいものでした。
振り返ると、GitHubにソースコードを公開したのにも、その経験が無意識に影響していたのかもしれません。ニッチなソフトですから、今さら正式な共同開発者までは求めませんが、単発的にでもいつかまた協力してくれる人が現れたら、すごくうれしいです。
あすかぜ:「Cassava Editor」が必要とされている限りは、開発と保守を続けていきたいです。今でもなお、このソフトを使ってくださっているユーザーがいるのは事実ですから。でも、もしいずれ 「Cassava Editor」を求めてくれる人がいなくなったら、無理に「延命」せず開発をすっぱりやめるつもりです。
確かに、「Cassava Editor」には強い思い入れがあります。でも、使い勝手や機能性など全ての面でこのエディタを凌駕するソフトが現れたら、ユーザーの皆さんにもそちらに乗り換えていただく方が良いと思うのです。
私は常々、「世界が今より少しでもハッピーになるとうれしい」と思っていますが、私の体はひとつですから、世の中にできる貢献の量には限界があります。でも、少なくとも今は「Cassava Editor」があることによって、仕事や子育てをしている間にも、人のお役に立てるんですよ。まるで、「自分の代わりに人助けをしてくれる分身」かのようにも感じることもあります。この先も、このソフトによって1人でも多くの方を幸せにできるのだとしたら、開発者冥利に尽きますね。
取材:田村 今人
執筆:白石 倖介
編集:田村 今人、光松 瞳
撮影:曽川 拓哉
関連記事
人気記事