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
朝食の成分表示を読み上げて集計してアドバイスを貰いました。 image
la: クロコさん(Claude Code)とNotebookLM管理方法についての相談 クロコさん(Claude Code)と作業。参考書をNotebookLMで読む際のノートブック管理方法を相談し、esaに一覧ページを作成してもらいました。makefileにshelfターゲット(関連参考書をシェルフで開く)とnotebooklmターゲット(esa一覧ページを開く)を追加してもらいました。  * * * 結城: 参考書をNotebookLMを使って読むとき、参考書それぞれNotebookLMの別ノートブックになります。makefileのターゲットとして、それらが同じ系統(NotebookLM)であることを表したいんですけど、どうしたらいいですかね。make notebooklm-XXXXみたいな形にするか、それともesaに一覧ページを作ってそれを起動するか? Claude: いくつかの方法が考えられますね。案1は make notebooklm-XXXX 方式です。案2は略称 make nlm-XXXX 方式で短く打てます。案3はesaに一覧ページを作る方式で、makefileの変更が少なくメモも書けます。案4は組み合わせで、よく使うものは個別ターゲット、make nlm で一覧のesaページを開くというものです。個人的には案4が実用的かと思います。 結城: まずはesaにページを作りましょう。カテゴリの下に「関連NotebookLM」という名前のページを作って、make notebooklm でそのページを開けるようにしてください。 Claude: 完了しました。esaにページを作成しました。make notebooklm でそのページが開きます。ノートブックを追加する際は、esaページの表に追記していけます。
shelf .private: 壊れたHTMLの復活とAIがワークフローを覚えてくれるということについて クロコさん(Claude Code)と作業。「本棚」で「全ジャンル」リンクをクリックしたときに「not found」エラーが出る問題を調査してもらいました。処理中断でHTMLファイルが削除されていたことがわかり、再生成して解決。ついでにnavbarにジャンルを追加するpickup機能の使い方(make rename)も確認しました。  * * * 結城: 現在、ナビゲーションバーのところが「新着、名前、ランダム、最近、物語、全ジャンル、♥」となってますけど、ここに別のジャンルを含めたいんです。そこのメンテナンスってどういう手順でやるか覚えてないんですが、覚えてますか? Claude: CLAUDE .mdによると、navbarに表示されるのは「pickup状態」のジャンルです。手順としては、make renameを実行して、インタラクティブなファイル選択画面になりますよ。make allでHTML再生成すればnavbarに反映されます。 結城: 素晴らしい。make renameというのを用意したのをすっかり忘れていました。make helpで一覧も出るので、私がよく調べなかったのが良くなかったですね。ちゃんとCLAUDE .mdに記録されているので助かりました。 Claude: 了解です。make helpとCLAUDE .mdがちゃんと機能していてよかったです。 結城: ピックアップされたジャンルを修正することができました。ありがとう。 Claude: 無事に修正できてよかったです。何かあればまたどうぞ。
結城浩『AIと生きる』対話から始まる成長の物語 本書は、AIの技術解説書ではありません。高校二年生のテトラが、友人や先輩、そしてAIとの対話を重ねながら、AIと人間の付き合い方を探り、生き方を選択していく青春教養小説です。 Web立ち読みできます!いますぐ予約を!
最新刊のアナウンスです。 ぜひ、ご予約ください! 結城浩『AIと生きる』対話から始まる成長の物語
mcp-esa: クローデさん(Claude Desktop)と1日の活動を振り返る対話 結城: 私がesaで今日1日に更新したページを調べて、今日1日私がどんな活動をしたかを文章にまとめてください。esa経由でわかる範囲で構いません。 Claude: はい、わかりました。今日1日の活動を振り返りますね。まずesaで今日更新されたページを検索してみます。 (esaを検索して5件の更新を発見) Claude: 詳しい内容を見てみますね。 (作業ログとAI日誌の内容を取得) Claude: 今日は、とても充実した一日でした。朝早くからpopinputの開発に約1時間半取り組み、VS Codeへの送信機能を追加しました。午前中はabookの初校ゲラ作業に集中し、午後は(以下略) 結城: このやりとり自体をSNSで紹介したいので、SNS向けにまとめてください。 Claude: わかりました!SNS投稿用にフォーマットしますね。 (ここで投稿用のスキルを調べ、esaに保存してあるフォーマットに従って作成し、md.privateにファイルを作り、投稿用のテキストをVS Codeで表示)