僕はサブスクが嫌い。理由は、一度契約すると息をするだけでお金が減っていくから。僕が息絶えたとしてもこの支払いは終わらない。
そして、僕の中で「ないと困るけど課金したくないもの」の代表格が「議事録アプリ」だ。
それならば、ClaudeCodeやCodexから呼び出せる議事録アプリを自作してしまえばいいじゃないか。ということで、実際にやってみた。
今のところ問題なく使えていて、コーディングエージェントへの課金(約3,000円)だけで動く議事録アプリができた。この記事では、その仕組みとどうやって開発したのかを紹介していく。
サブスクをこれ以上増やしたくないけどAI活用を進めていきたい人や、AIを使った業務アプリケーションの開発に興味がある人などの参考になれば幸い。
あと、僕は社内ツールを開発していた経験はあるんだけど、エンジニアと呼べるのかというとそんなことはない。知識もめっちゃ偏っている。
だから、非エンジニアの人でも業務での課題をこんなふうに解決できるんだよというのを体感してもらえたら嬉しい。
なんで「サブスク」と「議事録アプリ」が嫌いなのか
結論、サブスクは悪魔の発明だと思っている。
呼吸をするだけで払う。呼吸をしなくても払う。便利な一方で、気づかないうちに少しずつ搾取されていく。サラリーマンの源泉徴収と一緒だ。
その中でも、議事録アプリには特に払いたくない。というのも、大した機能じゃないのに月1,500円〜3,000円もかかるから。
言葉が多少荒くなってしまうんだけど、僕がやりたいことに限定すると、録音して、文字起こしして、整形するだけ。これって生成AI黎明期からあるようなツールで、別に大したことじゃない。そこに課金したくないというのが個人的な感覚だ。
あと、この市場には色々なサービスがあって、各社それなりの工夫や強みを持ってはいる。ただ、僕はカスタマイズ性を保てる方が嬉しい。
また、ここからは私怨なんだけど、特に嫌いなのがデバイスとセットで売られている議事録ツール。デバイス代で数万円、さらにサブスクで月数千円取ってくる。生活ログを取りたい人向けの、玄人向けツールだと思っている。
繰り返しになるけど、僕はそこまで大したことがしたいわけじゃないんだ。
もともとはNotionAIを使ってやっていた
もともと議事録はNotionAIでやっていた。会社でNotionAIを使っていたから、それを議事録ツール代わりにしていたんだけど、これが結構神。
録音はワンボタンで始められるし、話者分離もできる。録音した内容は勝手に議事録化されて、検索にも引っかかる。スマホからも使えるので、専用の録音デバイスもいらない。
Notionをガンガン使うビジネスパーソンなら、NotionAIを使っちゃえば議事録アプリはいらないと思う。
ただ、会社の補助がなくなったことと、議事録以外の用途はClaude×Notion MCPで代用できることから、解約に至った。残った議事録の代わりとして行き着いたのが、今回の自作アプリだ。
今回のゴール
ここでは、今回の実装のゴールを整理しておく。
まず想定するのは、PCでのオンライン会議。使うシーンは色々考えられるけど、まずはPCのオンライン会議で問題なく使えることが先決だ。スマホでの手段はゆくゆく考えたい。
次に、PCの音声とマイクの音声のどちらも録音できること。というのも、デフォルトの録音メモは外部マイクの録音はできるんだけど、会議相手の声(PC音声の方)が録音できないから。これだと僕だけが話している記録になってしまう。

文字起こし自体はWhisperを使えばできる。なので、録音さえしっかりできればOKという考え方だ。
今回の実装内容
ここからは、実際に作ったものを解説していく。
今回作ったのは、録音用のMacアプリと、それをCodexやClaudeCodeから操作するSkillの2つ。もともとCodexで作ったので普段はCodexで動かしているけど、仕組みとしてはClaudeCodeでも動く。
処理は「録音 → 文字起こし → 議事録にまとめる」の3段階に分けた。

録音:マイクとPCの音を1本にまとめる

録音は、Swiftで作ったメニューバー常駐のMacアプリが担当する。AppleのScreenCaptureKitを使って、マイクとPCの再生音を同時に取得している。
取得した2つの音声は時刻をそろえて合成し、停止したタイミングで1本のWAVファイルとして保存する。映像は保存しない。

録音アプリは独立して動くので、Codexの返答が終わっても録音は続く。メニューバーから止めることも可能だ。
文字起こし:Mac上のWhisperを使う
文字起こしには、以前作った文字起こし用のSkillを利用した。MLX Whisperで保存済みの音声を読み取り、時刻付きの文章に変換する。
処理の前に長い無音を確認していて、出力する時刻は元の録音に合わせている。
録音と文字起こしはMac内で処理しているので、文字起こし用の有料APIは使っていない。
議事録:文字起こしをCodex・ClaudeCodeで整理する
議事録づくりは生成AIのモデルに任せている。文字起こしを読んで、要点・決定事項・対応事項・保留事項をまとめる流れだ。
担当者や期限が発言に出てこない場合は「未定」にして、わからない内容は推測で埋めないようにした。
ただ、この段階では文字起こしテキストをCodexやClaudeCodeで扱う。なので、全工程がMac内だけで完結するわけではない。

操作:チャットから一連の処理を呼び出す
開始・停止・文字起こしの手順は、議事録用のSkillにまとめた。
使い方はシンプルで、CodexやClaudeCodeに「会議を録音して」と伝えれば録音が始まる。会議が終わったら「録音を止めて」と伝えると、保存・文字起こし・議事録作成まで続けてやってくれる。

「録音だけ」「文字起こしまで」と指定すれば、そこで終了する。メニューバーから停止した場合は音声の保存まで。続きはCodexとかClaudeCodeに処理を依頼すればいい。
保存:音声・文字起こし・議事録を残す
会議ごとにフォルダーを分けて、録音ファイル・文字起こし・議事録を保存している。
録音中は60秒単位で途中データを保存していて、異常終了しても確定済みの区間から復旧できるようにした。
原音を残しておけば、文字起こしのやり直しや内容の確認にも使える。
使ってみた・作ってみた感想
体感、なんの問題もない
結論、会議の記録は問題なくできている。
Skillから起動できるので、CodexやClaudeCodeから録音の起動、文字起こし、議事録の整形まで一通りできる。
NotionAIを使っていたときに感じていた、録音から議事録まで一気通貫でできる感覚が、そのまま実現できていると思っている。
最初の方針合わせで面倒な構成を修正
とはいえ、最初にAIに実装させようとしたときは、やや面倒な構成を提案された。

僕がプロンプトで「話者分離したい」って言ってしまったせいなんだけど、PC音とマイク音を別々に文字起こしして、それぞれに時刻データを付けてから統合する仕組みだった。
これだとバグるのが目に見えている。それよりは、話者が分離されていなくても時系列が合っている方がよほどありがたい。なので、2つの音声を時刻をそろえて1本にまとめる今の構成に修正した。

Notionで頻発していた問題点の原因がわかった
先ほど書いた時系列のずれは、NotionAIを使っているときにも起きていた。今回の件で、その原因がなんとなく把握できた。
これは僕の推測なんだけど、Notionの文字起こしも、音声のまとまりごとに時刻付きで書き出して、あとから時刻を頼りに統合しているんじゃないかと思う。
それでも問題なく使えてはいたんだけど、文字起こしを振り返るときのストレスはあった。
他のツールに「なんでこれできないんだよ〜」と文句を言ってしまうところも、自分で作ると限界が見えてくる。すると「あー、お前もここで悩んだんだな」っていう、戦友のような感覚になれる。
まとめ ~ 自作すると見えるもの ~
最後に、自作してみて思ったことを書いておく。
正直、車輪の再発明という側面はあると思う。GitHubとかを探せば似たものは見つかるだろうし、ツールを導入する方が便利な場面もある。
それでも、自分で作るメリットは3つあると思っている。
- 仕様を学習できる:ツールの限界や効用を自分で評価できるようになる
- カスタマイズできる:自分の使い方に合わせて作り変えられる
- 懐疑的な視点を持てる:誇大広告を見ても、中身を知っている分だけ冷静に判断できる
仕様を学習できる
一番大きかったのはこれ。今回でいえば、話者分離をしようとすると時系列がずれやすい、ということが作ってみて初めてわかった。
使う側にいるだけだと「なんでできないんだよ」で終わるところが、作る側に回ると「ここが難しいんだな」と理解できる。ツールの良し悪しを、自分の基準で評価できるようになる。
カスタマイズできる
自作なら、自分の使い方に合わせて作り変えられる。「録音だけ」「文字起こしまで」と途中で止められるのも、担当者が決まっていなければ「未定」にするルールも、自分で決めたものだ。
今はPCのオンライン会議だけが対象だけど、ゆくゆくはスマホでも使えるようにしたい。こういう拡張を自分の判断で進められるのも、自作ならでは。
懐疑的な視点を持てる
中身を一度作ってみると、「この機能にこの値段は高いな」と冷静に判断できるようになる。
録音・文字起こし・整形の流れ自体は、エンジニアとは言えない僕でもAIと一緒に作れた。だからこそ、高いデバイスやサブスクの広告を見ても、自分が何にお金を払おうとしているのかを考えられる。
何にお金を払うかを自分で決める
結局、今回はコーディングエージェントへの課金だけで議事録まで回せるようになった。議事録のために新しいサブスクを増やさずに済んでいる。
大事なのは、なんとなく払い続けるのではなく、何にお金を払うかを自分で決めることだと思う。
サブスクを増やさずにAI活用を進めたい人や、非エンジニアだけど業務の課題をAIで解決してみたい人の、ヒントになれば嬉しい。
