設定画面・仕様

抑制された機能 (v112.1.0)

レガシーサーバに対して、削除または抑制された機能について記載します。

Jpsonicは以下の理由から、機能追加だけではなく機能の抑制や削除が行われる場合があります。

  • 「これなんだろう」という機能をできるだけ少なくしていく。若い初見ユーザが惑いにくい機能構成にする
  • 不要実装を少なくし、コア機能の品質を上げやすくする

抑制 vs 削除

不要な機能に対しては、抑制か削除といった対応がとられることがあります。

  • デフォルトで有効化されるべきでない機能は、オプション化されデフォルトオフにする形で画面上から削除されます
  • 存在すること自体が好ましくない機能は削除されます

概ね以下のような尺度で考えています。

抑制される機能
一応多くの人間の手を経てそこに存在しているものであるため過去の経緯を尊重。消極的に緩やかにJpsonicではNoという主張
オプションで無効化し少なくとも初見の人の目から隠すという対処が可能な、実利用を管理者の運用に委ねられる機能
必要であればいつでも消すことが可能な機能
削除される機能
仕様上許容できない機能
既に実装上問題が発生してしまったり、よりよいメンテナンスの障壁になった機能

抑制された機能

開発経緯により仕様がコンフリクトした箇所や、世代交代で陳腐化した機能の清算です。
この工程を行わずに新しい機能追加をしてもカオス度が増すだけです。
コードの除去は行われていないため明示的に有効化できますが、積極的にメンテナンスはされません

抑制された機能一覧
項目 理由
v109.3.0 サーバログ デフォルトではadminのみ閲覧可能に変更
v109.3.0 Remember Me認証 デフォルトで非表示に変更。大抵が懸念点と同時に説明されるような機能でありセキュリティの低下と引き換えに利用する機能です
v109.3.0 プレイリストをPosdcastで公開 何のためにある機能か一見わかりませんが、おそらくSubsonic公式でiPhone向けのアプリが提供されなかったためです。この機能をオンにすることでサードパーティアプリなしでiPhoneでのストリーミングのデバッグが可能です(PosdcastはAppleが作ったため絶対に何らかのアプリが搭載されているはずだから)。用途が類推しにくい機能であるため隠します
v109.3.0 ネットTV/ラジオ ネットTV/ラジオはインフラ整備の遅い国では使用されたらしいのですが、日本は世界有数の勢いで高速回線網が整備がされたためほぼスキップされたテクノロジーです。全く使われないものではないですがURLをもろだしして配信しているところはおそらくほぼなく、専用アプリなりWebサービスが提供されています
v109.3.0 レガシーの検索方式 以前使用されていた形態素解析してヒット数順に並べるマルチタームという検索方式です。現在のAirsonicの検索はこれを英語版に作り替えたものです。(Subsonicの検索方式を最新ライブラリで再現したもの、Airsonicのコミュニティでレビューが行われ機能は一部改良されている。)Jpsonicが採用しているフレーズ検索より誤検索が多くなります。
v109.4.0 (ネットワークの使用)状態 デフォルトではadminのみ閲覧可能に変更します。サーバログと同じく、常識的にユーザのアクティビティの閲覧は管理者権限です。これらの機能が一般ユーザでも利用可能な場合「他者に何を聴いているか知られないようにする」という運用ケースが確保されません
v109.4.0 現在演奏中の曲の一覧 画面右側に演奏中の曲を他のユーザに通知する機能はデフォルトでオフにします。画面右側に妙なスペースがあるのは、Subsonicではここにチャット欄があった名残です。(音楽系SNSによくある「他の人が演奏を聴いているのが分かる」→「チャットで話しかけられる」のフロー)チャットはAirsonicでオミットされましたがその時点で周囲の実装が再考されなかったため、曲の通知機能のみが残り有用性が疑わしい機能になっています。画面右側のフレームには不適切な実装が多いためv109.4.0でそれらは除去されます
v111.1.0 外部プレイヤー m3uは全否定しませんが、ブラウザによるm3u経由でのローカルアプリ起動はロストテクノロジーです。脆弱性が多い仕組みとしても広く知られており、近代的なブラウザはm3uによる外部アプリの直接起動を許可しません。ローカルでの使用に問題がないにしても心証は良くないギミックといえます。かつてセキュリティにノーガードだったRealMedia/RealPlayer全盛期には、標準的なOS/ブラウザからブラウザプラグインに依存せず外部アプリで演奏ができました。現在は直接実行ではなくダウンロードが既定動作になっている為、経緯を知らない方にとっては意味不明の機能です
v111.2.0 更新ボタン Subsonic系列サーバのビューにはミュージックフォルダの切り替えを行うセレクタの近くに必ず更新ボタンがついています。これはミュージックフォルダのキャッシュをクリアし配下のディレクトリ構造をデータベースに反映するという機能を持ちます。この機能は「高速アクセスモードがOFF」が条件で機能します。更新ボタンでまず新しいディレクトリが追加され、そのブラウジングを開いたときに子がパースされます。この動作仕様がオーバーフローの遠因になります。v111.2.0で高速アクセスモードが削除され、更新ボタン自体は不要になりました
v111.2.1 非アスキーファイル名のコピー 初期Subsonicから存在するWindows限定処理です。文字コードの都合上DOS上でファイルパスが「?????」になってしまうようなファイルでは、トランスコード実行時にファイルをランダム英数名のtmpファイルにコピー、コピー先をffmpegにパスする仕様になっています。これは当時のffmpegのバグに対する回避実装であり、現在では再現できません。ffmpegが正常動作している場合とんでもなく無駄な処理になります(例えば数100Mbあるハイレゾの音源も自動コピーされます)。そのためJpsonicではこの処理が無効化されています。もし今後(未知の文字コードも含め)Windowsのトランスコードでファイルパスに関わる問題が発生した場合、このオプションを有効にして試してください
v111.6.0 Jsonp Subsonic APIでは定義されている項目であるため削除ではなく抑制されています。今ではあまり使われないものであり、どちらかといえば悪者扱いされることが多いです
v111.6.0 ID3の曲名からトラック番号を削除 Subsonicからの仕様に、タグから曲名を取得できない場合にファイル名から予測して曲名を決定するというものがあります。このときファイル名の先頭にトラックナンバーとおぼしき接頭辞が付与されている場合それを除去するようになっています。厳密に言えば不可能なケースがあり、たまたま10曲目に「10 Years Today」という曲があると誤作動します。百歩譲ってそこまでは許容できますが、ID3タグに正しい値が入力されていても値が加工されるという問題がありました。JpsonicはID3タグから読んだ値は加工しないように機能を抑制しています。Airsonicでは「リッピングするとき曲名の前にトラックナンバー付けるソフトがある」という話が出てそのままになっていました(つまりID3タグを加工する仕様になっていたのも一理あるかもしれないという考え)。今ほどタグが普及してなかった黎明期のソフトではそういった機能があったかもしれません。リッピングソフトの仕様や設定が狂ってるのはレアケースにあたりますが、どうしても既存のデータを修正したくない場合この機能を有効化して以前と同じ仕様にすることができます
v111.6.0 クリーンアップ データベースにおいて削除は比較的コストの高い処理にあたるため、大規模な削除が見込まれるシステムでは論理削除というテクニックが使用される場合があります。Subsonic系列のプロダクトにあるクリーンアップのボタンは、論理削除されているデータを物理削除するためのものです。SSDもなく今よりディスク速度もデータベースの性能も低かった時代にはおそらく一定の意義がありましたが、今とは条件が異なるでしょう。また論理削除では新規登録時のSQLも一曲当たり一本増えます。さらにいえば、音楽ライブラリが安定して管理されている場合ファイルの移動や削除はほぼ発生しません。そのためJpsonicではクリーンアップに相当する処理をスキャン中に自動で行うよう修正されています
v111.6.0 冗長なフォルダチェック SubsonicやAirsonicでは、ミュージックフォルダにアクセスする際に、そのミュージックフォルダが存在するかどうかのチェックが行われます。チェックを行った次の瞬間に意味がなくなるので存在チェック自体無意味とされ、Javaでは原則ランタイムエラーで検知するのがセオリーになります。またWindows版Java17のNIO APIのファイルの存在チェック実装はかなり非効率な処理になっています(それでも以前の実装にくらべいくつかのグリッチが回避できるようになっているとのこと)。性能の低いNASとの組み合わせの場合、多数のミュージックフォルダを追加するとスローダウンし数十個で処理が停止する場合があります。そのためJpsonicではこのチェックは抑制されています。ミュージックフォルダは、ユーザが行う操作のほとんどの処理で使用されるため影響範囲は非常に広いです(裏でユーザのフォルダ権限チェックが行われるため)。ちなみに実測では古いNASの古いSambaが相手の場合Win&Java17で一回のチェックに500ms台~5000ms台。ディレクトリやファイルが増えるほど条件が悪くなるのでどちらかといえばバグに近い
v111.6.0 検索インデックス/データベーステーブルの詳細 Airsonicで追加された、データのカウント数を表示する機能です。ほぼ無意味な機能なため抑制されています
v112.1.0 Chromecast Webページ上のChromecast Sender機能は抑制されます。実用的なスマホアプリにChromecast機能はついているので、別にWebページでリソースを割いてコントローラ実装する必要性はないという方針です。この修正により悪名高いcast_sender.jsというGoogleさんの外部スクリプトは読み込まれなくなります。これは「外部サービスはデフォルトで無効化する」という観点から、もともとAirsonicでも計画に挙げられていた作業です。実装上Chromecastに関わる全てのコードが除去されているというわけではないのですが、方針として今後JpsonicではWebページ上でChromecastをサポートしないということになります。こうしておかないと、例えば今後「プレイヤーのスクリプトを何かできのよい別のプロダクトにごっそり置き換えましょう」となったときに、ベンダーロックインで選択肢が狭められる可能性がアルアルだったりします。今となってはないに越したことはない機能になります。

削除された機能

明確にコードの一部または全てが除去された機能です。使うか使わないかは時代や商圏によるため定期的に見直されます。
ここにあるような機能が今後誰からも必要とされるようなものになれば、より品質の高いものを一から再実装します。

削除された機能一覧
項目 理由
Airsonic時代 パス検索 解析やコスト計算に不正があります。そもそもユーザがサーバのパスを検索するという仕様自体がNGです。
v108.0.0 Webページのアーティスト画像 Last.fmの画像が使用不可能なため。アーティスト画像はID3 tagの仕様外です。検索やプラウジング機能の一部として考えた場合、対象を識別するときにアルバムアート程の重要性はありません。データの管理も完全に属人化します。
v110.1.0 Java Jukebox 実装品質が低いためv109.3.0で抑制。Java16以降に対応するため削除されました[JEP 396]。Javaプログラマなら常識の「Sunのパッケージを使うな」の禁忌に触れるため、生まれた時からアウトな実装です。Oracleさんも大昔から警告しています
v110.1.0 Sonos 必要性が低いためv109.3.0で抑制。特定のIDEでSpringのテスト実行時に問題を引き起こすケースがあるため削除。Sonosは洋モノネットスピーカーのひとつ。特許権の侵害があるとしてGoogleを訴え予備的差止命令を勝ち取る。Google Homeは販売されなくなった。さらにSonosは古いファームを打ち切るためソフトウェアのサポート終了という方針を表明しユーザは阿鼻叫喚。Jpsonicはお家騒動に巻き込まれることを避けるため、当初よりUPnPをより重視しています。UPnPがあればSonosはいらない、というわけではありませんがSonos自体UPnPとSOAPの複合体ですので、エコシステムの中でのSonosアプリの立ち位置は現在このようになっています。数多あるUPnPの子孫のプロトコルのひとつ。
v110.2.0 SHOUTcast ネットラジオのようなもの。不要。SHOUTcastは世界的に見てもさほどトラフィックが多くなく、使用地域は大分偏っています。クライアントはともかくサーバ機能を維持する意義は薄いでしょう。クロスサイトスクリプティングに対する未検証コードを放置するデメリットの方が大きいです。
v111.2.0 高速アクセスモード 高速アクセスモードがOFFの場合、特定の手順によりWeb画面からオーバーフローを発生させることが可能(Subsonicで再現可能)なため削除。Jpsonicでは暫定対応として初期値をONにしていましたが削除されました。Jpsonicでは高速アクセスモードが常にONと同じ、つまりブラウジングの前にスキャンを行うことが必須となります。追加した曲をすぐブラウジングしたいという要求を実現したいのであれば、この機能がなくてもよりよい方法で実現可能です
v111.6.0 データベースの整合性 Aboutの内部詳細に存在していたデータチェックです。有効なミュージックフォルダに存在しないメディアファイルを引っかけるチェックだったようですが、Jpsonicではそのようなグリッチは発生しないので削除されました
v111.6.0 更新ボタン v111.2.0において高速アクセスモードが削除されているためこのボタンは無意味です。削除されました。

ブラウザ対応

一言で言うと、

Chrome、Firefox、Edgeを動作検証に使用しています

中長期予定にあるように、v109.3.0、v109.5.0、v109.5.0で大幅なWeb画面の改修が行われます。
ブラウザでの確認は主にChrome、Firefox、Edgeを動作検証の対象にしています。
直近シェアの上から1番2番…という数え方ではなく、長期視点や動作確認の効率性を重視して選定しています。

Chrome 圧倒的にシェアが高い。唯一音声入力が実用可能
Firefox 独自のルート証明書群を持っている。メディア実装に非互換がある。フォーラムではユーザが大目
Microsoft Edge 現シェアは低いもののWindowsユーザの導入障壁が低く「アプリ登録」ができる。Linux対応予定

これらはWindows/Linux/Mac、android/iphoneで利用可能なクロスプラットフォームブラウザです。

SafariやIEといったいわば各OSのプリインストールブラウザは、上記3ブラウザと比較してCSSの近代化が遅れているようです。また生体認証への対応なども他のすべてのブラウザに対して遅れています。

ちなみに、クロスプラットフォームブラウザとプリインストールブラウザでは、ダウンロードページの冒頭に書いてある文言も雰囲気が異なります。

クロスプラットフォームブラウザは以下のように。
このグループはCSS解釈に多少差はあるものの誤差の範囲であり、市場でマジョリティを形成するのに十分なシェアがあります。
ある程度複雑な構造のアプリでも画面実装とレイアウトを分断した設計が組みやすいのが特徴です。

Chrome Chromeはどのデバイスでも高速で動作し、安全に使える無料のブラウザです。
Firefox Firefox は非営利で、世界中の人々の貢献に支えられています。
Microsoft Edge デバイスを選ばない Web 体験. 新しい Microsoft Edge は、Windows、macOS、iOS、Android のサポート対象のすべてのバージョンで利用できます。

プリインストールブラウザは以下のように。
プリインストールブラウザは、組み込みヘルプに利用されたり多くの独自機能を持つためOSにとっては必要なものです。
これらのブラウザは自環境に対しての最適実装を実現するためのものですが、それがユーザにとって最高かどうかは別です。

Safari SafariはMac、iPhone、iPadにとって最高のブラウザになるように作られました。
IE お使いのシステムに合った最新の IE インターネット ブラウザーを入手してください。

Microsoftは2系統目のブラウザを作ることで乗り切る戦略ですが、AppleはむしろWindows市場から手を引き籠城戦の様相です。

Jpsonicはできるだけ多くのデバイスに対応する方針ですが、それは多くのブラウザに対応することと同義ではありません。
ブラウザには良しあしがあり、時代によって変わります。

Chrome、Firefox、Edgeに対応しますが、SafariやIEは検証の対象外とします。
ご了承ください。

ただし、Safariを目の敵にしているとか、対応したくないとかそういったことではありません。バックエンドの人は画面実装を軽視しがちとかそういったことでもありません。「音楽を探して聴く」という要件上、ブラウザの話題の比重が大きくないだけです。
ですので、Safari対応したい方はプルリクしてください。画面全部作り変えでも全然OKです。

更新履歴

この記事を書き換えたときに以下に追記します。

v112.1.0
抑制された機能に「Chromecast」を追加
v111.6.0
削除された機能に「データベースの整合性」「更新ボタン」を追加
抑制された機能に「Jsonp」「ID3の曲名からトラック番号を削除」「クリーンアップ」「冗長なフォルダチェック」「検索インデックス/データベーステーブルの詳細」を追加
v111.2.1
抑制された機能に「非アスキーファイル名のコピー」を追加
v111.2.0
抑制された機能に「更新ボタン」、削除された機能に「高速アクセスモード」を追加
v111.1.0
抑制された機能に「外部プレイヤー」を追加
v110.1.0
削除された機能にJava Jukebox、Sonos、SHOUTcastを追加
v110.0.0
抑制された機能に「anonymousユーザに個別のトランスコード設定」を追加、後に削除(従来の設計ではUPnPのトランスコーディングにおいてフォーマットが正しく扱えなくなるケースがいくつか存在し、そのうちのひとつを抑制するための暫定機能。根本的にUPnPが改善され不要となり削除された)
コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

設定画面・仕様
起動オプション(v111.6.0)

Jpsonicの起動オプションに関する注意点です。

設定画面・仕様
Web画面の概要(v111.0.0)

Web画面を使用したブラウジングの概要です。

設定画面・仕様
設定画面の概要 (v112.0.0)

SubsonicとJpsonicの設定方法はほぼ同じですが、画面構成が少し異なります。