インプットだけでなくアウトプットが重要という話は、もはや定説と言っていい。ブログを書く、OSSを公開する、技術記事を発信する。そうした活動が評価や機会につながるケースは、枚挙にいとまが無い。
ただ、アウトプットが大切だと分かっていても、実際に行動に移せないエンジニアが多いのも事実だろう。こんなコードを見られたら恥ずかしい、マサカリが飛んできたらどうしよう……。そうやって完璧な成果物を目指すあまり、つい手が止まってしまう。
そんな中、呼吸をするようにコードを書き、全世界へ公開し続けている男がいる。VimやGoのコントリビューターとして知られるエンジニア・mattnさんだ。
Vimプラグイン『emmet-vim』やGo言語のSQLite3ドライバ『go-sqlite3』など、世界中で使われるOSSを多数開発。GitHubのリポジトリ数は2000を超え、数が多すぎて設定画面を開くと500エラーが出るという伝説を持つ。
mattnさんは、批判を恐れない鋼のメンタルの持ち主なのだろうか。その疑問をぶつけてみたところ、彼の返答は実に興味深いものだった。
「便利なものを作ったら負けだと思っている」
そう言い切る彼に見えている景色とは、一体どんなものなのだろうか。
ソフトウエアエンジニア
mattnさん(@mattn_jp)
大学卒業後、ソフトウェアハウスやSIerなどでソフトウェア開発に携わる。vi派生のテキストエディタVimの日本語化やプラグイン、Go言語などでOSS(オープンソースソフトウェア)の開発・コミュニティ運営に参加し、2019年からGoogle Developers Expert。21〜23年、GitHub Stars。著書に『みんなのGo言語』(2016年、2019年に改訂2版、技術評論社、共著)、『Go 言語プログラミングエッセンス』(2023年、2025年に改訂新版、技術評論社、単著)がある。関西在住
GitHubは作品展示場ではなく、巨大なメモ帳
なぜ、mattnさんはこれほど大量のアウトプットを、恐れもなく公開できるのか。
多くのエンジニアにとってGitHubは、自分のスキルを証明するためのポートフォリオだ。未完成品や整理されていないコードを置くことは、自分の評価を下げる行為のように思える。
しかし、mattnさんの認識は根本から異なる。
「僕がGitHubにコードを置くのは、取捨選択ができないのと、めんどくさいからなんです。とりあえず作ったら、中途半端なものでも自分が使わなくなったものでもいいから、GitHubに置く。後で読み返した時に『あの頃あれやってたな』という記録になりますし、検索できるようにもなるからです。自分の本棚を公開している感覚に近いですね」
彼にとってのアウトプットは、他人に見せるためのプレゼンテーションではない。未来の自分が忘れた時に検索するための、巨大な「メモ帳」なのだ。
「自分専用のメモツール(CLI)も自作していて、いつでも過去のメモを検索できるようにしています。僕は忘れっぽいので、面白そうと思ったことも夜には忘れちゃう。だから常にメモを取るんです」
人に見せると思うから、ハードルが上がる。自分のために置いておくと思えば、そこに他者の評価が入り込む余地はない。未完成であろうが、バグがあろうが関係ない。
さらに彼は、OSSを完成品ではなく「対話のきっかけ」として捉えている。
「Xなんかでも『何々を作った』とコメントを添えてリンクを貼っておく。そうすると、他の誰かがプルリクエストをくれたりする。そういう“おいしい話”もあるわけです」
完璧にしてから出すのではなく、出すからこそフィードバックが得られ、完成に近づく。この順序の違いが、圧倒的なアウトプット量の源泉だった。
「役に立つもの」を作ろうとするから手が止まる
何を作ればいいか分からないというのも、エンジニアを悩ませる種だ。せっかく作るなら、誰かの役に立つもの、実用的なものを作らなければならない。そんな義務感が、アイデアを枯渇させる。
だが、mattnさんを突き動かす原動力は実用性ではない。「驚き」だ。
「昔からOSS界隈の人たちには言ってるんですけど、便利なものを作ったら負けだと思ってます。そもそも僕がよくやってるのは、Vimスクリプトで機械学習やってみたりとか、Vimスクリプトで動画再生してみたりとか、一見すると何のためによくやってるかよく分からないことばかりです。
でも、そこに面白さがあるんですよ。みんなが見てくれた時に『わーっ』って喜んでくれたら嬉しいし、それが自分の力にもなりますしね」
ただ純粋に、Vimで動画が動いたら面白そうという知的好奇心と、見た人を驚かせたいという悪戯心。
世界中の開発者に愛用されているVimプラグイン『emmet-vim』でさえ、最初はそんな動機から生まれたという。
「あれは元々、他のエディタで実現されていた機能を『Vimでもこんなんできるで』って見せびらかすために、ちょっと遊びで作ったつもりだったんです。そしたら意外とできちゃって、人気が出ちゃった。
狙ってホームランを打ったわけではないんです。面白がってバットを振り回していたら、たまたま当たった打球が場外まで飛んでいったという(笑)」
役に立たねばという先入観を捨て、興味本位の遊びを許容する。それが結果として、誰にも真似できないユニークなプロダクトを生み出す土壌となる。
コーディングを楽しんでいる人が、結局一番上手くなる
とはいえ、「遊び」ばかりしていてエンジニアとしてのキャリアは大丈夫なのか。きちんと技術力は向上するのか。
そんな不安もよぎるが、mattnさんは「遊びこそが最高の学習法」であることを体現している。彼はそれをサッカーのリフティングに例えた。
「リフティングができたからといって、サッカーが上手いかどうかは分からないですよね。でも、リフティングに熱中して遊んでいると、ボールタッチは確実に上手くなる。基礎能力は上がるんです」
mattnさんは学習のために、あえて非効率な「縛りプレイ」を自分に課すことがあるという。
「Pythonを使えば一瞬で終わる機械学習のモデルも、C言語やVim scriptで書き直してみたりする。そういうよからぬことをやって、わざと自分に負担をかけて覚えるんです。そうすると、ブラックボックスだった中身の仕組みが分かるようになる」
仕事で必要な技術を、最短距離で習得するのは効率的だ。しかし、一見無駄に見える「言語の書き換え」といった遊びを通じて得た理解は、未知のトラブルに遭遇した際、強固な地力となって彼を支える。
「動画をVimエディタで再生するなんて仕事は、絶対にないですよね(笑)。でも、似たような技術的課題が出た時に『ああ、あれと同じ仕組みならできるよ』という自信にはなると思うんです」
成長を目的にするのではなく、面白がって遊んでいたら、勝手に成長していた。そのアプローチこそ、技術の移り変わりが激しいこの業界で、彼が長く第一線に立ち続けている理由かもしれない。
AI時代は「無駄なもの」を作る人間が生き残る
今、AIによるコーディング支援は驚異的な進化を遂げている。「簡単なWebサービスなら数日で作れてしまう」「4年制の大学を出たプログラマーぐらいのスキルは既に持っている」とmattnさんもその実力を認める。
AIが正解や最短ルートを瞬時に出力してくれる時代。人間がわざわざコードを書く意味はあるのだろうか。アウトプットの価値は、どうなってしまうのか。
「あくまで個人的な意見ですけど、『AIに原理なんか聞いてる場合じゃない、どんどん先に進まなアカン』みたいな流れは、あんまり良くない気がしますね。僕は最近、AIコーディングに触れつつも、逆に四則演算のアセンブラコンパイラを作ったりしています。
さすがに、AIばかり使っているとプログラミングが下手になるかなという不安もあって、リハビリがてらやってる感じですね」
効率や実用性を求めるなら、AIには勝てない。だが「面白そうだから作ってみる」「仕組みを知りたいから書いてみる」という人間の根源的な欲求は、AIには代替できない。
「仕事ではAIを使って効率化すればいい。でも、余暇やOSS活動では『やらなきゃいけない』という義務感でやる必要はないんです。『これやったらみんなびっくりしそう』というものを、自分のために作ればいい。
AI時代、便利なものはAIが量産してくれます。だからこそ、人間は堂々と便利なものを作ったら負けというスタンスで、一見無駄に見える遊びや驚きを追求すればいいと思ってます」
誰のためでもない、自分のためのアウトプット。そのハードルの低さこそが、GitHubのリポジトリ数2000超という圧倒的な数字を支える、mattnさん最大の武器なのかもしれない。
文・編集/今中康達(編集部)