何者でもなかった自分をつないだ、OSSという“ご縁の糸”のトップ画像

何者でもなかった自分をつないだ、OSSという“ご縁の糸”

投稿日時:
ゴリラのアイコン

株式会社テックリード / 代表取締役

ゴリラ

Xアカウントリンク
OSS応援企画寄付期間:〜3/25 上限金額:200,000

FindyがVim1応援につき100円寄付します

本記事では、「OSS応援企画」として記事の最初と最後に「応援ボタン」を設置しています。1回の応援につき、Findyが100円をOSS団体などへ寄付し、エンジニアの成長とOSSの発展を応援する取り組みです。開発者の想いや取り組みに共感した気持ちが、OSSの支援にもつながっていく、そんな前向きな循環をFindyは目指しています。「応援ボタン」は、1日1回まで押すことができます。記事を読んで「いいな」と感じたら、ぜひボタンを押してあなたの応援の気持ちを届けてください。

はじめまして。ゴリラです。株式会社テックリードという会社を経営しながら、主にシステム開発や営業をしています。

普段は趣味で色々なOSSをつくってGitHubに公開したり、zenn.devで記事を書いています。また勉強会のゴリラ.vimperf.toyoやVimのカンファレンスであるVimConfのコアスタッフもしていたりします。

本寄稿記事は

  • OSSに携わるようになったきっかけ
  • なぜ今もOSSをつくり続けているのか
  • OSSから得られたものはなにか

をメインに話していけたらと思っています。この記事を読むことで、OSSを続ける原動力と、OSSが仕事や人とのつながりにどう結びつくのかが伝われば嬉しいです。

あまりOSS開発での工夫の話などは話さないのですが、それでも良ければコーヒーでも飲みながら読んでもらえたら幸いです。この記事を読んで、少しでも誰かの何か役に立つことがあれば嬉しいです。

つくったものが誰かの役に立つのが嬉しかった

ぼくは高卒で働き始めたのですが、特になにか目標ややりたいことはありませんでした。母子家庭で、母の負担を減らすため高卒で働くことを選んだだけなので、就職できれば何でも良かったです。

そんな感じで入った会社ではWindows PCのキッティング業務をしていました。段ボールに入っているPCを取り出して手順書に従って設定をしたら段ボールに戻して、台数がある程度溜まったらそれを工場内の各ビルに運んでセットアップするというような仕事でした。

性格的に単純な繰り返し作業が苦手だったのでどうにか効率化できないかと考えていました。そこで少しかじっていたbatでスクリプトを組んでレジストリの値を書き換えて設定を半自動化してみたところ、お客さまにすごく喜んでもらえました。結果的にスケジュールを大幅に巻くことができました。

その時に思ったのです。「自分がつくったものが誰かの役に立つのって嬉しいな。プログラマーになりたいな」と。

初めて仕事で目標・やりたいと思えることが見つかった瞬間でした。

これをきっかけにSESの会社に転職して、プログラマーとしての道を歩み始めました。

ただただ、頑張っていたあの頃

転職後、いきなり開発現場にいけるわけではなく、最初はテスター現場から始めました。仕事は順調で、現場ではリーダーを任せてもらえたし、社内でもリーダーをやっていました。

その後も開発の現場に行き始めて、少しずつプログラマーとしての経験も積むようになっていきました。大変ではありましたが、仕事はそれなりにはやれてたのかなと思います。

ひょんなことから、当時いた会社の代表が新しい会社を作るから役員をやらないかと誘われました。代表にはとてもお世話になっていたので、この人の力になりたいという思いで一緒に会社を作ることにしました。

新しい会社でこれからも頑張っていくタイミングで、ふと自分は何がしたかったのかわからなくなってしまいました。「頑張ろう」っていう気持ちではなく、「やらなければいけない」という気持ちにいつの間にか変わっていました。

仕事面だけで言えば、リーダーや役員になったし、念願のプログラマーとしても仕事できているので、とても順調に見えるかと思います。しかし、このままでいいのか?本当にこれはやりたいことなのか?という心の声があったにも関わらずそれに蓋をしていました。思えば、リーダーをやっていた頃から少しずつそのような気持ちになっていったように思います。

そして、ぼくは立ち止まりました。

何者でもないときにつくったOSSが、原点を思い出させてくれた

2018年の夏頃、ぼくは休養していました。重荷を下ろし、ただの一個人に戻って、目標もなく日々を過ごしていました。

気持ちはだいぶ楽になったし、時間もたくさんありました。人間は不思議なもので、時間ができると何をすればいいのかわからなくなります。

何もすることがないとそれはそれでしんどかったため、当時仕事で使っていたGo言語と興味があったDocker、Vimなどの勉強を始めました。

ぼくは本を読むのが苦手で、基本的につくって覚えるタイプなので、Goを使って色々つくり始めました。Dockerを勉強していった中でCLIの操作が不便だったので、GUIのように操作できるツールが欲しいなと思ってつくったのがdocuiでした。

docuiをつくりつつ、Qiitaで記事を書き、Xで宣伝するなどをしていました。それなりに反響があり、「これは便利」「良さそう」という声がたくさんXにありました。そして、気づいたらスターが2kもついていました。

「あー、誰かに便利、良さそうって言ってもらえるのって嬉しいな」「そっか、自分は誰かの役に立つのが嬉しくて、プログラマーになったんだ」

この時、はじめて原点回帰することができました。そして、このことをきっかけに、元いた会社に復帰することができました。思えば、ここが自分の人生のターニングポイントだったなと思います。

それから、いろんなものをつくってはGitHubで公開して、記事を書いてXで宣伝することに没頭していきました。昔からやりたいことがあると、ひたすらそれをやるクセがあって、OSSつくりが止まりませんでした。

気づいたら勉強会に参加したり、自分でも勉強会を開催したりしていくうちに、「あのゴリラさんですか」と声をかけられ、Xやコミュニティで自分のことを知っている人が増えていきました。

「何者でもなかった」自分が「ちょっとした何者かになれた」そんな瞬間でした。

OSSをつくり続けている理由

気がつけば、あれから7年ほどが経ちました。今ではOSSをつくり、いろんな技術を学び、記事を書いたりイベントをやったりするのが趣味のようになっています。

OSSをつくり続けている理由は変わらず、大きくは「不便を解消したい」と「つくったものが誰かの役に立ったら嬉しい」の2つです。特に「不便を解消したい」は他にOSSをつくっている方々も同じモチベーションじゃないかなと思っています。

業務をやっていると、小さな不便はたくさんあります。一つ例をあげます。

ぼくは最近もっぱらClaude Codeを使って仕事していますが、以前のClaude Codeではbackgroundでコマンドを正しく実行することができませんでした。サーバーを起動してブラウザで動作確認するような指示を出すと、サーバー起動で止まってしまうため不便でした。

それを解消するためghostというOSSをつくりました。ghostはコマンドまたはmcp経由でコマンドをbackgroundで実行して管理できるCLIとしてClaude Codeができなかったことを補いました。いまとなってはClaude Codeが勝手にbackgroundでコマンドを実行してくれるので、もう使うことは無くなりましたが、当時は重宝していました。

このように不便を解消することで結果的に業務効率がアップするし、何よりOSSを開発しているといろんなことが学べます。自分自身がユーザかつ開発者なので、要件定義から設計、開発、テストまでをすべて1人でやることになります。いわゆるドッグフーディングというものですね。

また、OSSとして公開していると親切な人がPRをくれて、そのPRで学びを得ることもあります。例えばこちらのPRではghostでデッドロックが発生するケースがあるということを知り勉強になりました。

このようなOSS開発を日々続けていると、設計のトレードオフとベストプラクティスを知り、扱う言語への理解も深まります。それを業務に活かすことも多々あります。

だからこそ、不便を見つけるたびにまたOSSをつくってしまうのです。つくって、使って、学んで、また作る。この繰り返しが楽しくて、気づけば7年が経っていました。

最近のOSS活動

最近は仕事に追われ、あまりOSS開発できていないですが、直近で開発したものをピックアップして少し紹介します。

version-lsp

1つはversion-lspという、パッケージなどのバージョンを診断して新しいバージョンがあればLSPの診断結果として表示するというものです。go.modpackage.jsonCargo.tomlなどメジャーのファイルに対応しています。依存パッケージの更新漏れを減らしたい人に向けてつくりました。

基本的に仕事でもOSSでもDependabotを使ってライブラリなどのバージョンアップを自動化していますが、エディタ上でも新しいバージョンがあるかどうかがわかると便利だなと思って開発しました。LSPにしたのは、どんなエディタでも同じ機能を享受できるようにしたかったためです。

開発してみて一番大変だったのは、エコシステムごとにバージョン指定の仕様がまったく異なることでした。例えばnpmの^1.2.3はsemverの範囲指定ですが、Goのv1.2.3は完全一致で、GitHub Actionsのv4v4.x.xへのパーシャルマッチになります。Pythonは独自のPEP 508仕様に従いますし、Dockerに至っては1.25-alpineのようなサフィックス付きタグの比較が必要です。同じ「バージョン」という概念でも、エコシステムが変われば比較ロジックをまるごと書き分ける必要があり、仕様を一つひとつ調べて実装していく地道な作業でした。こういう「似ているようで微妙に違う」ものを統一的に扱う設計は、業務でも役に立つ学びになりました。

version-lsp.png

k8s.nvim

もう1つはk8s.nvimです。ぼくは普段Neovimというエディタを使っていて、これはそのエディタのプラグインです。名前の通り、k8sを操作するためのプラグインです。これは仕事でk8sを使う場面が出てきたため、自分の手癖やよく扱う機能をNeovimから操作したいと思って開発しました。ターミナルや別ツールを行き来せず、Neovimだけでk8s操作を完結させたい人の課題を解くことを意識しています。

ちなみに、k8s関連で有名なOSSとしてk9sというのがありますが、それを使わなかった理由としてはNeovimだけで完結したかったのとUIと操作感を自分好みにしたかったためでした。結果的に比較的に満足がいくプラグインができて、仕事では作業効率が大幅にアップして大活躍しています。

k8s.nvim.png

k8s.nvimはだいぶニッチな物となっていますが、version-lspはエディタ縛りがないので良ければ使ってみてください。

OSSから得られたもの

OSSがきっかけで、大きな変化がありました。

  • いろんなエンジニアとつながり、交友関係が広がった
  • X経由でお仕事の話をいただくようになった

それぞれ経験したことを少し紹介します。

交友関係の話

ぼくはたまにXで一緒にメシ行ってくれる人を募集して、DMやリプをくれた方と食事します。そこで一生付き合っていけるなと思える友人のFさんに出会うのです。

ぼくのミスで夜景が見えるカップルシートの部屋を予約してしまい、狭い部屋で男二人ではじめての状態でメシを食べたわけですが、それを全然気にせず楽しんでくれました。お互いの経歴や考え方の話をして、感性が近くて尊敬できる人だなぁという感じでした。その後も仲良くしてくれて、身の上の相談だったり仕事をいただいたりもして、いまもよく食事やカラオケに行く仲です。

彼の視座、考え方、仕事での立ち回りなど、自分にないものが多く学べることがたくさんあります。FさんはXでのぼくの普段の活動を見て知ってくれていました。OSS開発や技術記事の発信を続けていなければ、こうした出会いはなかったと思います。

お仕事をいただいた話

会社設立時の準備期間中に、XでRust未経験だけどできればRustの仕事をしてみたいという仕事募集ポストをしたら、Rustの仕事をいただいたことがあります。DMを送ってくれたのは個人的に尊敬していた凄腕エンジニアの方(以降、Bさん)でした。

普通、仕事を外注したいときはそのスキルを持った専門性がある人にお願いするものですが、Bさんは普段のぼくのOSSにまつわる活動を見てくれていて、「ゴリラさんならすぐできるようになるから大丈夫」と言ってくれました。

尊敬しているエンジニアからそんなふうに言っていただけるのはすごく光栄なことなのと、その期待に答えたいと思ったので、数か月じっくり腰を据えてRustを学び仕事に取りかかりました。

OSSはご縁をつなぐ糸

交友関係や仕事の話、これらすべては「ご縁」だと思っています。OSSの活動をやっていなければ、友人と出会えることも、未経験の仕事もいただけることもなかったと思います。OSSはまさに「ご縁をつなぐ糸」のようなものです。

OSSをつくり始めた当初は、こんなことになるとは一ミリも思いませんでしたが、いま思い返しても本当にやって良かったと感じます。

最初の一歩は小さくたっていい

ぼくは高卒で明確な目標もなく、立ち止まっていた時期もありました。そんな何者でもなかった自分が、OSSを通じて原点に戻り、人とのご縁に恵まれ、エンジニアとして胸を張れる自分になれました。OSSが自分を変えてくれた、と言っても大げさではないと思っています。

だから、今OSSに興味はあるけど迷っている方に伝えたいのは、最初の一歩に特別なスキルや大きな覚悟はいらないということです。自分が不便だと思ったことを解消する小さなツールでも、ちょっとしたバグ報告でも、それが誰かの役に立ち、思いがけないご縁につながるかもしれません。

自分にできるところから始めてみてください。きっと、そこから世界が広がっていきます。