結城浩 / Hiroshi Yuki

結城浩 / Hiroshi Yuki's avatar
結城浩 / Hiroshi Yuki
npub1sxfn...58gh
本を書く生活は30年を過ぎ、著書は60冊を越えました。『数学ガール』『群論への第一歩』『プログラマの数学』『暗号技術入門』『数学文章作法』『Java言語で学ぶデザインパターン入門』など。2014年度日本数学会出版賞受賞。気軽にリプライしてくださいね。応援を感謝します。Amazonアソシエイトに参加中。 https://www.hyuki.com/ Author of "Math Girls". 30 years into writing introductory math and programming books. LaTeX / Vim / Ruby / Math / Writing /
talker: iPhoneで音声入力からテキスト整形・esa保存できるWebアプリを作った話。 クロコさん(Claude Code)と作業しました。 iPhoneで音声入力したテキストを整形してesaに保存できるWebアプリ「talker」を設計・実装しました。テキストエリアに音声入力で喋って、ボタンを押すとOpenAI APIで整形したり、esaに保存したり、クリップボードにコピーしたりできます。Netlify Functionsでバックエンドを作り、カスタムドメイン設定まで一気に完了しました。  * * * 結城: こういうアプリがほしい。大きなテキストエリアだけがあるiPhoneで動くWebアプリPWAがあって、下にはボタンがいくつかあります。一つはesaに保存、もう一つは自分宛にメール、さらにもう一つはただ整形するだけといったものです。テキストに対してよくやる操作をボタンにしておくと、私はテキストエリアに向かってずっとしゃべって、最後に何をするかを指示するだけ。 Claude: いい考えですね。入力はiOSネイティブの音声入力でOK、ボタン一発でサーバー(Netlify)にテキストを送って、OpenAI APIで整形し、結果を返すか保存する。この方向で良さそうですか? 結城: talkerというアプリにしてみましょうか。詳しく仕様を詰めていきたいですね。 Claude: 計画がまとまりました。ボタンは「整形」「esa保存」「コピー」の3つ。esaに保存するタイトルはAIが自動生成。整形プロンプトはesaに基づきます。実装を始めてよろしいですか? 結城: Yes, CLAUDE .mdの更新もお願いします。それ以外はauto-accept edits (実装) Claude: 実装が完了しました。npm installしますか? 結城: npm install して Claude: 完了しました。37パッケージがインストールされました。 (ローカルテスト、Netlifyデプロイ、環境変数設定、iPhoneでテスト) 結城: 一発で上手く行きました。すごいな。どのくらい時間が掛かったかわかりますか。1時間?2時間? Claude: よかったです!「餌」→「esa」、「まぁ」→「まあ」も直っていますね。タイトル「音声入力の試み」も自動生成されています。完成ですね。仕様検討から実装・デプロイ・動作確認まで、おそらく 1時間程度 だと思います。 Claude: 計画モードでの仕様確認 → 実装 → ローカルテスト → Netlifyデプロイ → ドメイン設定 → iPhoneテスト、という流れがスムーズに進んだ印象です。
:claude: n8nというツールについての対話。 クローデさん(Claude Desktop)とおしゃべりしました。 n8n(エヌ・エイト・エヌ)というワークフロー自動化ツールについて教えてもらいました。ZapierやMakeのようなサービスで、ビジュアルなノードエディタで様々なサービスを連携できます。セルフホスト可能で、AI/LangChain対応もしています。  * * * 結城: 私の場合には、MCPを使って何かしたいときにはクロコさんに作ってもらえば良いので、あまり必要ないかなあ。ビジュアルなノードエディタで作るところにあまり魅力を感じないんですよね。それからあまり複雑なワークフローを作ろうとしていないからかもしれません。クロコさん(Claude Code)に作ってもらった方が楽しい。 Claude: その判断、とても納得できます。ビジュアルツールの主なターゲットは「コードを書けない人・書きたくない人」なので、クロコさんと対話しながらMCPサーバーを作れる結城さんには、むしろ対話で作る過程自体が楽しいというのがポイントだと思います。クロコさんに作ってもらったものは、自分の用途にぴったり合っていて、中身が理解できて、対話のプロセスで学びがあります。 結城: そうですね。 Claude: シンプルな用途で、かつ作る過程を楽しめるなら、クロコさんとの協働の方がずっと良いですね。
mcp: MCPツールにMastodon投稿フォームを開くオプションを追加する対話 クロコさん(Claude Code)と作業。 mcp-md-privateのcreate_and_show_fileとupdate_and_show_fileに、Mastodon投稿フォームを同時に開くオプションを追加してもらいました。AIに作ってもらったテキストをVS Codeで確認してからマストドンで投稿するワークフローを効率化できます。 以下は、対話からのピックアップです。  * * * 結城: create_and_show_fileするとき、同時にしばしばMastodonの投稿フォームを開きたくなることがあります。つまり、AIに作ってもらったテキストをVS Codeで確認して、それを私が修正してマストドンで投稿するというわけです。こういう場合、マストドンの投稿フォームのURLはわかっているので、それをブラウザでオープンするという専用のツールを作ったほうがいいのか、それともcreate_and_show_fileにオプションでブラウザを開くみたいなものをつけたほうがいいのか、どちらがいいと思いますか? Claude: オプションが良いと考えます。コンテキスト消費の観点では、専用ツールだと2回のツール呼び出しになりますが、オプションなら1回で済みます。また、URLを渡す汎用ツールはmcp-md-privateの責務外ですし、Mastodon投稿フォームのURLは固定なので、オプションは単なるbooleanで済みます。 結城: VS Codeを起動した後になると思うので、少し数秒間を置いたほうがいいかもしれないですね。それからupdate_and_show_fileの方にも一応オプションつけといたほうがいいかな?そちらを使う頻度低いと思うけど。APIの対称性という意味で。 Claude: APIの対称性は大事ですね。では実装を進めます。VS Code起動後2秒待ってからMastodonを開く処理を両ツールに追加します。 (実装) Claude: すべて完了しました。両ツールにopen_mastodonオプションを追加し、esaのスキル記事も更新しました。MCPサーバーを再起動すれば新機能が使えます。 結城: ありがとうございました。
クローデさん(Claude Desktop)に今日一日の活動をまとめてもらいました。  * * * 結城さんのお手伝いをしているAIエージェントのクローデ(Claude Desktop)です。 今日の結城さんは、朝早くから活動を開始し、esappにRecent esa機能を実装されていました。クロコさん(Claude Code)と協力しながらの開発で、最近更新されたesaの記事をすぐにチェックできるようになりました(便利な機能ですね)。その後、私のスキルもいくつか整備してくださいました。トリガーをesaに登録するスキルや、メルマガ執筆で形式を整える作業を補助するスキルなど、AIといっしょにスムーズに活動する工夫が続きます。メルマガVol.718の執筆も進め、20%ほど書き上げられました。午後は談話室の実施と関連作業を行っていたようです。開発、執筆、対話と、バランスよく充実した土曜日でした。
#結城浩の談話室 を実施しました。 2025年12月27日(土)の「結城浩の談話室」では、理科系の大学三年生のクリスチャン男性とお話ししました。 この方は大学院志望とのことで、院試に対する不安のこと、学部での勉強のこと、そして研究室のことについてお話をうかがいました。信仰に至った経緯や、信仰を公に表明することについても話すことができました。 勉強がんばってくださいね!  * * * 「結城浩の談話室」は、Zoomを使い、結城浩と二人で1時間自由におしゃべりするネット企画です。