Podcast番組 #31 | エンジニアのアウトプットと本の執筆
『エンジニアストーリー by Qiita』は、「エンジニアを最高に幸せにする」というQiitaのミッションに基づき、エンジニアの皆さまに役立つヒントを発信していくPodcast番組(無料・登録不要)です。毎回、日本で活躍するエンジニアの方々をゲストに迎え、キャリアやモチベーションに関するお話をしていただきます。
今回の記事では、TypeScriptの入門書「プロを目指す人のためのTypeScript入門」の著者でエンジニアのuhyoさんをゲストにお迎えし、「エンジニアのアウトプットと本の執筆」というテーマでお話しいただいた回について、配信の模様をご紹介します。
▼uhyoさんの過去の配信を見てみる
目次
プロフィール
株式会社カオナビ フロントエンドエキスパート
Qiita株式会社 プロダクトマネージャー
どういう流れで本の執筆につながったのか?
清野:今回のゲストも「プロを目指す人のためのTypeScript入門」の著者で、エンジニア のuhyoさんです。よろしくお願いします。
uhyo:こんにちは、uhyoです。よろしくお願いします。
清野:今回uhyoさんとお送りするテーマは「エンジニアのアウトプットと本の執筆」です。uhyoさんといえばTypeScriptの本(タイトル「プロを目指す人のためのTypeScript入門」)で、僕も参考にしていたことありました。今は「TypeScriptを勉強するならそれを読もう」みたいな感じになってきていると思います。あの本ってどういう流れで執筆につながったんですか?
uhyo:あの本は技術評論社さんという出版社からさせていただいているんですが、本を執筆する前に、その会社の「Software Design」という雑誌でいくつかJavaScriptやTypeScriptの記事を書かせていただいていました。 その縁から「TypeScriptの本を書かないか」という流れになりました。
清野:そうなんですね。もともと本を執筆する前に、雑誌で寄稿をしていらっしゃったっんですね。
uhyo:そうなんです。あとその雑誌に寄稿したきっかけというのが、QiitaでJavaScriptとかの記事を書いていまして、それが雑誌の記事を書く人を探していた編集者さんの目に留まったところからスタートですね。
清野:じゃあ本当に自分から売り 込んでいったってよりも、日々アウトプットしているところを見つけてもらって、執筆や寄稿につながったって感じなんですね。
uhyo:そうなんです。
実際執筆してみてどうだった?
清野:実際執筆してみてどうでした?大変でした?
uhyo:相当に大変でしたね。本の執筆の依頼をいただいたのは 新卒1年目の12月とかそれくらいの時期で。本当はもっと前から声はかかっていたんですけど、「新卒で入社するばかりで忙しいからもうちょっと遅くしていただけませんか」みたいなことを言っていましたね。会社に入って半年くらいして落ち着いたところでスタート、という流れでしたね。
清野:そうなんですね。
uhyo:どれくらいで原稿を書き上げるか、どれくらい先に締め切りを設定するかといった話があるんですけれども、最初は非常に余裕をこいて「半年くらいで書けるかな」なんて思っていたんです。けれども、蓋を開けてみたら丸2年ですね。
清野:丸2年。だいぶ見積もりが違いますね(笑)
uhyo:そうなんです。途中ちょっとスランプに陥ってあまり進まないみたいなこともあったんですけれど、2年かけてなんとか書き上げて、そして本を出すことができました。
どういうステップで作ったのか
清野:そうなんですね。本の執筆って具体的にどういうプロセスで進んでいくんですか?
uhyo:普段の記事を書くときよりは全体のアウトライン、本なので章立てですね、そのあたりをまず考えるよう徹底していました。最初の1ヶ月程はそういうことを考えるために当てていました。どういう章構成にしたら読者さんが分かりやすいかとか、こういう流れで進めたらいいんじゃないかとかを考えて、編集者さんにもフィードバックをもらって、というところに時間をかけていました。それが決まったらあとは割と書くだけというところもありますね。事前に決めた目次に沿って書く項目を埋めていく、そういう流れがずっと続いていました。
清野:そうなんですね。編集者の方ってどういうフィードバックをしてくれるんですか?
uhyo:かなりあらゆる面からフィードバックをいただきまして、「章構成をもうちょっとこうしたら良いんじゃないか」とかはもちろん、結構技術的な内容まで踏み込んで「この説明だとちょっと分かりにくいのではないか」とか、そういったところまでフィードバックをしていただいています。
清野:編集者でも結構技術的なところにも詳しい方がやってくださってるんですかね。
uhyo:まあやはりプログラマーではないので本人がプログラムを書かれているというわけではないんですけれど、やはり技術的な雑誌や本をたくさん担当されている方なのである程度の素養はお持ちというか、たくさん読まれた経験から結構分かられているんじゃないかなというふうに思いますね。
清野:じゃあそこら辺のサポートは安心感があるような感じなんですかね。
uhyo:そうですね。
清野:どちらかというと、内容を何にするかというところが結構ずっと大変だったみたいな。
uhyo:そうです。執筆を始まる前に内容をどれくらいのレベルにするかとか、どういったことまで盛り込むかを結構議論していて、そこを決めるのにも結構時間を使いましたね。
どういう人に向けて作った?
清野:そうなんですね。今レベルの話もされましたけれど、今回の本って具体的にどういう方向けに作ったとかってありますか?
uhyo:「JavaScriptとTypeScriptを同時に学べる」を一つ特徴としていまして、あの本が企画された頃はTypeScriptはJavaScriptからステップアップしたものみたいな取り扱い方がされていたんです。
清野:そうですね。確かに。
uhyo:JavaScriptを既に知っている人がプラスアルファで型を学んでTypeScriptを書けるようになるという状況でしたが、私の本はJavaScriptを知らない状態からでもいきなりTypeScriptに入門できる、JavaScriptの部分の構文とTypeScript部分の型を同時に学んでいく、そういうコンセプトがありました。
清野:そうなんですね。レベル感の話でいうと、ほかに何か候補はあったんでしょうか。
uhyo:あの本ははまさに入門書でして、難しいトピックは結構省いているんです。紙面の一部だけを使って「ほかにもうちょっとレベルの高いこんなテーマもありますよ」というように簡単に紹介している程度で、入門書という立ち位置になりましたね。
実は最初から入門書という立て付けはもう決まっていまして、あの本が企画された時点では新しいTypeScriptの入門書というのがあんまりないと言いますか、それまで新しかった本でも少し古くなってしまっているといった事情がありました。なのでちゃんとした入門書を作れば新しい入門書として需要があるだろうというふうに考えて、そのような方向で進みましたね。
清野:そうなんですね。確かにTypeScriptといえば今まだバージョンがどんどんブラッシュアップされているタイミングだとは思うので、結構書いてあることと違う仕様になっているみたいなのが場面場面であるのでたしかになと、今お話を聞いてて感じました。もしまた執筆中に戻れるなら、こういう内容を入れておきたかったなとかはありますか?
uhyo:そうですね。読者の方からのフィードバックで「もうちょっと難しい内容も書いてほしかった」というのもある程度あるんですね。そこまで入れてしまうと本が分厚くなってしまうという問題もあるんですけれど、ちょっとハイレベルなところにTypeScriptの独立性の強みというか特色があるので、そこはもうちょっと触れてもよかったかなとは思います。
次に本を書くとしたら、どういう内容を書きたい?
清野:なるほど。また本を書くとしたら、どういう内容を書きたいとかありますか?
uhyo:さっきの話の続きにはなってしまいますけど、ハイレベルなテクニック、もっとTypeScriptの面白い部分というんですかね、それこそTypeScriptの上級者と呼ばれる人たちがどのようなことを考えてプログラムを書いているのかなどをお伝えできるような内容を書けたら面白いなとは思います。
清野:ありがとうございます。TypeScriptにおける上級者のテクニックって、具体的にどういうものになるんですか。
uhyo:そうですね。Mapped TypesとConditional Types、それらは私の本では上級者向けとして取り扱えていない部分なんですけれども、TypeScriptをある程度使いこなす人はそういったことも使うことがありますので、上級者向けの本を書くとしたら取り入れるかなと思います。
実はそういったところってTypeScriptの言語設計の基礎にもなっている部分です。ただTypeScriptを使いこなすっていう文脈だけではなくて、TypeScriptという言語そのものがどういう言語なのかを理解する上でも、TypeScriptの難しい機能は実は大事なので、そのようなところも含められたらとても面白いだろうなとは思います。
清野:今聞いてて僕もすごく読みたくなりました。TypeScriptを使っている大半の方って、どちらかとJavaScriptに型を付けられるというくらいの感覚で使っていることが多いんだろうなと感じているので、その型の強さやTypeScriptだから得られる 新しい体系については、ぜひアウトプットなり記事を、本を執筆してくださると僕も嬉しいです。
uhyo:そうですねTypeScriptの型を前提にした設計みたいなものはやはりあると思いますので。
清野:ありますよね。例えばいわゆる型パズルというか、型だけで様々なことができるようにすることがあると思っていて、意外とそういうの学べる場所ってないなと感じています。
uhyo:そうですね。さすがに型パズル までいくと少々マニア向けみたいになってしまうところもあるんですけれど、もっと身近なところでTypeScriptのユニオン型とかですね。ああいうのを活かした設計も慣れてない人には結構難しいのかなと思って。JavaScriptだけを書いているとそういう設計をしようとはなかなか思い至らないと思うんですよ。なのでTypeScriptならではの書き方については、もうちょっと広めたいなと思っています。
清野:ありがとうございます。次また本を書くとしたらどうしたいか、ってお話を伺ってきましたけど、そもそもまた本を書きたいって思いますか?
uhyo:まあ、あの本書くの相当大変だったのはありますからね、すぐには…(笑)
清野:そうですね、2年ですもんね。
uhyo:そうなんですよ。本当にプライベートな時間をある程度ずっと執筆に割いている期間が続いていましたね。
清野:仕事もやりながら執筆もやってらっしゃったって感じですよね。
uhyo:はい、仕事は普通にフルタイムでやっていたので、仕事終わったあとの夜の時間とか休日とか。
清野:確かになかなかしんどそうですね。
uhyo:そうですね、当時は結構情熱もありましたので、もう1回情熱をチャージしないことには(笑)
清野:また情熱が溜まるのを楽しみに待っています。ありがとうございます。
記事を書くことの楽しさ
清野:ちょっと話を変えるんですけれど、本の執筆や寄稿の話はアウトプットからつながったってお話ありましたよね。そのアウトプットについてもお伺いしてみたいんですけれど、uhyoさんはブログとかSNSとかQiitaとかZennとか、様々なところでアウトプットしてらっしゃるなと思ってます。アウトプットをしはじめたきっかけや、なんでアウトプットしているのかについてもお伺いしても良いですか。
uhyo:私がQiitaで活動を始めたのが2018年とかそれくらいだったんですけれど、実はそれ以前にも細々とアウトプットをしていたことがありまして。個人のウェブサイトでJavaScriptの解説・入門記事みたいなのを書いていたんです。それはもう結構早くからメンテナンスをしていまして2010年代の始めとか。
清野:すごい長いことやってたんですね。
uhyo:そうなんです。当時は全然知名度もなかったんですけれど、やめ太郎さんと知り合った時に、Qiitaにデビュー するより前の私のことを知っていて、そのサイトのことファンですって言ってくれまして。嬉しい思い出です。そうやってJavaScriptの解説記事を書いていたっていうのが実はアウトプットの始まりなんですけれども、なんで始めたかと言いますと、当時JavaScriptで検索すると出てくるような入門記事が、自分だったらもうちょっと質の良いものを書けるんじゃないかなというふうに思ったんです。
結構間違いがあったりとか理解が浅い人が書いていたりするような記事とか、今でも検索して出てくるようなものは質が低いなんて言われちゃうことも結構ありますけれども、当時はそれこそQiitaみたいに記事を書けるプラットフォームがあまり整備されていなかった時代で。本当に個人サイトに有象無象のJavaScript解説が並んでいるみたいな状態だったんですけど、その中に混じって自分ならもうちょっと良いところまでいけるのではないかというふうに思っていました。それが最初のアウトプットでしたね。
清野:そうなんですね。インプットしていく中で、自分のほうが良いアウトプットができるなと感じていたみたいな。
uhyo:そうなんですよ。JavaScript入門業界をもうちょっと良くしたい、みたいな
清野:そういう気持ちの上で今入門者とかが気持ちよく学べていることもあると思うので、本当にありがたいなって今僕自身も思えましたね。アウトプットってやはりやったほうが良いとか、周りを見て「自分のほうが良いアウトプットができそう」みたいな感覚を持ってらっしゃる方っているとは思うんですけれど、その一方で面倒臭いというか、それをやってる時間を使ってプログラミングするほうが楽しいとか思っている方って一定数いらっしゃるんじゃないかなと思っているんですよね。
uhyoさんもやはりプログラミングがお好きじゃないですか。その中でアウトプットにもある程度時間使えている理由というか、何を熱として持ってやってるのかについてお伺いしてもいいですか?
uhyo:それは結構変遷してきている部分でもありまして。さっき話したように個人サイトでJavaScriptの記事書いていた時代は、世の中を良くするじゃないですけれど、そういった気持ちがあったんです。けれどQiitaを始めた2018年とかそれ以降にちょっとモチベーションが変わってきたところがあります。
清野:なんでしょう。
uhyo:当時のQiitaって結構競争がすごい迫熱していた印象がありまして、いいねの数を競っていたような時代があったように思います。私もちょっと「競いたいな」って実は思ってたんですけれど、いいねの数ばかりを目的にするのは良くないと思いました。ただ私に対する評価の指標みたいになっていたところはあるので、「自分がここに飛び込んだらどれくらいいけるんだろう」というのが気になったといいますか、アウトプット力を試してみたいと思って、それでQiitaで記事を書き始めました。
清野:ちょっとゲームっぽいというか、そういう感覚でもアウトプットをやってらっしゃったみたいな感じなんですか
uhyo:そうですね。
清野:そうなんですね。アウトプットをしてる時間使えばプログラミングとかできるじゃないですか。そこをアウトプットに使えてたのって何なんでしょう、その瞬間はプログラミングの楽しさとかを超えてたみたいな感じなんですか。
uhyo:そうですね、記事を書くことの楽しさはかなりあったかなという。
清野:そうなんですね。
uhyo:そうなんです。プログラムを書くのとはちょっと違った頭の使い方、あるいは知識が要求されるんですよ。記事を書くことで、特に記事を書くために自分の知識がさらにつくことも結構感じていましたので、そっちのほうにちょっとメリットを感じていたり、記事を書くことで自分の知識をレベルアップさせたりと、そういった目的もあったかなと思います。
清野:じゃあ本当にアウトプットもある程度自分にとっての学習とか、一種のプログラミングのプロセスの中で一緒にやってたみたいなそういう感じなんですかね。
uhyo:そうですね。
清野:なるほど、ありがとうございます。じゃあ、そこはあんまり切り分けずにやってたみたいな感じなんですね。
uhyo:そうですね。本当に両方を並行してやっていたようなイメージです。
清野:ありがとうございます。今またQiitaを使っていただきつつ、本当に様々なところでアウトプットとかをやっていらっしゃるじゃないですか。知識だけじゃなくてインタビュー形式での登壇とか、そこらへんのモチベーションがまたQiitaを使い始めた頃とは変わってるとかってあるんですかね。
uhyo:おっしゃっていただいたとおり、まさにちょっと変わっています。最初の方はもう「競争するぞ」みたいな感じがあったんですけども、その後またちょっともとに戻ってきたといいますか。
清野:そうなんですね
uhyo:ちょっと大げさな言い方ですけれど、世界を良くしたいみたいな。私の持っている知識、あるいは最近は単に知識じゃなくて、私が思っていることや考え方を発信することよって人々の役に立つのではないかという想いが結構強くなってきました。それを意識したアウトプットをここ2、3年はやるようにしています。
清野:そうなんですね。すごい。このPodcastでは様々な方とお話ししてきたんですけれど、いわゆる能力が高いというかほかの人が持ってない知識や経験やスキルを持ってる人ほど、やっぱり「世の中に対して何かしたい」とか「世の中を良くしたい」って想いで活動されている方が多いですね。
uhyo:そうなんですね。
清野:すごい人って考え方からすごいんだなって思ってます。ちなみにアウトプットをする上で気をつけていることってありますか?
uhyo:私がアウトプットする上で気をつけていることは、とにかく間違ったことは書かない。間違ったことを発信したくないっていう思いは強いので、書く上では特に気をつけるようにしています。ただどうしても自分の考えとかを発表するとなると、書いてること全部が正しいとは言えなくなってしまいます。確定情報じゃないときは、「〜と思います」ってつけてみるとか、そういったこと含めて全体的に書いてあること論理的に間違っていないっていうんですかね。情報の正確性よりもむしろ「論理的な正しさ」という方がたぶん正しいと思うんですけれど、そういったところは本当に気をつけながら記事を書いています。
清野:そうなんですね。いわゆる正しく伝わる表現とか、そういうものを意識して使っているんですね。
uhyo:はい、その通りですね。
清野:そうなんですね。アウトプットしてる方の中には正確性とかが心配で書けないというか、自信がなくてとか、間違った内容を出してしまったときに何か言われるのが怖いみたいな理由で二の足を踏んじゃってる方っている気がするんですけど、正確さとかはどうやって担保していますか?
uhyo:情報としての正確さは本当に調べるしかなくて。私の場合は一次情報からちゃんと当たるようにしています。つまりHTMLやJavaScriptのあたりだと、要するにウェブの仕様書ですね、W3CとかWHATWGとかが出しているものを参照しながら記事を書くようにしています。
あとはさっきも言ったように「思います」を連発することですね。なので自分の情報の正確性が気になるっていう方は最初は「思います」を連発しても良いんじゃないかなと私は思っています。やはり断言されちゃうと、どうしても記事を書くことに慣れてないとは言っても、だめだろうとは正直思うんです。そう私は思ってしまうので、間違ってるかもしれないなと思ったら素直に「ここ間違ってるかもしれないですけど私はこう思います」って書くとか、そういったことを意識するだけでもまさかりが四方八方から飛んでくるとかは避けられるんじゃないかなって思います。
清野:たしかにそのなんでしょうね。明らかに正しそうな言い方をしているけど間違っているときに、そういうまさかりって飛んでくる気がします。そこは変に着飾らずに分からないことは分からないと書くことが大事なんですかね。
uhyo:私はそれが大事だと思います。
清野:ありがとうございます。僕もすごいアウトプットのところの参考になりました!次回もuhyoさんとお送りしていきます。
さいごに
「エンジニアストーリー by Qiita」は、近年高まるエンジニア向けPodcastのニーズに応え、エンジニアのキャリア形成に有益な情報を発信しています。興味のあるテーマを見つけて配信を聞いてみましょう!