物語を、
美しく読む。

FluxNovelsは、日本の小説を最も贅沢に楽しむための、縦書き専用プレミアム・リーダーです。

FluxNovels App UI

究極の読書体験

縦書きへの偏愛

日本語が最も美しく映える「縦書き」に特化。独自のレンダリングエンジンにより、ウェブ小説を洗練された一冊の本へと昇華させます。

紙の質感を指先に

ページをめくる裏側まで再現する「ダブルサイド演出」。デジタルでありながら、本物の紙を手繰るような高揚感を届けます。

すべてを同期

SwiftDataとCloudKitにより、あなたのライブラリと読書位置はすべてのAppleデバイス間で完璧に同期されます。

直感的なジェスチャー操作

スワイプアップ(上スワイプ)

リーダー画面で指を「上」へ動かすと、目次(Table of Contents)パネルが下部から優雅にスライドイン表示されます。別エピソードへの瞬時切り替えのほか、目次上部から「フォント・テーマ設定」を起動できます。

目次パネルを表示

スワイプダウン(下スワイプ)

リーダー画面で指を「下」へ動かすと、読書をスマートに終了し、本棚(ライブラリ)や作品詳細画面へ瞬時に戻ることができます。スムーズに前画面に復帰可能です。

リーダーを閉じる

左右スワイプ(ページ送り・戻し)

日本語の美しい縦書き(RTL:右から左へめくる)仕様に完璧に合わせ、画面を【左へスワイプ】すると次のページへ進み、【右へスワイプ】すると前のページに戻ります。本物の紙をめくるような極上の操作感です。

左:送り / 右:戻し

よくある質問

縦書き表示にならないサイトがあります。

本アプリは、星空文庫などの一部の例外を除き、デフォルトでは公式Webサイトをそのまま表示する「ブラウザ読書モード」を提供しています。小説を縦書きリーダーで読むためには、ユーザー様ご自身の責任において「拡張プロファイル」を作成または適用していただく必要があります。プロファイルを作成・適用する際は、対象サイトの利用規約を必ず確認し、コンテンツの改変や外部ビューアーでの閲覧が禁止されている環境において、規約に抵触するような設定の作成や適用は行わないでください。

データの同期がうまくいきません。

iOSの「設定」> [ユーザー名] > iCloud で、iCloud DriveおよびFluxNovelsがオンになっていることをご確認ください。

オフラインでも読めますか?

一度読み込んだエピソードは端末にキャッシュされるため、オフラインでもお読みいただけます。さらに便利にお使いいただける一括ダウンロード機能等については、今後のアップデートで拡張を予定しています。

高度な設定:拡張プロファイル

FluxNovelsは、星空文庫などの一部の例外を除き、デフォルトでは公式Webビューによる「ブラウザ読書モード」を提供しています。ただし、独自の「拡張プロファイル」を作成することで、ユーザー様ご自身の判断と責任において、Web上の小説を美しい縦書きで読み込むことが可能になります。

詳細仕様リファレンス

1. サイト識別とマッチング

項目説明
workIdPatternURLから作品IDを抽出する正規表現。
episodeNumberPatternURLから話数を抽出する正規表現。

2. 目次(ToC)の解析

項目説明
tocEpisodeRowSelector目次の一行分(リスト要素など)を指すCSSセレクタ。
tocEpisodeTitleSelectorエピソード題名を取得するセレクタ。
tocEpisodeHrefSelectorリンクを取得するセレクタ。

3. 本文の抽出

項目説明
episodeBodySelector重要。 本文が含まれるコンテナのセレクタ。
episodeTitleSelector話のタイトルのセレクタ。

4. クレンジング設定

項目説明
removeSelectors削除する要素(広告、SNSボタンなど)。
preserveSelectors保護するタグ。 ["ruby", "rt", "img"] を推奨。

実装サンプル(架空サイト:ノベル・ラボ)

{
  "displayName": "ノベル・ラボ(拡張)",
  "mode": "extendedReader",
  "isEnabled": true,
  "workIdPattern": "novel-labo\\.com/v/([a-z0-9]+)",
  "episodeNumberPattern": "novel-labo\\.com/v/.+/chapter/(\\d+)",
  "episodeBodySelector": "article#novel-text",
  "preserveSelectors": ["ruby", "rt", "img"]
}

AIを活用した効率的な作成

AI(ChatGPTやClaude等)を活用すれば、HTMLを読み込ませるだけでプロファイルを作成できます。以下のプロンプトをコピーして活用してください。

AIへの指示(プロンプト)の例:
あなたはCSSセレクタおよび正規表現の専門家です。小説リーダーアプリ『FluxNovels』の「拡張プロファイル(Extended Profile)」を作成してください。 以下の【ターゲット情報】(対象サイトのURL構造、目次ページのHTML、本文ページのHTML)を深く解析し、以下の【出力フォーマット】のすべてのパラメータを正確に埋めたクリーンなJSONを出力してください。プレースホルダーや推測による省略はせず、実際のHTML構造に完全に合致するセレクタを指定してください。 ### URLプレースホルダーと正規表現の設計ルール 1. {workId}: URLから作品を識別するためのID(数字や文字列)を指します。 2. {episodeId}: エピソード個別のID、または連番(話数)を指します。 3. workIdPattern はURLから {workId} を抽出するためのキャプチャグループ () を含む正規表現です。 4. episodeNumberPattern はURLから {episodeId} を抽出するためのキャプチャグループ () を含む正規表現です。 5. tocPageURLTemplate には、{workId} プレースホルダーを含む目次(作品トップ)ページのURLテンプレートを指定します。 6. episodeURLTemplate には、{workId} や {episodeId} プレースホルダーを含む、本文エピソードページのURLテンプレートを指定します。 7. urlPatterns には、このプロファイルを適用するURLのパターンを、上記のプレースホルダーを用いて複数(目次用、本文用など)配列で指定します。 ### セレクタ設計のルール - tocEpisodeRowSelector: 目次ページにおける、各話エピソード1件分を表すCSSセレクタ。 - tocEpisodeTitleSelector: 上記Row要素内から「エピソードのタイトル」を抽出するためのセレクタ。 - tocEpisodeHrefSelector: 上記Row要素内から「本文URL(href属性)」を抽出するためのセレクタ。 - tocEpisodeDateSelector: 上記Row要素内から「投稿日・更新日」を抽出するためのセレクタ。 - episodeBodySelector: 本文ページにおける「小説の本文」を囲むコンテナのセレクタ(広告やノイズを含まない最も狭い範囲)。 - episodeTitleSelector: 本文ページにおける「エピソードのサブタイトル」のセレクタ。 - removeSelectors: 本文に含まれる広告、SNSボタン、スクリプトなど、読書に不要なタグを排除するためのCSSセレクタの配列。 【出力フォーマット】 { "displayName": "サイト名(拡張)", "mode": "extendedReader", "isEnabled": true, "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1", "acceptLanguage": "ja-JP,ja;q=0.9", "timeoutSeconds": 30, "maxPrefetchEpisodes": 5, "cachePolicy": "library", "requestIntervalSeconds": 1, "workIdPattern": "作品IDを抽出する正規表現(例:site\\\\.com/novel/([0-9]+))", "episodeNumberPattern": "エピソードIDを抽出する正規表現(例:/episode/([0-9]+))", "tocPageURLTemplate": "目次URLテンプレート(例:https://www.site.com/novel/{workId})", "urlPatterns": [ "https://www.site.com/novel/{workId}", "https://www.site.com/novel/{workId}/episode/{episodeId}" ], "tocEpisodeRowSelector": "目次行のセレクタ(例:.episode-item, tr.row)", "tocEpisodeTitleSelector": "タイトルセレクタ(例:.title, a)", "tocEpisodeHrefSelector": "リンク(aタグ)のセレクタ(例:a)", "tocEpisodeDateSelector": "投稿日のセレクタ(例:time, .date)", "tocEpisodeNumberRegex": "タイトルやURLから話数を抽出する正規表現(例:第\\\\s*([0-9]+)\\\\s*話)", "tocNextPageSelector": "目次の「次へ」ボタンのセレクタ(無い場合は空文字)", "episodeURLTemplate": "本文URLテンプレート(例:https://www.site.com/novel/{workId}/episode/{episodeId})", "episodeTitleSelector": "本文ページの話タイトルセレクタ(例:h1, .episode-title)", "episodePrefaceSelector": "前書きのセレクタ(無い場合は空文字)", "episodeBodySelector": "本文のセレクタ(例:#novelBody, .novel-text)", "episodeAfterwordSelector": "後書きのセレクタ(無い場合は空文字)", "removeSelectors": [ "script", "style", "noscript", "div.ad-container" ] } 【ターゲット情報】 1. 対象サイトの主要URL: - 目次ページ:[ここに目次ページのURLを記入] - 本文ページ:[ここに本文ページのURLを記入] 2. 目次ページのHTML: [ここに目次ページのHTMLソースの一部、または全体を貼り付け] 3. 本文ページのHTML: [ここに本文ページのHTMLソースの一部、または全体を貼り付け]
⚠️ 拡張プロファイルの運用に関するガイドライン
  • 本アプリはデフォルトで「ブラウザ読書モード」を提供しています。縦書き化を目的としたプロファイルの適用は、対象サイトの利用規約を尊重し、ユーザー様の自己責任で行ってください。
  • サイト側が意図しない形式でのデータ取得や、規約に抵触するような自動化・改変を目的としたプロファイルの利用および配布は固くお断りいたします。
  • 本機能はあくまで「個人の読書環境の最適化」を支援するためのツールです。プロファイルの適用結果に関する法的責任はすべてユーザー様に帰属します。

プロファイルの共有や相談はコミュニティ(GitHub Discussions)へ。

コミュニティへ参加する

プライバシーポリシー

FluxNovels(以下「本アプリ」)は、ユーザーのプライバシーを最優先事項として設計されています。

1. 個人情報の収集について

本アプリは、個人情報(氏名、メールアドレス等)を収集することはありません。

2. データの保存と同期

データはAppleのiCloud(CloudKit)に保存され、開発者がアクセスすることはありません。

3. お問い合わせ

support@cecily.jp