ジンジャー研究室

長めのつぶやき。難しいことは書きません。

優先順位が口癖になる危機感

開発サイクルの終盤に近づくと「今回は優先順位の高いここまでを実装して、残りは優先順位が低いのでまたの機会にしましょう」という話になりがちだ。自分もこれまで何度もそうしてきたし、その場の判断としては正しい。が、このやり方に味をしめて常にこの…

QA と出会う

現職はスタートアップには珍しく、しっかりした QA 組織がある。日々一緒に仕事をしていて色々と発見があるので、今思うことをメモしておく。 前提として、自分は今までちゃんとした QA の人と仕事をしたことがなかった。前職はアルバイトの人に QA 相当の仕…

近況:転職して半年

7月から新しい職場で働いているので、そろそろ半年。整理のために近況を綴ってみる。以下は個人的な話で会社の紹介とかはしないので、気になった人はホームページを見てほしい。 kwork.studio 前職に引き続き、職種としてはフロントエンドエンジニアという…

Vitest の Browser Mode (experimental) でファイル読み込みのテストを書く

趣味でブラウザ上に画像や音声を読み込んで作業する React アプリを作っているのだが、 Vitest + Testing Library でテストをしようと思ったらファイル読み込み部分でつまづいた。Node.js 上でブラウザ環境をシミュレートしている部分がそのままでは上手く動…

Deno Deploy で WebAuthn を使ったサイトを作ってみた

作ったもの Kaleidoshare という、オンライン万華鏡を作って共有できるサービスを作ってみた! kaleidoshare.deno.dev コードはここ。 github.com 作品は Twitter で公開できる。 桜https://t.co/xlJO3yKcRa— Yosuke Torii / ジンジャー (@jinjor) June 16, …

どこをテストするか

どこをどうテストするかを考えている時の脳内を可視化してみる(図中のテストの名前は適当)

2023 年、改めて React と Elm Architecture を比較する

最近 React のドキュメントが新しくなったということで読んでみた。第一印象としては、とにかく懇切丁寧で React というか JavaScript すら初心者という読者でも基礎的な考え方が身に付くようになっている。ただ、深い内容まで読み進めると「同じ Virtual DO…

極端なことを言っている時、何を考えているのか

たまに極端なことを言ったりすることがある。 「ぶっちゃけ X って要らなくない?」 「それなら X しちゃえばいいんじゃないか」 そうしたら、ある日そこから議論が収集つかない方向にいってしまい、後になって「ああ、あれはそういう意図だったんですか。あ…

Cloudflare Workers + Durable Objects でホワイトボードを作ってみた

Cloudflare の比較的新しい機能、 Durable Objects を使ってオンラインホワイトボードを作ってみた。 github.com エレベーターピッチ(テンプレはこちらからお借りしました) - 1秒で適当な概念図を描き始めて議論をしたい - ソフトウェア開発者向けの、 - …

負債展

技術的負債、色々あると思ったので並べてみた。 スピード重視負債「ビジネスが軌道に乗るまではスピード重視ね」 ビジネス要求の変化負債「頑張ってやってもらったけど、その機能もう要らないわ」 マーケティングの失敗負債「鳴り物入りでリリースしたのに誰…

謎ツール

謎ツール作って面白おかしく開発したいよね(してる)— Yosuke Torii / ジンジャー (@jinjor) December 3, 2021 今の会社に入ってから作ったものを思い出してみた(順不同) Slack の新規チャンネルを通知するチャンネル 社員の休暇予定を Google カレンダー…

自分のやりたいことを正確に把握するのは難しい

キャリアの話になると、学生に向けて「自分の本当にやりたいことに向き合いましょう」というメッセージが発せられることが多い。それに対する学生側のよくある悩みは「やりたいことが見つかりません」「やりたいことがよく分かりません」というものだ。その…

Electron と Go で音を鳴らしてみた話

SoundEngine とか Audacity みたいな波形編集ソフトを作りたいと思った時に、本当はデスクトップアプリが作りたいんだけど Web 技術の方が慣れてるから(ここでの Web 技術は HTML や JavaScript など)という理由で、わざわざローカルでサーバーを起動して…

C++ 初心者がハマったこと

普段 Web のぬるい言語しか触っていない C++ 初心者がハマったこと。 (なぜ C++ をやっているかというと VST プラグインを作成するのに C++ がほぼ必須だから。この話はまた改めて書く予定。) 配列がポインタ 関数に配列を渡そうと思ったところ、受け側の…

筋の悪い道具

ある道具の筋が悪いと言って馬鹿にする人を横目に見ながら、その道具で生産性を上げたい。

得意なこと

「あの人はなんでこんなに簡単なことができないんだろう」 と思った時、それは自分が得意なことであり自分の強みであると思った方がいい。 「やるだけなのに、やってない」 とかではないのだ。

速度との戦い

オーディオプログラミングは速度との戦い。特にリアルタイム処理となると常にパフォーマンスを気にしていないとすぐに死んでしまう。 なぜなら、再生に間に合うようにデータを用意しないと音が途切れてしまうから。例えば、サンプリング周波数が 48000Hz だ…

綺麗な矩形波を作る

オーディオプログラミングをしていて、よくある矩形波の作り方は 1 と -1 を周期的に繰り返すというもの。 で、最近までなんの疑問も持たずにそれで実装していたんだけど、 FFT で周波数スペクトルを描いてみて気づいた。 なんか汚い。 いやいやまさかね、何…

センスの良い仕事

センスの良い仕事を見たい— Yosuke Torii / ジンジャー (@jinjor) February 2, 2021 ふわっとつぶやいたんだけど、これって要するに何が言いたいんだっけとずっと考えてた。 センスの良い仕事とは一体なんだろう。 仕事というのは会社の業務に限らず、同人活…

Go 言語を始めた

1週間前くらいから Go 言語を触っている。 動機 オーディオ処理をやりたい。 今まで Web Audio API で色々やっていたが、細かいことをやろうとすると色々制約があってめんどくさい。 というわけで選択肢: Node.js: パフォーマンスが不安 C++: 資産は多いけ…

TypeScript >= 4.1 の Template Literal Types を活用した引数パーサーを作ってみた

ヘルプっぽいものを書くと文字列をパースして型をつけてくれる。 デフォルト値を指定すると T | null が T になったりする。 公開は今のところ GitHub Packages だけです(メンテしなくていい方法を考え中) github.com 型レベルのパーサーはこちらの記事を…

なるはや

「なるはや(なるべく早く)」とはどういう意味なのだろう。 解釈1:優先度最高 なるべく早くなので、全リソースを注ぎ込んで考えうる最高の速度で終わらせるべき。 解釈2:優先度最低 なるべく早くなので、他の仕事の隙間時間に出来れば進める程度でいい。…

問題を解決したい話

なんとなく良い方法を提案されることがある。 「こっちの UI の方が良いと思う」 「新しいデザインにしましょう」 「あれもやった方がより良さそう」 感覚的になんとなくその方が良さそうというのはあるが、根拠が「そっちの方がいいから」であるうちは賛同…

紙にタスクを書くのが便利

抱えているタスクが増えてパンク寸前だったので、紙に書き出して PC の横に置いておいたら神ツールだった。紙だけに。 着手してるタスクが増えすぎて紙にリスト作ってるけど、なにこの便利ツール。— Yosuke Torii / ジンジャー (@jinjor) 2020年10月15日 タ…

理想と現実

ミスマッチ

仕事で使う技術 X がある。 技術 X を習得したいが、そこまで興味もなくプライベートで学習するのが辛い。 とはいえ実際に手を動かしてみないと習得するには至らないだろう。 そうだ、モチベーションを高めるために技術 X を使ってアプリ A を作ろう。 もち…

すごいコード

OSS とかのコードを巡っていると、時々「すごいコード」に出会うことがある。 もちろん「すごい」と言っても色々な凄さがあって、「読みやすくメンテしやすいコード」とか「技術的に凄いことをしている」とか「最新のライブラリを上手く使っているコード」は…

賞味期限が1年

このブログもまあ長いことやってるんだけど、これだけダラダラやっててもちょいちょい「○○さんが『△△』をブックマークしました」って通知が来たりする。でも、正直古い記事だと「それもう賞味期限切れてるよなー」って思うことがあって苦い気持ちになったり…

wasm ターゲットな言語を作って音を鳴らしてみた

前回、 Faust という言語を使って音を鳴らしてみたわけですが、AudioParam を使ったオートメーションに対応していないのでちょっと微妙だなと思いました。まあ Web が唯一のターゲットではないので仕方ない気はしますが。多分これができないと楽譜データから…

関数型言語 Faust で wasm な AudioWorkletNode を一瞬で作るサンプル

Faust って何 faust.grame.fr 音声信号処理に特化した言語というか DSL です。次のような短い記述でサクッとシンセ が作れます。 import("stdfaust.lib"); freq = hslider("freq",200,50,1000,0.01); gain = hslider("gain",0.5,0,0.5,0.01); gate = button(…