Findy Engineer Lab

エンジニアの"ちょい先"を考えるメディア

「TypeScriptの人」として世の中から認知されるまで。技術記事によって情報発信を続ける意義

みなさんこんにちは。uhyo (@uhyo_) です。現在、 株式会社バベルにプリンシパルエンジニアとして所属しており、主力プロダクトであるaileadの設計・開発業務を行なっています。

この記事を読んでいる方の多くは、私のことを「TypeScriptの人」としてご存知かもしれません。私は2018年ごろからTypeScriptを中心とした記事執筆活動を開始しており、多くはQiitaZennに投稿されています。また、Qiitaの記事が編集者の目に留まったことをきっかけとして、雑誌にJavaScriptやTypeScriptの特集を執筆し、さらにはTypeScriptの入門書を出版することになりました。

また、フロントエンドエンジニアとしてキャリアを始めた関係から、私はReactの記事も多く執筆しています。ありがたいことに、その方面でも情報発信者として一定の評価を得ているようです。

総じて、これまで私はフロントエンド領域、特にTypeScriptに関するスペシャリストとしての地位を築いてきました。そこで、この記事では私がこれまでどのように考えてこの道筋を辿り、その結果何を得たのかをお伝えします。

どんな記事を書いてきたのか

TypeScriptの記事とはいっても、具体的な内容はさまざまです。では、私はどんな記事をこれまで書いてきたのでしょうか。

実は、私が書く記事は大きく2種類に大別できます。1つは情報系、つまりTypeScriptの機能や仕様を解説するような記事です。もう1つは考察系です。すなわち、単なる情報提供ではなく、自分の考えを交えて技術のあり方を議論するような記事です。

どちらかと言えば、考察系の記事のほうが高度なものです。なぜなら、考察系の記事は情報を収集するだけではなく、それを自分の頭で整理して、さらには独自の考察を加える必要があるからです。また、説得力のある考察とするためには、論理的思考といった能力も重要になります。そのため、私はキャリアの初期の頃は情報系の記事を書くことが多く、次第に考察系の記事に移行していきました。

初期の情報系時代の私を支えたトピックは、TypeScriptだけではなく、Web仕様に関するものもあります。つまり、HTMLやDOMに関して、究極の一次情報源である仕様書を読んでそれを解説するような記事です。私は情報系の記事を書いていた時代から徐々に知名度を上げていきました。むしろ、知名度が上がったからこそ考察系の記事に移行できたとも言えます。無名の人が書いている考察というのはそれだけで相手にされにくいものです。

情報系の記事は網羅性と新しさが大事

初期の私が書いていた記事の特徴は網羅性と新しさです。前者の代表例としてはTypeScriptの型入門があります。この記事を執筆したきっかけはTypeScript 2.8のリリースです。このバージョンではTypeScriptにconditional types(条件型)が追加されました。このconditional typesという機能はなかなか独特なもので、このあたりからTypeScriptは独特で高度な型システムという特徴を有するようになりました。そこで、TypeScriptの型システムの全体像を解説する記事を書くことにしたのです。網羅性があり役に立つ内容ということで、この記事は人気を博しました。

新しさという特徴を持った記事としてはJavaScriptでデッドロックを作ってみたが挙げられます。これは、Web Locks APIという(当時)新しいWeb仕様を解説するものです。記事公開当時(2018年)はGoogle ChromeでしかこのWeb Locks APIは実装されておらず、それ以外のブラウザ(FirefoxとSafari)がサポートし実用可能になったのは2022年のことです。つまり、この記事は4年後にやっと(実用的な情報として)役に立つような新しい情報を提供していたのです。

新しい情報であれば、それだけ他の記事ではまだ解説されていない、読者もまだ知らない情報である可能性が高まります。そのような記事を書くことができれば他の人との差別化要因になり、知名度の向上に有利です。

Web仕様関係の記事ばかりでなくTypeScriptに関しても、新しい情報の記事を書いていました。TypeScriptの新機能については、正式リリース後に記事を書くと競合することも多いため、ベータ版が出る前にいち早く記事を書くとか、それどころかGitHubにあるTypeScriptのリポジトリに張り付いて、まだプルリクエストが出たくらいの段階で速報的に記事にするといったことも行っていました。

結局のところ、技術の移り変わりが速いこの業界においては、最新の情報を常に提供できることは大きな武器になります。それを意識しつつ、網羅性も高めることで、早いだけでなく質も高い情報源となることを目指していました。

Web仕様との出会い

ところで、私はWeb仕様に関する記事も書いていましたが、仕様書という一次情報を読みこなして記事を書くのは簡単なことではありません。では、なぜ私はWeb仕様を読んで紹介するようになったのでしょうか。余談になりますが少し紹介します。

実は私とWeb仕様の出会いはけっこう早く、JavaScriptを始めた当時(配列にforEachメソッドが新規追加されて喜んでいたくらいの時期です)にとある質問掲示板に居た人から影響を受けました。いろいろな人が行ったJavaScriptに関する質問に対して仕様を引用して答えてくれる人がおり、それを見てWeb仕様という概念を知りました。

Web仕様を知る重要性については、プログラムの挙動に自信を持つためには結局定義まで辿らないといけないと今でこそ考えていますが、当時は漠然と、正しい知識をつけるために仕様書を読もうと思っていました。

結果的に、Web仕様との出会いは私の大きな成長につながりました。Web上にある正しい情報・間違った情報の区別を明確につけられるのが特に大きいですね。そして、Web仕様を読む習慣は、上述のようにのちのち記事執筆に役立つことになるのです。

記事を書くときに考えていること

記事を書いて知名度の向上を狙うとなれば、記事のクオリティは重要です。どうしても記事のクオリティには高低があり、クオリティの低い記事を書く人に良い評判は付きません。

私が記事を書く際に特に気を遣っているのは、正確性と新規性の2点です。正確性は読んで字のごとく、記事の内容が正しいかどうかということです。新規性は、他の記事にはない要素が含まれていることです。たとえば、まだ日本語の記事がない情報を日本語で紹介すればそれは立派な新規性となります。

新規性は単なる「新しさ」とは少し異なります。新しい技術の情報だったとしても、誰か他の人がすでに紹介している既出の情報であれば新規性にはなりません。ただし、既出のトピックを取り扱っていても、網羅性や内容の詳しさ、あるいは正確さで差をつければ新規性を担保できることもあります。他の記事もあるけれど書きたいトピックがあるという場合にはこのような手法を使うこともありました。

また、私はマニアックな内容の記事を書くのも好きで、これは記事の正確性とも重なるところがあります。実用上は大雑把に理解していれば十分な事柄でも、細かな部分まで正確に解説しようとすると自然とマニアックな内容になります。特にWeb仕様関連のトピックは実用上問題ないレベルと完全に理解しているレベルの間の隔たりが大きいので、マニアックな記事になりがちです。マニアックな記事は多くの読者に興味を持ってもらえないことも多々ありますが、一方で、正確性を保って書き切ることができれば筆者の評判に与える影響は大きく、さらに自然に新規性も担保できます。

逆の路線としては、細かい内容は横に置いておいて実用性を重視した記事を出すという路線もあります。いち早く問題解決したくて記事を読む読者にはこちらのほうが喜ばれるでしょう。しかし、私はこの方向性の記事を書くのはあまり得意ではありませんでした。

私のこのような考え方に影響を与えたのは、大学・大学院時代の経験です。学術論文を書く際には、まさに新規性と正確性が重要な要素となります。また、研究室でのディスカッションというのは殊更に正確性が重視されます。さらに研究内容もいわゆるコンピュータサイエンスの中でも理論寄りで、論文の大部分を定義と定理と証明が占めて実験結果は0.5ページみたいなものになりがちでした。

違う話にはなりますが、大学時代に学んだいわゆるアカデミックライティングも、記事のクオリティを高めるのにとても役立っています。なるべく多くの読者が理解しやすいように記事を書くことで、記事の内容を理解して高評価をくれる人が増えますね。また、文章の論理構成をよくして記事のクオリティを高めることもできます。

時代の最先端を行くために必要なこと

私は技術のスペシャリストとして、得意な領域においては時代の最先端を行きたいと思っています。私がそのために重要視しているのは、単に情報を発信するだけでなく、考察をして広めることです。なぜなら、自ら考察してその内容を広めるというのは新たな情報を創造する行為であり、技術の発展に寄与するからです。技術の発展に寄与する方法は他にもOSSを開発するなどがありますが、自分はどうやら記事を通じて考察を広めるのが得意なようです。自らフロンティアに立ち、技術の発展に多少なりとも寄与していれば、最先端にいると言っても過言ではないでしょう。

そもそも独自の考察をする能力というのは、技術者として日頃の業務を行う上でも重要です。アプリケーションの設計や技術選定など、ソフトウェアエンジニアは考える能力が必要になる場面が多々あります。そのため、考察をして広めることもやはり自分の評判につながります。

また、自分は単に「考察」というのではなく「思想を発信する」という言い方をすることが多くあります。というのも、技術的な話題においては唯一の正解というものがなかなか存在せず、前提条件の違いによって正解が変わってきます。そのため、ただ結論を述べればよいのではなく、どういう前提条件からどういう結論に至ったのかを説明することが重要になります。その中でも、どのような前提条件を重視するかという点に筆者の考え方が現れます。そのため、自分はこういう前提条件を重視していて、だからこういう結論に至ったということを発信することを心がけるようになりました。どんな前提条件を重視するのかというのはまさに「思想」と言えるところではないかと思います。

情報系から考察系への移行

思想を発信するとなると、筆者への信頼が重要になります。技術力や論理的思考力があると分かっている人が言っていることだからこそ、人々はその思想にも耳を傾けてくれるのではないでしょうか。もちろん、思想を発信するとなると一部の読者の意見と食い違うことは避けられず、敵を作ってしまう場合もあります。しかし、今のところはありがたくも敵ばかりというわけではなく、私の意見を参考にしてくださる方もいるようです。

私は最初情報系の記事を多く書いていてその後考察系に移行してきましたが、その理由の一つは、記事を通して自分への信頼が溜まったことで、思想を発信しても受け入れられるのではないかと思ったからです。他にも、自分自身の技術力も向上し考察ができるようになったとか、他の人が進出してきて新規性のある情報を提供できる機会が減ってきたという理由もあります。

結果的には、考察系の記事を書きたくなってきたタイミングで運よくそれを許すだけの信頼が貯まっていたということでしょう。

記事執筆活動から得たもの

ここからは、私が記事執筆活動から得たものについて見ていきましょう。

まず具体的なものとしては、雑誌や書籍の執筆の機会が挙げられます。執筆に関しては技術評論社さんと特に縁があり、特集記事の執筆の依頼を複数回いただいたり、書籍の出版もさせていただきました。Webと紙媒体では多少違いもあるとはいえ、Web記事の執筆で培った経験が活きています。

その他にも、技術記事を通じて知名度も上がったと考えています。自分はWeb上のアイデンティティをこれまでTwitterを中心に形成してきましたが、アカウントは2010年からあるわりに、技術記事を書き始める2018年より前はフォロワー数は現在の1割くらいでした。技術記事を書き始めてから現在までにフォロワー数が10倍くらいになったことになります。ちなみに、考察系を主力にするようになってからのほうが、フォロワー数の伸びは加速しています。技術記事を書き始めてからフォロワー数が5,000人になる(2022年1月)まで4年かかっていますが、今はもうすぐ10,000人というところです。私はTwitterにも時折意見を書くこともあり、考察系は(共感を集められればですが)知名度につながりやすいのではないかと思います。

たまにエンジニア向けの勉強会に参加することがありますが、「記事いつも読んでます!」と声をかけてくださる方もいらっしゃいます。とても嬉しいことです。自身に対する評価が感じられるのもありますが、単純に自分の記事が役に立っているということが分かります。

他人が書いた記事を評価するとき

他にも、自分が多くの記事を書いたことによって、他の人の記事に対する審美眼が養われたと思います。記事を公開すると、やはり読者から良い評価や悪い評価が返ってきます。評価というのは成長の糧であり、私も多くの評価をもらったことによって記事執筆の能力が上がったところもあると考えています。そうなると、他の記事を読むときにも、その記事が良い書かれ方をしているのか分かるようになってきます。

記事から情報を得たい場合は、その記事の正確性は重要です。自分の得意分野であれば内容を読んで正確性を判断できますが、得意分野でない場合はそうは行きません。そういうときに、筋の良い書かれ方をしていると感じられる記事であれば、その記事の情報を信頼しやすくなります。

他人が書いた記事を評価するスキルというのは結構有用です。たとえば、仕事柄、他人の技術力を評価しなければいけない場面があります。そのときに、私はその人が書いた記事があればかなり参考にしています。技術力を評価するというのは難しいことです。記事を執筆する力も技術力とイコールではないものの、私の経験上、しっかりとした記事を書ける人は高い技術力を持っています。特に、考察系の記事をちゃんと書ける人はとても信頼できます。世の中にすでにある情報を仕入れるだけでなく、自分で考えて新しい情報を生み出すことは、技術的な仕事において有用なスキルです。

記事から推し測られる筆者の能力とは

では、私の話に戻りましょう。私が他の人が書いた記事からその人を評価しようとするように、私もまた、私が書いた記事から自分が評価されることを期待しています。先ほど知名度の話に触れましたが、知名度が高いからといって、必ずしも「強い」人であるとは限りません。ちゃんと良い評判・評価が伴っているべきです。

経験上、記事を通じた私に対する評価で最もよく聞かれるのは「言語化力が高い」です。言語化力というのはただ単に記事を書く日本語力のことではありません。むしろ、考察力と説得力を合わせたものが言語化力と呼ばれているように思います。つまり、技術的なトピックに対して筆者の考察を述べて、それを読者に理解・納得してもらう能力です。実際、単に既存の情報を説明するような情報系の記事よりも、むしろ考察系の記事に対して言語化力が高いという評価をいただくことがよくあります。

言語化力が高いというのは、私としても嬉しい評価です。なぜなら、私が自分の強みだと考えているところと一致しているからです。

では、言語化力が高いと何が良いのでしょうか。典型的なところでは、技術選定や設計といった、アプリケーション作りの基礎に関わる仕事がうまくできると考えています。私が書く考察系の記事では、この技術はこういう特性があり、何のために作られており、だからこういう強みと弱みがある、といった考察をすることもあります。これはまさに技術選定のときに考えることそのままです。

設計に関してはいろいろな考え方がある分野ではありますが、私のやり方では合理性を重視しています。たとえば、使う技術についてはその技術を使う目的を明確にし、強みを活かすように使い、強みが活かせないところでは無理に使わないということです。これは考察力が活きるところですね。また、コードに現れるレベルの設計に関しては、読み手が苦労なく理解できることを良い設計の指標としています。これは多くの人に記事を理解してもらう能力が活かされるでしょう。

ちなみに、記事の記述からより純粋な技術力や知識の深さを読み取ってもらえることもあります。たとえば、筆者がこれまでに書籍にもらった感想の中で最も嬉しいものの一つに、「ブルーベリー本の型の説明が良質すぎるの謎だったんだけど、小林研OB一覧に著者がいた。」というものがあります。私は大学院(修士)時代にプログラミング言語理論を研究していたので、型に関する大学院レベルの知識を有しています。とはいえ、入門書ですからあくまで入門者向けの説明であり、大学院レベルの知識を本に書いた訳ではありません。それでも、記述の良質さという形でそれが伝わっていたということです。この感想を書いた方も同じく学生時代にプログラミング言語理論を研究していました。小林研というのは私が所属していた研究室で、私の出自を知って説明の良質さに納得がいったということでしょう。この例は、高度な知識を有する人が書いた文章は、たとえその内容を直接記した文章ではないとしても、同レベルの人には知識の高度さが伝わるということを示しています。

このように、記事を出すことで得られる評価というのはいろいろあります。

技術記事書きのキャリア

今回はキャリアを紹介する記事ということで、私のキャリアについて触れようと思います。ちなみに、本を出版したとはいえ、執筆が本業というわけではありません。雑収入です。

キャリアとはいえ、自分も2019年新卒入社で、それまでは賃金をもらってプログラムを書いたことが無かったような人間です。そのため、キャリアと呼べるほどの何かが築かれているわけでは正直ありません。ただ、これまでの数年間の経過はおおよそみなさんが想像する通りではないかと思います。

新卒で入社したチームでは、執筆活動開始から1年ほど経っていたこともあって何かTypeScriptが強いらしいという評判はありましたが、それくらいです。しかし、当時正式リリースされてから数か月だったReact Hooksの良さをメンバーに熱く語るなどの仕事ぶりを通して、設計やレビューなどの仕事を任されるようになっていきました。やはり本業で関わる人達なので、ここは記事というよりは仕事の内容を通じて評価を得ていったという側面が強いと思います。

裏を返せば、普段仕事でやっていることを赤裸々に外部に公開するわけにもいきませんから、仕事の内容を通じて対外的な評価を得ることは難しいです。一応、今どきは多くの会社でテックブログを持っていますから、業務で行なったことで外部に共有する価値があると思ったものはテックブログを通じて発信するようにはしています。しかし、これも普段記事を書かない人にとってはハードルが高いところもあり、誰にでも勧められるものではありません。

そのため、職を変えようとか、あるいは副業をしようと思ったときには技術記事を書いていることはアドバンテージになるでしょう(私の現職はリファラルのような形で入社したためちょっと違うのですが)。記事から読み取れる能力については、筆者の能力は適切に評価されることが期待できます(裏を返せば、大したことない記事を書いても大したことない評価しかもらえないという厳しい現実もあるのですが)。

ただし、実のところそれだけではあります。技術記事を書いて得られる評価・信頼は技術力やそれに付随する論理的思考力などに限られます。それ以外のところ、いわゆるソフトスキルについては特に何もありません。むしろ、いわゆるハードスキルとソフトスキルを高いレベルで両立するのは高度な能力なので珍しく、技術力が突出していることはソフトスキルの評価においてマイナスに働くことすらあるでしょう。世の中にはソフトスキルに関する記事や本を出している人たちもたくさん居ますから、私はよく知りませんが、同じように記事からソフトスキルが評価される世界があるのだろうと想像します。

実のところ、私も技術記事を通じて評価を得たからキャリアが順風満帆ということは全くありません。いわゆるスペシャリスト・ジェネラリストという軸においては、私は明らかにスペシャリスト寄りのタイプです。一方、特に現職においては会社のフェーズ的に、ジェネラリスト的な動きが不可欠となります。そのため、仕事で高い成果を出すためにはまだまだ修行が必要だと痛感しています。

夢のない結論ではありますが、技術記事を書いたら技術力は評価されるものの、それだけです。それ以外の能力も仕事には必要であり、技術記事だけでキャリアを支えるといったことはあまり考えられません。とはいえ、技術者として仕事をする上では技術力は前提条件であり、他の能力と対立するものではありません。技術力だけあって他の能力が無いのか、それとも技術力もそれ以外も備えているかの2つだけです。高い技術力があればできる仕事の幅が広がるのは間違いないでしょう。

次に目指したいこと

せっかくキャリアの話をしたので、今後の目標といったことにも触れようと思います。キャリアについては上で述べたように、技術力は保ちつつ地道にジェネラリスト的なスキルを身につけていくだけです。

技術的な方面では、現在の活動をさらに発展させられると望ましいと考えています。これまでの推移は、くり返し述べているように、情報系の記事から考察系の記事への推移があり、考察系の記事においては「思想」の発信を中心としてきました。

なぜ思想を発信するかというと、大げさな言い方をすれば、それによって世の中が良くなると思うからです。極端に言えば、これまで人々が考えていなかった優れたやり方を自分が思いついて、それが広まって活用されるようになれば世の中が良くなるはずです。

そこで、私がいつかやりたいと思っているのは、自分が開発したOSSを広めることです。OSSを開発する基本的な動機は、世の中の既存のやり方を改善できると思うからです。その意味で、OSSを広めるというのは、記事を通じて思想を発信するのと近いものがあると考えています。そして、もし広めることに成功したら、世の中が良くなる度合いは記事よりも大きいはずです。

一応、私はこれまでもOSSを作ってきました。しかし、GitHubスター数でいうと数百程度のものがいくつかある程度です。肌感としては、スターが数百あっても実際に使ってくれる人はほんの一握りであり、広まっているというほどではありません。

作ったOSSは技術記事として宣伝するようにもしていますが、記事に反応してもらえることとOSSを使ってもらえることの間には大きなギャップがあります。OSSを使ってもらうためにはマーケティングも重要だとよく言われるので、実際に目標の実現に向かうにはその方向の努力も必要でしょう。

まとめ・読者に伝えたいこと

これをお読みのみなさんに何よりも伝えたいことは、技術記事を書くのは良いことだよということです。

世間では、気軽に技術記事を書こう! という意見もあり、私もそれには賛成するところです。宣伝になってしまいますが、技術記事の3類型: 初心者による技術記事執筆のすすめという記事で考察をしていますので、そちらを参照してください。技術記事を書くことは、自身の技術力を向上させるためにも有効な手段です。記事を書き慣れない人がいきなり世間に役立つ優れた記事を書くというのは確かにハードルが高いですから、まずは自分のために記事を書くのがよいでしょう。

この記事でも述べてきたように、技術記事を書くことは自分の力になるだけでなく対外的な評価にもつながりますから、月並みではありますが就職や転職といったことに有利です。尤も、書いたから無条件に良い評価が得られるのではなく、記事の内容を反映した評価が得られるということは理解しておかないといけません。そのため、自身の評価を向上させるために技術記事を書くのであれば、良い記事を書けるようになることが必要です。一言一句に深い知識が見え隠れするレベルであれば引く手あまたでしょう。

また、そういった実利を差し引いても、そもそも技術記事を書くのは普通に善行だし、おもしろいということもみなさんには伝えたいです。自分が新しい情報を創造し、それがあわよくば世間の人々の役に立つかもしれないというのは、とても素晴らしいことだと感じます。もしまだ技術記事を書いたことがないけれど気になるという方は、ぜひ一度挑戦してみましょう。面白いと思ったら、技術記事はあなたのキャリアに彩りを与えてくれるかもしれません。

編集:中薗 昴