espansoを使ってみた
最近使い始めたツールを紹介します。私の仕事をする上で、キーボード入力だとか、ちょっとした調べ物に費やされる時間は少なくありません。ちょっとしたルーティンを一発で完了させるツールとして色々探してみた中で、これはどうかなと思い、使い始めたのがこれです。
非常に軽快に動くので、ぜひお試しあれ!
Espanso detects when you type a keyword, and replaces it while you're typing.
よく使う単語や文章、やり方によってはコマンドを短縮形で呼び出せます。
- ;dp → 部署名
- ;nr → 日報テンプレ
- ;gm → Google Mapリンク
みたいな感じです。これだけだと単語登録、辞書登録と同じやん?となりますが、もちろんそれだけではないです。
- ;today → 2026/05/01
- ;date → 20260501
こんな感じで、定型文だけでなく変数やスクリプトを実行したリターンだとかを一発で出せたりします。
個人的には以下のようなシーンで入力作業等の効率化が図れると思います
- 日報等のテンプレ呼び出し
- PowerShellでよく使うコマンドの呼び出し
- fzf検索用コマンド
コマンドライン操作
登録済みのマッチ一覧を確認できます
$ espanso match list
設定を変更したあとに、
$ espanso restart
で再起動すると反映されます。
設定ファイル/YML
espanso は YAML で設定を書きます。例えは「;dp」入力で営業企画部と変換したい場合、ymlには以下を記述します。「trigger に短縮語」「replace に展開後」を書くのが基本構文です。短縮語の前には必ずespansoを起動する「トリガー文字」が必要で下の例は「;」をトリガーにしてます
matches: - trigger: ";dp" replace: "営業企画部"
Markdownのようにインデントが構文そのものですので、インデントミスで動かないことがあります。タブは禁止、スペースを使ってください。スペースは通常「半角スペース2個」です。階層ごとにインデントを揃えるのも重要です。
ちなみに公式サイトではトリガー文字として「:」も紹介されてますが個人的には「;」のほうが良いと考えてます。Windowsエクスプローラでファイル名に「:」が使えないので、私はファイル名によく「年月日」をつけるんですが、「:」だとうまくespansoが起動できません。
ymlの留意点
matches: の下は2スペースが必要です。replace: は trigger: と同じ位置です。よくあるミスとしては「コロンの後にスペースがない」です。
NG: trigger:";a"
OK: trigger: ";a"
資格の勉強ツールAnki, 暗記メーカーからの乗換
ひさしぶりの資格勉強
やっぱり手に職があるのは良いな、と最近よく思うようになりました。最後に資格勉強したのは5年ほど昔になりますが、この度資格勉強をしようかなと思い、その環境を作ろうとしたときの話です。
- 価格: 2035 円
- 楽天で詳細を見る
もともと使っていたツール

ひと昔前の資格勉強では暗記メーカーというアプリを使ってました。これはこれでとても良いです。私を資格取得に導いてくれたのはコイツのおかげと言っても良いくらいお世話になりました。
クラウドサービスなので、5年前に作った問題集もしっかり残ってました。
暗記メーカーの良し悪し
良いところは?
まず、クラウドサービスなので複数端末で同期ができます。あと作成した問題集ですが、プライベート利用もできますし、公開することもできます。素晴らしいボランティア精神で問題公開されてる方がいて、それを使わせてもらえるという素晴らしい仕様があります。
あとは問題作成が直感的にできます。使っていると、細かいところの調整が効かなかったりとかはあるにしても、
最後に、出題範囲を決めてテストできる、ですね。ランダム出団も勿論できて、採点は自動でやってくれて、集計結果から苦手な問題に絞って再度出題もできるという優れものです。
不満なところ
ズバリ有償であること、です。いいものにはお金を払うべき!そのとおりでありますが、私、ケチであります!暗記メーカーには無償版がございますが(前からこんなに有償範囲広かったっけ。。。覚えてないな。。。。)、特に以下の内容が有償なので、乗換を検討するに至りました
- 1つの問題集に収録できる問題数が100問まで
- (マウス使うと)ウザい広告
- ネット接続してないと使えない
- エクスポート・インポートできない
無償版では、1つの問題集につき作成できる問題数が100問までに制限されています。学習を続けていくと問題数が増えていき、すぐに上限に達してしまいました。
広告アバターについては、マウスを使わないなら気にならないと思います。私のスマホの仕様の問題なのか、指でのタップ・タッチは問題ないのですが、マウスクリックだとアバターがないはずのところをクリックしてもアバターをクリックした判定になってしまって、リンクに飛ばされてしまうというウザいことになります。けしからん。
ネット接続については有償版とて同じかもしれませんが、新幹線等移動中の隙間時間利用を考えている私としては、ちょっとウザい仕様です。
最後は、これは私は古い人間なので、いかにクラウドサービスが進化したとしてもデータ資産は個人のものであるべきだとおもってまして、せっかく作った問題集データーを手元に引き出したいよね、という思いからです。有償ならエクスポート可能です。
文句言うなら金払え。。。おっしゃるとおり! しかし繰り返しますが、私はケチです。代替アプリを探しました。
Anki(AnkiDroid)という選択
このアプリは暗記メーカーを使い始める時に、プランBとしてインストールしたことはありましたが、即アンインストールした記憶がありました。立ち上げてみて、ちょっと触って使いにくそうだなと思ったんだと思います。
今一度調べてみると、世界中で使われているポピュラーな学習ツールらしいんですね。あんまり頑張って調べてませんが、これ以外の良さそうな代案が見いだせず、でした。AnkiDroidには以下の特徴があって、暗記メーカーで不満に思ったところは解決できます。
- 完全無料
- オフラインで使える
- 問題数制限なし
- データエクスポート・インポート可能
比べてみる
暗記メーカー無償版とAnkiDroidを比較してみます
| 項目 | 暗記メーカー | AnkiDroid |
|---|---|---|
| 複数端末同期 | 〇 | △ |
| 出題・自動採点 | ◎ | △ |
| 使いやすさ | 初見でも容易 | 習熟が必要 |
| オフライン利用 | × | 〇 |
| エクスポート | × | 〇 |
| 広告表示 | 有り | 無し |
| 作成可能問題数 | 100 | 無制限 |
| 表示カスタマイズ(CSS) | × | 〇 |
Termuxにtesseractをいれてテキスト抽出
やってみた備忘録です。
まずはインストール
$ PKG install tesseract
tesseract --versionでバージョン情報が表示されればインストール完了。ただし、言語ライブラリは英語しか入ってない。何のライブラリが入っているかはtesseract --list-langsで確認。
$ tesseract --list-langs $ List of available languages in "/data/data/com.termux/files/usr/share/tessdata/" (1): eng
日本語認識のためには、$PREFIX/share/tessdataディレクトリにライブラリを収める必要がある。githubにあるのでwgetで持って来るだけでOK。
$ cd $PREFIX/share/tessdata $ wget https://github.com/tesseract-ocr/tessdata_best/raw/main/jpn.traineddata
上記githubのURLは高精度版だが、コレの他に軽量版もある。URLは今後変わるかもしれないので悪しからず。tesseract --list-langsで確認するとjpnが出るようになればOKです。
画像の読み込みは以下の通り。
tesseract xxxxx.png output -l jpn
output.txtができているはず。
そもそもtesseractとは?
読みはテッセラクト?OCR(Optical Character Recognition)エンジン、画像の中の文字を読み取ってテキストに変換するヤツです 。Google がメンテナンスを手掛けているOSS。
多言語対応(日本語・英語など)できていて、CLI(コマンドライン)で使えるのと、Termuxでも動く軽快さが特徴。お試しあれ。
- 価格: 1650 円
- 楽天で詳細を見る
RunCATの紹介 最近入れてみたWindowsソフト
忙しさにかまけて、ブログが滞っております。
今回は最近気に入ったWindows向けの一芸ソフト(?)を紹介します。
RunCAT
タスクバー上を常に猫が走ったり、歩いたりする、とても可愛らしいソフトです。猫が走る(歩く)スピードがCPU稼働率を表すバロメーターとして見せるのが主な機能です。
CPU負荷が高いほど速く走る、サボってると猫が止まる
ということで、視覚的に「働いてる感」が分かります。「猫を走らせたい」という謎のモチベーションが湧くかも?
私は猫派なので、猫にしてますが、設定で他の生き物も選択可能です。
ちなみに私はCPU負荷を可視化したくてこれを入れたわけではありません。猫を右クリックするとそれ以外のプロパティーも見れるんですが、ストレージの使用率も見れます。仕事上、結構重たいデータを扱うことが多くて(というのは言い訳で、普段から整理していないだけ、という側面もあったり…)。ストレージの残量がちょくちょく気になるんです。このソフトだと右クリックするだけで1発表示できて助かります。

方眼ノート 手帳あれこれ
大昔にノートというか、手帳について書きました。
mymemo8.hatenablog.com
月日が経つのも早いもので、あれから数年。自力でノートをとる機会も減ってきました。今はすごいですね、議事録なんかはAIが勝手に作ってくれる時代。
しかし、ちょっと考え事をしたりするとき、頭の中のことを書き出してみると思考の整理が進むのは今も昔も(私は)変わりません。なので、携帯できる手帳をいつも持ち歩いてます。
- パッと出して、パッと書きたい
- かさばるの嫌なので、小さいヤツ、A4未満がいいですね
- 鞄に突っ込んでも大丈夫なように表紙は固いのがいい
このあたりはこれまでの選定条件だったんですが、ここ2~3年は、以上に加えて方眼が良い!ハマってます。ひと昔前は以上の条件を満たせる手帳も少なかったのですが、昨今は爆発的に増えましたね!少品種の大量生産から多品種少量生産に代わってきている時代の流れを反映してるような感じがします。いろいろ目移りして時間がもったいないので、メモを取っておこうと思いましたのが本記事の趣旨です。
方眼ノートの魅力は?
この2年ほど方眼ノートをずっと使ってます。横罫線ノートに比べての魅力をざっと書き出すと
文字が整う
縦横のガイド線で、文字の位置やサイズを揃えやすい。方眼によって文字もカチッと引き締まった印象に見えます。なので書いていて気分がいいです。私は字が奇麗なほうではないのですが、それでも多少奇麗に見えるんですよね。箇条書きなんて、とても整って見えます。
逆に自由レイアウトしやすい
縦線「も」あるので、横罫線のように一方向・一列づつみたいな制限されず、縦・横自由な配置が可能
図やイラストが描きやすい
文字と同様、イラストだとかを下支えしてくれる感じがします。引き締まる感じですね。それから棒グラフだとかチャート系も書きやすいですよね。
という感じで、思いついたことを書く気にさせてくれるのが方眼の魅力ですね。
どんなものがある?
コクヨ PERPANEP(ペルパネプ)
紙質の異なる3タイプで商品展開しているところがユニーク
方眼の種類も3,4,5mmと品種展開が群を抜いている。フラット製本でノートが180度開くので、手で押さえる必要なし。個人的には、ジェルボールペンしか使わないし、方眼も細かいほうが好きなので、紙質を選ぶ楽しさは味わえないかな~。
| 項目 | 詳細 |
|---|---|
| メーカー名 | コクヨ |
| 価格帯の目安 | 高価 |
| ページ数 | 60枚 (120ページ) |
| サイズ | A5 |
| 方眼サイズ | 3mm/4mm/5mm方眼、ステノ罫、ドット罫 |
| 表紙 | ソフト |
| ゴムバンド | なし |
| 紐の栞 | なし |
コクヨ PERPANEP(ペルパネプ)ドイツ装
PERPANEPの高級仕様版。高いだけあってハードカバーが本当に上質で思わず手に取りたくなること間違いなし。
| 項目 | 詳細 |
|---|---|
| メーカー名 | コクヨ |
| 価格帯の目安 | 高価 |
| ページ数 | 96枚 (192ページ) |
| サイズ | A5 |
| 方眼サイズ | 4mm方眼、ステノ罫、ドット罫 |
| 表紙 | ハード |
| ゴムバンド | あり |
| 紐の栞 | なし |
測量野帳
現在の愛用品です。細かい方眼、スリムでポケットに入るサイズだし軽い、硬い表紙なので立ったまま書ける、180度フラットに開いて手で押さえる必要なし、何より1冊安い、割とどこでも売っている等、私好みの要素満載。唯一、一冊40枚しかないところ、これが不満点です。昔ながらの緑の表紙のものが一番安いですが、もうちょっと高くてよければ色展開や、コラボデザインなんかもあって、コレクターもいらっしゃるのでは?
| 項目 | 詳細 |
|---|---|
| メーカー名 | コクヨ |
| 価格帯の目安 | 安価 |
| ページ数 | 40枚 (80ページ) |
| サイズ | 165×95mm |
| 方眼サイズ | 3mm方眼(スケッチタイプ |
| 表紙 | ハード |
| ゴムバンド | なし |
| 紐の栞 | なし |
ロジカル・プライム グリッド2.5 A6スリム
測量野鳥を使う前に使ってました。2.5mmの方眼のきめ細かな方眼に加えて上質な紙は、愛用のジェルボールペンでも裏写りしにくく、小型で背と角が丸く手に優しいラウンドシェイプ。カバーもPUレザーなので柔らかいけど強度がないわけでもなく、ページを360度折り返したりしても大丈夫。手でぎゅっと丸めて遊んでも楽しい1冊でした。収録枚数も方眼ノートの中では群を抜いて多く、かといって価格もお手頃。180度フラットに開かないので、手で押さえる必要がありますんで、作業しながら片手でメモとる、みたいな作業がしづらいのが欠点でした。
| 項目 | 詳細 |
|---|---|
| メーカー名 | ナカバヤシ |
| 価格帯の目安 | 標準的 |
| ページ数 | 120枚程度 (240ページ) |
| サイズ | A6 |
| 方眼サイズ | 2.5mm |
| 表紙 | ポリウレタンクロス |
| ゴムバンド | なし |
| 紐の栞 | なし |
EDiT B6
これより小さいB7もありますが、これはさすがに私でも小さすぎる。
EDiT|MARK'S|B6|高価|160枚|ハード|あり|あり
NOLTY ノート B6
紙の手触り感がとてもよくて、何回か衝動買いしそうになりました。もう少し小さいサイズがあれば買っちゃうと思います。
| 項目 | 詳細 |
|---|---|
| メーカー名 | 日本能率協会マネジメントセンター(JMAM) |
| 価格帯の目安 | 標準的〜高価 |
| ページ数 | 88枚(176ページ) |
| サイズ | B6 |
| 方眼サイズ | 3.5mm |
| 表紙 | ハード/ソフト(シリーズによる) |
| ゴムバンド | なし |
| 紐の栞 | なし |
コクヨ キャンパス
[rakuten:gazaihonpo:10053517:detail]
項目|詳細
---|---
メーカー名|コクヨ
価格帯|安価
ページ数|40〜100枚程度 (80〜200ページ) |
サイズ|セミB5、A4など多数
方眼サイズ|5mm
表紙|ソフト
ゴムバンド|なし
紐の栞|なし
まとめると
| 商品 | メーカー | サイズ | 価格 | 枚数 | 表紙 | ゴムバンド | 栞紐 |
|---|---|---|---|---|---|---|---|
| PERPANEP(通常版) | コクヨ | A5 | 高価 | 60枚 | ソフト | なし | なし |
| PERPANEP(ドイツ装) | コクヨ | A5 | 高価 | 96枚 | ハード | あり | なし |
| 測量野帳 | コクヨ | 165×95mm | 安価 | 40枚 | ハード | なし | なし |
| Grid | ナカバヤシ | B6 | 標準 | 240枚 | 特殊 | なし | なし |
| EDiT | MARK'S | B6 | 高価 | 160枚 | ハード | あり | あり |
| NOLTY ノート B6 | 日本能率 | B6 | 標準 | 88枚 | ソフト | なし | なし |
| キャンパスノート(方眼) | コクヨ | A4 | 安価 | 40〜100枚 | ソフト | なし | なし |
Termux上でまた動かなくなったyfinanceを無理やり動かす方法
前回記事ではyfinanceのバージョンをダウングレードすることによってtermux上で動かす話について書きましたが、そのあと別のエラーで動かなくなりました。
1回か2回くらいは動いたんですけどね...違うエラーになってしまうんですよね。
File "/data/data/com.termux/files/usr/lib/python3.12/site-packages/yfinance/data.py", line 409, in _make_request
raise YFRateLimitError()
yfinance.exceptions.YFRateLimitError: Too Many Requests. Rate limited. Try after a while.
んで、Try after a while しても結果は同じなんですよ。
yfinanceのAPI仕様変更が原因
色々調べてみたら本件の全容をやっと理解できました。私の理解は以下です(間違ってたらすみません)
Yahoo Financeがスクレイピング対策した
こちらはyfinanceのリリース情報です。
github.com
ver. 0.2.58 の変更内容の中に、こんな一文があります
switch to curl_cffi session to fix false rate-limit errors #2430 [reason=TLS fingerprinting]
これまでyfinanceではYahoo Finance APIからのデータ取得にrequestsライブラリを使っていたらしいのですがYahoo Financeがスクレイピング対策を強化した結果、requestsライブラリではデータ取得が難しくなったためデータ取得のためのライブラリをcurl_cffiに「switch」したらしい。curl_cffiライブラリを使えば、より実際のブラウザのような挙動を再現してアクセスすることができるらしい。
requestsライブラリなのかcurl_cffiライブラリなのか?は、バージョンが0.2.57以下か0.2.58以上か、ここが境目です。でバージョン0.2.57以下(requests)でも全く動かないってことではないが、API側のアクセス制限にすぐ引っ掛かってしまう結果、冒頭のエラーになってしまう。そういうことだと理解しました。
Termux側の問題
しかし、yfinanceをバージョン0.2.58以上にすると、前回記事で書いたように、それはそれでエラーになります。
ImportError: dlopen failed: library "libcurl-impersonate.so.4" not found: needed by /data/data/com.termux/files/usr/lib/python3.12/site-packages/curl_cffi/_wrapper.abi3.so in namespace (default)
これに対するGemini先生の見解を仰ぎますと...
このエラーは、curl_cffiというライブラリが、libcurl-impersonate.so.4という共有ライブラリを見つけられないために発生しています。yfinanceは最近、スクレイピング対策のためにcurl_cffiを内部的に利用するようになっているため、この問題が発生している可能性が高いです。Termux環境にcurl_cffiが必要とすlibcurl-impersonate.so.4というライブラリがインストールされていないか、パスが正しく通っていないことが原因です。このライブラリは、標準的なlibcurlとは異なり、より高度なウェブスクレイピング(ボット対策を回避するなど)のために使われるものです。
フムフム...
残念ながら、Termuxの公式パッケージリポジトリには、現在のところlibcurl-impersonateを直接提供するパッケージは存在しないようです。応急手段としては。curl_cffiの代わりにrequestsを使うようにyfinanceをダウングレードする (推奨される可能性が高い)方法があげられます。
いや、それはアカンねん!!
他の方法は?と、前回記事で結構検討しましたね....。
TermuxにUbuntuを入れてみた
これは前回記事を書いたときも一瞬考えましたが、スマホの要領食いそうだから後回しにしてましたが、いよいよこれしか方法が思い付かなくなってきたんで、トライすることにしました。一応Gemini先生にも意見仰ぎますと
Termux上でUbuntuを動かすことは可能です。正確には、TermuxはAndroid上で動作するLinux環境ですが、そのTermux環境内にUbuntuの最小限のファイルシステムを構築し、CLIベースでUbuntuのパッケージ管理やコマンドを利用できるようになります。TermuxでUbuntuを動かす主なメリットはTermuxのデフォルトリポジトリにはない、Ubuntuのリポジトリで提供されている多くのソフトウェアやライブラリを利用できることです。また、一般的なLinux環境の再現することで、Ubuntuを前提とした多くのLinuxチュートリアルや開発環境が利用できます。
いいじゃないですか!
Termux上のUbuntu環境なら、yfinanceを動かせる可能性が高くなります。libcurl-impersonate.so.4が見つからないエラーはTermuxのデフォルト環境でライブラリが提供されていないために発生します。しかしUbuntuの標準リポジトリにはlibcurl-impersonateという名前のパッケージは直接ありませんが、curl_cffiはインストール時に必要なlibcurl-impersonateを自動的にビルドするか、互換性のある既存のライブラリを利用しようとします。curl_cffiのPyPIページによると、curl_cffiはLinux(x86_64/aarch64)向けにプリコンパイルされたバイナリホイール(*.whlファイル)を提供しており、これにはlibcurl-impersonateがバンドルされている可能性があります。 Termux上のUbuntuは一般的なLinuxのaarch64アーキテクチャとして認識されるため、このホイールが利用できる可能性が高いです。
では今回はproot-distroを使いますね。Termuxの標準ツールでUbuntuの他、Debian、Fedoraなどの様々なLinuxディストリビューションを簡単にインストールきます。
pkg update pkg upgrade pkg install proot-distro proot-distro install ubuntu proot-distro login ubuntu # root@localhost:~#
Ubuntu環境に入るとプロンプトがroot@****:~に変わるはず。私は1発成功でした。Ubuntu環境から出るには exitと入力ですね。ちなみにUbuntsu環境を作ったとき、Ubuntsu側からみたフォルダ構成はこんな感じになりました。こんな感じでデータの受け渡しが可能です。
/ ├─root──ubuntu環境 │ └─storage─emulated─0─termux環境
せっかくなのでUbuntu内の環境を最新にします
apt update apt install python3-pip pip install --upgrade pip
これでどうだ!?
で、動かしてもエラーになるんだけど?
Ubuntu環境整ったんで、早速yfinance動かしてみるとだな...
ImportError: dlopen failed: library "libcurl-impersonate.so.4" not found: needed by /data/data/com.termux/files/usr/lib/python3.12/site-packages/curl_cffi/_wrapper.abi3.so in namespace (default)
いや、エラー変わらん....
てか、なんもインストールしてないのに、そもそもなんで動くんや?!
いや、エラーよくみたらtermux側のライブラリ見に行ってるやん?!
きっちりUbuntu側の環境を使うように設定する
これは、Termux上でproot-distroを使った場合によくある状況です。proot-distroは完全に独立した仮想マシンではありません。特にTermux側のPATH環境変数や、プロセスの実行環境がUbuntu側に引き継がれてしまうことがあります。結果、Pythonを実行する際にTermux側のPythonパスが優先されてしまい、Ubuntu側にインストールしたはずのyfinanceやcurl_cffiではなく、Termux側のPythonが使われてしまうのです。
ということで、仮想環境 (venv) を使うことにします。Ubuntu環境にログインした状態で、任意のフォルダ(今回はtest_venvにします)を用意してそこに環境作ります。一連の流れは以下の通り。python3 -m venvで仮想環境venv_yfinanceができあがり、source venv_yfinance/bin/activateで仮想環境をアクティベートします。プロンプトの先頭に(venv_yfinance)のような表示が出れば、仮想環境がアクティブになっています。なお仮想環境を終了する際はdeactivateコマンドを使用します。
mkdir test_venv cd test_venv python3 -m venv venv_yfinance source venv_yfinance/bin/activate (venv_yfinance) #root@local:~/
フォルダ体系的には以下のようになるハズ
/ ├─root(ubuntu環境)──test_venv──venv_yfinance │ └─storage─emulated─0─termux環境
あとは必要なライブラリやなんやらをインストールしていきます。
pip install curl_cffi yfinance
ここまですれば、うごくでしょ!?
ということで、無事yfinanceを動かすことができました!
ちなみに、この状態だとpythonコマンドは明示的にUbuntu側の環境を見に行ってうごくので、termux側のディレクトリにおいてあるyfinanceも動くようになります、が、せっかく仮想環境つくったんで、ちゃんと対象ファイルを仮想環境に持っていってから動かそうかなと思います。
yfinanceでまたエラーが出たので、無駄に苦闘した話
色々試行したら、termux上で、またyfinanceでエラーが出るようになりました。色々やったので、上手くいかなく成りそうな理由があり過ぎて無駄に頑張った話です。
出たエラーはこちら。ちょっと長文ですが
File "/storage/emulated///test.py", line 1, in <module> import yfinance as yf File "/data/data/com.termux/files/usr/lib/python3.12/site-packages/yfinance/__init__.py", line 23, in <module> from .search import Search File "/data/data/com.termux/files/usr/lib/python3.12/site-packages/yfinance/search.py", line 26, in <module> from .data import YfData File "/data/data/com.termux/files/usr/lib/python3.12/site-packages/yfinance/data.py", line 5, in <module> from curl_cffi import requests File "/data/data/com.termux/files/usr/lib/python3.12/site-packages/curl_cffi/__init__.py", line 47, in <module> from .__version__ import __curl_version__, __description__, __title__, __version__ # noqa: F401 File "/data/data/com.termux/files/usr/lib/python3.12/site-packages/curl_cffi/__version__.py", line 3, in <module> from .curl import Curl File "/data/data/com.termux/files/usr/lib/python3.12/site-packages/curl_cffi/curl.py", line 12, in <module> from ._wrapper import ffi, lib ImportError: dlopen failed: library "libcurl-impersonate-chrome.so.4" not found: needed by /data/data/com.termux/files/usr/lib/python3.12/site-packages/curl_cffi/_wrapper.abi3.so in namespace (default)
いきなり1行目のyfinanceモジュールをインポートするところからエラーとか初めてでして、基本的なチェックをしなかったのが話のオチなのですが、エラーにビビって、速攻Geminiだとかに聞いてみたのが話を長期化させる要因になっちゃいました。
事の発端
詳細は別記事にしたいと思いますが、emacsをいじくり回していたら、まず、pipでインストールしていた幾つかのモジュールが勝手に?無くなってました。yfinance使って作ったツールを動かそうとしたら、まずモジュールが無い旨のエラーメッセージが出たことで事態に気が付き、yfinanceを再インストールしたら、前述のエラーになりました。再インストールでエラーという時点でプロならピンと来るはずですが、この時点ではピンと来なかったんだよな〜、悔しい。
Gemini氏の見解
以下はエラーに対するありがたいアドバイスです。(結構省略しました)
エラー報告ありがとうございます。このエラー は、curl_cffi ライブラリが特定のライブラリ (libcurl-impersonate-chrome.so.4) を見つけられないために発生する問題です。
考えられる原因と対処法1
Termux 環境に、エラーメッセージで示されている libcurl-impersonate-chrome.so.4 ライブラリがインストールされていない可能性があります。このライブラリは Termux の標準パッケージとしては提供されていない可能性が高いです。curl_cffi をインストールした際に、依存関係として自動的にインストールされることを期待していたかもしれませんが、何らかの理由でインストールに失敗したか、またはカスタムビルドであるために別途用意する必要があるかもしれません。
ちょいと曖昧ですな…
とりあえずcurl_cffiを再インストールしてみるか?
pip uninstall curl_cffi pip install curl_cffi
…ま、何も変わらんわな…。
考えられる原因と対処法2
libcurl-impersonate-chromeライブラリがTermux のどこかにインストールされているものの、Python がそれを探しに行けるパス(LD_LIBRARY_PATH など) に含まれていない可能性があります。まず、Termux 内でライブラリが存在するかどうかを確認します。以下のコマンドで探してみてください。find / -name "libcurl-impersonate-chrome.so.4" 2>/dev/null もし見つかった場合は、そのパスを LD_LIBRARY_PATH 環境変数に追加してみることを試してください。ただし、Termux でこの変数を直接操作することが推奨されるわけではありません。
推奨じゃない対処法だから、とりあえず素人の私が手を出すのは後回しだな。次お願いします。
考えられる原因と対処法3
curl_cffi のインストール中にエラーが発生したり、ファイルが破損したりしている可能性があります。curl_cffi を再インストールしてみます。
これは、さっきやった。次お願いします。
考えられる原因と対処法4
インストールされている curl_cffi のバージョンが、要求する特定のバージョンのlibcurl-impersonate-chrome と互換性がない可能性があります。curl_cffi のバージョンをダウングレードまたはアップグレードしてみることを検討してください。どのバージョンが適切かは、エラーが発生する状況や、あなたが参考にしている情報源などを確認する必要があります。
…軽くバージョンを変えてみたが、特段エラーメッセージに変化は見られないです。次お願いします。
考えられる原因と対処法5
curl_cffi の一部機能(特に "impersonate-chrome" という名前から推測される機能)は、標準の libcurl ではなく、特定のパッチが適用されたカスタムビルドの libcurl を必要とする場合があります。Termux 環境でそのカスタムビルドの libcurl を自分でビルドしてインストールする必要があるかもしれません。これは高度な手順であり、Termux の環境によっては難しい場合があります。関連する情報源(curl_cffi のドキュメントや、その機能を利用しようとしているプロジェクトのドキュメントなど)に、カスタム libcurl のビルド手順や入手方法が記載されていないか確認してください。
これは私では対処できないですな…
考えられる原因と対処法6
yfinance ライブラリのどの機能を使用しようとした際にこのエラーが発生しましたか?curl_cffi の "impersonate-chrome" 機能は、特定のWebサイトへのアクセスを模倣するために使われる特殊な機能で、yfinance の基本的な株価データ取得には必須ではない可能性があります。もしこの特殊な機能を必要としていないのであれば、curl_cffi の代わりに他の HTTP クライアントライブラリ (requests など) を yfinance が使用するように設定できるか、または curl_cffi のインストール方法を変更できるか検討してみてください。
それは確かに思ったんですけど、具体的にどうしていいかがねぇ〜。
考えられる原因と対処法7
Termux のパッケージリストとインストール済みパッケージを最新の状態に更新してみます。
これは、勿論やりました。無論効果無し。
考えられる原因と対処法8
もし仮想環境を使用している場合は、以前に提案したように、仮想環境を再構築してみるのも有効な手段です。
termux自体仮想環境みたいなもんだから、termuxごとやっちまうかだな。後でやってみよう。
考えられる原因と対処法9
curl_cffi の GitHub リポジトリなどで、同様のエラーが報告されていないか確認してみます。もし報告されていれば、解決策や回避策が見つかる可能性があります。
ざっと探したんですけど、ほぼそれらしい文献は無さそうな…。唯一と言って良さそうなのはコレ?
なんですけど、英語ワカラナイし、分かったとしてもたぶんチンプンカンプン。
Termux では、標準的な Linux 環境と比べてライブラリの管理やカスタムビルドが難しい場合があります。まずは curl_cffi の再インストールを試し、それでも解決しない場合は、そのライブラリが依存する外部ライブラリについて、より詳しく調べてみる必要があるかもしれません。もし、このエラーが発生する具体的な状況(どのような Python スクリプトを実行しようとした時か、など)が分かれば、より的確なアドバイスができる可能性があります。
ご丁寧にありがとうございました。
termuxを初期化してみる
最後にGemini氏から提案が合った初期化を試みてみました。めっちゃ時間かかるかと思いましたが、以外と現状復帰は早かったです。
初期化も色々あると思いますが、私が試したのは 設定→アプリ→termuxのストレージの消去です。 勿論、大事なデータはどっかに退避させた上でやります。これでサラの状態にして、pythonだとかを1からインストールしていきます。

過去記事を元にyfinanceもインストール。コレが一番時間かかりました。が、特段の問題もなく、インストール完了。
これでどうだ?!
が、
アカン、結果同じや。詰んだな…
が、しかし!
めっちゃブルーな気分で過去の自分の記事を何気なく見てて、あることに気が付きました。
yfinanceが機嫌よく動いていた頃と、一つだけ明らかに違う条件あるやん!
それは、この記事の争点でも合ったyfinanceのバージョンで、
- 当時:Version: 0.2.54
- 現在:Version: 0.2.58(現時点最新)
まさか、バージョン落とすだけで動いたりして?
pip install yfinance==0.2.54
すると…
動くやん!なんて初歩的な結末…。
しかし、これは根本的には解決されていないというか、コレまた前回記事のように、古いバージョンが新環境と互換性が保たれ続けられる保証は無く、実際過去記事のようにyfinanceは古いバージョンと新APIとが互換性を失って使い物にならなくなった訳で、最新バージョンで難なく使えることが望ましいんですけど。
ま、そのときはまた誰か凄い人が解決手段を提示してくれることを期待するしか無いかな。とりあえず今は機嫌よく動いてるから良しとしよう。

![[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。] [商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]](https://hbb.afl.rakuten.co.jp/hgb/47c770e7.f694cdc3.47c770e8.a5e62f8a/?me_id=1307271&item_id=10005002&pc=https%3A%2F%2Fimage.rakuten.co.jp%2Fauc-risecreation%2Fcabinet%2Fproduct%2Fr0400-r0600%2Fr0408_04_1.jpg%3F_ex%3D240x240&s=240x240&t=picttext)
![[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。] [商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]](https://hbb.afl.rakuten.co.jp/hgb/47acf7e8.6abea229.47acf7e9.f1faf4d5/?me_id=1220218&item_id=10000138&pc=https%3A%2F%2Fimage.rakuten.co.jp%2Fkeycomr%2Fcabinet%2Fitem%2Fdripon%2Ftc011000_10.jpg%3F_ex%3D240x240&s=240x240&t=picttext)