https://zenn.dev/estra/articles/zenn-book-making-impression
Zenn で本(Book)を作ってみたいと長々思っていたのですが、最近になってようやく1つ目の本(以下のリンクの本)を作成して公開できました。幸運なことに多くの人に読んでもらい、いくつかのトレンドで上位になることもできました。
今回は本を書いてみた感想やその過程で得た知見について書いてみたいと思います。実は、上の本の最後のあとがきとして書いたのですが、もう少し書いてみたいことがあり、あとがきにいくつか知見を加えた上で記事として公開してみたいと思います。あとがきをすでに読んだくれた方は本作りの知見の方にジャンプしてもらえるといいかと思います。
Zenn で本を作るのは初めてなので色々な反省点があります。
「理解度 60 ~ 70% 程度で先に書き始めてしまう」というのが自分のスタイルなのですが、これによって学習や理解が飛躍的に進むというのが大きなメリットである一方で、勘違いや間違いなどが後から見つかるケースが非常に多く、頻繁に内容を修正する羽目になります(理解度が 60 ~ 70% だと思っていたのが実際には 30% ぐらいだったみたいなことがあります😅)。
この本についても、最初から完全な理解に基づいた上でしっかり構成を考えて作ったわけではなく、以前に書いた「学習ロードマップ」の記事から逆算して重要度や誤解しやすいポイントからなんとなくのストーリーラインを作ってライブ感で作成したというのが実情です(本を書くこと自体が学習プロセスのアウトプットとして組み込まれているので、そういうやり方をしたという理由もあります)。
なので正直に言えば、作成プロセスの時点から「本」というよりは「記事の集合」あるいは「かなり長い記事をチャプターに断片化したもの」として捉えてしまった方が良いです。非連続的にチャプターを書いた結果、先のチャプターの内容で後のチャプターの知識を前提としてしまっている場合も中にはありました。
とは言え、そのおかげでかなり大胆に書くことができたとも思っています。良い面・悪い面あると思いますが、たぶん分かりきっていたらこういう本は書けなかったでしょう。「解釈」の話とかはまさにそうで、かなり大胆にしている自覚があります。「勘違いを正す」ときの知見が結構重要だと個人的に思っているところもあって、「分りつつある推移的な状態」でボトムアップに作った部分が多いです。実際、アウトプットしていく過程で得られた疑問や矛盾点などが大量にあったので、これを解決していくことが非同期処理を理解する上で非常に重要なキーとなりました。
最初想定していたものからかなり離れているのですが、自分の中ではそのおかげで面白いものが作れたなとは思っています。
また、Zenn では本として公開した後も継続的に編集ができるので、完成度が低い状態でも公開することで衆目にさらされながら執筆を進めることができたのは非常に良かったと感じています。公開した記事に内容を追記していくような気軽さで書き進めることができたので心理的なハードルもかなり低くすみました。
こういった手法は「イテレーティブ」と呼ばれるものに近いそうですが、執筆を進めている途中でもコメントや感想がもらえるのでモチベーションがあがり筆が進みました。
スクラップやツイッターなどで感想をくれた方々に感謝しています。皆さんのおかげで完成できました。ありがとうございました。
内容に関する真面目な話をしますと、肝心の「非同期処理」は JavaScript の初学者が確実につまずくポイントとなっています。ECMAScript の非同期機能に目が行くのは当然で、fetch()
や setTimeout()
などの Web API が Promise や async/await によって見逃されてしまい、非同期 API と非同期処理の話がごっちゃになるようになっています。
「非同期処理」が非同期 API とコールバックなどの話でひとくくりに認識されてしまうので、かなり厄介であるこの罠に気づけません。他の言語での経験があれば一概にそうとはいえませんが、逆に API について当たり前の事実にされていることで JavaScript を最初に触る学習者が見落としてしまう事象について認識されずらいところがあると思います。