V

今期も充分な売上、利益を出すことが出来ましたので普段お世話になっている OSS のスポンサーになったり、災害に遭われた地域への寄付をしました。

OSS 組織へのスポンサー

OSS 開発者へのスポンサー

研究者への寄付

  • 東北大学大学院医学系研究科・笠原好之講師 199 万円

災害があった地域への寄付

海外 57,906 ドルと国内 299 万円です。送金時計算 1 ドル 145 円で 8,396,370 円、合計 11,386,370 円でした。

来期も稼いでスポンサーや寄付が出来ればと思います。

--

--

選択と集中

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

Erlang/OTP

OTP-25.0 がでた。ARM64 での JIT 対応が入った。maybe 構文が来た。Erlang を書くのは社員たちに任せて他の事をやるようになった。書くとしても研究開発的なお試し機能の実装を担当している。

Go

Echo + sqlc にべったり。sqlc は 1.15 で SQLite 対応が入ったので、少しずつ試したりしている。Template は使わないようにして API の実装のみ。ディレクトリ構成はフラットにしている。

ミドルウェアも Go で少し書いたりしている。といっても基本は HTTP ベース。

SQL / TimescaleDB

sqlc ついでにゴリゴリと。といってもわからないことが多いので聞きながら。sqlc は SQL の間違いも指摘してくれるので大変助かる。

マネージド TimescaleDB は本当に最高で良い。

TypeScirpt / Cloudflare Wokrers

TypeScript は特に困らずに書けるようになった。といっても Cloudflare Workers 上でしか利用していないし、それ以外に利用するつもりはさらさらない。

WebRTC

7 年やり続けてきたがそろそろ一段落した感じ。といっても libwebrtc はアップデートしているので追従はしているが、前ほど焦ってはいない。帯域推定部分は社員にお任せ。

Zig

今年に入ってから触り始めている。自分は後追いを選択して、社員やお手伝いしてくれている学生のコードから学ぶという選択をした。

HTTP/2 / QUIC / HTTP/3 / WebTransport

会社として少しずつ進めている。Zig で開発をしている。プロトコル部分を Zig 、分散部分を Erlang と分けることにした。

WebTransport over HTTP/2 も見据えてるので、HTTP/2 から開発を進めている。

pytest / Playwright / HTTPX

pytest + Playwright or HTTPX による E2E テストを書き始めている。GitHub Actions で E2E を気軽に実行できる仕組みをコツコツ書いてる。

Meilisearch

念願の Sphinx での日本語全文検索を実現した。Meilisearch は JSON を突っ込んでおけばうまいことやってくれることもあり、ログ検索にも活用していきたい。ため込みは TimescaleDB でいいが、検索は Meilisearch で行く。

HPKE / MLS

HPKE は Zig での開発をちまちまと。MLS もそのうち手を出していく予定。E2EE は日本では誰もやらない感じなので、やっていくつもりでいる。

SaaS 開発が 5 割、Erlang での開発が 2 割、E2E テスト 1 割、Zig 1 割、その他 1 割という感じ。SaaS は良い感じで開発が進んでいる。

少し手を広げている感じになって良い。開発以外は基本プロダクトマネージメントしてる。

--

--

時雨堂が公開しているドキュメントツール Sphinx の自社向けドキュメントテーマに全文検索エンジン Meilisearch に対応した検索ツールバーを追加しました。

Meilisearch サーバーとスクレイパーを用意する必要はありますが、Sphinx の検索の仕組みからは大幅に改善されます。日本語も問題なく検索することが可能です。

設定方法

Sphinx の conf.py に以下の設定を追加するだけです。

html_theme_options = {
'meilisearch': True,
'meilisearch_api_key': 'xxx',
'meilisearch_host_url': 'https://meilisearch.example.com/',
'meilisearch_index_uid': 'docs'
}

--

--

Bun という JavaScript ランタイムが Zig で書かれていたため、Zig に興味を持っています。

自分たちの使い道としては Zig 単体で使うことはほとんどありませんが、Erlang VM から Zig を呼び出すということを想定しています。

なぜ Zig なのかは別記事にまとめていますので、興味があればどうぞ。

rebar3 zig プラグイン

Erlang のビルドツールである rebar3 から zig をビルドして Erlang VM から読み込めるのを簡単にする rebar3 プラグインを公開しました。

const std = @import("std");

pub fn add(x: c_int, y: c_int) c_int {
return x + y;
}

test "add" {
try std.testing.expectEqual(add(1, 2), 3);
}

こんな感じの add 関数を erlang 側から呼び出すことが出来ます。

$ rebar3 shell
===> Verifying dependencies...
===> Analyzing applications...
===> Compiling zig_sample
Erlang/OTP 25 [erts-13.0.1] [source] [64-bit] [smp:10:10] [ds:10:10:10] [async-threads:1] [jit]
Eshell V13.0.1 (abort with ^G)
1> sample:add(1,2).
3

こんな感じで Erlang 経由で zig の add を呼び出せるようになります。

もし Erlang と Zig の両方に興味がある人がいたら、是非触ってみてください。

--

--

V

V

Erlang/OTP / 時雨堂 / WebRTC / E2EE / WebTransport