Findyスキル偏差値や発信力レベルの上位者に、日々のアウトプットで得られた経験や継続のコツを尋ねる連載企画。今回のゲストは、スキル偏差値「Rust 70.3」「JavaScript 69.7」、発信力「レベル10(最高ランク)」のmaguroさんです!
OSS活動をきっかけにDeno Land Inc.に入社されたり、仕事をしながら米ジョージア工科大学修士課程を修了されたりと、華やかな実績の裏側で、maguroさんはどのようにアウトプットに取り組まれてきたのでしょうか。その原動力と継続のモチベーションを聞きました。
きっかけは「自分のための備忘録」だった
― そもそもmaguroさんがブログやOSS活動などの情報発信を始められたのはいつ頃からでしょうか?
実は、この取材のために自分の過去のログを全部さかのぼって調べてみたんです(笑)。
そうしたら、Qiitaに最初の記事を投稿したのは2019年の3月でした。新卒でヤフーに入社する直前ですね。
当時は春休みで時間があったので、遊びでPythonを使って「画像を加工してTwitterに投稿するWebアプリ」を作っていました。そのときにライブラリの使い方がわからなくて詰まった箇所があったので、「自分と同じようにここでハマる人がいるかもしれないし、一応残しておこうかな」くらいの軽い気持ちでQiitaに書いたのが最初です。そこから本格的に発信活動が増えたのは、社会人1〜2年目の頃だったと思います。

maguroさんがQiitaに初投稿した記事
https://qiita.com/maguro_tuna/items/184f63e37f3724f18e33
― 何かきっかけがあったのでしょうか。
当時、世の中的に「競技プログラミング(AtCoder)」がブームになり始めていたんです。 普通、競プロをやるならC++やPythonを選ぶ人が圧倒的に多いんですよ。情報も多いですし、ライブラリも充実していますから。でも、僕はあえて当時まだマイナーだった「Rust」という言語で挑戦することにしたんです。
ただ、なにせ当時は情報が少なくて。「ここでこの書き方をするとコンパイルエラーになるのか」とか、「標準入力の受け取り方はこう書くと便利だな」といった、本当に細かいつまずきポイントがたくさんあるんです。それを、次に自分が踏み抜いた落とし穴や気づきを、忘れないように書き留めておこうと思ったのが、継続的なアウトプットの始まりでした。
― 当時は「誰かの役に立ちたい」という思いや、あるいは「キャリアにつなげよう」といった意識はどれくらいあったのでしょうか。
どちらかというと、あくまで「自分用の備忘録」としての側面が強かったと思います。
ただ、Rustで競プロをやる人は当時かなり珍しかったので、「自分がここで詰まったということは、他の数少ないチャレンジャーも絶対ここで詰まるだろうな」とは思っていて。「あわよくば、ネットの向こうの誰かの役に立てばラッキーだな」くらいの、気持ちでした。
それが将来のキャリアにつながるとか、そんな大それたことは考えていなくて。あくまで自分の思考のメモや、学びの記録として残していたんです。それが、僕のアウトプットの原点だったと思います。
OSS活動で積み重ねた「信頼」がキャリアの大きな転機に
― これまでの活動(執筆、登壇、OSS貢献など)の中で、ご自身のキャリアにとって「ターニングポイントになった」と感じるものはありますか?
やっぱり、Deno Land Inc.へのジョインですね。
Denoは内部構造の多くがRustで書かれているJavaScript/TypeScriptランタイムです。新卒で入った会社ではTypeScriptを書いていて、個人ではRustで競プロをやっていた。その2つの円が重なる場所にDenoがあったんです。
しかも僕がコントリビュートを始めた2020年頃、Denoはまだ発展途上で、やるべきタスクが山積みでした。まさに「コントリビューション大歓迎(Blue Ocean)」という状態。
そこで最初に手をつけたのが、「Deno Lint」というツールへの機能移植です。業務でESLintを使っていたので仕様は理解していましたし、「ESLintのこのルールをDeno Lint(Rust製)に移植する」というタスクは、ゴールが明確で、OSS活動の入り口として最適だったんです。
― そもそも、Denoとの出会いのきっかけは?
Twitterのタイムラインで、誰かがポツリと「Deno LintがESLintのルールを移植しているらしい」とつぶやいているのを見かけたのがきっかけです。その瞬間にビビッときました。
そこからは、戦略的に「同じプロジェクトにコンスタントに貢献し続ける」ことを意識しました。あちこちに手を出すのではなく、一点集中でコミットを続ける。
そうすると、メンテナーから認知され、「この領域ならmaguroが詳しい」「彼に任せれば大丈夫だ」という信頼資産が積み上がっていきます。その結果として、今の会社への入社につながりました。人生、何がきっかけになるか本当にわからないものですね。

詳細な入社経緯はこちらの記事で👉
https://zenn.dev/magurotuna/articles/how-i-joined-deno
― 発信やOSS活動が、そのまま「名刺」代わりになったんですね。
そうですね。Deno Land Inc.は日本人が僕を含めて現在2人しかおらず、基本的には海外のメンバーと仕事をします。中に入ってみて気づいたのは、「日本で発信を頑張っているようなエンジニアは、普通に世界でも通用する」ということです。
言語の壁さえ乗り越えれば、技術力で引けを取ることはない。OSS活動を通じて海外とつながり、今の環境で働けているのは、間違いなく「発信」のおかげです。それに、対外的にも「Denoの中の人です」と言うと、技術的な発言にちょっと説得力が増すという副次的な効果もありますね(笑)。
AIはあくまで「掛け算」。だからこそ今、あえて「CSの基礎」に立ち返る
― maguroさんはお仕事をされながら、2022年から米ジョージア工科大学のオンライン修士課程に通われ、最近修了されたそうですね。なぜ、社会人になってからアカデミアの道へ?
きっかけはコロナ禍で自分を見つめ直す時間が増えたことでした。 エンジニアとして働く中で、便利なツールやライブラリを使うだけでなく、「自分がつくっているものの裏側」をもっと知りたいという欲求が強くなったんです。
現代の開発環境は抽象化が進んでいるので、中身を知らなくてもWebアプリはつくれます。でも、逆にそのブラックボックスの中身を覗きたくなってしまった。
そこで、働きながらコンピュータサイエンス(CS)の体系的な知識を深められる環境として、アメリカのオンライン修士課程を選びました。結果として、憧れの「強いエンジニア」たちが共通言語として持っているCSの知識体系をインストールできたのは、大きな収穫でした。

同級生のToshiさん(右)と大学院の卒業式にて(画像提供:maguroさん)
― AIの進化が著しい今、あえて「基礎」を学ぶ意義をどう感じていますか?
よく「AIによって格差が広がる」といわれますが、僕はAIは「掛け算」だと捉えています。自分の基礎知識が1なら、AIの力が100あっても「1×100=100」にしかなりません。でも、基礎知識が100ある人なら「100×100=1万」になる。
大学院で学んだOSやコンパイラの知識は、普段のWeb開発で直接使うことは少ないかもしれません。ただ、新しい技術が出てきたときに「ああ、これはあの理論の応用だな」と、高い解像度で理解できるようになります。AI時代だからこそ、この「基礎(インプット)」の質が、最終的なアウトプットの質を大きく左右すると思っています。
また、「行間を埋める力」、いわゆる国語力も重要です。 AIに適切な指示を出し、プロジェクト固有の暗黙知を言語化するには、コンテキストを過不足なく伝える文章力が必要です。アウトプットを続けることは、この「国語力」を鍛えるトレーニングにもなると感じています。
完璧じゃなくていい。「主観」こそが最強の差別化になる
― 改めて、アウトプットをする際にmaguroさんが意識している「こだわり」はありますか?
「自分の体験ベースのこと」を書く、これに尽きます。公式ドキュメントを読めばわかるような客観的な情報は、今やAIが瞬時に生成してくれます。
だからこそ、「自分がどこで詰まったか」「どう試行錯誤したか」、そして「その時ときどう感じたか」という主観を混ぜ込むことが重要なんです。
たとえば、最近うちのCEOが「人間がコードを書く時代は終わった」と発言したのですが、それに対して僕が「やばい、どうしよう」と焦った感想を書く(笑)。その「焦り」や「感想」自体は、AIには書けない、僕だけのコンテンツになりますから。
― 「完璧な記事を書かなければ」と筆が止まってしまう人には、どうアドバイスされますか?
その場合は、「完璧」という尺度を捨てて、「主観」という軸を持つことをおすすめします。客観的な情報の正確さだけで勝負しようとすると、「100%合っていないとマサカリが飛んでくるかも」と足がすくんでしまいます。でも、主観的な体験や感想であれば、それは「N=1の事実」なので、間違いようがないんです。
あとは、「小さく始める」のも手ですね。いきなり完璧な記事を目指さず、参加者10人くらいの小さな勉強会でLT(ライトニングトーク)をしてみる。LTという形式自体がライブ感重視で、「完璧」とは対極にあるものですから。
それから最初は思っているほどの反響はありません。僕が最初に書いたQiitaの記事なんて、「いいね」が4つしかついてませんよ(笑)。でも、そこからでいいんです。
― 仕事、大学院、OSSと多忙な中で、どうやってモチベーションを維持しているのでしょうか?
基本的には「好奇心」ですね。「楽しい」と思えることをやって、その体験を発信する。
ただ、最初からすべてが楽しいわけではありません。「プログラミングの習得には1,000時間かかる」なんていわれますが、最初の時期は辛いことも多い。僕も大学で初めてC言語に触れた時は挫折しかけたし、全然楽しくなかった。でも、続けていくうちに楽しさが見えてくる瞬間があります。
またテクニック的な話で言うと、僕は最近、ジムでエアロバイクを漕ぎながらスマホでネタ出しをしています。思いついたことを箇条書きでメモして、後でAIに投げて構成を整えてもらう。これで「最初の下書き」をつくるハードルが劇的に下がりました。
― 最後に、maguroさんがアウトプットを続ける「理由」を一言で表すとしたら、何になりますか?
「情けは人のためならず」 ですね。アウトプットして誰かの役に立つことは素晴らしいですが、巡り巡って、それは全部自分に返ってきます。
そして何より、AI時代に最後に残るのは「人脈」や「人間味」だと思っています。コードを書く作業の多くをAIが担うようになったとしても、「この人と働きたい」「この人に仕事を頼みたい」と思われるのは、普段から発信し、個性を知ってもらっている人です。
コミュニティのため、エコシステムのため……という考え方も素敵ですが、僕はもっとシンプルに、「自分の生存戦略として、自分のために発信し続ける」。それくらいの気負わないスタンスが、アウトプットを長く続けるコツかもしれません。
― maguroさん、本日は素敵なお話をありがとうございました!

あなたもOSSやコミュニティ貢献など、アウトプット活動を共有してみませんか?(ご利用にはFindyへのログインが必要です)
