Findy Engineer Lab

次世代のエンジニアのキャリアを考える

オープンソースは誰もがヒーローになれる平等な空間 ─ 小さくてもソースコードを公開することが「チャンス」

こんにちは。mattn@mattn_jpです。一部の方はご存じかもしれませんが、僕は普段あまり皆さんの前に登場することはありません。どちらかというとお堅いSI業で仕事をしています。社会人になってから今まで一度も、Web業界と呼ばれるB2C(Business to Customer)な職種に転職したこともありません。

ですが、今ではOSS(オープンソースソフトウェア)を通して、多くのエンジニアと友達になり、カンファレンス等で何度かお話しする機会をいただくまでになりました。この記事では、OSSに縁遠いはずの僕が、いかにしてOSSと出会い、そして多くの方たちと知り合うチャンスを得たのかをご紹介したいと思います。

オープンソースとの出会いはVim

僕はもともと、Windows向けのフリーソフトウェアを作って、細々と公開していました。その頃のフリーソフトウェア開発では、ユーザの方々から得られるフィードバックはそれほどなく、開発のモチベーションは、作ったソフトウェアが商業誌などに掲載されることくらいでした。

そんな頃に見つけたのが、テキストエディタのVimでした。皆さんご存じの通り、Vimは、主にUNIXで利用される端末向けのテキストエディタですが、GUIも提供しており、Windowsでも動作します。もともと僕はUNIXを使って仕事をしており、viは日常的に使っていましたが、Vimの拡張性に興味を惹かれ、パッチを送りはじめました。

その頃は、毎日「僕がVimを良くしてやる」と考えていました。毎朝、Vimの開発リポジトリからソースをダウンロードし、変更差分を確認し、暇があればバグを見つけて、パッチを送り続けてきました。そのため、今ではVimでマルチバイト文字を扱うのに、特に苦労することもなくなったと思います。もちろんこれは僕だけの実績ではありませんが。

その頃に出会ったのが、KoRoNことKaoriYa@kaoriyaさんでした。KaoriYaさんも当時、Vimにパッチを送っている日本人の1人でした。KaoriYaさんは卒論でVimを使いたいがために、Vimの正規表現をマルチバイトに対応させるパッチを書いていました。OSSがキッカケで友達になった第一号です。

日本のVimコミュニティを作る

僕とKaoriYaさんは意気投合し、チャットでいろいろ話したり、Vim使いの皆さんからメーリングリストや2chで不具合の報告を受けては、Vimの開発者グループvim-devに修正パッチを送ったりしていました。

この頃から「OSSはユーザの皆さんからフィードバックをもらいやすい」と感じはじめていました。そして皆さんからのフィードバックをvim-devにパッチとして還元したり、Vimの日本語情報を1箇所に集めたいという思いで「Vimのユーザーと開発者を結ぶコミュニティサイトvim-jp」を、KaoriYaさんと一緒に設けました。

vim-jpでは、多くのユーザの皆さんから不具合報告を送ってもらい、皆でレビューして、vim-devにパッチを送るという運用をしています。これがとてもうまくいき、英語が苦手なユーザの方から、たくさんの不具合報告を得ることができました。また、Vimのドキュメント翻訳も、多くの有志の方々にお手伝いいただき、今も頻繁にメンテナンスされています。

VimConfで作者Bram Moolenaarと握手

vim-jpを支えてくれる方はどんどん増えて、2013年からVimConfという国際カンファレンスを日本で開催するまでになりました。2018年のVimConfでは、Vimの作者であるBram Moolenaarbrammool、ブラム・ムーリナー)氏を日本に呼び寄せるという夢も達成しました。

Bram Moolenaar氏
Bram Moolenaar氏(写真:VimConf提供)
生みの親が語る“Vimの27年”とこれから ―「VimConf 2018」レポート|gihyo.jp

まさか毎日使っているテキストエディタの作者を目の前に握手できるなんて、OSSがどういったものなのかよく知らなかった頃の僕には、想像もできなかっただろうと思います。OSSをやっていて良かったと思いました。

Vimから得られたチャンスや出会い

Vimで得たものはそれだけではありません。技術評論社から執筆依頼を受け、現在は『Software Design』という雑誌の連載記事でVimに関する情報を毎月発信し続けています。

また『Vimテクニックバイブル』や『Vim scriptテクニックバイブル』といった書籍にも共著として執筆に参加しました。

ちなみにvim-jpは現在、開発や議論はGitHub issuesのままですが、コミュニケーションの場所はSlackに移行しています。Vimに関する話題だけでなく、いろいろなOSSの紹介や、プログラミング言語に関する議論、ときには子育ての話題も出てくるようになりました。いろいろな方のいろいろな話が聞けて、とても楽しいです。

そして、vim-jpが誕生した頃に出会ったもう1つのOSSが、プログラミング言語Goでした。

GoコミュニティからGoogle Developers Expertに

Goは、Googleが開発したオープンソースのプログラミング言語です。マルチプラットフォーム、速いコンパイラ、ポータビリティの高さ、簡単な記述での並行処理、いろいろなところに惹かれました。

その頃のGoは、言ってしまえば「まだ耕しはじめた畑」のような状態でした。コントリビュートできるチャンスはたくさんあり、Windowsに対応していない機能もたくさんありました。毎日Goのソースを眺めては多くのパッチを書きGoに還元してきました。

Googleの開発者が「お礼に」と送ってくれたGopherのぬいぐるみやTシャツ、ブランケットは、今でも大事に飾ってあります。

僕の宝物です。

Advent Calendarや書籍で情報発信を続ける

そんな活動を続けながらもGoに関するブログをたくさん書き、いろいろな情報を発信してきました。それと時期を同じくして、Goを使いはじめる方もどんどん増えてきました。

毎年クリスマスシーズンに行われるオンライン技術イベントAdvent Calendarでは、本来25人がテーマに沿った記事を書くのですが、最近では25人に収まりきらなくなってきました。2019年のAdvent Calendarでは、Go7まで合計で150人の方が参加し、Goに関する記事がたくさん掲載されました。

僕がGoを使いはじめた頃に比べると、本当に信じられないほど多くの皆さんがGoを使うようになりました。また、今ではたくさんの企業でGoが採用されていいます。Goの求人さえもあります。もちろん僕も日々、業務でGoを使っています。

こんなに大きくなるOSSに、初期の頃から関われたことを我ながらとても運が良かったと思うと同時に、たくさんチャンスを与えてくれたGo開発者の皆さんにとても感謝しています。書籍『みんなのGo言語』に共著として執筆に参加できたことも、OSSが与えてくれたチャンスでした。

OSSが与えてくれたキーノートスピーチ

そうした活動によってか、たくさんの方に僕のOSSでの活動を知っていただくことになり、builderscon 2016というイベントで、キーノートスピーチをさせていただくことになりました。

OSSはWindowsで動いてこそ楽しい (mattn) - builderscon tokyo 2016 - YouTube

普段は表に出ないので緊張しましたが、とても良い思い出になりました。このようなチャンスを与えていただいた主催者の牧さん@lestrratやスタッフの方々には今も感謝しています。

Google Developers ExpertとしてGoに貢献

このような活動が評価され、2019年の8月にGoogleの方からお誘いを受けてGoogle Developers Expertになることになりました。

僕がGoogle Developers Expertになることで、Goの何かが変えられるのならば。そう思って、お誘いを受けました。これもまた、OSSが僕に与えてくれたチャンスと思っています。

以下のスライドは、Google Developers Group Osakaが主催するDevFest Osaka 2019で発表した、Go言語に関する発表資料です。

プログラミング言語Goのススメ

このようにGoに関する情報を、これからも発信し続けたいと思っています。ときには、Goに関するイベントに参加させていただくかもしれません。

オープンソースのありかたについて

僕は、VimやGoだけでなく、たくさんのプログラミング言語でいろいろなライブラリやプログラムを作っては、GitHubで公開しています。

mattn (mattn)

2006年にアカウントを作ってから、小さいものから大きなものまで、あらゆるOSSをGitHubで公開し続けてきました。2020年現在では1,500個を超えるリポジトリ(フォークを含む)が、僕のGitHubアカウントに置かれています。

これは、僕が思っている「オープンソースのありかた」を僕なりに表現した形です。書いたソースコードは、たとえ下手でも、たとえゴミのようなソースコードでも、皆さんに見てもらえる状態にしておき、ほんの僅かな断片でも誰かの役に立つのなら喜んで公開するという考えです。

完成したプロダクトだけがOSSではありません。可能性があるけどまだ出来上がっていないもの、そこにこそ皆が知りたいソースコードが眠っているかもしれません。

僕がOSSから得たもの

僕がOSSと出会って得てきたものを思い起こしてみると、たくさんありました。友人、vim-jpの皆さん、Bram Moolenaar氏に会えたこと、Googleからの贈り物やGoコミュニティ、Google Developers Expert、そして執筆の仕事。

たくさんの「チャンス」をOSSからもらいました。どれも僕にとっての大事な宝物です。とても恵まれていると思っています。

こういったチャンスは、誰にでもあるはずです。プログラミングが上手な人・上手でない人、Web界隈の人・そうでない人、皆にチャンスがあります。好きなOSSのため、毎日のように手を動かし続け、情報を発信し続けること。これが「チャンス」に繋がることだと僕は信じています。

これからも、僕のOSS活動のスタイルは変わりません。なぜなら、このスタイルで今までたくさんのチャンスを得てきたのですから。

もちろんチャンスは向こうからやってくるものではなく、何もしなければチャンスを得られません。これを教えてくれたのも、OSSでした。僕がVimと出会ったときにパッチを送っていなかったら、Go言語を知ったときに情報発信をしていなかったら、buildersconやVimConfに登壇していなかったら、これまでのチャンスは得られなかったかもしれません。

身分や年齢といった垣根を越えて付き合えるOSS

OSSで知り合った方たちには、僕より年配の方もいれば、優秀な学生の方もいます。プログラマが本職ではない方もいますし、博士の方もいます。本当であれば交流のないであろう方たちと、いろいろな情報交換ができるのが、OSSの良いところです。そんな垣根を超えた交流ができるOSSが、僕は大好きです。

そして、OSSにはチャンスがたくさんあります。OSSをキッカケに転職した方もいますし、OSSで知り合った方と結婚した方もいます。僕も知らないいろいろなチャンスもOSSにはあります。自分が書いたソースコードに自信が持てない人、英語が不得意な人、いろいろな方がいると思いますが、皆初めは同じです。実際に僕もそうでした。

ですが、1歩足を踏み出してみないと見えない世界がたくさんあります。そして皆さんにはそれぞれ異なるチャンスがあります。皆さんもぜひ、OSSで皆さんの「チャンス」を掴んでほしい。

誰もがヒーローになれる、それがOSSなのです。