自作カラースキームがGitHubで1,000スターを越えるまでの6年間の軌跡

2020-05-08

コツコツと開発を続けてきた、テキストエディター向けの色テーマ「Iceberg」。開発6年目にして、とうとうGitHubのスター数が1,000を越えました!めでたい🎉🎉🎉

飽きっぽい自分のプロジェクトがこんなに長く続くとは…。そもそも、カラースキーム自体こんなにやることが尽きないとは…。当初は予想もしていませんでした。

6年間の軌跡と節目

こちらが6年間のGitHubスター数の軌跡です。(Thanks: StarTrack

2014年1月:初版公開

ITエンジニア界隈には、12月初日からクリスマスにかけて技術系記事をリレーしていく「Advent Calendar」という文化がありまして、そのVim版のビッグウェーブに乗って公開したのがはじまりです。

数ヶ月ちまちまと更新を続けたあと、いったん熱が冷めて放置してしまいました。

2015年8月:久しぶりのissue

それから1年ほど経ったある日、海外のかたからissueをもらいました。反応をもらえるってすごくうれしいんですよね。

内容は「Xresourcesを追加したい」というもので、簡単にいうと「Vim以外の端末でもIcebergの配色を使いたいからよろしく」といった感じ。これがきっかけとなって再び火がつき、開発再開。

2017年11月:VimConf 2017

国際的なVimのカンファレンス「VimConf」で、Icebergを題材にカラースキームの開発手法について発表しました。

Vimには大変お世話になっていて、おかげで仕事効率が数十倍にブーストされた1こともあり、なにかしらの方法でコミュニティに還元したい…とずっと思っていました。

そんなときにちょうどVimConf開催の知らせを聞き、「分野的におそらくデザイン関係の発表は珍しいだろう」「少々毛色の異なる発表が混じっているのもおもしろいのでは?」と考え、思い切って応募したところ運よく採択された次第です。

結果、発表資料が英語だったことも幸いして国外にも広まり、スター数とその増加量を一気に押し上げてくれました。

発表前後ではっきりと差が出ている

これまでやってきたこと

公開当初は、一度配色を決めたらあとはほとんどやることなんてないでしょうと思っていました。…が、これは大きな間違いでした。6年経ったいまでもやることは尽きないんですよね。すごいなカラースキーム。

議論を通じたコンセプトの見直しと技術的裏づけ

IcebergはオープンソースとしてGitHubで公開しているため、他のユーザーさんから様々な提案をいただきます。「こういう機能があったらよいのでは?」とか「ここの配色はおかしいのでは?」とか。

色の好みは人それぞれなので「それは私の好みではない」と突っぱねることもできますが、これでは学びがありません。双方納得のいく答えが出せるように、頭の中にあるふわふわとした基準を見出し、言語化し、書籍などで色彩を学んで考えを補強。

そしてユーザーと議論を重ねながら、自身の考えやコンセプトを見直しています。このプロセスは深い思考が必要になるほど大変で疲れますが、そのぶん答えが出たときのうれしさも大きくなります。カラースキーム開発の楽しみのひとつですね。

テンプレートエンジンの開発・刷新

Vimが標準で用意しているカラースキームの仕組みは必要最低限で、あまり凝ったことはできません。例えば、フルカラーの書式は基本的に #rrggbb のみで、HSLやHSVなどの直感的な色空間は使えませんし、「ちょっと暗く/明るく」といった気の利く調整もできません。これでは思うように開発できないので、色の演算に特化したテンプレートエンジンを開発しました。

最初に開発したのが「SVSS」です。その名のとおり、Webの世界で広く使われている「SCSS」に似た文法・豊富な色演算でカラースキームが作れることを目指しました。

開発当初はこれに満足していましたが、独自記法が機能拡張の足をひっぱり開発に支障が出てきます。(自前の言語なんて気軽に作るもんじゃない…!

そんなこんなで、けっきょくVim scriptのみで完結するテンプレートエンジン「Pgmnt」を新規に作り直しました。

Vimの新機能への対応

Vimは古くから存在するテキストエディターですが、現在も活発に開発が進められており、新しい機能が追加されるたびにカラースキームも追従する必要があるのです。例えば…

  • カーソルのある行番号のハイライト
  • ターミナル用の16色
  • ウィンドウのツールバー

プラグインへの対応

Vimの本体と同様にプラグインの動きも活発です。既存のプラグインは日々更新されていきますし、新しいプラグインも続々リリースされています。自分がお世話になっているプラグインはもちろん、有名どころもカバーして多くの人によき体験を提供していきたいですね。

他のプラットフォームへの移植

Vimは古代兵器でありながら、いまなお進化を続ける妖怪エディターです。しかしながら、悠久の時を経たいま、最新技術を注ぎ込んだ新型エディターも頭角を現してきており、また違った魅力的を見せてくれています。

個人的にはVimが心の故郷であることに変わりはありませんが、テキストエディター自体が好物ということもあり、Visual Studio Code をはじめとしたモダンなエディターも用途によって使い分けています。他のエディターを使うときも自作のテーマを使いたいので、移植も積極的に進めています。

Iceberg for Visual Studio Code

環境が異なると色指定の方法や対象も異なってくるため、そう簡単には移植できません。各々の環境でベストな配色を追い求めるこの作業も、また違った楽しみがあるのです。

これからやっていくこと

振り返ってみるとずいぶんいろいろやってきましたが、他にもやりたいことがまだまだたくさんあります。

light版のリリース

これまで、Icebergはdark版のみでしたが、いつの日かlight版も作りたいという野望をずっと抱えていました。そして最近、ユーザーから要望があったり、1,000スターという節目を記念して何か打ち上げたかったり、あるいは個人的な需要が増したり(WFHになったら日中部屋が明るすぎて黒背景が見づらい)、…などなど理由が重なり、急ピッチで仕上げを進めています。近いうちに公開できるといいな…。

画面は開発途中のものです

Vim公式配布への参画

以前の記事でも少し書きましたが、「Vim本体に質のよいカラースキームを取り込みたい」という議論が進められているので、ここに参画できたらいいなーと考えています。

長い年月をかけて磨いてきたIcebergと、その過程で得られた知見を還元できたらこの上ない幸せです。もし本体に同梱されるような幸運が訪れた場合、全世界のサーバーの5割にVimがインストールされると雑に仮定するなら、ざっと4千万台くらいのマシンにカラースキームが載るわけで…なんとも素敵なビッグドリームではありませんか。


  1. 個人の感想であり、効果・効能を示すものではないビム。浮いたぶんはvimrcとカラースキームとプラグインいじりに消えるので実質1倍 ↩︎

Share: