フェルマータ

個人用のメモ。ソフトウェアの導入とかが多くなる予定。

cmake プロジェクトのライブラリを emscripten を使って nodejs とブラウザで動作する npm package にする

概要 すでにタイトルがなろう小説並に重たい。下記 2 エントリの続き物で今回ようやっと納得行くところまで作れたのでブログ記事にしておく。 CMake の C++ プロジェクトを nodejs, TypeScript の世界に持っていく - フェルマータ Emscripten を使って C++ …

CMake の C++ プロジェクトを nodejs, TypeScript の世界に持っていく

ポエム プライベートの開発環境は Qt with C++ を cmake でプロジェクト管理というスタイルだったのだが、いかんせんウェブエンジニアである本職とあまりに乖離していたので、もう少し本職に寄せておきたかった。最近は WebAssembly なるものもあり聞けば C+…

Emscripten を使って C++ のコードを JavaScript の世界に持っていく

ポエム フロントエンドは大変苦手なのだが、まー最近は JavaScript 頑張らなければ、と思いつつもブラウザで何かを作るのはさほど興味がわかなかった。が、ここ数年で C++ のコードを JavaScript の世界に持ってくるのはだいぶスマートになったようで今回は …

Nodejs から C++ のコードを使うために CMake-js を使ってみた

ポエム CMake 使ったプロジェクトでいい感じに WORLD のラッパー実装を作ってみたが、 GUI を作ろうとするとはたして C++ で GUI 作るのがいまでもいいのかどうか悩んでしまった。 Twitter を通して知人友人に色々聞いてみたのだが、下記の選択肢が挙がって…

WORLD のラッパー書いたので抽象度高めに音声の時間軸をいじれるようにした

ポエム ちょうど一年前に WORLD を抽象度高めに利用できるラッパー実装を作ったのでその応用コードを書いた。ラッパー実装は下記の投稿の通り。 shurabap.hatenablog.jp 作ったけど応用編がなくて何も嬉しくない実装だったし、せっかく抽象度高めのコードを…

令和 3 年度川口市保育所探しのための自宅と駅からの距離算出 Google Apps Script を作成した

ポエム 普段ポエムと趣味を垂れ流しながらコードを書くブログが唐突に現実の話をするのだが、去年第一子が幸いなことに母子ともに無事産まれ妻の職場復帰を目指して保育所探しをすることになった。保育所を探すにあたり妻から保育所のリストを作成せよとの要…

Google Home ことはじめ

ポエム 半年前くらいに第一子が産まれたのでプライベートのタスクが爆増していたのだが、ようやく落ち着いてきたので趣味プロ兼実用のために Google Home で使えるアプリを作りたくいろいろ調べていた。というのも、子育てのタスクは絶妙に片手の半分が空く…

今さら C++ で WORLD のラッパーライブラリを書いてみた

ポエム 現実世界の不具合で出勤時間が消失した分体力が余っているのか、余暇に回す気力がだいぶ戻ってきたので 1000000000 年ぶりくらいに趣味プロをしている。とはいえ別段すごく作りたいものがあるわけではないので、惰性で昔作りたかった WORLD をいい感…

直リンク系ライブラリの CMakeLists.txt の書き方調べた。

ポエム CMakeLists.txt は便利なのだが、ちゃんと書き方を考えるほど切羽詰まった場面が自分にはなかった。今回は書いていて気になったのでちゃんと書く方法を調べたりしてみた。正直知見がなかったので何でググったっけを書いておくメモみたいなものである…

コード書いてるもののクラス図を書いておく

ポエム コード書いてたら何やってるのかわからなくなったのでクラス図を書き残したくなったがノートがないのでブログに書くことにした。 何するの これのクラス図を適当に書いておく。書かないと 3 日で忘れるし。 shurabap.hatenablog.jp クラス図 interfac…

cmake の ExternalProject_add と add_subdirectory を利用して gtest を導入した。

ポエム しばらく C++ を書いていなかったが趣味は C++ でやりたくなったので gtest を導入してテストを書けるようにしたくなった(テストを書くとは言っていない)。 やりたいこと googletest を手動インストールしないで cmake 側からよしなに依存を解決し…

UTAU 音源読み込む単純なライブラリ書いた

ポエム GW に向けて暇だったので作った。いままで Qt だよりにしていたんだけれど、小さい部分はなるべく依存が小さくなるよう人生を悔い改めたので小さく作っている。 github.com 作ったもの #include <iostream> #include "Voicebank.hpp" int main() { const char *</iostream>…

いまさら WORLD の合成部分の薄い C++ ラッパー作った

ポエム 世間が何かと騒がしく外に出るのもままならなくなった反面、在宅勤務で体力が回復してきたので忘れていたコーディングをし直している。とりあえず勘を取り戻そうかと表題の通り音声合成でもやってみる。本職は web エンジニアだったはずなんだがどう…

UTAU 音源を読み込む Go のコードを書いてみた

ポエム 本当に今さらなのだけれど Go を触ることになりそうなので手馴れている処理を Go で書いてみることにした。本職 Web エンジニアの割にえらいネイティブアプリ寄りなんだよなと思いつつも UTAU 音源読むところがちょうどよさそうなので実装してみた。 …

cmake で github のレポジトリを登録したがコンパイルできない

経緯 Windows で CLion 使った開発を趣味でしているが表題の件でハマった。どういう状況でハマったかを書く。 コンパイラは MinGW を使用している Git は Windows でも Linux コマンドが使えるようなパスを通している cmake を使って github 上のレポジトリ…

作りたいもののポエム4

概要 shurabap.hatenablog.jp 4つ目、そろそろ実装に行きたい。 ところでこないだ真理を思い出したので設計が非常に単純になった。 唐突に真理を思い出したんだけど、音符一音一音に対するモーフィングとかいらないんだった。要件が一個落ちて簡単になるぞ…

作りたいもののポエム3

概要 shurabap.hatenablog.jp 一昨日からの続きやるよ。 作りたいもの UTAU 音源より表現力の高い音源形式 ↑のファイル読み書き部分 その他要件 既存リソースを活かすために UTAU 音源からインポートをできるようにする 波形情報と演奏情報とキャラクタ情報…

作りたいもののポエム2

概要 shurabap.hatenablog.jp 昨日の続きやるよ。 作りたいもの UTAU 音源より表現力の高い音源形式 ↑のファイル読み書き部分 とりあえず一旦ここまで書けたらいいこととする。(大きく作って死ぬことが多い気がする) その他要件 既存リソースを活かすため…

作りたいもののポエム

いきさつ 最近なにもプログラムを書いていなかった気がしてつらくなってきたので、なにか書くお題でも用意すればいいんじゃないかと思い立った。 作りたいもの UTAU 音源より表現力の高い音源形式 ↑のファイル読み書き部分 とりあえず一旦ここまで書けたらい…

Qt の QUndoStack の挙動

ポエム Qt には Undo framework があり、 QUndoStack に QUndoCommand を積んでいけば、いい感じに undo, redo できるようになる。 このときメモリが解放されるのかなど若干動作に癖というか、細かい部分の挙動の記述が少ないので記事にしておく。 Vitallium…

Qt のシグナルを一旦無効にする。

ポエム Qt の SIGNAL/SLOT は強力なんだが、 Undo, Redo を実装しようとしてシグナル止めて無いとユーザ編集と Undo, Redo によるモデルの変更が分からなくて Undo スタックがぶっ壊れるなと思ったので一旦シグナルを止める方法を調べた。 やり方 bool oldSt…

Qt の ui ファイルを cmake (CLion)から使う

ポエム 何度やっても QT_UIC_EXECUTABLE is missing といいよる cmake に愛想を尽かさず頑張った。 Qt の *.ui ファイルを使う方法がわかったので記事を書く。Qt 記事少なすぎでしょみんなもっと記事書いて!英語記事ですらほとんどないじゃん。 症状 以下の…

Qt を cmake から使う(CLion から使う)。

概要 Qt の開発というととりあえず QtCreator を使えばいいだろ、と思うのだが、最近 JetBrains から CLion という神ツールが発売された。 CLion: A power tool for a power languagewww.jetbrains.com 業務が IntelliJ だもので操作感が同じというのもある…

C++ でエラー処理書いてたら死にそうになったので Scala の Try パクってみた。

ポエム 業務で Scala を書いてるせいか、趣味で C++ 書いていると C++ のエラー処理のヤバさにつらみが溜まるし発狂したい。こういうのほんとうに辛い。 /** * path のファイルに書かれた文字列を返します。 * エラーがあった場合は err に値が書き込まれま…

qHash 関数と名前空間

概要 名前空間内で定義したクラスの qHash 関数の定義で手ひどい罠を踏んだので書いておく。 罠 これはダメなんだってさ。 namespace hoge { class Hoge { public: int foo; } } bool operator == (const hoge::Hoge &left, const hoge::Hoge &right) { retu…

音源のフォーマット考えている

Corpus-+--CorpusMetaInfo-+-name 音源名(言語別) | +-version バージョン名 | +-iconPath アイコンファイル名 | +-samplePath サンプル波形のファイル名 | +-author 製作者(言語別) | +-web 公開ページ | +-license ライセンス文(言語別) | +-descrip…

nginx の reqtime が 5 秒のところにピークがある。

応答遅延と思ったら… 5 秒のとこでピークあってどこかで詰まって返せてないのかなと思っていろいろ調べてたんだが、 User-Agent にもばらつきはないし、パスにもばらつきもないし原因が分からずずっと悩んでいた。 もう分からないので人に聞いたところ nginx…

C++ の参照型で多態は効くのか。

C++

経緯 ブログも久々だが C++ も久々で、書いているとどうにもポインタを触りたくないために、できるだけ参照型で物事を済ませたかった。のだが、そういえば参照型って多態効くんだっけと思って調べたがググらビリティが低かったので自分で調べた。 結果 効く…

Specs2 の Mockito でデフォルト引数つきのメソッドの動作定義がメソッドの呼び出し回数にカウントされる。

経緯 Scala でモックを使用したテストコードを書くときにに Mockito を使っている。Mockitoは大変便利で、 Specs2 で使う場合は以下のように簡単にメソッドの動作を定義できる。 val mockedHoge = mock[Hoge] val bar: Argument = new Argument() val result…

libsndfile + QIODevice で WAVE ファイルの読み書き

経緯 趣味で音声合成っぽいソフトウェアを作っている。いい加減音声ファイルの読み書き部を作らねばならなくなったのだが、C++ WAVE 読み込み 無料と Google 先生に聞いてもマッチョな結果しか返ってこない。これはこれで興味はあるが、音声合成のドメインに…