立ち位置
職業高校(SMK)のソフトウェア工学科(Rekayasa Perangkat Lunak)の学生です。作っているのは道具です。人のファイルを扱い、突然閉じられても正しさを保たなければならないデスクトップアプリ、インターネットなしでも動くサイト、声と音のためのツール、そして家に置いた小さなサーバー。
ウェブはたいてい描画の層です。Tauri の WebView の中の SvelteKit や、静的サイトのための Astro。ただし状態とルールはプログラム側にあります。Onsa の Rust 製オーディオエンジン、KyuSin のゲームルール、Saku Pajak で端末上に動く検索エンジン。だから自分のことをウェブ・モバイル開発者とは呼びません。仕事はページ側ではなく、プログラム側にあるからです。
コードの外では、ゲームデザイン文書、小説、短編、歌詞も書いています。文章はホームに専用のセクションがあります。
これらの作品は、個人のスタジオ兼工房 Pyonkuro の名のもとで作っています。
進め方
- まず仕様を書く。 正しくなければならない動作の一覧を、画面を作る前に書きます。何をもって完了とするかは、この文書が決めます。
- 確認できるマイルストーン。 各段階は範囲がはっきりしていて、テストに合格したときだけ閉じます。
- 機能だけでなく、不変条件を。 破ってはならないルールを別に書き出し、自動テストで守ります。
- 一連の流れを通すテスト。 小さな関数だけでなく、スキャン、保存、終了、再起動、確認まで。
実装は Claude Code で行っています。私が握っているのは形を決める部分です。仕様を先に書き、範囲の判断は自分が下し、マイルストーンは順番に進め、主張に根拠を示せるとき(実際に動くテスト、または他の人が再現できる確認)だけマイルストーンを受け入れます。途中で下した判断は理由とともに記録し、その記録も仕事の一部です。Onsa の
docs/DECISIONS.md、
Saku Pajak の
docs/DECISIONS.md
(判断にはすべて番号があり、参照された番号が記録されていなければテストが失敗します)、そして CIT の
docs/devlog/
(マイルストーンごとに、何を作ったか、どんなバグが見つかったか、何がそれを見つけたかを記録)。
道具
デスクトップアプリには Rust と Tauri 2(Onsa と KyuSin)。CIT(Wails と併用)と実習先の生産管理システムには Go。画面には SvelteKit と TypeScript。静的サイトには Astro(Saku Pajak とこのサイト)、Saku Pajak のデータパイプラインには Python。VocaVoca では OpenUtau に合わせて C#、.NET、Avalonia。家のサーバーには Armbian、Docker、systemd。ローカル保存には SQLite。そしてすべてに Git。