開発者向けデスクトップアプリ「komono」を作った

自分が頻繁にやる作業を効率化するためのツールをひとまとめにしたデスクトップアプリ「komono」を作った。

ニュアンスとしてはDevToysのようなもの。

ならDevToysを使えばいいじゃないか、ということなんだけど。

DevToysは機能が豊富すぎて自分には過多だし、いつまでも提供してくれる保証はない。

アプリ作家として活動をしているわけだし、自分で使う道具は自分で作ろうという気概もある。

自分で作れば、仕様は自分がハンドルを握って好きに考えていいのも魅力的に映った。

ダウンロードは以下から可能です。ぜひ使ってみてください。

komono.dmg をダウンロード

主な機能(2026/3/29時点)

  • Base64エンコード
  • URL変換
  • ランダム文字列生成
  • 画像変換
  • テキスト整形
  • ZIP圧縮
  • エスケープ文字列デコード

機能一覧

Base64 エンコード / デコード

テキストをBase64にエンコード、またはBase64文字列をデコードする。

変換結果はタブで履歴が残るので、複数回の変換結果を見比べられる。タブ内の検索もできる。

URL変換

URLエンコード / デコード。特殊文字を %XX 形式に変換する。

こちらもBase64と同様にタブ履歴と検索に対応。

ランダム文字列生成

パスワードやトークン生成に使えるランダム文字列を生成する。

  • 文字数を1〜256で指定
  • 大文字・小文字・数字・記号の比率を調整可能
  • 紛らわしい文字(0Ol1 など)を除外する機能
  • 一度に6パターン生成して、好きなものを選べる

設定は保存されるので、いつも同じ条件で生成したい場合に便利。

画像変換

PNG、JPG、GIF、BMP、TIFF などの画像を WebP や AVIF に一括変換する。

  • ドラッグ&ドロップでファイルやフォルダを投げ込める
  • サムネイルプレビュー付き
  • 変換前後のサイズを表示して圧縮率がわかる
  • 個別ダウンロードのほか、まとめてZIPでダウンロードも可能

画像の変換処理はRust側で行っているので、ブラウザベースのツールより速い。

圧縮のサービスは無料有料含めて色々出ているけれど、ローカルで完結するのが安心感があっていい。

テキスト整形

JSON、JSONL、XML、HTMLをフォーマットしてインデント付きで整形する。

  • テキスト貼り付け or ファイルのドラッグ&ドロップに対応
  • フォーマットの自動判定
  • パースエラーがある場合はエラー内容を表示

APIレスポンスの確認やログの整形で重宝する。

ZIP圧縮

ファイルやフォルダを選択してZIPファイルを作成する。

  • パスワード付きZIPに対応
  • パスワードの自動生成機能(文字種・長さのカスタマイズ可能)
  • 進捗バー付きで、大量ファイルでも状況がわかる

納品物をZIPにまとめて送るときなどに、わざわざターミナルを開かなくて済む。

エスケープ文字列デコード

\xE5\xB9\xB4\u5E74 のようなエスケープされた文字列を人間が読める形にデコードする。

ログに出てくるエスケープ済み文字列の中身を確認したいときに使う。

工夫したところ

  • サイドバーの並び替え: ドラッグ&ドロップでツールの表示順を変更できる。よく使うものを上に持ってくると便利
  • 設定の保持: アプリを閉じても、各ツールの設定やサイドバーの並び順はそのまま。変換結果は保存しない
  • 結果のタブ管理: アプリが起動している間の変換結果はタブに蓄積される。タブ内検索でハイライト表示もできるようにした
  • コピーボタン: テキストの変換結果はクリップボードにコピーできるボタンをつけた

技術スタック

  • Tauri v2 — デスクトップアプリのフレームワーク
  • React 19 + TypeScript — フロントエンド
  • Rust — 画像変換やZIP圧縮など、重い処理を担当
  • Tailwind CSS v4 — スタイリング

軽量な処理(Base64、URLエンコードなど)はフロントエンドで完結し、重い処理(画像変換、ZIP圧縮)はRust側で実行する方針にしている。

ダウンロード

macOS版(Intel / Apple Silicon 両対応):

komono.dmg をダウンロード

アプリ内に自動更新機能が入っているので、一度インストールすれば新しいバージョンが出たときに通知される。

おわりに

今後は盆栽のように、機能を足したり、改善したりと必要に応じてメンテナンスを続けていくつもり。