2020年10月31日で、合同会社Wandboxの2期が無事終了するので、そのあたりを振り返っていきます。

合同会社Wandboxについて

今までは個人事業主だったんですが、周り(というか主に V 先生)から会社を興した方がいいと言われて、合同会社Wandboxにしました。

設立は2018年11月です。なので2020年10月31日で合同会社Wandboxの2期が終わります。

会社の目的は、大体は節税対策です。個人でもある程度の稼ぎがあるなら会社を興した方が節税になるようです。あと会社にすると経理周りの作業を全部税理士さんにやってもらえると V 先生から聞いたので(実際ほぼ考えること無くなった)。

株式会社ではなく合同会社なのは、単純にどっちでも良いと思ってて、合同会社の方が設立費用が安かったからです。ただ合同会社の場合、代表の役職が「代表取締役」じゃなく「代表社員」になるので、社員っぽく見えてしまうのが微妙だなって設立した後に気が付きました。ただまあ、これはこれで面白いのでありかなと思います。

社名を Wandbox にしてるのは、昔「社名を製品名にすることで、無料で製品を宣伝できる」みたいな話を読んでなるほどってなったし、他に面白い名前も浮かばなかったのでWandboxにしました。

仕事について

2期では、以下のような仕事をしていました。

  • 時雨堂から、WebRTC Native Client Momo やその周辺ライブラリのアップデートや機能追加するお仕事
  • 時雨堂から、Sora Unity SDK を開発したりメンテナンスするお仕事
  • 時雨堂から、Sora Unity SDK の Android 対応を優先実装するお仕事
  • 時雨堂から、Momo の Windows 対応、Momo と Sora Unity SDK の NVIDIA VIDEO CODEC SDK 対応などのお仕事
  • 時雨堂から、WebRTC Load Testing Tool Zakuro を開発するお仕事
  • 時雨堂から、gRPC C++ や gRPC Go を使った開発をするお仕事(詳細は非公開)
  • 株式会社アカツキ から、Elixir 関連の OSS のメンテナンスや技術コンサルティングを行うお仕事
  • とある会社から、gRPC を使ったライブラリを開発するお仕事(詳細は非公開)

OSS 周りの仕事が結構あって、これらの金額を足しただけでも生活するには困らないぐらいあるので、「OSS で生計を立ててる人」と言ってもいいんじゃないでしょうか(OSS で、というより時雨堂で生計を立ててるだけとも言えますが)。

時雨堂は、仕事の条件や進め方がとても良いです。時雨堂からの仕事で困らない間はそれでやっていこうかなと思っています。

アカツキは、gumi の仕事を請けていた時に作っていた、Elixir ライブラリの YactoSimpleSchema のメンテを継続的にして欲しいということで仕事を請けています。このあたりのライブラリが更新されてたらアカツキに感謝しましょう。

あとは詳細の書けない仕事がいくつかあります。というか普通、詳細を公開していい仕事なんてほぼ無いので、公開できる仕事がこんなにあるのはとても良いと思います。

働き方について

常にリモートワークで、特にコロナが流行ってからは一度も仕事の人と直接顔を合わせたことは無いです。

寝起きする時間は、最初は頑張って一定の時間に寝たり起きたりしてたんですが、ちょっと油断するとずれていってしまうので、諦めて寝たくなったら寝る、起きたくなったら起きることにしました。

主に取引してるのは時雨堂で、そういう生活をしても時雨堂の仕事が回るように V 先生が調節してくれてるみたいで、大変助かってます。

自分は自宅に籠もっていると他人と会話したくなるみたいなタイプではなかったようで、自宅で仕事したりオンラインゲームしたり寝たりする生活で全然困らないです。あと必要なら妻が話し相手になってくれるので、そのあたりもあるかもしれません。

売上と利益について

法人ではなく個人事業主で何も考えずやってたら所得税40%ラインに引っかかるぐらいの売上になりました(経費どれだけ使うかによるだろうけど)。一人で労働の対価として得られる報酬としてはこれぐらいが限界なんじゃないかなと思います。

会社の売上は結構出ましたが、利益に関しては、税理士さんといろいろ相談してあれやこれや節税対策したおかげで800万前後になるように調節できました。800万を超えてくると法人税が大変なことになってくるので、そのあたり税理士さんがいろいろ提案してくれて助かりました。

Wandboxについて

今年は内部通信の gRPC 化をしました。

あとはちまちまと改装を進めています。仕事優先でやっているので、しばらくやることが無くて暇だなと思った時にちょっと進める、みたいな感じです。

今やろうとしているのは、

  • Wandbox のサイトを近代化する(まだ jQuery なので)
  • 実行環境を Ubuntu 20.04 に移行する(全てのコンパイラをビルドし直す必要がある)

あたりです。wandbox の canine ブランチや wandbox-builder のコミット履歴を見れば分かるように一応進めてはいるんですが、まだ公開できるほどでは無いです。

メンテナンスは変わらず続けていきます。サイトや実行環境はしばらく古いままですが、完全に止まるというのはそんなに無いかなと思います。

3期について

3期も、2期と変わらず、自分で仕事を探したりはせずのんびりやっていく予定です。

2期はいろいろなお仕事が重なって異常に売上が出たので、多分今期はそこまでいかないんじゃないかなと思ってます。会社にある程度キャッシュがあるから、しばらく仕事が無くても困らないです。困ったら何とかしますけど、大体は困る前に時雨堂が何とかしてくれるはず(他力本願)。

ということで来期も合同会社Wandboxをよろしくお願いします。


https://wandbox.org/permlink/BDlisAWG3OPUTWcW

特に問題なくインストールできました。

Lua はビルドが数秒程度で終わるので、追加するのがすごい楽だった。


スクリプトがちゃんと動いてなくて修正したのと、clang-head のビルドを GitHub Actions 移行した影響で、非公式リポジトリを使って libstdc++ のバージョンを上げてやる必要がありました。


Ubuntu 16.04 のデフォルトの clang (3.8) だと clang-10.0.0 がビルドできなかったので、Wandbox に追加している clang-9.0.0 を使ってビルドしました。

が、Ubuntu 16.04 のパッケージを調べると clang-8 があったので、これ使えば良かったって思いました。今後 Ubuntu 20.04 に移行する予定なのでやりませんが…。


4月はほぼ仕事が無い状態なので、Wandbox の改善をしていました。

Wandbox はフロントを処理するアプリケーション(kennel)とサンドボックス環境で任意のプログラムを実行するアプリケーション(cattleshed)があるのですが、これらの間の通信を gRPC 化しました。

動機

今までは生の TCP 上に決まったプロトコルでやり取りしていたのですが、毎回どんな仕様だったか忘れるし、ちゃんとデシリアライズしないと単なるバイナリデータしかやりとり出来ないしで、拡張を考えると面倒になってきました。

なので gRPC を利用して、proto ファイルで簡単に型を付けてやり取りできるようにしました。

誰得

俺得です。

上記の PR にも書いていますが、これでユーザが特に嬉しくなることは無いです。むしろ不安定になって困るかも。

ただこれのおかげで、自分が新しい機能を追加しやすくなるので、そこら辺で嬉しいことがあるかもしれません。

やったこと

gRPC 化するのはもちろんですが、その他にもいくつか改善していってるところがあります。むしろ掛かった時間は gRPC 以外の方が多いぐらい。

  • テスト環境を整えて、kennel と cattleshed を使って簡単な E2E のテストを行うようにした
  • ステージング環境を作って、本番にほぼ影響なく本番と同等の環境でテスト出来るようにした
  • push をトリガにしてデプロイするのを、自前の webhook 使うのをやめて GitHub Actions で行うようにした
  • Thread Sanitizer や Address Sanitizer を使ってデバッグが捗るようにした
  • 全体的に clang-format を適用

これでかなり開発しやすくなりました。実際に何か作るのはまた時間が出来た時になりますけど、その時の立ち上がりは大分マシになるはず。

次はフロント側を何とかしたいところですが、5月からはまた忙しくなる予定なのでゆっくりやっていきます。

めるぽん

合同会社Wandboxの代表社員

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