IT 系パッケージメーカーの零細企業経営者場合

いつか書こうと思っていたので雑に書いていく。

要約

基本的に人の意見は参考にならない、聞く必要ない。自分の考えを信じたほうがいい。

ただし、IT 系の企業経営者で信頼できるなら人が身近にいるのであれば、意見交換はしたほうがいい。最近全く会えてないが、ヴェルクの田向さんSigfoss の森さんから頂いた意見はとても役に立った。

社外の人間の意見は参考にはならない

自分が起業したときに苦労したので、書いておくが、この記事も参考にならないと思ったほうがいい。

思い立ってすぐに起業したので、ほとんど知識がなかった。いろいろな人の意見を聞いてみたが、実際に経営してみると全く参考にならなかった。

助成金の話ばかりする人

これは最初に契約した税理士が良くなかっただけかもしれないが、基本的に助成金の話しかしてこない。助成金の仲介手数料が目当てなんだろう。

ちなみに助成金に関しては社員時代に一度助成金を使った事業のお手伝いをして本当に最悪な経験をしたので二度と関わるまいと決めていたので、助成金関連の事業には可能な限り関わらないようにしている。

ちなみに今の税理士は「高いサーバ買えば助成金が出る場合もあります」以外のことは一切言ってこない。よくわかっている。

カスタマイズしない自社製品なんて儲からないからやめろと言ってくる人

これはよく言われた。カスタマイズしたほうが儲かると。「別に儲ける必要はないんですよ」って言うと小バカにされた。

人は成功体験にしがみつくということを学んだ。

海外に目を向けろと言ってくる人

自分は英語がさっぱりできないので、日本国内だけでビジネスをやっているが「日本はオワコンなので、海外に打って出ないとダメ」と言われたた。

海外とビジネスするというのは自分には全く想像できないし、リスクしかないように思える。

正直、日本語ですらうまくやりとりができない日本の企業がいるのに海外とか無理だなと思っている。

資金調達しろといってくる人

なにをやるにしても「資金調達」ありきの話をしてくる。色々提案してくるが「そんなお金はない」っていっても「お金を稼ぐ時間なんて無駄だ、調達して攻めるべき」と言われた。

そもそも人とうまくやれないという、社会人不適合者ということで起業してるのに、調達して色々意見言われる時点で無理。

調達している人の意見は正直環境が違いすぎて何の参考にもならない。普通に世界線が違うので関わらないほうがいい。

銀行から借りろといってくる人

「無借金はだめ、お金を借りていることは大事」というのは年配の方に多かったが、お金借りる予定もないし銀行嫌いなので、受け入れられないという話をした。

「銀行は困った時に助けてくれる」と言われたが、むしろ困った時に厳しい話しか今まで聞いていないのなにを言ってるのかわからなかった。

あと別に IT 系は投資がほぼいらないのでそもそも借り入れ自体が不要。

営業を雇えと言ってくる人

自社製品が売れていないときに言われた。売れないのは営業を雇わないからだ。まず売り込みをしないとダメだと言われたが、「誰にでも売りたい製品」ではない時点で営業は別にいらないという説明をしたが「そんな甘い考えじゃ失敗する」と言われた。

ウェブサイト / Twitter / Discord / Gist で宣伝して売るという考えは受け入れられなかった。

人を増やせと言ってくる人

自分が結構忙しく働いてる時に言われた。今も忙しいが「人を増やすとコミュニケーションコストが高くなる」といっても理解してもらえなかった。

時雨堂は「ほっといてもなんかする人」だけを雇っているため管理コストがほぼ0なのだが、マネージャーを雇えと言われた。

実際、起業して見ると「売上を上げる=人を雇う」という考えの人がとても多いことに驚いた。皆、ほっといて売れるような製品をつくりたくはないらしい。

社会に還元しろと言ってくる人

一番めんどくさかった。一社だけで儲けるのはやめろといいながら、打ち合わせしようとしてきたりするし、自分に都合のいい話ばかりする人たち。

結局何がしたかったのかわからなかった。いい反面教師になった。

社員をもっと働かせろと言ってくる人

時雨堂が 6 時間労働になったあたりで言われた。社員は替えがきくとか意味がわからない事を言っていた。

たくさんの時間働いて成果をたくさん出せるのはそれは才能なので、誰もが真似できるものでもないと思っている。

経営者がコード書くなと言ってくる人

想像以上に言われる。自分が好き勝手にコードを書いて生きていくために起業したのに何を言ってるのか。

うまくいくとなにも言われなくなる

面白いもので、時雨堂コトハジメとかである程度うまくいってることをオープンにするとなにも言われなくなる。

社員の意見はとても重要

基本的に自分で方針は決めるが、悩んでるときは必ず社員たちに相談することにしてる。自分の考えが良くないことも多々あった。相談できる社員を雇うことが大事。

まとめ

結構なにも考えず上からの意見を言われることが多いので聞かないほうがいい。成功経験に引っ張られている考えがほとんどだった。

自分の考えを信じたほうがいい。もちろん、この記事の意見も参考にするべきではない。

terurou はどうなんだろうとふったら書いてくれたので紹介。


2021年 5月版

2021 年 5 月版です。1 ヶ月前のをアップデートしていくという書き方をしていますので、先月と重複箇所が多くあります。

リリース

リリース方針

Sora は毎年 6 月と 12 月に大きめのリリースを行います。それ以外はバグ修正などがメインとなります。ただ実験的機能を中心としたリリースを行う事もあります。

2021 年 6 月リリース予定

2021 年 6 月 に 2021.1 のリリースを予定しています。大きな機能は今のところ 1 つ位で、基本的には既存機能の改善を予定しています。

  • スポットライト機能改善 (対応済み)
  • DataChannel 対応 (対応済み)
  • DataChannel シグナリング機能 (対応済み)
  • 統計情報ウェブフック機能

2021 年 12 月リリース予定

  • DataChannel 機能改善
  • DataChannel メッセージング機能
  • インターコネクト機能
  • AV1 / VP9 …

tkihira さんにお誘い頂き Web24 というイベントで WebAssembly について話をしてきました。

nullpo-head さんと bokuweb さんというという強すぎるメンバーに囲まれ、さらに自分は全員が初対面という状況でしたが、なんとか 90 分間話をすることができました。

自分は専門外で Go でちょろっと WebAssembly を触った程度だったので他の参加者から色々聞くという立場で参加しました。

アーカイブは残っていないので雰囲気は https://togetter.com/li/1708718 を見て頂ければと思います。

自分の場合は WebAssembly はあくまで Go の暗号ライブラリを利用するという方針で利用したこともあり、他の利用方法やブラウザ外での利用方法、実際どのあたりが嬉しいのかなどを聞いたりしていました。

「WebAssembly へ投資されるためにはキラーアプリが必要」という感覚がとても素晴らしいなと感じました技術だけでなくビジネス面でも考慮した話をされていたことでした。これは間違いなくその通りだと思います。

様々な技術が WebAssembly に投資されていますがそれは各企業が色々な面でのビジネスメリットがあってこそだと思いますので、そこを意識させられたのはとても貴重な体験でした。

Wasmtime や Wasmer といったブラウザ外のランタイムの話をもう少しできればよかったなと思いましたが、それはまたどこかでということで。

90 分間、事前打ち合わせなしで台本もゴールも決めずに話をするというのはなかなか貴重な体験でした。


自社製品の WebRTC SFU へ Erlang での DataChannel の実装が一段落して、これからがっつりリリースまではテストしつつバグ探しという状態へと代わり、さて今後 WebRTC SFU をどう成長させていくかと考えるターンになりました。そこでここ数日ほどは QUIC サーバを作って止まっていた知識をアップデートするという状況になりました。

HTTP/2 や QUIC や HTTP/3 については偉大な先人たちがいることもあり、焦って調べてこなかったというのもありますが、本当にたくさんの情報があり大変ありがたいです。ただ WebTransport は用途がマニアックということもあり、ここだけは自分でしっかり調べていかないとなと思っている状況です。

そんな中、自社の WebRTC S …


Pion (Go の WebRTC 実装)作者が書いている「WebRTC For The Curious」の日本語訳を追加して、公開して貰いました。さらに WebRTC For The Curious リポジトリのオーナ権限を付与してもらいました。

WebRTC For The Curious は WebRTC 初心者から WebRTC SFU 開発者までが読める幅広く WebRTC について書かれたサイトです。本当に素晴らしいのでぜひ読んでみてください。

日本語翻訳を追加した理由と今後

本当に素晴らしいサイトなのですが、残念ながら英語で書かれているので日本ではあまり読まれていないと感じていました。そこで英語も日本語も苦手ではありますが DeepL Pro の力を借りて翻訳をすることにしました。

DeepL Pro にかけて「日本語に翻訳された内容がおかしな感じがしない」というのを前提に翻訳しています。

ただ、DeepL Pro の翻訳が間違っていたり、おかしな文章になっていたりするのはかならず出てきます。そこはいったん全部日本語翻訳して、その後ゆっくり直していくつもりでしたが、多くの方が修正の Pull-Request を送ってくれて、本当に読みやすくなりました。皆さんありがとうございます。

とにかく日本語翻訳のベースがあるというのは本当に大きいと思います。今後も本家には追加されていくのでそのたび翻訳していければと思います。

少しの誤字とかでもかまいませんので遠慮なく Pull-Request を送って下さい、自分の方でマージします。ただ description だけは簡単でかまわないので英語でお願いします。自分以外の理解できる言語であるべきでと思っています。

英語だとちょっと … という方は時雨堂が運用している Discord に WebRTC For The Curious 翻訳のチャネルを用意しました、そこは日本語で大丈夫です。

著者は書籍化を目指しているようなので、その場合は時雨堂が出資しているラムダノートにお願いして日本語翻訳を出版して貰う予定です。出版にかかる費用は時雨堂で出そうと思います。プロの手で翻訳され、編集される日がとても楽しみです。


2021年 4 月版

2021 年 4月版です。1 ヶ月前のをアップデートしていくという書き方をしていますので、先月と重複箇所が多くあります。

リリース

リリース方針

Sora は毎年 6 月と 12 月に大きめのリリースを行います。それ以外はバグ修正などがメインとなります。ただ実験的機能を中心としたリリースを行う事もあります。

2021 年 6 月リリース予定

2021 年 6 月 頭に 2021.1 のリリースを予定しています。大きな機能は今のところ 1 つ位で、基本的には既存機能の改善を予定しています。

  • スポットライト機能改善
  • DataChannel 対応
  • DataChannel シグナリング機能
  • 統計情報ウェブフック機能

2021 年 12 月リリース予定

  • DataChannel メッセージング機能
  • インターコネクト機能
  • AV1 / VP9 Simulcast 対応
  • 録画ファイル MP4 出力対応
  • シグナリング WebTra …

WebRTC SFU ではサーバとのやりとりのために WebSocket を用いられることが多いです、これを仕組みの事をシグナリングと呼びます。ただ WebSocket は TCP ベースなので 「詰まる(HoL Blocking)」事があります。この詰まるが、不安定な回線などで問題が起きることがしばしばありました。

そもそも、WebRTC の音声の映像は UDP でやりとりされるのですが、 WebSocket が詰まってしまい反応がなくなりサーバ側では反応がないため、「あきらめて切断する」という問題です。実際は UDP 側では問題はでていないのに WebSocket 側だけで問題がでて切断してしまうというパターンです。

このパターンへの対策を入れるために WebRTC の DataChannel (UDP) を利用してサーバとのやりとりを行うという仕組みを現在開発中です。これで WebSocket が詰まるということがなくなります。

ただ、これで WebSocket を手放せるかというとそう簡単な話ではありません。DataChannel は UDP 上で作られているため、ブラウザを閉じられたり、タブを閉じられたりすると「その接続の終了」に気付く事ができません。

正式に「終了します」という通知を送ってくればいいのですが、そううまくはいかず、基本的にはタイムアウト待ちをすることになります。これは早くても 5 秒、遅ければ 30 秒程度待つ必要があります。

特に 5 秒という短い時間でのタイムアウト判断は ICE レイヤーで切断を判断材料に使うため、本当に切断したのか一時的に切断したのかわからないないという問題もあります。

そこで出てくるのが WebSocket です。WebSocket の切断はシステムが面倒見てくれるのでかなりの確率でサーバ側に切断を瞬時に知らせてくれます。

つまり DataChannel で HoL Blocking を避けつつ、切断通知を瞬時に貰うために TCP と併用するというパターンが、切断を早く知りたいサービスには必要です。

切断の通知があまり重要でない場合は WebSocket の切断を切断条件に入れないという使い方もあるでしょう。

時雨堂が提供している WebRTC SFU Sora では、上記の切断条件を DataChannel ベースと WebSocket ベースで選択できるようにします。それも「接続単位」で選択可能にします。

例えば配信サービスのような一方向のシステムであれば別に切断条件はあまり重要ではありません、とにかく繋がっていることが重要になります。その場合は DataChannel ベースの切断条件がベストです。ただ会議システム、特に E2EE を利用している場合は「誰かが退出したこと」を瞬時に通知して欲しい場合は WebSocket ベースの切断条件がベストです。

WebRTC SFU における切断条件はサービスや環境によって切断の選択肢がとれるというのがとても重要になります。

切断処理は本当に難しく解決策がある世界ではありません。基本は妥協の世界です。ただその中でもサービスや環境にあった切断処理が選べるようにしていければと考えています。


DataChannel 活用の道

前回から少し間が開いてしまったが、続きを書いていく。

前回の振り返り

WebRTC SFU のシグナリングは WebSocket をつかっているが HoL Blocking が起きたり、切断しやすいため、DataChannel をシグナリングに利用したい。

最初の接続だけ WebSocket を利用し、その後は DataChannel を利用する仕組みを実現したい。

WebRTC SFU をメディアだけでなくデータのルーター、つまりメッセージルータとしても使えるようにしていきたい。

SCTP 自前実装

SCTP の機能は一通り実装して、さらに SCTP 拡張である Reconfig にも対応した。Reconfig は DataChannel のストリーム毎の close に対応するために必要。

ShutdownChunk や A …


選択と集中

定期的にやるやつ。前書いたのが 2021–02なので 1ヶ月でどうなったか。

Erlang/OTP

OTP-24-RC1 がでて主力製品の開発版は OTP-24 JIT 対応版で開発している。最近は機能追加はせずに機能を削ったり社員からアドバイス貰ったりしながらコードの改善をしたりしている。

機能追加や機能改善は社員に任せて、パフォーマンスや細かい改善やリファクタリング、検証、統計やログ周りの充実化などをやっている。

Go

Go を書くのは社員に任せている。

WebAssembly

WebAssembly を書くのは社員に任せている。

WebRTC

DataChannel を実装している。AV1 関連に必要な機能も対応中。あとは色々公開している資料をアップデートしている。

QUIC / WebTransport

色々な RFC ドラフトを DeepL で読んで、まとめたりしている。

E2EE

色々な RFC ドラフトを DeepL で読んで、まとめたりしている。また実際の調査や実装は社員に任せている。

プロジェクトマネージメント

5 月からプロジェクトマネージャが時雨堂に参戦するので、主力製品以外のプロジェクトマネージメント全てを任せるための準備をしている。自分はプロダクトマネージメントに注力していく準備をしている。

まとめ

最近は社員や専門家に教えて貰うというのを積極的にやっている。


2021 年 4 月 13 日にリリースされる Chrome M90 にて WebRTC で AV1 が利用可能になります。AV1 といえば「エンコードがクソ重くて使いものにならない」というのが皆さんの認識だと思いますが、その認識に終止符を打つときが来ました。

以下は時雨堂の WebRTC SFU Sora (開発版) で AV1 (1080p@30fps) を1Mbps で iPhone のストップウォッチを配信し、視聴しているのを Gyazo GIF で録画したものです。Vultr というサービスの東京リージョンのサーバ経由です。ローカルではありません。

とにもかくにも動画を見てみて下さい。

視聴側の chrome://webrtc-internals を表示しているのでわかる人はそのあたりを見てみると良いです。

おわかりいただけましたでしょうか。まず AV1 の 1080p@30fps がこの低遅延で配信できていることが確認できると思います。もう、AV1 のエンコードが遅いという思い込みから抜け出せたと思います。

ただ、残念ながらまだまだ AV1 はエンコード時の CPU 使用率が VP9 より遙かに高く、 2–3 倍です。今後この CPU 使用率が減らしていくのが課題になると思います。

AV1 は本当に低ビットレートで高画質の映像を配信することが可能です。この映像はかなり衝撃的だと思います。

ビットレートが低ければそれだけ転送量も低く、UDP であればパケット量も減ります。パケット量が減ればパケロスも強くなります。ビットレートが減るというのはいいことしかありません。

YouTube や Netflix などで AV1 が利用されてきていますが、今後はリアルタイムな WebRTC の世界でも AV1 が使われてく時代に入ってきました。

ちなみに音声も Google が 3Kbps で高音質な音声コーデックを出してきて色々楽しみです。

V

Erlang/OTP / 時雨堂 / WebRTC / E2EE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store