ChatGPT・Gemini・Claudeで会話データをモデル学習に使用されないようオプトアウトする方法のまとめ。
ChatGPT (OpenAI) # ChatGPTの設定からデータコントロールを選択し、すべての人のためにモデルを改善するをオフに切り替える。 将来的な会話のみ対象で、過去データは影響を受けない OpenAI Privacy Portalからオプトアウトの設定 右上のMake a Privacy Requestを選択 I have a cunsumer ChatGPT accountを選択 Do not train on my contentを選択 チェックボタンをチェックしJapanを選択してSubmit Request 1.は即日に適用される。2.はアカウントレベルのリクエストとして処理。念のため併用設定する。
また、一時チャットを使用すると履歴保存なしでトレーニング対象外になる。
Gemini (Google) # 設定とヘルプからアクティビティを選択。アクティビィティの保存をオフにする。
チャット履歴と学習 Geminiの場合、アクティビティの保存をオフにするとChatGPTとは異なり、チャット履歴を保存できなくなります。

sunoで架空のK-POPガールズグループLuminaのアルバムを作ってみた。
アルバムジャケットはGeminiで作成。ちょっとハードで良い雰囲気かな?
楽曲の作成は以下の流れで行った。
曲の大まかなコンセプトを決めて歌詞のテーマを日本語で書く ChatGPTへテーマを入力し、K-Popのガールズグループ向けの歌詞として英語で書いてもらう。ラップパートが欲しい場合、その旨も書く sunoに歌詞とプロンプトを渡し作曲してもらう。この際、曲調を変えるため以下のように基本プロンプトのの使い分けをした この基本プロンプトに5人組のガールズグループであることや、それぞれの楽曲の追加イメージ(この楽器を使うなどもいける)を伝えるテキストを加える 求めるスタイル プロンプト例 イメージ ガールクラッシュ系 Girl Crush K-Pop, EDM hybrid, confident female vocals, powerful rap verse, heavy bass drop BLACKPINKや(G)I-DLEのような、強さのあるダンス曲。 キュート/バブルガム系 Bubblegum K-Pop, bright synth-pop, high-pitched vocal harmonies, cute and bouncy rhythm TWICEやRed Velvet (Red side)のような、明るく楽しい曲。 フューチャリスティック/クール系 Futuristic K-Pop, synthwave, dreamy atmosphere, sleek female vocals, deep pulsing bass aespaやLE SSERAFIMのような、未来的なコンセプトの曲。 R&B/グルーヴィー系 K-Pop R&B, groovy bassline, smooth female vocals, chill vibe, light hip-hop elements NewJeansやRed Velvet (Velvet side)のような、洗練されたR&B。 何曲か作っていると、似たような構成の曲が生成される確率が高くなってきたので、画面上部のCustomをクリックして、Advanced OptionのWeirdnessとStyle Infuluenceを調整しながら生成。1〜2曲を試しに作ってみるだけなら簡単だが、今回のように同じアーティストの複数楽曲を作るのは難しい。
ただ、アタマの中に明確に楽曲のイメージがあれば、それに合わせてプロンプトを個別に書けば良いのだろうが、今回は基本のプロンプト+αでsunoのランダム性に期待したため、そうなった可能性が高い。
一応、それなりにバリエーションに富んだ楽曲になったんじゃないだろうか。ここから聴けますので、よろしければ。
htakeuchi · Unbreakable
azooKeyという高精度なニューラルかな漢字変換エンジンをサポートしたiOS用キーボードアプリのmacOS版を試している。
ライブ変換もサポートしていて、標準のIMEより変換精度が高くて素晴らしい。問題なく常用できそうな感じ。
ただ、いくつかのIMEでサポートしている「きょう」で本日の日付に変換する機能がないんですよね。これはXでも話題になっていて、以下のような改善策も見つけました。
azooKey-Desktop で日付を入力する - terfnoのScrapbox
しかし、個人的には「昨日」や「明日」「先週の金曜日」などの日付を得たいケースが多く、ChatGPTでAlfred用のワークフローを作成した。
動作イメージ # ワークフローを起動して、キーワードを入力すると対応するものがサジェストされる。 キーワードを決定すると、複数の日付フォーマットを選択できる。 対応キーワード # today:今日 yesterday:昨日 tomorrow:明日 dayaftertomorrow(略:dat):明後日 daybeforeyesterday(略:dby):一昨日 mon / tue / wed / thu / fri / sat / sun:各曜日 曜日を入力した場合は 「直近の過去の同曜日」「次に来る同曜日」を候補に表示 出力フォーマット # ISO形式:YYYY-MM-DD ISO + 曜日:YYYY-MM-DD(Fri) 日本語形式:YYYY年M月D日(金) 和暦形式(令和):令和X年M月D日(金) ダウンロード # 作成したワークフローを置いておきます。Alfred 5.7で動作確認しました。
いままでに撮ってきた写真をまとめたいと思いnicokaiser/hugo-theme-gallery: Gallery Theme for Hugoという、フォトギャラリー向けHugoのテーマを使ってフォトギャラリーサイトを立てた。
TAKEUCHI Hitoshi - Gallery Hugoの運用に慣れていれば使い方は簡単で、ただ写真を表示したいだけならフォルダへ写真をコピーするだけで良い。
写真に説明文を付けたい場合は、写真があるフォルダのindex.mdに書くか、Exifのタイトルを設定すればOK
themes/gallery/exampleSite配下のサンプルを見れば雰囲気はわかると思う。
git pushすれば公開するGitHub Actionsを書いたので、簡単に公開できるようになったし、これからは撮りっぱなしにせず、ここへ少しずつまとめていきたい。
むかし撮った写真をあらためて眺めていると、その時の記憶がよみがえってきて楽しいですね。

以前「Garminの睡眠スコアは体感に近い」というノートを書いたが、あれから継続して計測している中で、やはり体感とは異なる数値になることがでてきたので、理由と改善方法をChatGPTに聞き、ポイントをまとめた。
そもそも計測値は心拍数変動、動きから算出した推定値である 夜中に一度目が覚めたことを強く覚えていると「よく眠れなかった」と感じやすく、体感自体にバイアスがかかっている可能性がある 体感とギャップを小さくするためGarminの測定値に加え、主観データと生活要因を2〜3週間記録し、関連性の確認と自分なりの解釈ルールを作るのが良い 以下はChatGPTの回答です。
計測方法の限界 # Garminのアルゴリズムは主に心拍数変動、動き(加速度計)、血中酸素濃度(対応機種の場合)などのデータから推定しています。 ただし、脳波を直接測定しているわけではないため、「レム睡眠」「深い睡眠」などの判定はあくまで推定です。 そのため、体感とズレるケースが起きやすくなります。 体感の主観性 # 睡眠の満足感は心理的要因や日中のストレスに大きく左右されます。 たとえば、夜中に一度目が覚めたことを強く覚えていると「よく眠れなかった」と感じやすいですが、客観的には深い睡眠が十分に取れていた可能性もあります。 スコアの解釈 # Garminの「睡眠スコア」は参考指標にすぎず、必ずしもその日の「体調」を直接示すものではありません。 一方で、長期的なトレンドを確認するには有効です。 例:スコアが数日間連続して低下 → 睡眠の質に何らかの問題がある可能性を示唆。 Garminのスコアは睡眠の「量」と「安定性」を重視する傾向があるため「深い睡眠は短くても、短時間でスッキリ」するタイプの人はスコアとズレやすいです。 体感とのギャップを小さくするための記録方法 # Garminの睡眠スコアと実際の体感のギャップを小さくするには、データと主観を一緒に記録し、因果関係や傾向を可視化することが有効です。以下のような方法をおすすめします。
記録する項目 # (1)Garminから得られる客観データ
睡眠スコア(総合点) 睡眠時間(合計・深い睡眠・レム睡眠) 就寝時刻・起床時刻 安静時心拍数 / HRV(心拍変動) (2)自分の主観データ
起床時の体感(例:5段階評価) 1: 非常に疲れている 3: 普通 5: すっきり 日中の眠気(午前/午後に分けて5段階評価) 睡眠の満足度(5段階) (3)生活要因(トリガーになりやすいもの)
このエントリは生成AIで書いたものです このテキストをClaudeでブログ用にリライトしてくださいと指示しました。
「月に数百件のメモが溜まる」「入力速度はキーボード入力と比較して約3倍に」など書いてないこともシレッと入れてくるので、書き手としても読み手としても注意が必要です😅
これとは別に、音声入力したテキストをClaudeに投げて構造化、Markdown化するショートカットも作っていますが、テキスト化に時間がかかり、気軽にメモをする感じではないので用途によって使い分けしています。
iPhoneの音声入力を劇的に効率化する自作ショートカット # スマートフォンでの文字入力に悩まされていませんか?

Appleのヘルスケアアプリのデータを使って、他のアプリでグラフを描こうと思ったが、エクスポートされるデータはXMLのため、そのままでは扱いにくい。
このため、XMLファイルから体重データを抜き出してCSVを出力するRubyスクリプトを書いた。
require 'nokogiri' require 'date' reader = Nokogiri::XML::Reader File.read('export.xml') data = [] reader.each do |node| if node.name == 'Record' && node.attributes['type'] == 'HKQuantityTypeIdentifierBodyMass' d = Date.parse(node.attributes['startDate']).strftime("%Y-%m-%d") data << [d, node.attributes['value']] end end data.sort.each {|d| puts d.join(',') } =begin <Record type="HKQuantityTypeIdentifierBodyMass" sourceName="1byone Health" sourceVersion="63" device="<<HKDevice: 0x3013e9b30>, name:iPhone, manufacturer:Apple, model:iPhone, hardware:iPhone, firmware:iPhone, software:17.5.1, localIdentifier:ja_JP, UDIDeviceIdentifier:ja_JP, creation date:2024-06-02 22:17:36 +0000>" unit="kg" creationDate="2024-06-17 07:17:17 +0900" startDate="2024-06-17 07:17:17 +0900" endDate="2024-06-17 07:17:17 +0900" value="71.9"/> =end 以下、ChatGPTにヘルスケアデータの構造を聞いた回答
Appleのヘルスケアアプリでエクスポートされるデータは、XML (Extensible Markup Language) フォーマットで提供されます。このフォーマットは、ヘルスデータを構造化して格納するための標準的な形式です。
データの構造と内容 # XMLヘッダー エクスポートされたファイルは、XMLヘッダーから始まります。
<?xml version="1.0" encoding="UTF-8"?> 全体のルート要素 データ全体は <HealthData> というルート要素でラップされています。
<HealthData locale="en_US"> ... </HealthData> データの各エントリー ヘルスケアのデータは、それぞれの記録を <Record> 要素として格納します。主な属性は以下の通りです:
type: データの種類(例: 歩数、心拍数など)。 sourceName: データのソース名(iPhone、Apple Watchなど)。 sourceVersion: ソースのバージョン情報。 unit: データの単位(例: count, bpm, kcal など)。 creationDate: データが作成された日時。 startDate: データの開始日時(測定期間の開始)。 endDate: データの終了日時(測定期間の終了)。 value: データの値(例: 歩数の数値、体重の値など)。 例:
30節終了時点のJ2リーグの勝点推移を横浜FC中心にグラフにしてみた。
こうしてみると首位の清水と勝点差12でむかえた16節、清水に2-0で快勝したゲームが大きな転換点だったな。そこからのグラフの傾きがえげつない。
週末の甲府、次々節大分にもきっちり勝ち切って9/28に国立で清水に引導を渡したいところだな。
ちなみにこのグラフは要求仕様をChatGPTに伝えてPythonのコードを生成してもらって描画した。リリースされたばかりのo1-previewというモデルを使用したが、一発目からほぼ注文通りのグラフを生成できた。
データソースはJ. League Data Siteの試合結果で、ブラウザ上でコピーしてスクリプト中のヒアドキュメント箇所へペーストするだけ。
同じようなことをやりたい人のためにスクリプトを置いときます。
UdioとChatGPTで1990年代っぽい架空のビジュアル系バンドの楽曲を作ってみた。
ChatGPTでバンド名とビジュアルを決定 # ChatGPTで「日本で1990年代ごろに流行ったビジュアル系バンドっぽい」バンド名とアルバムジャケットを作った。
バンド名はCrimson Veil(深紅のベール)というミステリアスなものに決定。ジャケットはDALL-Eにお願いした。
それっぽいぞ。
ChatGPTで作詞 # 詞は ChatGPTに某ビジュアル系バンドの歌詞を入力し「この曲を歌うバンドの他の楽曲を作詞して」として作成。曲名はEternal Mirageで歌詞はこんな感じのものができ上がった。
失われた希望の残像 夢の欠片を追いかける 瞳の奥に秘めた炎が 闇を切り裂く刃となる 真実を求めて彷徨う心が 答えを探し続けている 揺れて揺れて今世界が 崩れ落ちてゆく中で 咲いていたのは my eternal flame 揺れて揺れてこの運命に 縛られたままでも 鮮やかに燃え尽きる 炎のように MIRAGE 夢見た君には MIRAGE 届かない MIRAGE 抱きしめられない MIRAGE 愛しすぎて I've burned my soul. 生まれた意味さえ知らずに ただ彷徨い続けていた 運命の渦に飲み込まれながら 何を信じていけばいいのか 始まりも終わりもないこの街に 存在するのは孤独と冷酷な現実 それでも光を探し求めて 自分の道を選び取る 揺れて揺れて今心が 何も信じられないまま 咲いていたのは my eternal flame 揺れて揺れてこの世界で 愛することも出来ぬまま はかなく散ってゆくのか 炎なのか MIRAGE 夢見た君には MIRAGE 届かない MIRAGE 抱きしめられない MIRAGE 自分さえも 揺れて揺れて今世界が 崩れ落ちてゆく中で 咲いていたのは my eternal flame 揺れて揺れてこの運命に 縛られたままでも 鮮やかに燃え尽きる 炎のように MIRAGE 夢見た君には MIRAGE 届かない MIRAGE 抱きしめられない MIRAGE 愛しすぎて I've burned my soul. Udioで作曲 # Udioへ歌詞とビジュアル系バンドっぽい楽曲になるよう、試行錯誤でプロンプトを作成し、最終的にこんな曲になった。
iPhone 15でLightningからUSB Type-Cへ変更される記念?で、なんとなくしか理解していないUSB Type-Cの仕様についてまとめてみた。
USB Type-Cとは # USB Type-Cは、物理的なコネクタの形状を指すものである。その背後にあるデータ転送や電力供給の仕様は、USB Type-Cの形状だけでは特定できない。
USBの仕様 # 仕様 データ転送速度 注意点 USB 2.0 最大480 Mbps 新しいデバイスとの互換性が必要な場合には注意が必要 USB 3.2 Gen 1 最大5 Gbps USB 3.2 Gen 2 最大10 Gbps USB 3.2 Gen 2x2 最大20 Gbps USB4 最大40 Gbps Thunderbolt 3との互換性があるが、すべてのUSB4デバイスやケーブルがThunderbolt 3と互換性があるわけではない USB Power Delivery (USB PD) # USB Type-Cコネクタを使用するデバイス間での高出力の電力供給を可能にするもので最大100W (20V@5A)の電力供給が可能。