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 …)を確認。今度は環境変数が取り込めている。
ようやく対処策が収束、「これでいい」という形が見つかった。
ふーーーー。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です