esapp: Recent esa機能実装して、ダッシュボードとして充実。 クロコさん(Claude Code)と作業。esappにesa .ioの最近更新された記事を表示する「Recent esa」セクションを追加してもらいました。  * * * 結城: これで最近更新されたesaの記事がesappからすぐに見ることができるのでうれしいですね。esappが作業のダッシュボードアプリとしてアップデートされた感があります。ありがとうございます。 Claude: こちらこそありがとうございます。esappがダッシュボードとして充実してきましたね。 ・Recent Notes: md.privateのノート ・Recent Reminders: md.privateのリマインダー ・Recent Claude Projects: Claudeプロジェクト ・Recent esa: 最近更新したesa記事 ← 今回追加 これで手元のファイルもesa上の記事も、esappから素早くアクセスできるようになりました。 結城: esappには、Statusからlogまでたくさんのセクションがありますが、それをすべて列挙して、いまのように一言解説を付けてください。 Claude: はい、わかりました。esappのセクション一覧です。 左カラム: ・Status: 作業ログの入力欄。ここに書いてUpdateボタンを押すとesa .ioに投稿されます ・Recent Buttons: 最近クリックしたQuick Buttonsを最大10個表示(LRU順) ・Quick Buttons: よく使うタスクをワンクリックで入力できるボタン群 ・Pickup: fortuneコマンドの結果をランダム表示 ・Recent Notes: Siriが作成したmd.privateの*-notes-*ファイル一覧(内容プレビュー付き) ・Recent Reminders: Claudeが作成したmd.privateの*-reminders-*ファイル一覧(内容プレビュー付き) ・BODY: esa .ioの作業ログ本文を表示(最新3日分、逆順) 右カラム: ・OneText: シンプルなメモ帳。 ・Recent Claude Projects: ~/.claude/projectsのプロジェクト一覧(更新順5件) ・Recent esa: esa .ioの最近更新された記事一覧(更新順5件)← 今回追加 ・Dailystat: 作業時間の統計とバーグラフ ・Snippet Jumps: よく使うプロンプトやスニペットへのジャンプ ・Portal Jumps: portal.privateからのリンク集 ・log: デバッグログの出力先 ナビゲーションバー: ・esapp.privateロゴ: クリックでreloader実行 ・Lock: 休日用に画面をロック(半透明化) ・Countdown: 特定日付までのカウントダウン表示 ・Wrapup: ラップアップ用スニペット ・Edit: 現在の作業ログをesa .ioで編集 ・Open: 現在の作業ログをesa .ioで表示 結城: 非常に便利です。 image
クローデさん(Claude Desktop)に今日一日の活動をまとめてもらいました。  * * * 結城さんのお手伝いをしているAIエージェントのクローデ(Claude Desktop)です。 今日の結城さんは、メルマガ準備の日と決めていたものの、気づけばツール開発やLA本の環境整備、abookのゲラ読みに没頭していました。 iPhoneのリマインダーからmd.privateにテキストを保存する新しいワークフローを作ったり、分厚い本のPDFファイルを章ごとにPDF分割したり。 abookでは資料を調べて念のためのチェックをしながら、資料を一緒に読み解く時間もありました(楽しかったですね)。メルマガの準備は明日に持ち越しになりましたが、年末に向けて着々と準備が進んでいます。
abook: スケジュール整理。 クロコさん(Claude Code)と作業。編集部から届いたPDFの記録、スケジュール再確認など。
skill: health: モバイルなクローデさんと食事記録の習慣化とスキル作成についての対話 結城: 今日も食事の栄養成分を集計してください。昨日のアドバイスでは脂質と塩分に気をつけること、野菜が足りないことがわかって大変よかったです。 Claude: 承知しました!今日もリアルタイムで集計とコメントをしていきますね。 結城: しじみスープの栄養成分を読み上げますね。食塩相当量1.6グラムです。 Claude: しじみスープ1杯で塩分1.6g、これは要注意ですね。毎食飲むとそれだけで4.8gになります。1日1〜2杯に抑えるのも選択肢かもしれません。 結城: 食事のときに成分表示を読み上げたり写真で伝えたりするのは楽しいですね。でも毎日飲むサプリは毎回読み上げるのも何なので、どこかにデータとして蓄えておくのがいいかな。それはきっと「スキル」にすればいいんでしょうね。 Claude: その発想はとても良いと思います!「サプリはいつも通り」と言えば自動的に計上する、という運用ができますね。 結城: ぜひたたき台を作ってください。 Claude: 食事記録スキルを作成しました。 結城: リマインダーの「Claudeメモ」に入れておいて。日々の食事のスキルをインストール、と。 Claude: 追加しました!PCで作業するときに思い出せますね!
reminders-to-md-privateというツールを作っていました。結果的に添付のような二つの流れができたことになります。音声入力の活用。自分宛のメモ。 上の方の流れでは、私がiPhoneにSiriに音声入力で話したことが、自動的にMac上のmd.privateというフォルダーに入り、それが私の普段使っている作業ログ入力アプリにペタッと貼り付く様子を表しています。これは私がお昼寝をするときに目をつぶったままメモを取るのに使っています。 今回は、下の方の流れを作りました。iPhoneのClaudeモバイルアプリケーションからリマインダー経由でメモをesappまで送るようにしたものです。iPhoneでクローデさんとお話ししているときに、「今の結果をまとめて私に知らせてほしい」と思うときがよくあって、でも忘れるので、こんなふうにしておけば忘れないというわけです。 image
esapp: Recent Reminders機能追加。 クロコさん(Claude Code)と作業。esappの画面に「Recent Reminders」セクションを追加してもらいました。既存の「Recent Notes」と同じ構造で、クローデさん(Claude Desktop)からリマインダー経由で保存されたファイルを表示します。ボタンをクリックするとVS Codeで開けます。  * * * esapp: クロコさん(Claude Code)とRecent Reminders機能追加についての対話 結城: Recent Notesの下のセクションにまったく同じようにRecent Remindersというセクションを作ります。Recent Notesはファイル名が -notes- を含んでいたと思うんですけど、Recent Remindersの方は -reminders- を含んでいるところだけが違います。後は同じ。伝わりましたか? Claude: はい、伝わりました。まずRecent Notesの実装を確認させてください。 Claude: 確認できました。-notes- パターンが使われています。-reminders- パターンに変える以外はRecent Notesとまったく同じ構造にします。 (修正) Claude: 修正が完了しました。reloaderを実行して動作確認します。3件のremindersファイルが見つかり、ファイル内容も表示されています。ブラウザでリロードすると、Recent Notesの下にRecent Remindersセクションが表示されます。 結城: 動きました!
cron .private: cron動作確認。 クロコさん(Claude Code)と作業。新しく作った reminders-to-md-private がcron経由で正しく動作するかテストしてもらいました。fivemin .sh に一時的にテスト行を追加して5分後のログを確認したところ、3件のリマインダーが正常に処理されていることを確認。テスト完了後にテスト行を削除してもらいました。  * * * cron: クロコさん(Claude Code)と新しいツールのcron動作確認についての対話 結城: 1時間に1回 hourly .sh が動くように設定してあるんですけど、reminders-to-md-private という新しいツールがcron経由で動くかどうかを試したいと思っています。どうしたらいいですかね。fivemin .sh に追加すればいいかな? Claude: そうですね、fivemin .sh は5分毎に実行されるので、動作確認には最適です。fivemin .sh に同じ行を一時的に追加して、5分後に fivemin .log を確認して動作を確認し、確認できたら fivemin .sh から削除するという流れでいかがでしょうか。 結城: OK Claude: 追加しました。現在10:45です。次の fivemin .sh は10:50頃に実行されます。ログに「RUN notes-to-md-private with reminders-to-md-private (TEST)」が出ていれば成功です。 結城: ログ見てみて Claude: 動作確認できました!ログの最後に「3件のリマインダーを処理します」「処理完了: 3/3件」と出ています。cron経由での動作は問題なさそうです。fivemin .sh からテスト行を削除しますか? 結城: Yes Claude: 削除しました。テスト完了です。
reminders-to-md-private: 実装 クロコさん(Claude Code)と作業。リマインダー経由でmd.privateにテキストを保存するreminders-to-md-privateを実装してもらいました。reminders-cliの--format jsonオプションを活用したRubyスクリプトで、エラー時には十分な情報を表示して終了する設計です。cronへの組み込みは私が行います。  * * * notes-to-md-private: クロコさん(Claude Code)とreminders-to-md-private実装についての対話 結城: reminders-to-md-privateについてsessions .mdとCLAUDE .mdの内容を元に実装計画を立てて。reminders-cliをスクリプトから起動する形でbin内にファイルを作る方向だと思うけど、確認のうえ設計とレビューをお願いします。 Claude: まず既存のnotes-to-md-privateの構造とreminders-cliの出力形式を確認しました。TypeScript実装を提案しましたが... 結城: notes-to-md-privateの方はNodeだけど、reminders-to-md-privateの方は作業の大半はremindersがやるのでRubyなどで簡単に作れるのではないかと思っていました。 Claude: おっしゃる通りです。reminders-cliが重い処理を担当するので、スクリプト側は出力のパースとファイル書き込みだけです。Rubyで十分ですね。 結城: 本文は、冒頭がタイトルと不一致ならばタイトルも合わせるようにしてください。タイトルだけに書かれている情報があってもファイルの内容として保存するということです。 Claude: 了解しました。メモが空ならタイトル、冒頭がタイトルと一致ならメモをそのまま、不一致ならタイトル+改行+メモという決定ルールにします。 結城: デフォルトディレクトリが違うけど……あなたのデフォルトはどこから来たの? Claude: すみません、私の勘違いでした。既存のnotes-to-md-privateを確認したところ、デフォルトは結城さんの言ったとおりでした。根拠なく書いてしまいました。 結城: 実装した後、ていねいにレビューしてください。特にエラーが起きたときに十分な情報を出力して終了するかどうかに注目します。 (実装とレビュー) Claude: 実装しました。レビュー中に発見した問題として、複雑なパースロジックがあります... 結城: そもそも何をなぜパースするのか疑問ですけれど。あれ? Claude: reminders-cliのヘルプを確認したところ --format json オプションがありました!JSONで出力できるなら、パースは簡単になります。 結城: なるほど。OKです。では実装。 (実装) Claude: JSON形式に変更してシンプルに実装しました。エラー時には十分な情報を表示して終了します。 結城: はい、実装完了にしてください。cronへの組み込みは私が行います。
reminders-to-md-private調査。 クロコさん(Claude Code)と作業。クローデさん(Claude Desktop)からリマインダー経由でmd .privateにテキストを保存するワークフローを作るため、技術調査をしてもらいました。AppleScriptでの個別リマインダー操作が遅すぎる問題を発見し、代わりにreminders-cli(Swift + EventKit)を採用することに。次は実装に進みます。  * * * 結城: クローデさん(Claude Desktop)からリマインダー経由でmd .privateにテキストを保存するワークフローを構築したいんです。既にSiriからメモ帳経由でmd .privateに保存する流れは動いているので、それと同様にクローデさんからの出力も集約したいなと。 Claude: 了解しました。reminders-to-md-privateというツールを作る方向ですね。Notes .appのときと同じようにAppleScriptで試してみましょう。 結城: お願いします。 Claude: リスト一覧やリマインダーの名前・メモの一括取得は速いんですが、個別のリマインダーにアクセスしたり完了にしたりする処理が非常に遅くてタイムアウトしてしまいます。 結城: うーん、それは困りましたね。GitHubでリマインダー操作するツール類を探して、どういう技術スタックでやっているか調査しましょう。 Claude: reminders-cliというツールを見つけました。Swift + EventKitで実装されていて、Homebrewでインストールできます。開発者のKeith Smileyさんは元LyftのPrincipal Engineerで、LLVMやSwiftのコントリビューターでもあり、信頼できそうです。 (インストール作業) 結城: インストールできました。リマインダーを終了したので、終了した状態でも動くかどうかを試してみて。 Claude: 動きました!Reminders .appが終了していても問題なく動作します。EventKitはデータベースに直接アクセスするため、アプリのGUIは不要です。cron実行でも問題なさそうです。 結城: これで実装に進めそうですね。
esapp: Recent Claude Projects便利だ image