コンテンツにスキップ

読めない漢字を調べたかっただけなのに、気づけばAndroid Intentを触っていた

Popup Japanese Dictionaryで「静寂」の読みが表示された画面

この記事の3行まとめ

  • 楽天Koboで語を選んで辞書アプリへ共有すると「見つかりません」になるのは、Koboが語だけでなく、著者名と書名まで付けた文字列を送っているためでした。
  • Android自動化アプリのTaskerで、届いた文字列から語だけを切り出して辞書アプリへ渡すと、オフライン辞書がすぐ引けるようになりました。
  • 筆者の環境はFire HD+Google Playという非公式構成です。楽天Koboの公式ヘルプでFireタブレットはサポート対象外とされているため、注意事項を最後に確認結果つきでまとめました。

普段このブログでは FX と AI の話を書いていますが、今回は読書の話です。

調べたいのは、たった一語だった

電子書籍を読んでいると、読めない漢字や、意味の曖昧な言葉に出会います。紙の本なら、辞書を引くか、読み飛ばすかです。電子書籍は端末に辞書を入れられるはずなのに、「辞書アプリを開く→語を入力する→読書に戻る」という往復が面倒で、つい読み飛ばしていました。

私はFire HDを電子書籍端末にしていて、楽天KoboのアプリはGoogle Play版を入れています。理想の流れはこうでした。

Koboで語を長押し → 共有 → 辞書 → 意味が表示される

通信のない場所でも使えるよう、辞書はオフラインで動くものを選びたいと考えました。

最初の失敗:「Word definition not found」

オフライン辞書として、Popup Japanese Dictionary(以下PJD)と、LogoVista系の辞書(LV辞典)を試しました。PJDは、画面の上に小さなポップアップで意味を出してくれるタイプの辞書アプリです。

Koboで語を長押しして共有を押し、辞書を選ぶと、PJDには「Word definition not found」(定義が見つかりません)と出ました。LV辞典でも同じでした。

最初に疑ったのは、次の4つです。

  1. Fire HDだから?
  2. Google Playを後から入れた構成だから?
  3. Koboと辞書アプリの相性?
  4. 辞書アプリ側の問題?

どれも「ありそうだけれど、確かめようがない」疑いでした。確かめようがない疑いを並べている間は、たいてい調べる方向が間違っています。

原因探し:まず「何が届いているか」を見る

発想を変えました。辞書側かKobo側かを考える前に、Koboが実際に何を共有しているかを見ればいいのです。

使ったのは、Android自動化アプリのTaskerです。Taskerには「Received Share」というイベントがあり、他のアプリから共有された内容を受け取れます。受け取った文字列は「%rs_text」という変数に入ります。変数とは、値に付けた名札のようなものです。

私の環境はTasker 6.6.20です。Received Shareで受け取り、Flash(短いメッセージを画面に出すアクション)で「%rs_text」を表示しました。

意外な原因:語の後ろに、書名と著者名が付いていた

画面に出たのは、概ね次のような文字列でした。

騒然 - <著者名>作<書名> 5。 http://books.rakuten.co.jp/e-book/

(市販書籍の書名と著者名は伏せています。)

選んだのは「騒然」だけでした。ところがKoboは、語の後ろに著者名、書名、URLまで付けた一本の長い文字列を共有していました。辞書から見れば、そんな見出し語はありません。「見つかりません」と言うのは当然でした。

Fire HDだから、Google Playだから、相性だから、という私の疑いは、どれも外れでした。原因は、共有される文字列の中身でした。

記事用に、市販書籍ではなく、自作のePubで再現してみました。語を選んで共有を押すと、次のように表示されました。

共有メニュー。上部に「静寂 - 試作 筆者作静寂の駅。」、下に「Kobo辞書検索」と「Popup Japanese Dictionary」が並ぶ

形式は、購入した本のときと同じ「語 - 著者名作書名。」でした。URLは、プレビューでは「…」と省略されていました。

仕組みをやさしく解説

最終的な流れは、次のとおりです。

Text Only
Kobo(語を選択)
  ↓ Androidの共有機能
Tasker「Received Share」が、届いた文字列を %rs_text に保存
  ↓
Variable Split で区切って分割 → 語の部分だけが %rs_text1 に入る
  ↓
Send Intent で辞書アプリへ送る
  ↓
Popup Japanese Dictionary が意味を表示

用語を簡単に説明します。

用語 意味
共有機能 アプリが「この内容を誰かに渡したい」と声をかけ、受け取れるアプリが名乗り出る、Androidの仕組みです。
変数 値を入れておく、名札付きの箱です。Taskerでは「%」から始まる名前で呼び出します。
Variable Split 文字列を、決めた区切り文字で切り分けます。「A-B-C」を「-」で切ると、A、B、Cに分かれ、「%rs_text1」「%rs_text2」のように番号付きで入ります。
Intent(インテント) アプリに「これをやって」と頼むAndroidの依頼書です。「このアプリに、この文字列を渡して」という内容を書きます。

Taskerで解決する

1. Profile(きっかけ)を作る

ProfileはEventの「Received Share」にして、Share Triggerの名前を「Kobo辞書検索」にしました。これで、共有メニューに「Kobo辞書検索」が出ます(上の共有メニューの画像の左上です)。あわせて、Preferences→Action→「Direct Share Targets Enabled」をオンにしました。

TaskerのProfile画面。Received Share Kobo辞書検索が、Task「Kobo辞書検索」につながっている

2. Task(処理)を作る

処理は2段階です。1番目がVariable Split、2番目がSend Intentです。

TaskerのTask画面。1がVariable Split、2がSend Intent

Variable Splitの設定画面は、次のとおりです。Nameは「%rs_text」、Splitterは「-」です。Delete BaseとRegexはオフです。

Variable Splitの設定画面。Nameは%rs_text、Splitterは半角ハイフン

Send Intentの設定画面は、次のとおりです。

Send Intentの設定画面。Actionはandroid.intent.action.SEND、Extraはandroid.intent.extra.TEXT:%rs_text1

最終設定まとめ

完成した設定を、まとめて示します。

筆者の環境(動作確認済み)

項目 内容
端末 Fire HD(Google Play導入済み)
Koboアプリ Google Play版
Tasker 6.6.20
辞書アプリ Popup Japanese Dictionary

Profile

項目 設定
Event Received Share
Share Trigger名 Kobo辞書検索
Preferences→Action→Direct Share Targets Enabled オン

Task(上から順に実行)

順 アクション 設定
1 Variable Split Name:%rs_text/Splitter:-(半角ハイフン1文字だけ。前後にスペースは入れない)/Delete Base、Regex:オフ
2 Send Intent Action:android.intent.action.SEND/Cat:Default/Mime Type:text/plain/Extra:android.intent.extra.TEXT:%rs_text1/Package:com.niftygnomes.popupjapanesedictionary/Target:Activity/Data、Class:空欄

操作は、Koboで語を選択→共有→「Kobo辞書検索」→辞書が表示される、の流れです。

ハマりポイント1:「%word」がそのまま画面に出た

最初は、「%rs_text」を「%word」という別の変数にコピーしてから分割し、「%word1」を使う手順を試しました。ところが、値が渡りませんでした。画面には、「%word」「%word1」という文字そのものが表示されました。

実は、これが重要なヒントでした。Taskerでは、変数に値が入っていないとき、変数名がそのまま文字として残ります。つまり、「%xxxx」が表示されたら、「値が入っていない、または名前が違う」という意味です。

最終的には、中間変数を作らず、「%rs_text」そのものを直接分割して成功しました。なぜ中間変数だと失敗したのかは、私の環境では原因を特定できていません。

ハマりポイント2:区切り文字は「・」ではなかった

もう一つの落とし穴は、区切り文字です。画面では区切りが小さく表示され、中黒のように見えたため、「・」「.」などを試して、遠回りしました。

最終的に、Koboの共有内容をコピーして、生の文字列として確認しました。実際に区切りとして効いたのは、スペースを含まない、ただの半角ハイフン(-)1文字でした。

見た目で決めつけず、生のデータを見る。この教訓は、他のトラブルにも使えると思います。

使ってみた結果

実際に使ってみて、オフラインでも使えるのが、とてもありがたいと感じています。通信のない場所でも、気にせず調べられます。

また、読めない漢字に出会ったときでも、語を選ぶと、共有ボタンと辞書検索ボタンがすぐに表示されます。そこから辞書を呼び出すと、読みがすぐに出ます。表示された読みは、大きさも変えられるので、漢字の勉強にもなります。読書の流れを止めずに調べられるので、とても捗ります。

うまくいかないときのチェックリスト

  1. まず、共有された文字列をFlashで表示して、生のデータを確認する。
  2. 「%xxxx」がそのまま表示されたら、その変数に値が入っていない。
  3. 区切り文字は、コピーして確かめる。ハイフンが半角の「-」か、全角や長音記号などの似た文字でないかに注意する。スペースは入れない。
  4. 共有メニューに項目が出ないときは、Direct Share Targets Enabledを確認する。
  5. 辞書が開かないときは、Package名とActionを確認する。
  6. 辞書に「見つかりません」と出るときは、渡る文字列が語だけになっているかを確認する。
  7. Koboのアップデート後に動かなくなったら、1に戻って共有内容を見直す。共有の形式が変わっている可能性がある。

応用の可能性(未検証です)

ここから先は、私は試していません。「できるかもしれない」という話として読んでください。

  • 他の辞書アプリ:Package名とIntentの宛先を変えれば、送れる可能性があります。ただし、受け取る側が共有(SEND)に対応している必要があります。
  • Kobo以外の電子書籍アプリ:共有される文字列の形式が違えば、区切り文字も変わるはずです。まずFlashで生データを見る、という手順は同じです。
  • 普通のAndroidタブレットやスマホ:Taskerと共有機能があれば、考え方は同じです。

Taskerを使わない方にも、「共有でうまくいかないときは、まず何が渡されているかを見る」という方法は、役に立つと思います。

注意事項

Fire HDにGoogle Playを導入する構成について

非公式構成です

筆者の環境(Fire HD+Google Play版の楽天Koboアプリ)では動作しましたが、これは公式にサポートされていない構成です。OSやアプリのアップデートで動かなくなる可能性があります。実施する場合は、自己責任でお願いします。

確認したことを、事実と、確認できていないことに分けて書きます。

確認できたこと(楽天Koboの公式ヘルプ、2026年10月11日閲覧)

  • 「楽天Koboアプリ for Android」の推奨環境は、Android 10.0以上(アプリの最新バージョンは10.0.1)と記載されています。
  • 「Amazon Fire タブレット / Chromebook / BOOX などは『楽天Koboアプリ for Android』のサポート対象外です」と記載されています。
  • 推奨環境以外で利用する場合、窓口でのサポート範囲が限られる可能性がある、と記載されています。

確認できたこと(楽天Koboの利用規約・購入特約、同日閲覧)

  • 端末、OS、Google Playの導入有無に関する条項は、見つかりませんでした。

確認できていないこと

  • AmazonとGoogleの、Fire OSでのGoogle Playの扱いに関する公式見解は、確認していません。
  • 楽天Koboが、この構成を許容しているか、禁止しているかは、確認できていません。

つまり、「サポート対象外」であることは公式に確認できましたが、「利用してはいけない」と書かれているわけではありません。ただし、動かなくなっても、公式のサポートは受けられない可能性があります。

著作権について

市販書籍の本文は載せていません。画像の文章は、筆者が書いた自作のものです。Koboのアプリ画面は載せていません。

Taskerの画面は、設定方法の説明のために掲載しています。Taskerの公式サイトは、tasker.joaoapps.com です。

まとめ

最初の不満は、読めない漢字をもっと簡単に調べたい、という小さなものでした。原因は、辞書が悪いのでも、端末が悪いのでもなく、Koboが「語」ではなく「語+著者名+書名+URL」を送っていたことでした。その中から語だけを取り出す仕組みを、Taskerで作ることができました。

遠回りでしたが、Fire HDを自分専用の読書端末へ、一歩近づけられたと感じています。

同じ環境の方の参考になればうれしいです。もっと良い方法や、他の辞書アプリで試した結果があれば、ぜひお問い合わせから教えてください。

— SPONSORED —