<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Rss on namaraii.com</title><link>https://namaraii.com/tags/rss/</link><description>Recent content in Rss on namaraii.com</description><generator>Hugo -- gohugo.io</generator><language>ja</language><managingEditor>hitoshi@namaraii.com (竹内 仁 (TAKEUCHI Hitoshi))</managingEditor><webMaster>hitoshi@namaraii.com (竹内 仁 (TAKEUCHI Hitoshi))</webMaster><copyright>© 2026 TAKEUCHI Hitoshi, All Rights Reserved.</copyright><lastBuildDate>Tue, 25 Feb 2025 00:00:00 +0900</lastBuildDate><atom:link href="https://namaraii.com/tags/rss/index.xml" rel="self" type="application/rss+xml"/><item><title>MiniFlux</title><link>https://namaraii.com/posts/miniflux/</link><pubDate>Tue, 25 Feb 2025 00:00:00 +0900</pubDate><author>hitoshi@namaraii.com (竹内 仁 (TAKEUCHI Hitoshi))</author><guid>https://namaraii.com/posts/miniflux/</guid><description>&lt;p&gt;MiniFluxは､シンプルで軽量なオープンソースのRSSフィードリーダー。セルフホスティングも可能。Webベースのインターフェースを提供し、ブラウザからどのデバイスからでもアクセス可能である。&lt;/p&gt;
&lt;p&gt;主な機能として広告や不要な要素を取り除く「クリーンな記事表示機能」、未読・既読の管理、スター機能（お気に入り登録）、タグ付け、キーボードショートカットのサポートなどがある。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://miniflux.app/" target="_blank" rel="noreferrer"&gt;Miniflux - Minimalist and Opinionated Feed Reader&lt;/a&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="auto"
 alt="Miniflux Overview"
 width="756"
 height="483"
 src="https://namaraii.com/images/miniflux-remote-001.png"
 srcset="https://namaraii.com/images/miniflux-remote-001.png 800w, https://namaraii.com/images/miniflux-remote-001.png 1280w"
 sizes="(min-width: 768px) 50vw, 65vw"
 data-zoom-src="https://namaraii.com/images/miniflux-remote-001.png"&gt;&lt;figcaption&gt;Screenshot of the unread page&lt;/figcaption&gt;&lt;/figure&gt;

&lt;h2 class="relative group"&gt;キーボードショートカット
 &lt;div id="キーボードショートカット" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e3%82%ad%e3%83%bc%e3%83%9c%e3%83%bc%e3%83%89%e3%82%b7%e3%83%a7%e3%83%bc%e3%83%88%e3%82%ab%e3%83%83%e3%83%88" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;

&lt;h3 class="relative group"&gt;セクションナビゲーション
 &lt;div id="セクションナビゲーション" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e3%82%bb%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3%e3%83%8a%e3%83%93%e3%82%b2%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;キー&lt;/th&gt;
 &lt;th&gt;アクション&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;g u&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;未読ページへ移動&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;g b&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ブックマークページへ移動&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;g h&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;履歴ページへ&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;g f&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;フィードページへ移動&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;g c&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;カテゴリページへ&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;g s&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;設定ページへ移動&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;キーボードショートカットのヘルプを表示&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 class="relative group"&gt;アイテムナビゲーション
 &lt;div id="アイテムナビゲーション" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e3%82%a2%e3%82%a4%e3%83%86%e3%83%a0%e3%83%8a%e3%83%93%e3%82%b2%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;キー&lt;/th&gt;
 &lt;th&gt;アクション&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;p&lt;/code&gt; または &lt;code&gt;k&lt;/code&gt; または &lt;code&gt;◄&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;前の項目へ移動&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;n&lt;/code&gt; または &lt;code&gt;j&lt;/code&gt; または &lt;code&gt;►&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;次の項目へ進む&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;F&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;フィードページへ移動&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 class="relative group"&gt;ページナビゲーション
 &lt;div id="ページナビゲーション" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%8a%e3%83%93%e3%82%b2%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;キー&lt;/th&gt;
 &lt;th&gt;アクション&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;h&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;前のページへ戻る&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;l&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;次のページへ&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 class="relative group"&gt;アクション
 &lt;div id="アクション" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e3%82%a2%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;キー&lt;/th&gt;
 &lt;th&gt;アクション&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;o&lt;/code&gt; または &lt;code&gt;Enter&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;選択した項目を開く&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;v&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;元のリンクを新しいタブで開く&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;V&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;元のリンクを現在のタブに開く (エントリ ビューのみ)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;c&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;コメントリンクを新しいタブで開く&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;コメントリンクを現在のタブに開く&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;m&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;既読/未読を切り替え、次にフォーカス&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;M&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;既読/未読を切り替え、前の項目にフォーカス&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;A&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;現在のページを既読にする&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;元のウェブページを取得し、スクレーパールールまたは読みやすさを適用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;f&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;現在のエントリにスターを付けたり外したりする&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;設定されたサードパーティのサービスに記事を保存する&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;a&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;エントリ添付ファイルを開く/閉じるを切り替える&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;z t&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;項目を一番上までスクロール&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;R&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;バックグラウンドですべてのフィードを更新&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;#&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;現在のフィードを削除&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;検索フォームにフォーカスを設定する&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Escape&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;モーダルダイアログを閉じる&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>radikoを録音してPoscastプレイヤーで再生する</title><link>https://namaraii.com/posts/radiko2podcast/</link><pubDate>Fri, 09 Aug 2024 00:00:00 +0900</pubDate><author>hitoshi@namaraii.com (竹内 仁 (TAKEUCHI Hitoshi))</author><guid>https://namaraii.com/posts/radiko2podcast/</guid><description>&lt;p&gt;miyagawaさんの以下のプログラムを組み合わせて使うことで､radikoで録音した番組をPodcastプレイヤーで再生することができる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/miyagawa/ripdiko" target="_blank" rel="noreferrer"&gt;miyagawa/ripdiko: Rip radiko programs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/miyagawa/dircaster" target="_blank" rel="noreferrer"&gt;miyagawa/dircaster: Generate RSS 2.0 podcast out of directory with *.mp3s&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;おおまかな流れは以下の感じ。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;cronで起動されたripdikoがradikoを録音し､指定フォルダにMP3ファイルで保存する&lt;/li&gt;
&lt;li&gt;cronで起動したdircasterが指定フォルダにあるMP3ファイルを解析し､Podcast配信用のXMLを出力する&lt;/li&gt;
&lt;li&gt;Podcastプレイヤーで2で生成されるXMLを購読しておけば､番組が更新されるたびに通知され聞くことができる&lt;/li&gt;
&lt;li&gt;ただし､1のMP3ファイル､2のXMLはインターネットから参照できる場所に出力する必要がある(HTTPサーバが必要)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 class="relative group"&gt;Radikoプレミアムへの対応
 &lt;div id="radikoプレミアムへの対応" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#radiko%e3%83%97%e3%83%ac%e3%83%9f%e3%82%a2%e3%83%a0%e3%81%b8%e3%81%ae%e5%af%be%e5%bf%9c" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;ただ､残念なことにripdikoはradikoプレミアムへは対応しておらず､エリアフリーで他県の番組を録音することができない。&lt;/p&gt;
&lt;p&gt;このため､&lt;a href="https://github.com/uru2/rec_radiko_ts" target="_blank" rel="noreferrer"&gt;uru2/rec_radiko_ts: Radiko timefree program recorder&lt;/a&gt;を参考にして､radikoプレミアムへログインしエリアフリーで番組を録音できるようにした。&lt;/p&gt;
&lt;p&gt;環境変数&lt;code&gt;RIPDIKO_MAIL&lt;/code&gt;でメールアドレス､&lt;code&gt;RIPDIKO_PASS&lt;/code&gt;にパスワードを設定しておくことで､他県の番組も録音することができる。&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;diff --git a/bin/ripdiko b/bin/ripdiko
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;index ebc756a..2ca3b70 100755
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;--- a/bin/ripdiko
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+++ b/bin/ripdiko
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;@@ -8,6 +8,7 @@ require &amp;#39;open-uri&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; require &amp;#39;nokogiri&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; require &amp;#39;date&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; require &amp;#39;fileutils&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+require &amp;#39;json&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; module Notifier
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; SCRIPTS = ENV[&amp;#39;RIPDIKO_SCRIPTS&amp;#39;] || &amp;#34;#{ENV[&amp;#39;HOME&amp;#39;]}/.ripdiko/scripts&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;@@ -61,6 +62,43 @@ class DownloadTask
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @output = ENV[&amp;#39;RIPDIKO_OUTPUT&amp;#39;] == nil ? &amp;#34;file&amp;#34; : ENV[&amp;#39;RIPDIKO_OUTPUT&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ def login
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ uri = URI.parse(&amp;#34;https://radiko.jp/v4/api/member/login&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ data = {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;mail&amp;#34; =&amp;gt; ENV[&amp;#39;RIPDIKO_MAIL&amp;#39;],
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;pass&amp;#34; =&amp;gt; ENV[&amp;#39;RIPDIKO_PASS&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ return &amp;#34;&amp;#34; if data[&amp;#34;mail&amp;#34;].nil? || data[&amp;#34;pass&amp;#34;].nil?
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ encoded_data = URI.encode_www_form(data)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ http = Net::HTTP.new(uri.host, uri.port)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ http.use_ssl = (uri.scheme == &amp;#34;https&amp;#34;) 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ request = Net::HTTP::Post.new(uri.path, {&amp;#39;Content-Type&amp;#39; =&amp;gt; &amp;#39;application/x-www-form-urlencoded&amp;#39;})
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ request.body = encoded_data
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ response = http.request(request)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ return JSON.parse(response.body)[&amp;#34;radiko_session&amp;#34;] || &amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ end
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ def logout
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ uri = URI.parse(&amp;#34;https://radiko.jp/v4/api/member/logout&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ data = {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;radiko_session&amp;#34; =&amp;gt; @radiko_session
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ encoded_data = URI.encode_www_form(data)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ http = Net::HTTP.new(uri.host, uri.port)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ http.use_ssl = (uri.scheme == &amp;#34;https&amp;#34;) 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ request = Net::HTTP::Post.new(uri.path, {&amp;#39;Content-Type&amp;#39; =&amp;gt; &amp;#39;application/x-www-form-urlencoded&amp;#39;})
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ request.body = encoded_data
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ response = http.request(request)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ @radiko_session = &amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ end
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; def authenticate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; res = fetch &amp;#39;https://radiko.jp/apps/js/playerCommon.js?_=20171113&amp;#39;, {}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if /new RadikoJSPlayer\(.*?&amp;#39;pc_html5&amp;#39;,\s*&amp;#39;(\w+)&amp;#39;/ === res.body
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;@@ -79,11 +117,16 @@ class DownloadTask
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; abort &amp;#34;auth1 failed&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ @radiko_session = login
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ value = URI.encode_www_form_component(@radiko_session)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ auth2_url_param = @radiko_session.size &amp;gt; 0 ? &amp;#34;?radiko_session=#{value}&amp;#34; : &amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; length = res[&amp;#39;X-Radiko-KeyLength&amp;#39;].to_i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; offset = res[&amp;#39;X-Radiko-KeyOffset&amp;#39;].to_i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; partial_key = Base64.strict_encode64(auth_key.byteslice(offset, length))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- res = fetch &amp;#34;https://radiko.jp/v2/api/auth2&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ res = fetch &amp;#34;https://radiko.jp/v2/api/auth2#{auth2_url_param}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;X-Radiko-User&amp;#39; =&amp;gt; &amp;#34;dummy_user&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;X-Radiko-Device&amp;#39; =&amp;gt; &amp;#34;pc&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;X-Radiko-Authtoken&amp;#39; =&amp;gt; token,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;@@ -106,6 +149,40 @@ class DownloadTask
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; def now_playing(station, area)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; now = Time.now
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ station_list = {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;802&amp;#34; =&amp;gt; &amp;#34;JP25&amp;#34;, &amp;#34;ABC&amp;#34; =&amp;gt; &amp;#34;JP25&amp;#34;, &amp;#34;ABCR-KOSHIEN&amp;#34; =&amp;gt; &amp;#34;JP1&amp;#34;, &amp;#34;ABS&amp;#34; =&amp;gt; &amp;#34;JP5&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;AFB&amp;#34; =&amp;gt; &amp;#34;JP2&amp;#34;, &amp;#34;AFM&amp;#34; =&amp;gt; &amp;#34;JP5&amp;#34;, &amp;#34;AIR-G&amp;#34; =&amp;gt; &amp;#34;JP1&amp;#34;, &amp;#34;ALPHA-STATION&amp;#34; =&amp;gt; &amp;#34;JP25&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;BAYFM78&amp;#34; =&amp;gt; &amp;#34;JP8&amp;#34;, &amp;#34;BSN&amp;#34; =&amp;gt; &amp;#34;JP15&amp;#34;, &amp;#34;BSS&amp;#34; =&amp;gt; &amp;#34;JP31&amp;#34;, &amp;#34;CBC&amp;#34; =&amp;gt; &amp;#34;JP21&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;CCL&amp;#34; =&amp;gt; &amp;#34;JP25&amp;#34;, &amp;#34;CRK&amp;#34; =&amp;gt; &amp;#34;JP25&amp;#34;, &amp;#34;CROSSFM&amp;#34; =&amp;gt; &amp;#34;JP40&amp;#34;, &amp;#34;CRT&amp;#34; =&amp;gt; &amp;#34;JP9&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;DATEFM&amp;#34; =&amp;gt; &amp;#34;JP4&amp;#34;, &amp;#34;E-RADIO&amp;#34; =&amp;gt; &amp;#34;JP25&amp;#34;, &amp;#34;FBC&amp;#34; =&amp;gt; &amp;#34;JP18&amp;#34;, &amp;#34;FM-FUJI&amp;#34; =&amp;gt; &amp;#34;JP19&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;FM-OKAYAMA&amp;#34; =&amp;gt; &amp;#34;JP33&amp;#34;, &amp;#34;FM-SANIN&amp;#34; =&amp;gt; &amp;#34;JP31&amp;#34;, &amp;#34;FM807&amp;#34; =&amp;gt; &amp;#34;JP36&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;FMAICHI&amp;#34; =&amp;gt; &amp;#34;JP21&amp;#34;, &amp;#34;FMF&amp;#34; =&amp;gt; &amp;#34;JP7&amp;#34;, &amp;#34;FMFUKUI&amp;#34; =&amp;gt; &amp;#34;JP18&amp;#34;, &amp;#34;FMFUKUOKA&amp;#34; =&amp;gt; &amp;#34;JP40&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;FMGIFU&amp;#34; =&amp;gt; &amp;#34;JP21&amp;#34;, &amp;#34;FMGUNMA&amp;#34; =&amp;gt; &amp;#34;JP10&amp;#34;, &amp;#34;FMI&amp;#34; =&amp;gt; &amp;#34;JP3&amp;#34;, &amp;#34;FMJ&amp;#34; =&amp;gt; &amp;#34;JP8&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;FMK&amp;#34; =&amp;gt; &amp;#34;JP43&amp;#34;, &amp;#34;FMKAGAWA&amp;#34; =&amp;gt; &amp;#34;JP37&amp;#34;, &amp;#34;FMMIE&amp;#34; =&amp;gt; &amp;#34;JP24&amp;#34;, &amp;#34;FMN&amp;#34; =&amp;gt; &amp;#34;JP20&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;FMNAGASAKI&amp;#34; =&amp;gt; &amp;#34;JP42&amp;#34;, &amp;#34;FMNIIGATA&amp;#34; =&amp;gt; &amp;#34;JP15&amp;#34;, &amp;#34;FMO&amp;#34; =&amp;gt; &amp;#34;JP25&amp;#34;, &amp;#34;FMS&amp;#34; =&amp;gt; &amp;#34;JP41&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;FMT&amp;#34; =&amp;gt; &amp;#34;JP8&amp;#34;, &amp;#34;FMTOYAMA&amp;#34; =&amp;gt; &amp;#34;JP16&amp;#34;, &amp;#34;FMY&amp;#34; =&amp;gt; &amp;#34;JP35&amp;#34;, &amp;#34;FM_OITA&amp;#34; =&amp;gt; &amp;#34;JP44&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;FM_OKINAWA&amp;#34; =&amp;gt; &amp;#34;JP47&amp;#34;, &amp;#34;GBS&amp;#34; =&amp;gt; &amp;#34;JP21&amp;#34;, &amp;#34;HBC&amp;#34; =&amp;gt; &amp;#34;JP1&amp;#34;, &amp;#34;HELLOFIVE&amp;#34; =&amp;gt; &amp;#34;JP17&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;HFM&amp;#34; =&amp;gt; &amp;#34;JP34&amp;#34;, &amp;#34;HI-SIX&amp;#34; =&amp;gt; &amp;#34;JP39&amp;#34;, &amp;#34;IBC&amp;#34; =&amp;gt; &amp;#34;JP3&amp;#34;, &amp;#34;IBS&amp;#34; =&amp;gt; &amp;#34;JP8&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;INT&amp;#34; =&amp;gt; &amp;#34;JP8&amp;#34;, &amp;#34;JOAK&amp;#34; =&amp;gt; &amp;#34;JP8&amp;#34;, &amp;#34;JOAK-FM&amp;#34; =&amp;gt; &amp;#34;JP1&amp;#34;, &amp;#34;JOBK&amp;#34; =&amp;gt; &amp;#34;JP25&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;JOCK&amp;#34; =&amp;gt; &amp;#34;JP16&amp;#34;, &amp;#34;JOEU-FM&amp;#34; =&amp;gt; &amp;#34;JP38&amp;#34;, &amp;#34;JOFK&amp;#34; =&amp;gt; &amp;#34;JP31&amp;#34;, &amp;#34;JOHK&amp;#34; =&amp;gt; &amp;#34;JP2&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;JOIK&amp;#34; =&amp;gt; &amp;#34;JP1&amp;#34;, &amp;#34;JOLK&amp;#34; =&amp;gt; &amp;#34;JP40&amp;#34;, &amp;#34;JORF&amp;#34; =&amp;gt; &amp;#34;JP8&amp;#34;, &amp;#34;JOYFM&amp;#34; =&amp;gt; &amp;#34;JP45&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;JOZK&amp;#34; =&amp;gt; &amp;#34;JP36&amp;#34;, &amp;#34;JRT&amp;#34; =&amp;gt; &amp;#34;JP36&amp;#34;, &amp;#34;K-MIX&amp;#34; =&amp;gt; &amp;#34;JP22&amp;#34;, &amp;#34;KBC&amp;#34; =&amp;gt; &amp;#34;JP40&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;KBS&amp;#34; =&amp;gt; &amp;#34;JP25&amp;#34;, &amp;#34;KISSFMKOBE&amp;#34; =&amp;gt; &amp;#34;JP25&amp;#34;, &amp;#34;KNB&amp;#34; =&amp;gt; &amp;#34;JP16&amp;#34;, &amp;#34;KRY&amp;#34; =&amp;gt; &amp;#34;JP35&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;LFR&amp;#34; =&amp;gt; &amp;#34;JP8&amp;#34;, &amp;#34;LOVEFM&amp;#34; =&amp;gt; &amp;#34;JP40&amp;#34;, &amp;#34;MBC&amp;#34; =&amp;gt; &amp;#34;JP46&amp;#34;, &amp;#34;MBS&amp;#34; =&amp;gt; &amp;#34;JP25&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;MRO&amp;#34; =&amp;gt; &amp;#34;JP17&amp;#34;, &amp;#34;MRT&amp;#34; =&amp;gt; &amp;#34;JP45&amp;#34;, &amp;#34;MYUFM&amp;#34; =&amp;gt; &amp;#34;JP46&amp;#34;, &amp;#34;NACK5&amp;#34; =&amp;gt; &amp;#34;JP8&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;NBC&amp;#34; =&amp;gt; &amp;#34;JP41&amp;#34;, &amp;#34;NORTHWAVE&amp;#34; =&amp;gt; &amp;#34;JP1&amp;#34;, &amp;#34;OBC&amp;#34; =&amp;gt; &amp;#34;JP25&amp;#34;, &amp;#34;OBS&amp;#34; =&amp;gt; &amp;#34;JP44&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;QRR&amp;#34; =&amp;gt; &amp;#34;JP8&amp;#34;, &amp;#34;RAB&amp;#34; =&amp;gt; &amp;#34;JP2&amp;#34;, &amp;#34;RADIOBERRY&amp;#34; =&amp;gt; &amp;#34;JP9&amp;#34;, &amp;#34;RBC&amp;#34; =&amp;gt; &amp;#34;JP47&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;RCC&amp;#34; =&amp;gt; &amp;#34;JP34&amp;#34;, &amp;#34;RFC&amp;#34; =&amp;gt; &amp;#34;JP7&amp;#34;, &amp;#34;RFM&amp;#34; =&amp;gt; &amp;#34;JP6&amp;#34;, &amp;#34;RKB&amp;#34; =&amp;gt; &amp;#34;JP40&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;RKC&amp;#34; =&amp;gt; &amp;#34;JP39&amp;#34;, &amp;#34;RKK&amp;#34; =&amp;gt; &amp;#34;JP43&amp;#34;, &amp;#34;RN1&amp;#34; =&amp;gt; &amp;#34;JP1&amp;#34;, &amp;#34;RN2&amp;#34; =&amp;gt; &amp;#34;JP1&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;RNB&amp;#34; =&amp;gt; &amp;#34;JP38&amp;#34;, &amp;#34;RNC&amp;#34; =&amp;gt; &amp;#34;JP37&amp;#34;, &amp;#34;ROK&amp;#34; =&amp;gt; &amp;#34;JP47&amp;#34;, &amp;#34;RSK&amp;#34; =&amp;gt; &amp;#34;JP33&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;SBC&amp;#34; =&amp;gt; &amp;#34;JP20&amp;#34;, &amp;#34;SBS&amp;#34; =&amp;gt; &amp;#34;JP22&amp;#34;, &amp;#34;STV&amp;#34; =&amp;gt; &amp;#34;JP1&amp;#34;, &amp;#34;TBC&amp;#34; =&amp;gt; &amp;#34;JP4&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;TBS&amp;#34; =&amp;gt; &amp;#34;JP8&amp;#34;, &amp;#34;TOKAIRADIO&amp;#34; =&amp;gt; &amp;#34;JP21&amp;#34;, &amp;#34;WBS&amp;#34; =&amp;gt; &amp;#34;JP30&amp;#34;, &amp;#34;YBC&amp;#34; =&amp;gt; &amp;#34;JP6&amp;#34;, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;#34;YBS&amp;#34; =&amp;gt; &amp;#34;JP19&amp;#34;, &amp;#34;YFM&amp;#34; =&amp;gt; &amp;#34;JP8&amp;#34;, &amp;#34;ZIP-FM&amp;#34; =&amp;gt; &amp;#34;JP21&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ # 都道府県コードの変換（自地域以外のラジオ局を指定された場合）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ area = station_list[station] if station_list[station] != area
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; doc = Nokogiri::XML(URI.parse(&amp;#34;https://radiko.jp/v3/program/now/#{area}.xml&amp;#34;).open)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; node = doc.xpath(%Q|//station[@id=&amp;#34;#{station}&amp;#34;]|).first
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;@@ -209,6 +286,8 @@ class DownloadTask
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; when &amp;#34;fifo&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; FileUtils.rm tempfile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ logout
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; def fetch(url, headers)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Pocketに保存したページを読み上げてPodcastとして配信</title><link>https://namaraii.com/posts/webpage-to-speech/</link><pubDate>Fri, 20 Jan 2023 00:00:00 +0900</pubDate><author>hitoshi@namaraii.com (竹内 仁 (TAKEUCHI Hitoshi))</author><guid>https://namaraii.com/posts/webpage-to-speech/</guid><description>&lt;p&gt;PocketへWebページを保存するとページの本文らしき部分を抽出し、&lt;a href="https://cloud.google.com/text-to-speech" target="_blank" rel="noreferrer"&gt;Text-to-Speech&lt;/a&gt;でそれを読み上げた音声ファイルを作り、プライベートなPodcastとして配信するしかけを作った。&lt;/p&gt;
&lt;p&gt;音声合成エンジンとして&lt;a href="https://github.com/VOICEVOX/voicevox_engine" target="_blank" rel="noreferrer"&gt;VOICEVOX&lt;/a&gt;も試したが、手元の環境で安定して動作させるところまでいけず断念。&lt;/p&gt;

&lt;h2 class="relative group"&gt;システムの概要
 &lt;div id="システムの概要" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%ae%e6%a6%82%e8%a6%81" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;pre class="not-prose mermaid"&gt;
flowchart TD 
	Podcastアプリ[/Podcastアプリ\] --&gt; |参照|nginx
	Pocket[/Pocket\] --&gt; |新規保存|IFTTT
	IFTTT --&gt; |Webhooks|nginx
	subgraph システムの概要
		nginx
		nginx --&gt; |PodcastのRSSフィード参照|index.rss
		nginx --&gt; |PocketしたURLを通知|sinatra
		subgraph PodcastのRSSフィード生成
			mp3 --&gt; |参照|index.rss
			mp3 --&gt; |参照|dropcaster
			cron --&gt; |5分毎|dropcaster --&gt; |存在するmp3からRSSフィード生成|index.rss
		end
		subgraph 音声ファイル生成
			sinatra
			sinatra --&gt; readability
			readability --&gt; |ページの本文|texttospeech
			texttospeech --&gt; |本文からmp3生成|mp3[(mp3)]
		end
	end
	
&lt;/pre&gt;


&lt;h2 class="relative group"&gt;使用したライブラリやサービス
 &lt;div id="使用したライブラリやサービス" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%9f%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa%e3%82%84%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ifttt.com/maker_webhooks" target="_blank" rel="noreferrer"&gt;Webhooks Integrations - Connect Your Apps with IFTTT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://namaraii.com/posts/extract_content_from_webpage/" &gt;Webページから本文らしき部分を抽出する&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nerab/dropcaster" target="_blank" rel="noreferrer"&gt;nerab/dropcaster: Simple Podcast Publishing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/text-to-speech" target="_blank" rel="noreferrer"&gt;Text-to-Speech: 自然な音声合成  |  Google Cloud&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>国立国会図書館サーチAPIでISBNから書誌情報と書影を取得する</title><link>https://namaraii.com/posts/ndl_api/</link><pubDate>Sun, 25 Dec 2022 00:00:00 +0900</pubDate><author>hitoshi@namaraii.com (竹内 仁 (TAKEUCHI Hitoshi))</author><guid>https://namaraii.com/posts/ndl_api/</guid><description>&lt;p&gt;国立国会図書館サーチAPIは個人・非営利団体等がデータ利用により利益を得ない場合は、利用申請不要で利用できる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://iss.ndl.go.jp/information/api/" target="_blank" rel="noreferrer"&gt;APIのご利用について « 国立国会図書館サーチについて&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ISBNをキーにして書誌情報を取得するのはOpenSearchがお手軽なようだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://iss.ndl.go.jp/information/api/riyou/" target="_blank" rel="noreferrer"&gt;API仕様の概要 « 国立国会図書館サーチについて&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;https://iss.ndl.go.jp/api/opensearch?isbn=ISBN&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;結果はXML(RSS)で得られる。&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;rss&lt;/span&gt; &lt;span class="na"&gt;version=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;2.0&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;xmlns:dc=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://purl.org/dc/elements/1.1/&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;xmlns:openSearch=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://a9.com/-/spec/opensearchrss/1.0/&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;xmlns:dcndl=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://ndl.go.jp/dcndl/terms/&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;xmlns:dcmitype=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://purl.org/dc/dcmitype/&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;xmlns:dcterms=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://purl.org/dc/terms/&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;xmlns:xsi=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://www.w3.org/2001/XMLSchema-instance&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;xmlns:rdfs=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://www.w3.org/2000/01/rdf-schema#&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;xmlns:rdf=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;channel&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;9784253265218 - 国立国会図書館サーチ OpenSearch&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;link&amp;gt;&lt;/span&gt;https://iss.ndl.go.jp/api/opensearch?isbn=9784253265218&lt;span class="nt"&gt;&amp;lt;/link&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;description&amp;gt;&lt;/span&gt;Search results for isbn=9784253265218 &lt;span class="nt"&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;language&amp;gt;&lt;/span&gt;ja&lt;span class="nt"&gt;&amp;lt;/language&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;openSearch:totalResults&amp;gt;&lt;/span&gt;2&lt;span class="nt"&gt;&amp;lt;/openSearch:totalResults&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;openSearch:startIndex&amp;gt;&lt;/span&gt;1&lt;span class="nt"&gt;&amp;lt;/openSearch:startIndex&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;openSearch:itemsPerPage/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;item&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;海が走るエンドロール = Umi ga hashiru Endroll&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;link&amp;gt;&lt;/span&gt;https://iss.ndl.go.jp/books/R100000002-I031602764-00&lt;span class="nt"&gt;&amp;lt;/link&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;![CDATA[&amp;lt;p&amp;gt;1,秋田書店,9784253265218&amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;タイトル： 海が走るエンドロール = Umi ga hashiru Endroll&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;li&amp;gt;タイトル（読み）： ウミ ガ ハシル エンド ロール&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;li&amp;gt;責任表示： たらちねジョン 著,&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;li&amp;gt;シリーズ名： BONITA COMICS&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;li&amp;gt;NDC(10)： 726.1&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;li&amp;gt;NDC(9)： 726.1&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;/ul&amp;gt;]]&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;author&amp;gt;&lt;/span&gt;たらちねジョン 著,たらちね, ジョン,&lt;span class="nt"&gt;&amp;lt;/author&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;category&amp;gt;&lt;/span&gt;本&lt;span class="nt"&gt;&amp;lt;/category&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;guid&lt;/span&gt; &lt;span class="na"&gt;isPermaLink=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;https://iss.ndl.go.jp/books/R100000002-I031602764-00&lt;span class="nt"&gt;&amp;lt;/guid&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;pubDate&amp;gt;&lt;/span&gt;Wed, 29 Sep 2021 09:00:00 +0900&lt;span class="nt"&gt;&amp;lt;/pubDate&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:title&amp;gt;&lt;/span&gt;海が走るエンドロール = Umi ga hashiru Endroll&lt;span class="nt"&gt;&amp;lt;/dc:title&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dcndl:titleTranscription&amp;gt;&lt;/span&gt;ウミ ガ ハシル エンド ロール&lt;span class="nt"&gt;&amp;lt;/dcndl:titleTranscription&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:creator&amp;gt;&lt;/span&gt;たらちね, ジョン&lt;span class="nt"&gt;&amp;lt;/dc:creator&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dcndl:creatorTranscription&amp;gt;&lt;/span&gt;タラチネ, ジョン&lt;span class="nt"&gt;&amp;lt;/dcndl:creatorTranscription&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dcndl:volume&amp;gt;&lt;/span&gt;1&lt;span class="nt"&gt;&amp;lt;/dcndl:volume&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dcndl:seriesTitle&amp;gt;&lt;/span&gt;BONITA COMICS&lt;span class="nt"&gt;&amp;lt;/dcndl:seriesTitle&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:publisher&amp;gt;&lt;/span&gt;秋田書店&lt;span class="nt"&gt;&amp;lt;/dc:publisher&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:date&amp;gt;&lt;/span&gt;2021.8&lt;span class="nt"&gt;&amp;lt;/dc:date&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dcterms:issued&lt;/span&gt; &lt;span class="na"&gt;xsi:type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dcterms:W3CDTF&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;2021&lt;span class="nt"&gt;&amp;lt;/dcterms:issued&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dcndl:price&amp;gt;&lt;/span&gt;600円&lt;span class="nt"&gt;&amp;lt;/dcndl:price&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:extent&amp;gt;&lt;/span&gt;158p ; 19cm&lt;span class="nt"&gt;&amp;lt;/dc:extent&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:identifier&lt;/span&gt; &lt;span class="na"&gt;xsi:type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dcndl:ISBN&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;9784253265218&lt;span class="nt"&gt;&amp;lt;/dc:identifier&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:identifier&lt;/span&gt; &lt;span class="na"&gt;xsi:type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dcndl:NDLBibID&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;031602764&lt;span class="nt"&gt;&amp;lt;/dc:identifier&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:identifier&lt;/span&gt; &lt;span class="na"&gt;xsi:type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dcndl:JPNO&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;23585081&lt;span class="nt"&gt;&amp;lt;/dc:identifier&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:identifier&lt;/span&gt; &lt;span class="na"&gt;xsi:type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dcndl:TOHANMARCNO&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;07471697&lt;span class="nt"&gt;&amp;lt;/dc:identifier&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dcndl:genre&amp;gt;&lt;/span&gt;漫画&lt;span class="nt"&gt;&amp;lt;/dcndl:genre&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:subject&lt;/span&gt; &lt;span class="na"&gt;xsi:type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dcndl:NDLC&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Y84&lt;span class="nt"&gt;&amp;lt;/dc:subject&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:subject&lt;/span&gt; &lt;span class="na"&gt;xsi:type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dcndl:NDC10&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;726.1&lt;span class="nt"&gt;&amp;lt;/dc:subject&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:subject&lt;/span&gt; &lt;span class="na"&gt;xsi:type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dcndl:NDC9&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;726.1&lt;span class="nt"&gt;&amp;lt;/dc:subject&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:description&amp;gt;&lt;/span&gt;機器種別 : 機器不用&lt;span class="nt"&gt;&amp;lt;/dc:description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:description&amp;gt;&lt;/span&gt;キャリア種別 : 冊子&lt;span class="nt"&gt;&amp;lt;/dc:description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:description&amp;gt;&lt;/span&gt;表現種別 : テキスト&lt;span class="nt"&gt;&amp;lt;/dc:description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:description&amp;gt;&lt;/span&gt;表現種別 : 静止画&lt;span class="nt"&gt;&amp;lt;/dc:description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:description&amp;gt;&lt;/span&gt;NDC（9版）はNDC（10版）を自動変換した値である。&lt;span class="nt"&gt;&amp;lt;/dc:description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;rdfs:seeAlso&lt;/span&gt; &lt;span class="na"&gt;rdf:resource=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://id.ndl.go.jp/bib/031602764&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;rdfs:seeAlso&lt;/span&gt; &lt;span class="na"&gt;rdf:resource=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://opac.lib.city.yokohama.lg.jp/opac/OPP1500?SELDATA=TOSHO&amp;amp;amp;SSNO=3-0500928436&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;item&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;海が走るエンドロール = Umi ga hashiru Endroll&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;link&amp;gt;&lt;/span&gt;https://iss.ndl.go.jp/books/R100000098-I000372329-00&lt;span class="nt"&gt;&amp;lt;/link&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;![CDATA[&amp;lt;p&amp;gt;1,秋田書店,9784253265218&amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;タイトル： 海が走るエンドロール = Umi ga hashiru Endroll&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;li&amp;gt;タイトル（読み）： ウミ ガ ハシル エンド ロール&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;li&amp;gt;責任表示： たらちねジョン 著,&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;li&amp;gt;シリーズ名： BONITA COMICS&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;li&amp;gt;NDC(9)： 726.1&amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;/ul&amp;gt;]]&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;author&amp;gt;&lt;/span&gt;たらちねジョン 著,,&lt;span class="nt"&gt;&amp;lt;/author&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;category&amp;gt;&lt;/span&gt;本&lt;span class="nt"&gt;&amp;lt;/category&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;guid&lt;/span&gt; &lt;span class="na"&gt;isPermaLink=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;https://iss.ndl.go.jp/books/R100000098-I000372329-00&lt;span class="nt"&gt;&amp;lt;/guid&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:title&amp;gt;&lt;/span&gt;海が走るエンドロール = Umi ga hashiru Endroll&lt;span class="nt"&gt;&amp;lt;/dc:title&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dcndl:titleTranscription&amp;gt;&lt;/span&gt;ウミ ガ ハシル エンド ロール&lt;span class="nt"&gt;&amp;lt;/dcndl:titleTranscription&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:creator&amp;gt;&amp;lt;/dc:creator&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dcndl:volume&amp;gt;&lt;/span&gt;1&lt;span class="nt"&gt;&amp;lt;/dcndl:volume&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dcndl:seriesTitle&amp;gt;&lt;/span&gt;BONITA COMICS&lt;span class="nt"&gt;&amp;lt;/dcndl:seriesTitle&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:publisher&amp;gt;&lt;/span&gt;秋田書店&lt;span class="nt"&gt;&amp;lt;/dc:publisher&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:date&amp;gt;&lt;/span&gt;2021.08&lt;span class="nt"&gt;&amp;lt;/dc:date&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dcterms:issued&lt;/span&gt; &lt;span class="na"&gt;xsi:type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dcterms:W3CDTF&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;2021-08&lt;span class="nt"&gt;&amp;lt;/dcterms:issued&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dcndl:price&amp;gt;&lt;/span&gt;600円&lt;span class="nt"&gt;&amp;lt;/dcndl:price&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:extent&amp;gt;&lt;/span&gt;158p ; 19cm&lt;span class="nt"&gt;&amp;lt;/dc:extent&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:identifier&lt;/span&gt; &lt;span class="na"&gt;xsi:type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dcndl:ISBN&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;9784253265218&lt;span class="nt"&gt;&amp;lt;/dc:identifier&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:identifier&lt;/span&gt; &lt;span class="na"&gt;xsi:type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dcndl:JPNO&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;23585081&lt;span class="nt"&gt;&amp;lt;/dc:identifier&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:subject&lt;/span&gt; &lt;span class="na"&gt;xsi:type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dcndl:NDC9&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;726.1&lt;span class="nt"&gt;&amp;lt;/dc:subject&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:description&amp;gt;&lt;/span&gt;単行本全巻ID : C451417&lt;span class="nt"&gt;&amp;lt;/dc:description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:description&amp;gt;&lt;/span&gt;マンガ単行本備考 : 機器種別 : 機器不用 ／ キャリア種別 : 冊子 ／ 表現種別 : テキスト ／ 表現種別 : 静止画 ／ NDC（9版）はNDC（10版）を自動変換した値である。&lt;span class="nt"&gt;&amp;lt;/dc:description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:description&amp;gt;&lt;/span&gt;ID : M852583&lt;span class="nt"&gt;&amp;lt;/dc:description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;dc:description&amp;gt;&lt;/span&gt;登録番号（館固有割り振りID）：031602764（国立国会図書館）&lt;span class="nt"&gt;&amp;lt;/dc:description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;rdfs:seeAlso&lt;/span&gt; &lt;span class="na"&gt;rdf:resource=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://mediaarts-db.bunka.go.jp/id/M852583&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/channel&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/rss&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;書影は&lt;code&gt;https://iss.ndl.go.jp/thumbnail/ISBN&lt;/code&gt;で得られる。&lt;/p&gt;</description></item><item><title>E Inkな大型読書端末としてのBox Note Air</title><link>https://namaraii.com/posts/boox-note-air/</link><pubDate>Fri, 15 Jan 2021 21:23:18 +0900</pubDate><author>hitoshi@namaraii.com (竹内 仁 (TAKEUCHI Hitoshi))</author><guid>https://namaraii.com/posts/boox-note-air/</guid><description>&lt;p&gt;Kindle本や自炊した書籍を読むための端末として、Android E inkタブレットBoox Note Airを導入して、１ヶ月ほど運用したので感想を記しておきます。&lt;/p&gt;

&lt;h3 class="relative group"&gt;なぜ導入したのか？
 &lt;div id="なぜ導入したのか" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e3%81%aa%e3%81%9c%e5%b0%8e%e5%85%a5%e3%81%97%e3%81%9f%e3%81%ae%e3%81%8b" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;電子ペーパーは液晶と比較して目が疲れにくいため、ここ数年はなるべくKindle Oasisを使うようにしていたのですが、技術書や雑誌、仕事の資料（PDF）など大版の読み物だとディスプレイサイズ的に厳しく、それらはやむなく11インチiPad Proで読んでたんですよね。&lt;/p&gt;
&lt;p&gt;大型のKindleがあればよかったのですが、2010年にでた9.7インチのKindle DXが商業的にうまくいかなかったのか、その後、後継機がでる気配もないため、読書のE Ink率を高めるべくBoox Note Airを導入した次第です。&lt;/p&gt;

&lt;h3 class="relative group"&gt;何が良いのか？
 &lt;div id="何が良いのか" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e4%bd%95%e3%81%8c%e8%89%af%e3%81%84%e3%81%ae%e3%81%8b" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Boox Note Airの（私にとっての）価値は「大型(10.3インチ)のE Inkを搭載したAndorid端末である」ことに尽きます。&lt;/p&gt;
&lt;p&gt;この手の端末は独自OSを採用していたり、LinuxやAndroidなどを採用していても、アプリのインストールができなかったり、機能制限されていたりなど、メーカーが想定した使い方しかできないケースが多いんですよね。&lt;/p&gt;
&lt;p&gt;Boox Note AirはGoogle Playストアからアプリをインストールできて、それらをE Ink上で使用できる。もちろん、E Inkのレスポンスを考えると、あらゆるアプリを快適に使えるわけではないですが、本や雑誌、Webページをじっくりと読むような用途では快適です。&lt;/p&gt;
&lt;p&gt;なお、デジタルノートとしてもかなりの可能性がありそうなのですが、私は読書端末としてしか使っていないため、ちゃんとしたレビューを読みたい場合は、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://win-tab.net/android/boox_note_air_review_2010312/" target="_blank" rel="noreferrer"&gt;BOOX Note Airの実機レビュー － 圧倒的な存在感！10.3インチ新世代電子ペーパータブレットは、デザインも機能も新たな段階へ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kimihiro-n.appspot.com/show/1604405111794" target="_blank" rel="noreferrer"&gt;BOOX Note Airが想像の10倍以上使い勝手よかった&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;などをどうぞ。&lt;/p&gt;

&lt;h3 class="relative group"&gt;何をどんなアプリで読んでいるのか？
 &lt;div id="何をどんなアプリで読んでいるのか" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e4%bd%95%e3%82%92%e3%81%a9%e3%82%93%e3%81%aa%e3%82%a2%e3%83%97%e3%83%aa%e3%81%a7%e8%aa%ad%e3%82%93%e3%81%a7%e3%81%84%e3%82%8b%e3%81%ae%e3%81%8b" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;基本的にiPadで使っているアプリを、そのままBOOX Note Airへインストールして使っています。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;対象&lt;/th&gt;
 &lt;th&gt;使用しているアプリ&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;PDF（技術書、自炊本、マニュアル・仕事の資料など）&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://play.google.com/store/apps/details?id=jp.co.tokyo_ip.SideBooks" target="_blank" rel="noreferrer"&gt;SideBooks&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;電子書籍&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.amazon.kindle" target="_blank" rel="noreferrer"&gt;Kindle&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;雑誌&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://play.google.com/store/apps/details?id=jp.co.rakuten.magazine" target="_blank" rel="noreferrer"&gt;楽天マガジン&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;RSS Feed&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.instapaper.android" target="_blank" rel="noreferrer"&gt;Instapaper&lt;/a&gt; / &lt;a href="https://play.google.com/store/apps/details?id=com.devhd.feedly" target="_blank" rel="noreferrer"&gt;Feedly&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="auto"
 alt="iPad Pro 11インチとBoox Note Airを並べてみた"
 width="614"
 height="461"
 src="https://namaraii.com/images/boox-note-air-001.jpeg"
 srcset="https://namaraii.com/images/boox-note-air-001.jpeg 800w, https://namaraii.com/images/boox-note-air-001.jpeg 1280w"
 sizes="(min-width: 768px) 50vw, 65vw"
 data-zoom-src="https://namaraii.com/images/boox-note-air-001.jpeg"&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="auto"
 alt="Kindleアプリでフィックス型の技術書を読む"
 width="461"
 height="614"
 src="https://namaraii.com/images/boox-note-air-002.jpeg"
 srcset="https://namaraii.com/images/boox-note-air-002.jpeg 800w, https://namaraii.com/images/boox-note-air-002.jpeg 1280w"
 sizes="(min-width: 768px) 50vw, 65vw"
 data-zoom-src="https://namaraii.com/images/boox-note-air-002.jpeg"&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="auto"
 alt="SideBooksで自炊した本(PDF)を読む"
 width="461"
 height="614"
 src="https://namaraii.com/images/boox-note-air-003.jpeg"
 srcset="https://namaraii.com/images/boox-note-air-003.jpeg 800w, https://namaraii.com/images/boox-note-air-003.jpeg 1280w"
 sizes="(min-width: 768px) 50vw, 65vw"
 data-zoom-src="https://namaraii.com/images/boox-note-air-003.jpeg"&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="auto"
 alt="FeedlyでRSSフィードを読む"
 width="461"
 height="614"
 src="https://namaraii.com/images/boox-note-air-004.jpeg"
 srcset="https://namaraii.com/images/boox-note-air-004.jpeg 800w, https://namaraii.com/images/boox-note-air-004.jpeg 1280w"
 sizes="(min-width: 768px) 50vw, 65vw"
 data-zoom-src="https://namaraii.com/images/boox-note-air-004.jpeg"&gt;&lt;/figure&gt;

&lt;h3 class="relative group"&gt;結論
 &lt;div id="結論" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e7%b5%90%e8%ab%96" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://kimihiro-n.appspot.com/show/1604405111794" target="_blank" rel="noreferrer"&gt;BOOX Note Airが想像の10倍以上使い勝手よかった&lt;/a&gt;に書かれている、&lt;/p&gt;</description></item></channel></rss>