blog.unhappychoice.com

今の無職期間にしていること

今の無職期間に何をしているかまとめる。OSS を4つ作って合計約 6,000 star を獲得した。

前回との違い

前回は Minecraft の動画を作っていた。今回は OSS に全振りしている。

作ったもの

プロジェクト Stars 概要
gitlogue ~4,400 Git 履歴をターミナルで映画風にリプレイ
gittype ~1,000 自分のコードでタイピング練習
mdts ~160 ゼロ設定 Markdown プレビューサーバー
steamfetch ~150 neofetch の Steam 版

意識していたことを3つまとめる。

1. 発明する / この世に無い価値を生み出す

この世にすでにある価値なら作らない。ごく小さい差分しかないなら、既存のプロジェクトに貢献した方が良い。アイデアは日々湧くが、それが発明になるように、あらゆる方法で検索・調査し、掛け合わせなどで育てていく。

gitlogue

TUI スクリーンセーバー1の存在を見て、ターミナル上でアニメーションするものを作りたいと思った。ただ自分にはアニメーションを0から作る技術が無いので、既存のデータを活用できないかと考えた。Git のデータを掛け合わせて、仮想のエディタ上で操作をリプレイするツールを思いついた。

調査するうち、独自性が強いように思えたので、作る前の自信につながった。

gittype

昔から typing.io を利用していたが、固定のコードしかタイピングできないため、ずっと解決したかった。固定のキーワードを monkeytype2 方式でこなすものは沢山あったが、そうではないと思っていた。

アイデアとしてはその時点で独自性を確信していたが、実装が難しいという問題があった。これは後述する。

mdts

Markdown を書くのはエディタで十分足りている。一方で、見るためだけのツールが欲しかった。既存のツールは読み書きが一体になっていて、それぞれが中途半端なエディタばかりだった。その課題感があったところに、difit の一発起動の体験を見て、これを Markdown プレビューに適用すれば発明になると思った。見ることだけに特化したプレビューサーバーを作った。

steamfetch

発明ではないし発想も単純だが、まだ世の中に無い穴だった。Reddit の r/unixporn を日常的に見ていると、xxxfetch 系にトレンドがあることがわかる。neofetch の Steam 版というコンセプトは明快で、作る前から需要が見えていた。

2. UI/UX をサボらない

エンジニアだからという理由で UI/UX の品質が低い状態に甘んじない。

自分にデザインの才能があるわけではない。ただ、低レベルな状態をエンジニアだから仕方ないと認知しないまま放置することは避ける。ターミナルツールであっても、アニメーションの滑らかさ、色使い、レイアウト、インタラクションは作り込める余地がある。

gittype はタイピング練習ツールとして monkeytype を筆頭にクローンが無限に作られていて、コーディング向けにシンタックスハイライト付きのものもある。ただ、どれも UI/UX が似たり寄ったりだった。Tree-sitter でソースコードをパースして関数を抽出し、TUI の画面遷移を大量に作り、Rust でパフォーマンスを詰めた。AI がなければ妥当な工数では作れなかった。

mdts はカラーテーマを選べるようにし、mermaid を含む主要な Markdown 拡張を手を抜かずサポートした。見るだけのツールだからこそ、見る体験に妥協しない。

3. マーケも含めて設計する

README に GIF や画像を用意するのは当然として、それで一発で価値が伝わるようなプロダクトにする。そこまで含めて設計する。

作り始める前に、他の人が使うインパクトがあるかを考える。自分が見かけたら試すか。類似ツールの焼き直しに見えないか。使ってメリットがあるか。ここで引っかからなければ、そもそも作らない。

全てグローバル前提で、日本語は使わない。AI 時代ならグローバルを狙わない意味はない。

gittype

Reddit と Show HN3 に出した。r/typing, r/commandline, r/rust などいろんなところに出して、r/typing が一番伸びた。Terminal Trove4 にはあとから自分で投稿した。

ratatui5 の作者が X でシェアしてくれた。ratatui 製のツールが出ると作者が積極的にシェアしてくれる文化がある。

gitlogue

同様に Reddit と Show HN に出した。Terminal Trove では Tool of the Week に選ばれたが、自分で投稿したわけではなく、誰かが推薦したか中の人が見つけてくれた。Hacker News のフロントページに載り6、一晩で 2,000 star を超えた。

ratatui の作者がこちらもシェアしてくれた。

steamfetch

ターゲットが明確なので、r/linux_gaming に刺さった。

まとめ

AI 時代はプロダクトを作ること自体の難易度が下がっていく。そのため、新しい価値の創造、非機能要件へのこだわり、マーケティングなどの開発以外の行動がより重要になっていくと思う。

世の中にまだない便利なものの空間は無限に広いので、これからも頑張っていきたい。


  1. asciiquarium, pipes.sh, cmatrix など。 

  2. Web ベースのタイピング練習サイト。オープンソースで、多数のクローンやフォークが存在する。 

  3. Hacker News の Show HN は、自分が作ったものを投稿するセクション。 

  4. ターミナルツール専門のキュレーションサイト。投稿するとニュースレターや SNS で紹介される。 

  5. Rust 製の TUI フレームワーク。tui-rs のフォークとして始まり、現在はターミナルアプリケーション開発のデファクトスタンダードになりつつある。 

  6. Hacker News にはセカンドチャンスプールという仕組みがあり、初回で伸びなかった投稿がモデレーターによって再浮上させられることがある。