コンテンツにスキップするには Enter キーを押してください

WebRTCの入門書を書いた話

こんにちは、mzsmです。
この記事はWebRTC Advent Calendar 2017 4日目の記事です。

僕は今年、WebRTCの入門書を執筆しました。
…と言っても出版社から出ているわけではなくて同人誌、つまり自費出版で作りました。

5月に初版「わかった気になるWebRTC」を発行し、10月にiOSやSafari、データチャネルに対応した改訂版「わかった気がするWebRTC」を発行しました。

どういう本なの

WebRTCについてひととおりわかった気になれることを目指した本です。

ターゲットはWebRTCを初めて触る初心者の方で、「WebRTCとはどういうことができる技術なのか」という基礎知識から、JavaScript APIの使い方、STUN/TURNサーバの立て方まで広く浅く、しかし重要なことは漏らさず説明しています。

本書のカバー範囲の基準は、ひとつはWebRTCの仕組みを理解するのに必要なこと、もうひとつはWebアプリを開発するプログラマーが挙動に関与できることです。
ブラウザーの内部に隠蔽されておりプログラマーが関与できないことについては本書の対象範囲外です。

例えばWebRTCではユーザー同士のP2P接続を実現するためにICEという技術を使っています。
ICEがどのような理屈でP2P接続を実現しているかということはWebRTCの仕組みを理解するのに必要なため、詳しく説明しています。
その反面、ICEで使用するプロトコルの詳細のような低レイヤーな部分までは掘り下げていません。

なんで書いたの

ひとことで言うと、世の中にあるWebRTC入門記事や書籍があまりに古く時代遅れなものばかりだったからです。

WebRTCという技術が初めて世に出てきたのは今から6年前の2011年。
それから今に至るまでずっとW3Cでは仕様の策定が続けられていましたが、何年経っても正式な「勧告」には至っておらず、つい1ヶ月前にやっと「勧告候補(CR)」になったところです。

仕様策定にこれだけ長くかかったのはそれだけ仕様変更が何度も行われたということでもあります。
例えばWebRTCのAPIには非同期処理を行う関数が数多く存在します。
当初はこのような関数にはコールバック関数を渡していましたが、現在はPromiseを利用するように変更されています。
これ以外にもある関数が廃止され別の関数を使うようになったという大きなものから、引数オブジェクトのプロパティ名が単数形から複数形に変わったという細かいものまで、当初と今ではほぼ別物と言ってもいいくらい数多くの仕様変更が行われています。

例えばGoogleで「WebRTC」と検索すると、次のようなWebRTC入門記事が上位に表示されます。

しかしこれらの記事はいずれも2014年に書かれたものであり、当然、当時の仕様は現在とはまったく異なります。
(ちなみに後者のHTML5 Expertsの記事は、2016年にアップデート版が掲載されています。

また、Amazon.co.jpで「WebRTC」と検索すると、WebRTCについて日本語で書かれた技術書はほぼ1点しかヒットしません。
(洋書や、内容の一部としてWebRTCを取り上げている本はいくつかありますが)
しかしその本の発行日は2014年の12月。あまりにも古すぎます。

つまり、WebRTCについて日本語で書かれ、かつ最新の仕様に準拠している技術書はほぼ存在しないと言っていいような状態だったわけです。

かくいう僕もかつて2015年末にTechBooster発行の同人誌「JavaScriptoon 2」にWebRTC入門記事を寄稿していました。
しかしその記事もやはり、時が経つにつれだんだんと時代遅れになっていることを感じており、大変苦々しく思っていました。
そんなわけで、その2015年末に書いた記事に大幅な加筆と修正を加え、最新の仕様に合わせた内容として生まれ変わらせたのが冒頭の「わかった気(にな|がす)るWebRTC」です。

紙と電子版のハイブリッド

WebRTCのAPI仕様は1ヶ月前にようやく「勧告候補(CR)」になったところですが、一方でブラウザーの実装はというと、最新仕様に完全に準拠しているものは今のところありません。
Chromeに至ってはすでに廃止済みの古いAPI仕様を今も引きずり続けています。

今後もしばらくブラウザーの実装変更は行われると思われるため、内容は常にアップデートできるようにしたいと考えています。
紙の本は一度刷ったら内容の更新ができませんが、電子版であれば更新も容易です。
そのため、この本は紙の本と電子版のセットで頒布しています。
すでにお持ちの方にも無料で最新版に更新していただけるようにしています(一応、1年間という期限は切っていますが)。

書いてみて良かった、悪かったこと

良かったこと

いくら電子版と同時リリースしているとはいえ、紙の本は刷り直しができないので間違ったことを書けないというプレッシャーがありました。
そのため、今まで雰囲気でしか理解していなかったことまでちゃんと調べることになり、さらに何も知らない初心者に誤解なくわかりやすく伝えるために、さらに噛み砕いて本質を理解することができました。

自分の好きな技術をさらに深く理解するために、技術同人誌を書いてみるというのは良い方法だと思います。

悪かったこと

初版の執筆中、甘いものを食べ過ぎて体重が1月で3kg増えた
(改訂版のときは多少セーブして1kgで収まった)

今後の目標は

先述のとおり、なるべく常に最新の仕様と実装に準拠したアップデートを今後も続けていくことです。

そして、「WebRTCを触るならこれは読んでおくべき」と言われるような定番になり、WebRTCを触ってみようという人の裾野を広げることに貢献できればと思っています。

そのためにも
ぜひ商業化したい!
ので、出版社の方、オファーお待ちしております…。

ということで改めて宣伝

拙著「わかった気がするWebRTC」はBOOTHにて通販を受け付けております。

また東京・秋葉原の同人ショップCOMIC ZINでも委託販売しています。
店頭で実物を手に取ってから買いたいという方や、なるべく早く紙の本を手に入れたいという方はこちらもご利用ください。

通販、委託販売分ともに電子版ダウンロードカードをお付けしていますし、電子版の無償アップデートにも対応しています。

また、COMIC ZINの店頭では、技術書典やコミケで頒布された技術系同人誌を集めた棚が作られていますので、興味がある技術の本をまとめ買いすることもできます。
技術系同人誌の売り場は2階です。
えっちな本はこのフロアにはないので、安心してお越しください〜


コメントする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください