投稿者: howdi

  • EmacsでGithub数式表記のMarkdownをプレビューする

    Dsc_1485< 最近、emacs chat-gpt-shellを使ってgoogle geminiに相談している。apiインタフェースで利用しているので、アプリで利用するよりも非常に安価。
    昨日は、量子力学で使われているディラック方程式が扱う電子の波動関数の意味について質問、数式が混じった回答をしてきてくれた。確かに、数式が混じった回答の方が、理解しやすい。しかし、emacs chat-gpt-shellでは、テキストしか扱えないので読みにくい。これまでは、いったん、会話の内容を別ファイルに保存し、Latexに変換し、pdfに変換し読んでいた。
    ふと、気がついた。geminiの場合、回答してくる数式表記はgithub流Markdown形式らしい、であれば、emacs上でMarkdownをプレビューできれば解決じゃないの?と。
    数年前だったら、自分でWebをGoogle検索しまくり、見込みのありそうなサイトのコンテンツの理解に時間を使い、自分の環境に実装し、と、手番を踏んでいたはず。だが、いまや、生成AIの時代、geminiに質問。gripを使ったgrip-modeの実装を紹介してきた。gripはpythonでの実装なのでpip経由でインストールし、init.elに、また、記述を追加したが、うまくいかない。gripのモジュールのパスの設定から始まり、gripを起動するキーバインドの設定追加に時間を要した。なんとか、gripを起動し、別ブラウザ上にMarkdownファイルがレンダリングされて参照できるようになった。だが、肝心の数式部分がレンダリングできてない。gripはgithub流の数式表現のレンダリングが苦手らしい。geminiにそう、質問したら、今度は、gripではなくpandocをmarkdown-modeに設定する方法を紹介してきた。

    ”C-c C-c p”

    でなんなく、レンダリングされた数式がブラウザに表示できた。

    ” cat transcript.txt|pandoc -f gfm+tex_math_dollars -t latex -s |pbcopy”

    でmarkdownファイルをlatexエディターに接続できた。逆に、latexファイルをmarkdownファイルに変換するのは”pandoc input.tex -f latex -t gfm -s -o output.md”でできた。
    なんだよ、はじめっから、そう教えろよ!と、言いたくなった。
    だが、私のやりたいこと、単にMarkdownをレンダリングするのみではなく、数式表現の部分もレンダリングにしたい。とは伝えていなかった。そこにもあるのだろう。AIを使いこなすのは、かなり、難しい。とんでもないところに、連れて行かれる、なんの悪気もなく。
    で、そもそもの、ディラック方程式の件。
    ディラック方程式をつかえば、電子は、非相対論的な日常の世界では2成分関数。相対論的な世界では4成分関数と解釈できる。この2成分の状態、4成分の状態、物理的にどんな状態として解釈するのが妥当なのか。geminiからのMarkdown形式での回答を数式がレンダリングされた状態で読み進めていき、4成分の意味をよく考えれば、すでに場の量子論の入り口、仮想粒子の概念、に立っていた事に気がついた。学部4年のときには判らなかった。AIにアシストしてもらい、ようやく、還暦を過ぎて、一皮むけた解釈ができるようになった。そんな、気がする。
    これからも、AIとの輪読を進めようと思う。

  • 35mmの世界。。。

    Dsc_1479
    最近、ライカのカメラに興味がでてきた。
    ライカのカメラで撮影した写真は味がある。なぜなのだろう。普通の眼デジでライカのカメラの味をまねできないのだろうか?
    そういれば、ライカのカメラ、搭載しているレンズの焦点距離が50mmでないらしい。35mmとか。人の視野に近い焦点距離が50mmではなかったか?Geminiで検索してみた。私の認識は古くなってきていらしい。どうも、50mmは凝視しているときの視野感らしく、ボーッと外界を観ているときは35mm程度らしい。35mmというと広角じゃないの?35mmの世界に興味が湧いてきた。人によっては、40mmだ、いいや42mmだという方もいる様子。
    ■万能な35mmかスタンダードな50mm。単焦点好きの私が1本だけ選ぶならどっち?
    ■40mmってどんなレンズ? 35mmや50mmとは何が違うの? 気軽で楽しい「40mm単焦点レンズ」の魅力
    うちのカメラがAPS-C,故に、焦点距離を1.5倍換算しなければいけないらしい。35mmの世界に近いのは、35*2/3=23mmか。ちょうど広角のズームがあった。挑戦だ。。。
    カメラの操作メニューをよく見たら、ピクチャーコントロールっていう項目があった。なにも知らず、なぜか、風景を設定していたらしい。このピクチャーコントロールも、こだわりの世界らしい。標準、ノーマル、ビビッド、ポートレート、風景、ネガ、とある。フイルムカメラ時代、フイルムメーカーごとに、フイルムの発色など様子が違ったが、その感覚らしい。小西六が癖がなく、富士フイルムのフイルムは緑が強く、コダックはビビッド、ネオパンはモノクロームと、覚えていたが、デジタルになり忘却の彼方へ。デジタルの時代には、存在しない感覚なのかとおもっていた。しかも、RAWで撮影していると、Adobe light roomやPhotoshopでは、撮影後に変更できる。しかも画像一枚一枚。フイルムの時代がフイルムロール単位でしか選択できなかった。でも、なかなか微妙な感覚の差。サムネール的な小さい画面で選択するのはなかなか難しい。
    パンドラに箱を空けてしまったかもしれない。カメラ沼にはまった気がする。

  • バラの冬剪定。。。

    Dsc_1476
    毎年、今の頃、正月から2週間くらい経過すると、正月ボケも消え、普段の生活のリズムが戻るらしい。blogを振り返っていたら、去年も今頃に記事をアップしていた。
    今日は、午前がマンション管理組合の臨時総会、午後が床屋さんで散髪.週末の土曜日なのに予定の多い一日。
    朝、庭のバラの剪定を行った。今年は深く剪定.2/3位でカット。だいぶ背丈が低くなった。最近、うちのまわりは、強い風が吹くことが多くなった。そのたびに、バラの枝が、大きく揺れ、最悪、植木鉢が風に倒されたこともあった。故に、エイ!と、気合いを入れて深く剪定した次第。剪定鋏を入れてみると、太い枝でもけっこう簡単に切れた。太いとはいえ、まだまだ、若いようだ。今年も沢山、肥料がいるのかしら。今年はうちの庭でバラの花を見る機会も少ないかもしれない。枝が立派に育つこと、広がることを優先しよう。
    冬の間は、うちの庭、動物も植物もおとなしい。静かに眠っているようだ。この間に、今度の夏に向けた準備を始めれば、動物たちや植物たちの勢いに邪魔されることなく、先攻できるのかもしれない。
    朝、お日様が顔を出す、日出の時間も、一日、一日、早まり始めたた。気が早いが、春への準備を始める時期なのかもしれない。来週、20日が大寒。

  • 今年一年を振り返って。。。

    Img_4722
    これまで、大晦日というと、バタバタしている事の方が多かった気がする。一年を振り返る事もなく、次の一年を迎えていた気がする。今年は、時間もあることなので、一年を振り返ってみようと思う。
    1月
    おせち料理作成に挑戦。人生で初めて、実家でおせち料理の制作に挑戦してみた。今時は、webでyoutubeで、いくらでも、製作のノウハウを教えてくれる。なます、栗きんとん、はうまくできたが、田作りは失敗。田作りで使う魚は、「いわし」ではなく、「こまめ」だったことも知らなかった。
    横浜中華街再訪。私は、1月が誕生月。誕生日のお祝いに、久しぶり、おそらく、コロナ禍の後、初めて、横浜中華街にでかけた。中華街もずいぶん様子が変わってきていた。裏通りにも人が入るようになった。いつもいく重慶飯店の飲茶の店で美味しくいただいた。また、ひとつ、歳をとった。無病息災であることはありがたい。
    How to grow Christmas cactus 2
    2月
    この月は、大きな動きもなく、寒さに耐えてきた一ヶ月だったのか。
    ロスト・キング リチャード3世の発掘と再埋葬
    3月
    初旬、日中の気温が20℃になる日もはじまったので、庭仕事を開始。パシフィコ横浜で開催されていたカメラおたくの祭典CP+ 2025に初めて参加。そう、たしか、リコーさんの新しいコンデジを触ってみたくて出かけたのだった。考える事はみないっしょ、リコーさんのブースはすごい人だかりだった。毎年、ゴールデンウイークに実施することが恒例のEmacsの更新を今年は、この月に実施。Emacs 31.0.50に更新。このMacがIntel Macではなく、M1 Macにかわり、環境がずいぶん変わっていたことにいまさら気がついた。月末には、桜が咲いた。
    生成AIとの付き合い方
    4月
    新人を街でみかけるようになり、自分も初心を振り返った季節。AWSのAWS Cloud Practitionerの資格期限更新のために試験を再受験し合格。といっても、Webをつかってゲーム感覚で受けるAWS技術知識の確認テスト時間ばかりがかかった。中旬にはEmacs上でChatgpt-shell連携を開始。いまでは、良い相棒に育ってくれている。OpenAIのChatgptのみではなくGoogleのGeminiもChatgpt-shellのインタフェースで使い始めている。職場での利用もそうだが、AIとの付き合い方が、このあたりから本格的に変わってきた。
    現実は、厳しく、ゴールデンウイークの前半は、このMacのバックアップ地獄に苦しんだ。バックアップのバックアップのバックアップまで必要だとは思いもしなかった。
    ピエール・ブーレーズ・フェスティバル 東京 1995
    生成AIとワインバークの場の量子論を輪読する
    Jeanne Moos, CNN…
    バックアップ地獄は、つづく
    EmacsとChatgptの良い関係
    5月
    ゴールデンウイークそのものは、実家に帰省し、両親の介護のようなことをやったり、実家の裏庭に、キュウリ、なす、トマトをうえてみたり。後半は、台北に飛び、台湾COMPUTEXに参加。台北には、以外と日本の植民地だった後が未だに残っていること、台北の若者達はそれを上手くリノベーションしていることに気づいた。夜市も始めて歩いた。臭豆腐の匂いが歓迎してくれた。夜市を歩きながら飲んだ「台灣啤酒 18天生(Taiwan Beer 18 Days)が美味しかった。
    Bug Hotel/虫のホテル
    台北をゆく。夜市巡り。。。
    6月
    理研神戸。理化学研究所さんに量子誤り補正計算プログラム開発用システムを納品。納品前は、千葉は匝瑳の工場で出荷前の構築作業や確認試験を一週間で実施。出荷直前までいろいろな事がおきた。取り付けたFPGAが無事に理研にとどいた事にほっとした。納品後に訪れた神戸北野は良いところだった。もう少し時間をとってゆっくり歩き廻りたかった。
    マザーツリー。スザンヌ・シマードの著書を読んだ。確か、NHKスペシャルで一度紹介されたひとだった気がする。
    これ以来、植物の見方が少し変わった。コミュニケーションしあう植物のダイナミックな行動に注意するようになった、我が家の狭い庭すら。
    神戸をゆく。北野あたり。。。
    マザーツリー(スザンヌ・シマード)
    7月
    英検準一級合格。最近、英語の読み書き聞く話すが以前よりも苦にならなくなってきたので、自分の現在位置を確認するため、英検の準一級に挑戦した。一次試験と二次試験があったが、一次試験はTOEICのようにマークシートだけかとタカをくくっていたら、英作文もあったことには焦った。暑い日にうけた二次試験面接だった。久しぶりに緊張した。なんとか、やりとりできた。おそらく、単語の意味を誤解して勝手にはなしていたとおもうが。結果、無事に合格できた。次は英検一級を目指す!と、自分に対し宣言した。が、これはそう簡単ではないと覚悟を決めている。次のキャリアとして英語でのコミュニケーションを活かした仕事をしてみたい気持ちもあるし。翻訳、通訳、、、でも、ネイティブや帰国子女にまけるか、この還暦ジジーは。
    7月のヘアリーベッチ
    7月のフェアリーベッチ(その2)
    今年はバラが元気です!
    8月
    人って、本当に暑いときは、ジッとしているものなのだろうか?
    AIと共にあらんことを。。。
    バラの調子がおかしいので、Chatgptに診てもらった。。。
    今日は二百十日。。。
    9月
    大学時代のサークルのメンバーと久しぶりに有楽町の居酒屋さんに集まった。皆さん退職がちかづいた年齢になり時間に余裕がでてきたのか、集まる機会がふえてきた。サークルのメンバーはいい。会った途端にサークルの練習所でお茶をしている時間に戻ることができる。みなさん、白髪が増えたり、髪がうすくなったり、しわがふえたり。
    モッコウバラの上のナカアオフトメイガ
    映画「コンタクト」を観て。。。
    10月
    9月にあつまった大学のサークルのメンバーの一人が埼玉でコンサートを開催したので、参加してきた。教室を持っているようで、先生と呼ばれていた。本人がDJをやっていて、その様子を聞くかぎりでは、大学時代の雰囲気からかわっていなかった。安心した。けど、彼とは会場ではあまり会話できなかった。
    ヨトウムシ。。。
    LaTeXをMacbook Tahoe26にインストールし美文書生活を再開。。。
    Apple WatchとChatGPTで実現!還暦からのスイミングデータ分析ライフ
    キマダラカメムシがやってきた。。。
    オー・ヘンリー『The Sleuths(探偵たち)』から学ぶ英語と社会背景
    11月
    京都旅行。京都に家族旅行でいってきた。京都は、いろいろ思い出のある街。もう少し、私の頭が良かったら、私の人生もかわったろうに。おいおい、このblogにその様子をアップロードしようとおもう
    米寿祝。母親は八十八歳をむかえた。妹たちが中心になり企画してくれて、両親、兄弟夫婦、孫達、ひ孫も、ほぼ全員あつまって、お祝いの会を開催した。いつのまでも、心も体も元気であったほしい。
    12月
    台湾クリスマス。社長の「行くぞ!」の一言で、久しぶりに1泊2日の弾丸ツアー。飛行機に乗っている時間が3時間ほどなので、海外旅行の気がしない。家を出るときにパスポートをわすれたくらい。台北市内は一人で歩き回れるようになった。台北駅に寄ったとき、ホールに大きなクリスマスツリーが飾られていた。台北には今年2回もお邪魔したことになる。出張精算も年内におわってしまった。来年、この行動がいろいろ大きな波になる予感がする。
    chatgpt-shellで複数APIを使い分ける。。。
    MacOS Tahoe26.1でEmacsを使って沼にはまった話
    総じて、この歳になっても、いろんな事に挑み、ジタバタしている一年だった。幸い、年末末日に何もないだけだったのか?来年は、もう少し、落ち着いた一年であって欲しい。
    と、かいていたら、Forbesに毎日、日記を書くことの大切さを紹介している記事が掲載されていた。
    このblogも未来の自分への手紙とおもって今年も続けようとおもう。
    Want To Be A Better Communicator? Start A Daily Journaling Practice

  • MacOS Tahoe26.1でEmacsを使って沼にはまった話

    20251213-172300
    Emacs初心者の私。Emacsが「手に吸い付く」感覚をなんとなく感じ始めた一方で、時々まだ違和感もある。今日は、複数のウィンドウ(というかバッファ)を行き来して、別のモードに切り替える方法を探していた。Microsoft Visual Studio Codeのように、エディタ画面と `chatgpt-shell` の画面をスムーズに往復できれば、かなり使い勝手が良くなると思い、調べてみた。
    本当は、次の操作コマンドくらいが分かれば十分だったのに。
    – 複数ウィンドウを左右に作る:C-x 3
    – ウィンドウ間を移動する:C-x o
    – コマンド(モード切り替え等)を実行する:M-x
    ところが、余計な質問をChatGPTにしてしまったのが運の尽き。見事に沼にはまってしまった。その余計な質問とは、「Emacsを使う上で快適なモードってどんなモード?」というもの。返ってきた答えの中に「Org modeは便利ですよ」というおすすめがあった。さらに、こんなページも見つけて、「Org mode、便利そうじゃん」と思ってしまった。
    ELPAから package update を実行。すると今度は、Emacsを起動するたびにミニバッファに警告が出るようになってしまった。この警告を消したい。どうしたらいいのだろう、とChatGPTに相談した。そのとき、迂闊にも init.el の全文をChatGPTに渡してしまった。ここで完全に沼に落ちた。
    init.elの中には、OpenAIのAPIキーやGoogleのAPIキーを直書きしていた。環境変数から取得できなかったからだ。でも、よく考えると、ここはセキュリティホールでしかない。ChatGPTも「そのAPIキーは悪用される可能性が高いので、直ちに無効化しなさい」と言い始めた。
    ええーーっ!
    Google APIは、Google Cloud Consoleから素直に無効化できた。 一方、OpenAIの方は戸惑った。ポータル画面の構成が変わっていて、使っていたAPIキーを無効化するまでずいぶんもたついた。いつの間にかOpenAIは企業利用寄りの導線になっていて、「どこだ、どこだ」と迷子状態。
    「Dark webにAPIキーが流れて高額請求が来たらどうする?」と、内心ドキドキ。Get Started が管理画面への入り口だと分かるまで時間がかかった。ひとまず両サービスのポータル上でAPIキーを無効化し、chatgpt-shellでチャットを開始してみると、両方ともAPIキーの認証エラーが返ってくるようになった。つまり、無効化は完了できたようだ。ホッと一息。
    さて、ここから解決編。org modeの警告の原因は、Emacs同梱のorg modeと、ELPAから新たにダウンロードした `org` パッケージが衝突したことだった。原因さえ分かっていれば、ELPA側の orgパッケージを削除するだけで解決する。
    一方、APIキーを init.elに直書きせず、環境変数から引き継ぐ問題は手ごわかった。WebのGeminiを開きつつ、ターミナルを開いて、viで init.elを編集。別画面で Emacs.appを起動して M-x ielmでLispのREPLを開き、(getenv “HOGE”)で環境変数が引き継がれているかを確認する——これをひたすら繰り返した。何回工夫しても、返ってくるのは nil, nil, nil。
    何度も何度もGeminiに質問しては、回答をターミナルで init.elに反映し、Emacs.appを起動して確認……を繰り返した。状況が収束する気配はなかったが、「解決の道はあるはず」と信じて、提案された対処案を粘り強く試し続けた。
    そのうち、macOS上のEmacsは起動時にシェル(bash)側で設定された環境変数をそのまま取り込めず、一工夫が必要だったことを思い出した。最終的にGeminiが、init.el内でシェル側の環境変数を動的に取り込む案を提案してくれた。それを使って、init.elを変更し、Emacs.appを起動して ielmで (getenv …)を確認。今度は環境変数が取り込めている。
    ようやく対処策が収束、「これでいい」という形が見つかった。
    ふーーーー。

  • chatgpt-shellで複数APIを使い分ける。。。

    D1
    先月11月は、公私共々、いろいろあり、時間も、体力も、精神的な余裕もなく、このblogの更新も途絶えていました。師走に入りましたが、また、blog更新を再開したいとおもいます。
    まずは、備忘録から。
    最近、emacs chatgpt-shellを使って、gptとgeminiの両方をAPI経由使っています。双方、良い悪いではなく、回答が右と左くらい異なる事があり、双方を読み比べることが多くなってきています。二つのAIのAPIをしっかり管理しないと行けなくなりました。gptのapiは、open aiのポータルで管理すればいいと覚えているのですが、Geminiの方はどうだったか?記憶が曖昧になり、ここに備忘録を書かせてください。
    Geminiはgoogle提供サービスなので、google cloudでapiを管理するものでした。
    1.Google Cloud Consoleにログインする
    2.geminiを使うためのpurojectを作成
    3.使用するapiを有効化
    4.APIキーを作成
    5.APIキーの利用制限を確認
    6.APIキーを保存
    の手順でした。
    1.Google Cloud Consoleにログインする
    まず、GoogleアカウントをつかってGoogle Cloud Platformのコンソールにログインします
    私の場合、googleアカウントを二つ持っています。
    最近はgmailアカウントを使うことの方が多いです。
    ISPプロバイダーなんてオワコンですものね。
    2.geminiを使うためのpurojectを作成
    「プロジェクトの選択」から「新しいプロジェクト」を作成します。
    私の場合、Gemini APIという名前でプロジェクトを作成しました。
    3.使用するapiを有効化
    左側のメニューから「APIとサービス」>「ライブラリ」を選択し、利用したいAPI(例: 「Maps JavaScript API」)を検索して「有効にする」をクリックします。
    私の場合、GeminiAPIを選択し、APIを有効にしました。
    4.APIキーを作成
    「APIとサービス」>「認証情報」に移動し、「+認証情報を作成」をクリックして「APIキー」を選択します。
    5.APIキーの利用制限を確認
    セキュリティのため、「キーを制限」をクリックし、使用するアプリケーション(HTTPリファラー、IPアドレス、アプリなど)やAPIに制限を設定します。
    6.APIキーを保存
    キーを保存:設定を保存します。
    取得したAPI KEYを~/.emacs.d/init.elに設定
    さて、使用開始です。

  • オー・ヘンリー『The Sleuths(探偵たち)』から学ぶ英語と社会背景

    Dsc_1358
    最近、英語学習の一環として、夜寝る前にアメリカの短編小説家オー・ヘンリーの作品を英語原文で読むことにしている。オー・ヘンリーといえば、物語の最後に意外な展開が待っている「どんでん返し(Twist End)」が特徴のひとつだが、自分にとってはその意図が読み取りづらく、しばしば読後に消化不良を覚えることがある。
    たとえば、「The Sleuths」という短編がその典型である。物語の概要はこうだ。主人公のシャムロック・ジョルンズは、姉を訪ねてニューヨークへやってくる。しかし姉はそこには住んでおらず、周囲も転居先を知らない。シャムロックは警官や警視、名探偵風の私立探偵まで雇って姉の行方を探すが、成果は出ない。そこに現れるのが探偵助手のジャギンズ。彼は人相書きをもとに推理を働かせ、わずか数分で姉(スナイダー夫人)の住所を特定してしまう。
    しかし、なぜそれが可能だったのか。英文だけでは彼の推理の根拠が掴めなかった。
    Googleの生成AI「Gemini」とともに、この問題を分析した。その結果、ジャギンズの推理は次のような手順に基づいていたことが分かった。
    ジャギンズの推理の構造
    1. 外見情報から社会階層を推定
     人相書きをもとに、スナイダー夫人が中流あるいは下層中流階級の女性であると判断した。
    2. 社会階層と消費行動の接続
     当時、その階層の女性たちは自分の「引き伸ばしクレヨン肖像画」を分割払いで購入する習慣があった。
    3. 決定的な一言
     “Did you ever know a woman like that who wasn’t paying weekly instalments on an enlarged crayon portrait of herself?”
     (あんな女性で、自分のクレヨン肖像画の週払いをしていなかった者がいるだろうか?)
    4. 住所の推定
     販売業者の帳簿に顧客の住所が記録されていると踏んだジャギンズは、即座に販売所に出向いた。
    彼は、スナイダー夫人の社会階層とその消費傾向を知っていたため、ほぼ確信を持って推理を実行できたのだ。
    このような推理が成立するのは、当時のアメリカ社会で「引き伸ばしクレヨン肖像画」が流行していたからである。19世紀末から20世紀初頭、富裕層が油絵を飾る一方、一般家庭ではより安価な肖像画を週賦で買うのが一般的だった。 ジャギンズはそれを活用したのであり、オー・ヘンリーはこの社会習慣を前提に作品を構成していたのである。
    古典であっても、こうした背景が分からないと、機知や皮肉、小さな驚きが理解できない。オー・ヘンリー作品がもたらす英語学習の価値は、これらのような点にあるのだろう。
    1. 文化・社会背景の理解
    語彙や文法だけではなく、言語が使われる文化や価値観を理解することで、より深い英語力を身につけることができる。
    – 作品内にイディオムやスラングなどの自然な表現が豊富に含まれている
    – 庶民の価値観とユーモアが描かれ、当時の人々の感覚を知る材料となる
    2. 文脈把握力の向上
    物語の背後にある時代背景や社会常識を読むには、高度な文脈力が求められる。これは実生活での英文読解(ニュース、ビジネスなど)にも不可欠な力である。
    3. 多様な語彙と描写力の習得
    オー・ヘンリーは多様な階層や職種の人物を描いたため、豊かな語彙と描写に触れることができる。特に人物描写や情景描写の力を高めるのに役立つ。
    語学の奥には「文化理解」がある。英語学習において、構文や単語暗記にとどまらず、作品の裏にある社会的・文化的背景を読み解く力が重要であることをあらためて痛感した。
    参考リンク
    Project Gutenberg – オー・ヘンリー全集(The Sleuthsを含む)

  • キマダラカメムシがやってきた。。。

    Dsc_1353
    うちの庭のバラには、本当に多種多様な昆虫がやってくる。
    先日は、カメムシさんがいらしていた。キマダラカメムシというらしい。ずいぶん、ガラが派手だ。原産地は台湾らしい。温暖化とともに生息域を北上してきたのかもしれない。幼虫には注意だなあ。
    このバラは、花があまり美しくない。香りもしない。であれば、いっそ、このバラを訪れてくれる虫さんたちとの出会いを楽しむことにしよう!
    さあ、次はどんなお客さんがきてくれるかしら?
    と、思った方が、ムシが突いたからといって、おちこむより、よっぽど気持ちが軽い。

  • Apple WatchとChatGPTで実現!還暦からのスイミングデータ分析ライフ

    20251013
    毎週日曜の午前中、近所のコナミスポーツクラブで1時間半ほど泳ぐのが、ここ数年のライフワーク。中学・高校時代は水泳部でしたが、特に運動が得意というわけでもない。それでも還暦を過ぎた今も、こうして水に入る時間は、自分にとって欠かせないリズム。
    Apple Watch で水泳データを記録。でも…見にくい?
    泳ぐときには Apple Watch を身につけ、水泳のアクティビティを記録。iPhoneの「アクティビティ」アプリで運動データを振り返ることができるけど、これがどうにも読みづらい。
    —— もっと具体的に、自分の泳ぎを数値としてしっかり分析したい。
    —— ラップごとのタイムや泳法、SWOLFなど、詳細データが欲しい。
    と、以前から思っていました。
    「Healthデータを自力で解析」に一度は挑んだけれど…
    一度、Xcodeを使って Apple の HealthKit API 機能を試してみた。公式ドキュメントを読み込み、XMLデータの仕様も調べたが、どうにもデータの扱いが難しく、当時は分析できずに挫折…。夢は断念したままだった。
    ChatGPTで再挑戦!Emacs上で“会話しながら”プログラミング
    最近、Pythonでデータ分析をする機会が増えていて、ChatGPT や Copilot を使ってアイデアからコードを書く流れにも慣れてきた。そこで、思い切ってもう一度スイミングデータの解析に挑戦してみることに。
    今回は、Emacs 上で `chatgpt-shell` を使ってプログラムを対話的に開発。まさに「ChatGPTと話しながら作る」感じで、遊び心満載のトライアル。
    ステップ①:まずはiPhoneのHealthデータをMacに取り出す
    最初に、iPhoneに保存されているHealthデータをエクスポートする方法をChatGPTに質問。その手順は正確で、あっという間に必要なデータを手元のMacに取り込むことに成功。
    ステップ②:水泳アクティビティのラップごとデータが見たい!
    ChatGPTに「水泳アクティビティを分析したい」と相談すると、すぐに解析用のPythonスクリプトを提案してくれた。
    でも、自分が欲しかったのは、ラップ単位の詳細分析。つまり、タイム、泳法、SWOLFなど1ラップごとのデータが知りたい。そう伝えると、そこにもきちんと対応してくれた。
    ちゃんと動く!すごい!
    ステップ③:でも25m単位のデータ?これは少し違う…
    出力されたリストを見ると、25mごとのラップ…。私は25mプールを折り返すスタイルで泳いでいるので、実質的には50mが1ラップのつもり。ところがApple Watchとしては、休憩なのか折り返しなのかを判断できていない。「折り返し地点を認識させて、50m単位にできる?」とChatGPTにぶつけたところ、すぐに対応!この当たりから、要件を言って、改修したscruptを受け取り、それを実行して確認する、のサイクルを繰り返すようになったので、
    Visual Studio Code + Github Copilot に切り替えました。
    – 50mごとの集計
    – 休憩時間(break time)の評価
    – 見やすい時間・数値フォーマットへの整形
    といった要望にも次々答えてた。
    ステップ④:ついに関数化〜クラス設計、GitHub公開まで!
    「もう少し保守性の高いコードにしたい」と伝えてみたら、試作状態だったコードが、関数で整理され、クラス構造が導入され、なんと自動テスト込みで綺麗にリファクタリング。
    さらには「GitHubに公開したい」と言ったら、ただ `git push` するだけではなく、
    – `README.md` の自動生成
    – 必要なライセンス・構成ファイルの提案
    – プロジェクトディレクトリの整理
    までサポートしてくれた。
    最後には、ChatGPTからこんなメッセージまで。
    > 「Data Swimmer としてがんばってください!」
    いやはや、本当にすごい時代になったものだ。
    成果物はこちら!
    作成したスクリプトと解析ツールをGitHubで公開。
    ■apple-health-swimming-analysis

  • LaTeXをMacbook Tahoe26にインストールし美文書生活を再開。。。

    20251011-144659
    もう何度かLatexに挑戦してきた.でも、用が済むと、また、元通りに戻ってきていた。最近、どうも、それではまずと思うようになってきた。
    Emacs chatgpt-shellでAIと会話しているとき、たまには、物理や数学のことを議論することもある。彼ら、数式を含む回答をしてくるとき、どうもLateX形式で返答してくる。こちとら、人間はLateXで記載されたテキストなど理解できないので、数式に整形するよりが必要になる。
    そう、LateX環境の出番だ。このMacのストレージ容量の空きを確保するために一度はTeX関連の資材を削除したのだが、まだ、復活。
    入り口は、TeX Wiki。ここ経由で、MacTeXのサイトにいき、MacTeXパッケージをインストール。そうそう、/Applications/TeXのフォルダーにインストールされたTeXShopを使うんだった、と、思い出し、早速、Hello.texをTexShopを使って作成したものの、
    タイプセットが動かなかった。
    /Users/hoge/Library/TeXShop/bin/platex2pdf-sjis: line 12: ptex: command not found
    PATH環境変数に/Library/TeX/texbinを追加した。
    さあ、再挑戦。
    でも、まだ、タイプセットが動かない。
    コマンド単体では動作した
    > platex Hello.tex # compiles to Hello.dvi
    > dvipdfmx Hello.dvi # generates Hello.pdf
    >open Hello.pdf # (Mac only) opens PDF
    ああ、LateXを使うので、おまじないが必要だった。
    % !TEX program = platex
    をtexファイルの先頭に追加した
    TeXShop > 設定 > 書類を変更した
    -“エンコーディング” を `utf-8`に変更
    TeXShop > 設定 > タイプセッティング、を変更した
    -“デフォルトのコマンド” を `LateX`に変更
    -“デフォルトのスクリプト” を `TeX + DVI`に変更
    -“Pdf output”が有効であることを確認
    TeXShop > 設定 > 内部設定でパス関係を変更した
    あら、日本語を含んだ数式がエラーになる。
    文書の形式を抜本的に見直し、以下の通りにした。
    % !TEX program = xelatex
    \documentclass{article}
    \usepackage{xeCJK}
    \usepackage{amsmath} % for ¥frac, ¥underbrace
    \usepackage{amsfonts} % for math symbols
    \setCJKmainfont{Osaka} % or another Japanese font installed
    \begin{document}
    本文
    \end{document}
    あっ、タイプセットが動き出した!
    成功は突然にやってくるものなのか。
    さあ、また、美文書生活だ。。。