Q&A

ことせかい に寄せられたご意見ご要望について、何らかの理由で実装されなかったご提案について記述しておきます。

目次

はじめに (2018/05)

ことせかい への新機能のご提案、ありがとうございます。 ことせかい は個人が趣味で開発しているアプリとなっております。また、開発者はアイディアをあまり思いつかないような人間ですので、新機能についてはユーザ様からのご提案に頼っている所もございます。いつもありがとうございます。
ただ、このことせかい は「個人が趣味で開発している無料アプリ」であるということを今一度よく考えて頂ければと思います。下記のご意見ご要望への回答を読んで頂けるとわかるかと思いますが、個人制作であり、お金をいただいていないという事が原因で採用できないという問題が多くございます。新機能を思いついてご提案を書くということまでして頂ける方にはお手数までおかけした上で誠に申し訳ないのですが、「ことせかい の開発者は、ことせかい が使いやすくなってユーザが増えたりしても、1ユーザとして使いやすくなるという恩恵以外には恩恵はなく、逆にユーザが増えることでユーザサポートの手間が増えるというデメリットの方が大きい」という事をご理解ください。
例えば、開発者 は ことせかい を目で読むためには使っておりませんので、目で読むための機能を積極的にサポートする気はありません。目で読むために ことせかい をお使い頂きたい方には誠に申し訳ないのですが、ことせかい があまり目で読むための仕組みを持っていないのはそういう理由があります。まぁ、ご提案された機能で、簡単に実装できるものについては実装しておりますけれども。
そんな背景があります事をご理解の上、新機能のご提案をしていただければと思います。 また、ことせかい の開発者は褒められるととても喜びます。礼儀正しくお願いなどされても嬉しいと感じます。逆に、「〜はおかしい、〜となるのが当然であるので直すように」といったような思いやりのないお問い合わせ受けると傷つきます。 開発者としましては、それらのご意見ご要望はできるかぎり分け隔てなく評価し、実装するかしないかを決定しようと思っていますが、所詮は人の子ですので褒められたり礼儀正しいご提案の方が採用されやすくなると思います。どうぞお手柔らかにお願いいたします。

読み替え辞書をユーザ間で共有したい (2018/05)

読み替え辞書をクラウド的なものでユーザ間で共有して編集できないかというご提案について。
これは実現したらとても良いものになるとは思うのですが、そのクラウド的な物を維持するのにはお金がかかるので、ことせかい の開発者側としては対応できない案件となります。ことせかい が何らかの形で定常的にお金を生むような形にしていればよかったのかもしれませんがそうはなっていませんし、今から何らかのお金を生む要素を入れるのは多くの人が望まない事ですよね。なので、やる気はありません。ただ、数年間分のサーバ費用にオマケもつけるからやってくれという人が現れたり、自分がサーバ側を管理運営するのでアプリ側はなんとかしてくれという人が現れたり、この無料のサービスをこうやって使うと実現できるんじゃね?というウルトラCを考えついたりしたらあるいは、という気もしなくもありません。(もちろん、その費用が尽きたりサーバ運営をしてくれている人が諦めたりその無料サービスから想定外の使い方しちゃ駄目と怒られたらそこでそのクラウド読み替え辞書共有サービスは終了になりますので、不安定なサービスであるといえます)

何らかの問題で期待しないデータがダウンロードされてしまった章について (2018/05)

これは、例えば小説ではなく、「アクセス数が多いのでエラー」といったものがダウンロードされてしまった、というような場合の事です。 現状では、既にダウンロードして登録されてしまった部分(章)を再ダウンロードする方法はありません。
内部的には HTTP のステータスコードでエラーを返してくれている(200 OK ではない場合、例えば 429 Too many requests を返している)場合であれば、ダウンロードが失敗したとみなして保存せずにダウンロードを終了しています(していない例がありましたら不都合になりますのでお問い合わせフォーム等から教えてください)。逆に、HTTPのステータスコードによるエラー以外で「アクセス数が多いのでエラー」という文字列が取得できてしまう場合(200 OK で取得したデータの場合)には、ダウンロードが失敗したかどうかを判定するのは難しいため、そのままの文字列が保存されてしまいます。これをユーザ様の側で「この章だけ再ダウンロードせよ」という指示を出せるようにしたらよいか、とも思ったのですが、現在の内部データベース仕様ですと「その章」がどんなURLであったのかの情報が不足しており、再ダウンロードすることができないために実現できませんでした(現状では最初にダウンロードしようとした章のURLと、最後にダウンロードしようとした章のURLしか保存されていませんので、10章分読み込んでいた場合には2章から9章までは再ダウンロードすることができない、という状態です)。
なので、「アクセス数が多いのでエラー」といったようなエラーメッセージそのものが保存されてしまっている場合は一旦小説を本棚から削除して、通信環境の良い所で再度ダウンロードしていただく必要があります。
この問題については将来的には対応しようとは思っているのですが、現在の内部データベース形式では上記の理由で無理となります。また、将来的に対応できたとしても、現在既にダウンロード済みのものについて(上記の例だと2章から9章について)はURLを推測できない関係上、対応が不可能な問題となります。予めご了承ください。

縦書き表示について (2018/05)

まず、ことせかい は「読み上げ」アプリですので「目で読む」ための機能については真面目にサポートするつもりはありません。
また、縦書き表示についてのお問い合わせは何度か受けておりますので少し調査してみたことがあるのですが、残念なことに簡単には縦書き表示はできそうにありませんでした。
グダグタと調査したものを書き下しますと、NSAttributedString に NSVerticalGlyphFormAttributeName 辺りを設定すると縦書き表示ができそうなのですが、1行分しか縦書き表示してくれないようであったり、TTTAttributedLabel というライブラリを公開してくれている人が居てそれを使うと良さそうだと思ったら、Label であって TextView ではないのでスクロールできなかったり、UIWebView に CSS で writing-mode: vertical-rl; 辺りを含ませた物を表示させれば綺麗な縦書き表示ができるかと思ったけれど、現在の読み上げ位置をハイライトする方法が一筋縄ではいかなくて断念したり、といった感じです。最後の UIWebView 辺りの仕組みがうまく動くのであれば表示している WebPage をそのまま読み上げさせる事や、挿絵を表示しながらの閲覧もできるようになりそうでいいかなぁとも思ったんですけれども、読み上げアプリとしては読み上げ位置が見えないのはなぁということでお蔵入りになりました。なお、これらは 2,3年前 に調査したものになりますので、今ではもっと良い方法があるかもしれません(その辺りの知識のある方がおられましたら教えていただければ嬉しいです)。

スライダーについて (2018/05)

ことせかい の中の色んな所にあるスライダー(左右にスライドして値を入力する奴)なんですけれど、これ、微妙な値を指示したい場合にはちょっと面倒ですよね。そんな時は、スライダーのつまむ所(丸い奴)をタップしたまま(つまむ所が見える状態になるまで)指を下にずらして、そこで指を左右に傾けるような形で位置を調整すると微妙な値もなんとなく入力できます。まぁ正確に0.1づつ動かしたい、みたいなのには使えないのですけれど、覚えておくとちょっと便利な感じです。あ、これは左右への0.1づつとかのボタンを配置するのが面倒だから言っているのではなくてですね、ボタンを配置てしまうとiPhone SEとかの幅の狭い端末だとレイアウトが崩れちゃってちゃんと操作できなくなっちゃうのでボタンを配置できない所があったりするのです。

アプリ内の不都合報告フォームでの日時指定フィールドについて (2018/05)

ことせかい アプリ内の不都合報告フォームでの日時指定フィールドが、標準で1日後になっていて送信時に「問題のある入力項目」になってしまう、というお問い合わせがありました。
これは、少しでも多くの人に正しい問題発生日時を入力して欲しいために、必ず、指定しないとエラーにする、という事をしているための施策になります。横着なさらずにちゃんと正しい日時を入力してくださいますようお願い致します。

ルビ表示の改善について (2018/05)

まず、ことせかい は「読み上げ」アプリですので「目で読む」ための機能については真面目にサポートするつもりはありません。
なのですが、簡単に実現できるのに実装しないのだとすると悪い気もしますので、調査してみました。しかし、残念なことにルビの表示を簡単に実現するのは難しいという結論に達しましたため、この機能については見送りました。
ことせかい で小説を表示している画面では、UITextView というコンポーネントを利用しています。このコンポーネントは NSAttributedString という、属性つきの文字を表示する機能があります。この NSAttributedString には CTRubyAnnotation というルビをふるためのそのものの属性があります。なのですが、どうも UITextView はこの CTRubyAnnotation には対応していないようです(設定してみても何も起こりませんでした)。UILabel という別のコンポーネントでは同様にCTRubyAnnotation属性を設定した文字列にルビが振られましたので、多分使い方が間違えているとは思えませんでした。では UILabel を使えばいいではないかと思った人は鋭いかもしれませんが、UILabel ですとスクロールができませんし、範囲選択という概念もありませんので小説の本文を表示するためには使えません。 ではどうするのが良いのかというと恐らくは WKWebView といったような HTML のレンダラを使っての表示にしてしまうのが良いと考えられますが、縦書き表示についての所でも書きましたように、それはそれで解かねばならない問題が解けませんでしたので採用できないという判断になりました。
以上の理由から、ルビの表示の改善については見送らせて頂いています。

読み上げ時の話者について (2018/05)

ことせかい は読み上げアプリですので、読み上げの話者に関して、他の話者を選択できないか、というお問い合わせを受けることがあります。

ことせかい では、iOS の AVSpeechSynthesizer という、Siriさん も使っている音声合成エンジンを利用させて頂いています。これは Appleさん が無償で提供してくれているものになりますので、できるだけお金をかけず運用されている ことせかい としましてはとても使いやすいものとなっています。

同様な無償で利用可能な音声合成エンジンもいくつかあります。例えばAQUEST AquesTalk(一部の方には「ゆっくりの音声」というと馴染みがあるかもしれません)などがあります。 これらの音声合成エンジンは、(人によって評価は別れるのかもしれませんが) AVSpeechSynthesizer と比べてとりたてて良い品質の読み上げを行うようなものはなさそうでした。 また、現在の内部データベース情報では音声合成エンジンを変更するためのデータがなく、別の音声合成エンジンを指定することができません。従って、AquesTalk のような別の音声合成エンジンも利用可能とするためには内部データベースの更新が必要となりますが、これは最悪ダウンロードした小説が消えてしまうというような修正が伴う事にはなるため、慎重に行う必要があります。 そのため、現在のところはこれら AVSpeechSynthesizer 以外の無償で利用可能な音声合成エンジンを利用できるようにする予定はございません。

さて、ことせかい の開発を開始した頃(多分2014年頃)と比べて、最近は音声合成の技術もかなり進歩してきました。 中でも最近流行りのDeep Learningの技術を利用した音声合成には目を見張る物があります。 例えば Google CLOUD TEXT-TO-SPEECH や、Amazon PollyMicrosoft Bing Speechといったものです。 ただ、これらのサービスは所謂クラウドによるサービス提供を行うもので、利用にはわずかながらとはいえお金がかかります。 ご承知の通り、ことせかい にはお金を生み出す導線がありません。そのため、これらのお金のかかるサービスを利用しようとすると開発者側の持ち出しとなるため、そのままでは利用することは出来ません。

では、クラウドの利用料金をユーザ様から払って頂くような形式にするとどうだろうという考えも思いつきます。 ただ、これは以下に述べますようないくつかの点で問題があり、やりたくありません。

  1. クラウド側の利用料金はとても細かい単位での従量課金制であることがほとんどなのですが、iOS における課金体系にはそのような細かい単位での従量課金というものはございません。 従って、アプリ側での課金は例えば一度に120円分頂いておき、クラウド側の利用料金が120円を超えた辺りでもう一度120円を課金で頂く、というような動作が必要になります。ただ、クラウド側の利用料金はアプリのユーザ単位ではなくアプリ単位で課金されると考えられるため、一人のユーザの利用した利用料金を正確に算出するのは難しいと考えられます。そのため、恐らくは「だいたいこの位使ったのだからこの位のお金がかかっただろう」というざっくりとした推測を働かせる事になると考えられます。また、その推測はどちらかというとユーザ様側の支払う金額の方が多くなるように設定しておかないと、ことせかい の開発者側で赤字になってしまい、サービスが継続できなくなると思われます。
  2. これらのクラウドで提供される音声合成サービスを利用する場合、利用料金の問題が解決したとしても、ネットワークアクセスという問題がつきまといます。ネットワークへのアクセスは常に失敗する可能性があり、失敗からの回復のための実装が必要となり、実験などの検証は恐らく終わりがありません。
  3. ご存知の通り、現在の ことせかい には課金の仕組みはありませんので、新しく課金の仕組みを組み込む必要があります。課金の仕組みはお金に関する事ですので、慎重に組み込む必要があります。ことせかい の開発者は課金の仕組みをアプリに組み込んだ事は一度もなくその辺りの経験が少ないため、この作業にはかなりのコストを見込む必要があります。
  4. クラウド側の従量課金分をアプリ側の課金で補おうとした場合、アプリ側の課金成立時に Apple側 に支払われる 30%分 のアプリ内課金利用料が問題になります。というのは、例えばクラウド側の従量課金で120円分の音声合成を行ったとします。その場合、ことせかい のユーザとしては 120円 だけを払えばいいような気がしますが、これをアプリ内課金で120円を払って支払おうとすると、お金が足りなくて支払うことができません。これは Apple側 で120円の30%の36円が引かれて、84円しか開発者側には手に入らないため、クラウド側でかかった120円に満たないことになります。従って、アプリ内課金でクラウド側の従量課金分を補うためには、その30%分を多く頂く必要が出てきます。恐らくこれは期待されていない動作となるでしょう。

ことせかいの開発者としましては上記ような複雑な仕組みを構築しなければならない上に、さらにお金の問題(多分何かよくない間違え方をすると烈火の如く怒られたり最悪裁判とか警察沙汰になったりする可能性が高い)を抱え込むというコストもリスクも高い案件になります。正直な所、そこまで苦労してこれらの問題を抱え込むだけの利点がありません。

以上の事から、現在のところは問題が多いという理由でこれらの別の音声合成エンジンを利用するというのは難しいと考えています。


小説のお気に入りや本棚のフォルダ分けなど、本棚に関する拡張について (2018/05)

小説をお気に入りに登録したり、フォルダ分けするなどで小説を探しやすくするための機能についてなのですが、これは、現在の内部データベースに保存されている情報だけですと対応が不可能なものが多く、内部データベースの定義を変更して対応しようと思っています。 ただ、その場合は本棚だけではなく他の部分にも影響が及ぶ上に、場合によってはダウンロード済みの小説が見えなくなったりといった問題が発生する可能性があります。そのため、リリース用の枝(branch)ではなく、別の枝で作業しています。 この作業はかなり前から行っているのですが、まだまだ先は長い感じですぐにリリースできるとは思えません。

つまり、本棚に大量の小説を登録していると本棚から小説を探しにくくなっているというのは認識しているのですが、すぐに対応できる状態ではないということになります。 お手数をおかけしますがのんびりお待ち下さい。


pixiv小説のシリーズへの対応について(2018/08)

結論から言うとこれは現在の仕組みでは無理そうです。 ことせかい では Web取込時に HTTP GET request の一回で取得できるHTMLから小説の本文や次の章へのリンクを取得しているのですが、このQ&Aを書いている時点では取得されたHTMLにはそのシリーズ小説の別の章へのリンクが含まれていません。 そこまで深く追いかけてはいないのですが、恐らくはページが表示された後に JavaScript による読み込みによってシリーズ小説の別の章へのリンクが生成されているのではないかと思います。ことせかい側 では JavaScript は動作しませんので、そのような仕組みのWebPageの場合は対応できません。 以上の原因により、原理的に対応が不可能な案件と判断されました。


読み上げ時の音量(ボリューム)について(2018/10)

読み上げ時の音量が小さいのでもっと大きくできないか、というお問い合わせを何回か受けました。 なのですが、これ以上の音量は出せません。

というのは、ことせかい は iOS の提供しております AVSpeechSynthesizer というものを使って読み上げを行っています。 この AVSpeechSynthesizer では AVSpeechUtterance というものの volume プロパティで音量の指定ができるのですが、ことせかいではこの volume プロパティを標準値の 1.0 で利用しています。 という状態なのですが、この volume プロパティで指定できる値の範囲は 0.0 から 1.0 なのです。 つまり、現状で最大音量で発話させています。 ということなのでこれ以上の大きい音量では発話できないのです。 どうしても音量を大きくする必要がある方は外部のスピーカーなどの導入をお考えください。

アルファポリス様について(2018/10)

Web取込 機能で対応していました アルファポリス様 なのですが、先日よりダウンロード時に本文の内容が取得できない状態が発生しております。詳細な確認は行っておりませんので正確な事は言えませんが、今現在確認できている所では本文を JavaScript により遅延読み込みしているために、本文情報がカラの物が取得される、という状態のようでした。 このような遅延読み込みを行うWebサイトについては ことせかい の側では対応が難しいため、アルファポリス様 については ことせかい ではダウンロードができないとお考え頂けますと有り難いです。