🤖

WebRTC ネイティブライブラリ解説書の執筆と販売について

2020/11/25に公開

表紙

はじめに

この度、 WebRTC ネイティブライブラリ (libwebrtc) の解説書を書き始めました。 iOS と Android に対応しています。この記事は書籍の内容の紹介と販売の告知です。 未完成の状態で公開と販売を始めます。

書籍のページはこちら: WebRTC ネイティブライブラリガイド for iOS and Android

著者について

私は株式会社時雨堂の商用製品 WebRTC SFU Sora 向けの次の クライアント SDK を開発しています (いずれも OSS):

いずれも自社でビルドしたバイナリを利用しており、可能な限り早く ネイティブライブラリ の最新版に追従しています。そのため常に ネイティブライブラリ の開発状況を把握しておかなければならない立場にあります。

執筆の動機

PS5 やっと抽選に当たって買えました!ありがとうございました! (3/22 追記)

ネイティブライブラリ の情報は非常に少なく、いつも探り探り開発しています。 WebRTC の開発は非常に早く、仕様の変更もあればアップデートすべきでないバグもたびたびあり、加えて OS や開発ツールのアップデートでよくない影響が及ぶ場合もあります。魔境です。

私は忘れっぽいので、得た知見はどこかしらにアウトプットしておかないとあとで自分が困ります。私の最初の仕事は ネイティブライブラリ のビルドでした。今でこそ iOS/Android 向けの便利なビルドスクリプトが用意されていますが (それでもまだまだ大変) 、当時は iOS のフレームワークや Android の AAR ファイルを自前で組み立てる必要がありました。何度かビルドスクリプトを書いたのちにビルドのノウハウを 詳解 WebRTC ビルド にまとめ、 Sora iOS SDK のリリース後に iOS API のノウハウを WebRTC ネイティブ iOS ライブラリ API ガイド (M62) にまとめました。

これは React Native WebRTC Kit の開発でも同様です。 React Native を使ったことのある方は痛感していると思いますが、 React Native はセットアップだけでも大変で、トラブルがあったときに問題を特定するのが難しくていつも困ります。ですので、 React Native の挙動も含めてセットアップの詳細を可能な限りドキュメントにしています。 読み返すたびに感動します。もっとも、ほとんどの知見は私以外の方々の手柄でして、私はまとめたに過ぎません。

ここ最近は社外の方にお手伝いに入っていただいたり開発を引き継いでいただくことがあり、情報の共有のために上記の記事を書き直そうと思っていましたが、皆さん優秀なので適宜お伝えすれば困らない。特に気になる問題は公開するサイトです。既存のサービスだと単発の記事になるし、 Gist だと埋もれてしまう。そこに登場したのが Zenn でした。 Zenn なら知見を本にまとめてお金になる体系的に記事を書けます。当初はどうせ書くなら無償で公開して共有したほうが回り回って自分の利益につながると考えていたのですが、PS5いろいろあって心変わりしました。

執筆の方針

本書は現在未完成です。 次の方針で執筆を行います:

  1. 継続的に更新します。新しい情報や知見を得たら更新します。

  2. ネイティブライブラリの最新版に追従します。追加費用なしで最新の情報を得られます。

  3. 筆者の業務の利害を優先して知見を隠すようなことはしません。というか筆者が関わるプロダクトはいずれも OSS なので隠すも何もないのですが...

未完成の状態で販売する理由は下記に記述します。

未完成の状態で販売する理由

WebRTC ネイティブライブラリの開発は非常に早いです。リリースのたびに破壊的な変更があるわけでもないにしろ、どうしても記事を書いたそばからあっという間に古くなってしまいます。

前記の通り、私は一度ビルドのノウハウを 詳解 WebRTC ビルド に、 iOS API のノウハウを WebRTC ネイティブ iOS ライブラリ API ガイド (M62) にまとめました。これらは 3 年前に書いたもので、今やすっかり古くなってしまいました。これらの記事 (Gist) の対象バージョンは M62/M63 で、この記事 (Zenn) を書いている時点の最新の安定版は M87 です。メジャーバージョンが 25 も進んでいます。 3 年間で 25 回のメジャーアップデートです。その間に各モバイルプラットフォームも頻繁にアップデート (マイナーアップデート含む) されます。開発環境も別途アップデートされますし、 ネイティブライブラリ の動作にも影響が小さくありません。最近の私の仕事はとにかくアップデートの繰り返しです。

何ヶ月もかけて本書を完全に書き終える頃には、最初に書いた内容が通用しなくなっている可能性があります。仕方なく書き直した頃には他の内容も通用しなくなり、また書き直してを繰り返すのではいつまで経ってもお金が公開できません。それは、読者にとっても嬉しくないはずです。 WebRTC の場合、断片でもいいから鮮度が高い情報を欲しい人が多いはずです。私の代わりに本書と同じ内容の本を書いてくださる方がいたら、少々値が張っても私は迷うことなく買います。その場合、お金を出すのは会社ですが

未完成のくせに価格が高いと思われるかもしれません (設定可能な最高値) が、継続的に更新する費用と考えていただけると助かります。売上が上がればモチベも上がるし更新せざるを得なくなりますし。何かしらの事情で継続的な更新が難しくなった際は改めて告知します。

そういうわけで、販売方針に納得していただける方のみご購入ください。

本書の内容

基礎知識

ライブラリを使う上で知っておきたい基礎知識を解説します。

  • バージョン表記の詳細
  • ライセンスと知的財産権
  • リリースサイクル
  • 有用な Web サイトの紹介
  • etc.

ビルドの解説

ライブラリのビルドについて解説します。 WebRTC ネイティブライブラリは巨大なプロジェクトであり、ビルドは一筋縄ではいきません。本書はビルドの手順とカスタマイズ方法について解説します。

サンプルアプリケーション AppRTC のビルドについても触れます。 AppRTC のビルドはかなり面倒な点が多いので、 Xcode と Android Studio 用のプロジェクトも用意しました。 詳細は README をお読みください。

配布物の紹介

パッケージ管理ツールなどから手軽に利用できるビルド済みの配布物を紹介します。利用する上での注意点も解説します。

API の解説

iOS と Android の API について使い方と注意点を解説します。プラットフォーム固有のノウハウも紹介します。

終わりに

以上です。よろしくお願いします。

Discussion