Subway Tooter blog

Androidアプリ「Subway Tooter」の説明/宣伝用のブログ

動作環境をAndroid 8以降に変更します

Subway Tooter は 2017年4月の初リリースから動作環境を「Android 5以降の端末」としていました。
今回、2022年8月に動作環境を「Android 8以降の端末」に変更します。

end of support devices lower than Android 8.0 · Discussion #192 · tateisu/SubwayTooter · GitHub

Subway Tooter 5.0.0 は Android 5.0~7.xで動作する最後のバージョンです。
リリースページからAPKをダウンロード可能です。
Release version 5.0.0 · tateisu/SubwayTooter · GitHub

About deletion warning from Play store

Overview of Mastodon

Mastodon is the product name for federated micro-blogging. Like the web and email, there are thousands of servers around the world. The servers have different policies and are loosely federated throughout. Each servers and users are free to block other servers and users.

Overview of Subway Tooter

Subway Tooter is a client application that uses the Mastodon API. This app can access any server that have enough compatible with the Mastodon API. Please note that Subway Tooter does not provide the server that he is connecting to.


Email from Google

Not only Subway Tooter , but Fedilab, Husky, MastoPane have received similar deletion warnings.

※ this is mechanical translation. The original email was written in Japanese.

From: Google Play Support
Date: 2020/08/27 20:13 (JST)

tateisu developers over Dear
always as you will find, thank you. The results of the examination of this time, your app Subway Tooter (package name jp.juggler.subwaytooter) is one or more of the developers we find that does not comply with the over program policy. Please correct this issue within 7 days of the publication of this notice. If you don't fix it, your app will be removed from Google Play .

Reasons of violation Policy regarding
user-created content ( UGC )
Race, ethnicity, religion, disability, age, nationality, military experience, sexual orientation , gender, gender identity, and other characteristics linked to organizational racial discrimination and alienation No app is allowed to promote violence or incite discrimination against individuals or groups based on.

Action Required: Follow these steps to keep your app published on
Google Play, which will send you the updated app within 7 days .
1. Review policy details for user-generated content
2. Make sure your app was fixed to address the issues above (and if applicable, also check that your app's store listing is in compliance)
3. app all the other developers again make sure that you are compliant with the over program policy
Log in to 4. Play Console, send the app updates

Contacting Support If
you have reviewed the policy and believe that our decision is incorrect, please contact the Policy Support team on Google Play . A representative will contact you within 2 business days.

Developers to over and users of everybody Google Play the cooperation in efforts to comfortably use the, Thank you.
Excuse me, but please answer the two questions in this survey. Your answers will be useful for future improvements.
Google Play Team

Google Play Store Policy

It pointed out the matters is hate speech section in https://support.google.com/googleplay/android-developer/answer/9878810

We don't allow apps that promote violence, or incite hatred against individuals or groups based on race or ethnic origin, religion, disability, age, nationality, veteran status, sexual orientation, gender, gender identity, or any other characteristic that is associated with systemic discrimination or marginalization.

Apps which contain EDSA (Educational, Documentary, Scientific, or Artistic) content related to Nazis may be blocked in certain countries, in accordance with local laws and regulations.

Also, in https://support.google.com/googleplay/android-developer/answer/9876937 , it says:

Apps whose primary purpose is featuring objectionable UGC will be removed from Google Play. Similarly, apps that end up being used primarily for hosting objectionable UGC, or that develop a reputation among users of being a place where such content thrives, will also be removed from Google Play.

What is actually required

Not all apps have been warned this time. Tusky is. Tusky has login block for some servers.
https://github.com/tuskyapp/Tusky/blob/7a435bd288eee7d3c851b40d679c32e0873bf991/app/src/main/res/values/donottranslate.xml#L138

※ I don't know this annotation helps Google's honor, but Google has never explicitly required to ban these servers.

Multiple apps that have different UI are being warned at the same time.
I think the problem they fell is the apps can connect to a specific server, rather than the UI such as the displaying of terms.

What is the problematic servers?

There is an article about servers that Tusky does not allow to connect.
www.theverge.com


Impression

Subway Tooter does not Host / Promote any content. only access to the servers that user specified. This is similar to the using web browser and enter server address to the address bar.

(Technical detail: A built-in server list exists but it is used only for input completion. it has been filtered and not include the above servers. Of course the user can specify a server not in the list.)

Although probably Google 's policy assumes that apps and services are managed by the same organization, but there are many apps that can access servers of different organization.

The most famous example is the Chrome web browser that provided by Google himself.


When a client app connects to a server that can be viewed by Chrome, it is strangely judged as a policy violation.

  • Web browser that can access servers of different organization.
  • Mastodon client that can access servers of different organization.

Neither app is host/promote to specific content at all, but Google 's review that content responsibility only lies with the latter, is not compelling.

Moreover, the existence of Web browsers is not small even in the federated SNS servers usage trend. Generally speaking for federated SNS servers, web UI usage is overwhelmingly higher than the sum of all client apps. Recent web apps are well made and you don't need a client app in single account case. So the transition from Web UI to client apps is not active. Unlike proprietary SNS, there are almost no advertisements that promote the transition to apps.

If Google really wants to reduce access to a specific servers, I think the Chrome web browser should does restriction at the first. Users will just use other browsers, but at least Google 's can have consistent in his claims.

I understand Google's desire to shut out hate speech servers. but instead of pressing the change by unclear policy violation, Google should take the initiative to maintain the publicly discussed server ban list, confront with public opinion, and enforce it to Chrome web browser. These are not things the app author should do. Especially maintaining the ban list is difficult for non-western residents.

I write this line because some people don't understand unless I say, this is ironic. but these are possible future.


Should the Subway Tooter app have a server ban list?

Should the open source client app for generic servers have server ban list?
The idea has the following problem:

The users of federated SNS don't need it.

Servers and users already have enough moderation capabilities. It's common thing that a server / user blocks other servers who have problematic contents.
※ Federated SNS is NOT a lawless zone. Only each servers has different policy.

It's not effective as expected.

Anyone who wants to connect to specific server can just use a web browser or fork this app to remove the blocking feature.

There is a difficulty in managing ban list.
  • This app does not user-tracking.
  • The author is a non-Western resident and does not connect to servers around the world.

I don't think I can maintain the server list well.

At least someone should provide a publicly discussed server ban list.

Not suitable as a part of the decentralization.

Quote the opinion from Mastodon's author.
mastodon.social


About future distribution

For the above reasons, Subway Tooter does not add the server ban list. I sent objection to Google. If it is not accepted, The app will be removed from the Play Store.

Even if the app is deleted from the Play Store, Android is still open and we can continue distributing the app.

Installation method A
  • Install the F-Droid store application on the device.
  • Add IzzyOnDroid repository to F-Droid app.
  • Search Subway Tooter on F-Droid app.

f-droid.org
apt.izzysoft.de
apt.izzysoft.de

Installation method B
  • Open releases page in Subway Tooter 's Github repository.
  • Find APK file in Assets section,
  • open APK file on the device.

github.com

Since the function and signature of the application are the same, even those who have already installed it in the Play Store can update it using method A or B.


Overseas reaction

It seems that Hacker News got some attention.
news.ycombinator.com
qoto.org

Comments from Mastodon's author.
mastodon.social

Article in Private Internet Access.
www.privateinternetaccess.com

Article in Engadget.
www.engadget.com

in Japan, since the Play store has a large share, the comments are biased to "that apps will be deleted from the store bevause that violate the rules".


Reply to comments in Hatena Bookmark

Hatena Bookmark is s social bookmarking service on japan.
https://b.hatena.ne.jp/entry/subwaytooter.hatenadiary.jp/entry/2020/08/29/113948

I think he want to deliver it to the store even if he protest

It's quite natural to protest that I received an unfair warning from the store that I used to.

If you delete the problem URL from the application, it will pass the examination.

That's not included from at the beginning.
Rather, I have received unfair warning because not including ban list.

If it is a Gab block, it is appropriate as a judgment of Play Store

I understand Google's desire to shut out hate speech servers.
If so harmful, why not even block on Chrome ?


Past case

There is a case the general podcast client application called Podcast Addict was banned from the Play store,
after then BAN was withdrawn because that have many reactions.

9to5google.com

Playストアからの削除警告について

Subway Tooterの概要

Subway Tooter は分散マイクロブログサービスであるMastodonAPIを利用するクライアントアプリケーションです。
このアプリはMastodon APIと十分な互換性のある任意のサーバにアクセスできます。接続先のサーバを運営しているのはSubway Tooterではないことに注意してください。

Mastodonの概要

Mastodonは分散マイクロブログの製品名です。Webやメールと同様に、世界中に何千ものサーバが存在します。それらのサーバはそれぞれ異なるポリシーを持ち、全体が緩く連合しています。サーバやユーザは他のサーバやユーザを自由にブロックできます。

Googleからのメール

Subway Tooter だけでなく、Fedilab, Husky, MastoPane なども同様の削除警告を受け取っています。

From: Google Play Support
日付: 2020/08/27 20:13 (JST)

tateisu デベロッパー各位
いつもご利用いただき、ありがとうございます。このたびの審査の結果、お客様のアプリ Subway Tooter(パッケージ名 jp.juggler.subwaytooter)は 1 つ以上のデベロッパー プログラム ポリシーに準拠していないことが判明いたしました。この問題につきましては、こちらの通知の発行より 7 日以内に修正してくださいますようお願いいたします。修正していただけなかった場合、お客様のアプリは Google Play から削除されます。

Reasons of violation
ユーザー作成コンテンツ(UGC)に関するポリシーについて
人種、民族、宗教、障害、年齢、国籍、従軍経験、性的指向、性別、性同一性など、組織的な人種差別や疎外に結び付く特性に基づいて個人もしくは集団に対する暴力を助長、または差別を扇動するアプリは認められません。

要対応: 更新したアプリを 7 日以内に送信する
Google Play でアプリの公開を続けるための手順は以下のとおりです。
1. ユーザー作成コンテンツ に関するポリシーの詳細を確認
2. アプリを修正し、上記の問題に対処したことを確認(該当する場合は、アプリのストアの掲載情報が準拠しているかどうかも確認)
3. アプリが他のすべてのデベロッパー プログラム ポリシーに準拠していることを再度確認
4. Play Console にログインし、アプリのアップデートを送信

サポートへのお問い合わせ
該当のポリシーをご確認いただき、弊社の今回の判断が誤りだと思われる場合には、お手数をおかけいたしますが、Google Play のポリシー サポートチームまでお問い合わせください。担当者が 2 営業日以内にご連絡いたします。

デベロッパーとユーザーの皆様に Google Play を快適にご利用いただくための取り組みにご協力いただき、ありがとうございます。
恐れ入りますが、こちらのアンケートの 2 つの質問にご回答をお願いいたします。いただいた回答は今後の改善に役立てさせていただきます。
Google Play チーム

Google Play ストアのポリシー

指摘された事項は https://support.google.com/googleplay/android-developer/answer/9878810ヘイトスピーチに関するものです。

人種、民族、宗教、障害、年齢、国籍、従軍経験、性的指向、性別、性同一性など、組織的な人種差別や疎外に結び付く特性に基づいて個人もしくは集団に対する暴力を助長、または差別を扇動するアプリは認められません。

また、https://support.google.com/googleplay/android-developer/answer/9876937 では次のように記載されています。

不適切な UGC を掲載することを主な目的とするアプリは、Google Play から削除されます。同様に、主に不適切な UGC をホストするために使用されているアプリや、そうしたコンテンツが横行しているという評判がユーザーの間で広まっているアプリも、Google Play から削除されます。

実際に求められていること

今回警告が出されてないアプリもあります。Tuskyがそうです。Tuskyはいくつかのサーバへの接続ができないようになっています。
https://github.com/tuskyapp/Tusky/blob/7a435bd288eee7d3c851b40d679c32e0873bf991/app/src/main/res/values/donottranslate.xml#L138

※ この注釈がGoogleの名誉になるのか分かりませんが、Googleがこれらのサイトのbanを明示的に要求したことはありません。

UIの異なる複数のアプリが同時期に警告を受けています。彼らが問題に感じているのは規約表示などのUIではなく、特定サーバに接続可能なことでしょう。

問題のあるサーバとは

Tuskyが接続を許可しないサーバ群に関する記事を紹介します。
blog.crazynewworld.net

感想

Subway Tooter は問題のあるコンテンツを Host / Promote していません。アプリはユーザが入力したサーバにアクセスするだけです。これはWebブラウザでサイトを閲覧するのとほぼ同等です。

(技術的な詳細:組み込みのサーバリストは存在しますが入力補完だけに使われます。それはある程度フィルタ済みで、上記のサーバを含みません。もちろんユーザはリストにないサーバを指定することができます。)

Googleのポリシーはおそらくアプリとサービスが同じ組織によって管理されていることを前提にしていますが、現実世界にはそうではないアプリが沢山あります。

最も有名な例はGoogle自身が提供しているChrome ウェブブラウザでしょう。

Chromeで閲覧可能なサーバにクライアントアプリが接続すると、不思議なことにポリシー違反だと審査されるのです。

  • 不特定多数のサーバにアクセス可能なWebブラウザ
  • 不特定多数のサーバにアクセス可能なMastodonクライアント

どちらのアプリも特定コンテンツへの誘導は全く行っていないのに、コンテンツに関する責任が後者にだけ発生するというGoogleの審査には説得力がありません。

また、分散SNSサーバの利用傾向においてもWebブラウザの存在は小さくありません。
分散SNSのサーバで一般的に言えますが、Web UI の利用率はクライアントアプリすべての合計より圧倒的に高いです。最近のWebアプリは出来が良く、単一アカウントで使うならクライアントアプリなど不要です。よってWeb UIからクライアントアプリへの移行はそれほど活発ではありません。プロプラなSNSと違って、アプリへの移行を促す広告などはほぼ存在しません。

もしGoogleが本当に特定のサーバへのアクセスを減らしたいのなら、まずChromeウェブブラウザで規制を行うべきだと思います。
利用者は他のブラウザを使うだけですが、少なくともGoogleの主張に一貫性が出ます。

ヘイトスピーチサーバーを遮断したいというGoogleの要望を理解しています。
しかし不明確なポリシー違反によって変更を押し付けるのではなく、Googleが率先してサーバー禁止リストを維持し、世論に立ち向かい、それをChrome Webブラウザーに適用するべきです。
これらはアプリ作者がすべきことではありません。
特に禁止リストを維持することは非英語圏の住人には困難です。

I understand Google's desire to shut out hate speech servers. but instead of pressing the change by unclear policy violation, Google should take the initiative to maintain the server ban list, confront with public opinion, and enforce it to Chrome web browser. These are not things the app author should do. Especially maintaining the ban list is difficult for non-western residents.

言わないと分からない人がいるから書きますが、これは皮肉ですよ。現実になりそうな気配もありますが。

Subway Tooter の対応

オープンソースで汎用のクライアントアプリがわざわざサーバをモデレートするというアイデアには以下の問題があります。

ユーザはそれを必要としていません。

サーバやユーザは既に十分なモデレーション機能を持っています。問題のあるコンテンツの多いサーバをブロックしているサーバは珍しくありません。
分散SNSは決して無法地帯ではありません。サーバごとにポリシーが異なるだけです。

Googleが期待するような効果もありません。

特定のサーバに接続したい人はブラウザを使うだけでよいし、このアプリをフォークしてブロック機能を削除することもできます。

モデレーション対象の選別に困難があります。

このアプリはユーザトラッキングを行っていません。作者は非英語圏の住人です。サーバリストをうまく保守できるとは思えません。

非中央集権化を目指すサービスの一部としてふさわしくありません。

Mastodonの作者の意見を引用します。
mastodon.social

これは非現実的な考えです。 リリース/レビュープロセスの背後にいるときにフェデバースの変化に追いつくのが難しいだけでなく、信頼性の点で単一障害点が発生します。 Googleは、他に間違いがあったとしても、あなたが個人的にはそれに値するとは思わないコンテンツをブロックするようアプリ開発者に簡単に圧力をかけることができます。

今後の配布について

上記の理由から、Subway Tooterは禁止サーバリストを追加しません。
Googleには異議申し立てを行います。それが受諾されなければPlayストアから削除されるのでしょう。

Playストアから削除された場合でも、Androidはオープンなのでアプリの配布自体は継続可能です。

インストール方法A

端末に F-Droidストアアプリをインストールした後に、IzzyOnDroidリポジトリを追加することで Subway Tooterを利用できます。
f-droid.org
apt.izzysoft.de
apt.izzysoft.de

インストール方法B

Subway TooterGithubリポジトリの Releases ページ の Assets にあるAPKファイルを使ってインストール/更新ができます。
github.com

アプリの機能も署名も同じものなので、既にPlayストアでインストールした人もAやBの方法でアップデート可能です。

海外の反応

Hacker News でそれなりに注目されたようです。
news.ycombinator.com
qoto.org

Mastodonの作者によるコメント。
mastodon.social

Private Internet Access の記事。
www.privateinternetaccess.com

Engadgetの記事。
www.engadget.com

日本はPlayストア依存率が高いので「規約違反のアプリがストアから削除される」という受け取り方が多いですね。

ブクマコメントへのレス

著しく価値がないから抗議してもストアに配信したいんだと思う

今まで配信していたストアから不当な警告を受けたのですから、抗議するのはごく当然の行動では。

アプリから問題URLを消せば審査通るんじゃ

そんなものは最初から含まれていません。むしろ禁止リストを含まない故に不当な警告を受けています。

GabのブロックならPlayストアの判断として妥当

そんなに有害なのであれば、なぜChromeでもブロックしないのですか?

過去の事例

Podcast Addict という汎用PodcastクライアントアプリがPlayストアからBANされた後に、反響が大きかったのでBANが撤回された事例があります。
9to5google.com

Clover という 4chan 専用クライアントアプリはPlayストアから2回BANされて、それきりです。ただしこれは特定のサーバと強く結びついたアプリです。「不特定多数のサーバに接続する汎用クライアント」ではありません。
https://chandevel.github.io/Clover/gp_unavailable.txt

2.1.7から2.3.9までの新機能。

  • (2.1.7から)ホームカラムの設定に「通常トゥートを表示しない」を追加
  • (2.2.2から)添付メディアのサムネイル表示のフォーカスポイント対応
  • (2.2.3から)(マストドン2.3以降)インスタンス情報カラムに言語と連絡先アカウントを表示する
  • (2.2.4から)アプリ設定に「投稿/添付メディアのURLを本文に記載する」を追加。タンスが2.3未満ならONにしてください
  • (2.2.6から)「Fav/BT非通知ユーザ」の設定を追加。通知が多すぎて困るけどフォローは外したくない場合に使えます
  • (2.3.0から)アプリ設定に「添付メディア/サムネイルを縦に並べる」を追加
  • (2.3.2から)ハッシュタグカラムの設定に「インスタンス内のみ」を追加
  • (2.3.3から)アプリ設定に「アクセストークンをアプリサーバに送信する」を追加。プッシュ通知のためにこれまで無条件で送っていたのをオプトイン方式に変更しました。
  • (2.3.5から)アプリ設定に「Pull通知の確認間隔」を追加。(遅い方に)カスタマイズできるようにした
  • (2.3.6から)お気に入りする時に確認ダイアログを表示する
  • (2.3.9から)カラム種別に「ダイレクトメッセージ」を追加。最新のインスタンスでないと動作しません

ほか細かいバグ修正を色々と行っています

1.8.7から2.1.6までの新機能。単語の強調表示。カラムの重複を許容する設定。

1.8.7から2.1.6までの新機能

  • 1.9.4 内蔵メディアビューアと簡略表示の設定をデフォルトONにした
  • 1.9.7 サイドメニューに「強調表示する単語」を追加
  • 1.9.8 カラム設定に「強調表示あり」を追加。「添付データあり」とOR動作します
  • 2.0.1 投稿画面に絵文字ピッカーを開くボタンを追加
  • 2.0.4 編集中の絵文字も画像で表示する
  • 2.1.6 アプリ設定に「挙動/カラムの重複を許容」を追加。同種のカラムを複数置けます。

単語の強調表示

Subway Tooter 1.9.7から、サイドメニューに「強調表示する単語」が追加されました。登録した単語がトゥート内に出現した時に単語部分の色を変えたり音を出したりできます。

※ 音が出るのはSTのメイン画面表示中にストリーミングAPI経由で受信したトゥートに単語が含まれていた時だけです。バックグラウンド状態や子画面を開いている間はストリーミング受信しないので音は出ません。

カラムの重複を許容する設定

サイドメニューからカラムを指定して開く時、デフォルトでは同アカウントの同種のカラムが既に存在するならそのカラムに移動するようになっていました。
Subway Tooter 2.1.6 から追加された「アプリ設定/挙動/カラムの重複を許容」をONにすると、同アカウントの同種のカラムが既に存在する場合でも新しくカラムを追加することができます。たとえば複数の通知カラムに異なる種類の通知を表示したり、ローカルTLとは別にメディアTLのカラムを表示したりすることができます。

※ この設定項目はカラムを追加する時だけ参照されます。必要なカラムを追加して保護し終わったらOFFにしても構いません。

内部実装の変更

新機能ではありませんが、以下の様な実装変更を行いました。

ソースコードJavaからKotlinに移行

Subway Tooter 1.9.9 から、ソースコード中1ファイルを除いた残り全てをJavaからKotlinに移行しました。JavaよりKotlinの方がコードをより安全により簡潔に記述でき、生産性の向上が見込めます。パフォーマンス低下は特にありません。

移行中にいくつかの潜在的バグが見つかり、それらは全て修正されました。

APNGデコーダーを書き起こした

Subway Tooter 2.1.3 から、アニメーションするカスタム絵文字への対応が改善されました。フルスクラッチから書き起こされた新しいAPNGデコーダーはインデックスカラーインターレースに対応しています。

1.8.3から1.8.6までの新機能。tootsearch対応。内蔵メディアビューア。

1.8.3から1.8.6までの新機能

1.8.6 (試験実装)アプリ設定/添付メディアに「内蔵メディアビューアを使う」を追加
1.8.4 サイドメニュー/トゥート検索 に tootsearch を追加
1.8.3 アプリ設定に「添付メディアの最大バイト数」を追加

tootsearch対応

Subway Tooter のトゥート検索はマストドン検索ポータルさんのAPIを利用させて頂いていたのですが、マストドン2.0のインスタンスに対応していない?ようで困っていました。何が困るってアプリ名で検索して要望や不具合を収集するのがつらかった。
tootsearch からAPI利用の許可をもらえたので、Subway Tooter 1.8.4 からトゥート検索カラムの種類を増やしました。ありがたや…

内蔵メディアビューア

他のクライアントだと割と普通にあった、内蔵メディアビューアをついにSubway Tooter でも導入しました。

  • デフォルトでは無効です。「アプリ設定/添付メディア/内蔵メディアビューアを使う」から有効にできます。
  • 静止画の場合はピンチ操作でズーム、左右フリックで前後の画像に移動
  • GIFV(音声無し動画)の場合はGIFVの自動ループ。(前後のデータに移動するのは画面下の矢印ボタン)
  • DownloadManagerを使ったダウンロード
  • URLをブラウザで開いたり共有したりクリップボードにコピーしたり

とまあやりたいことは大体できる感じになっています。

f:id:tateisu:20171222120323j:plainf:id:tateisu:20171222120331j:plainf:id:tateisu:20171222120340j:plain

1.5.6から1.8.2までの新機能。リスト機能

しばらくblog更新をサボってましたがアプリの方はそれなりに更新していました。
マストドン本体の新機能への対応を粛々と行っています。Subway Tooter 独自の新機能はとくにありません。

以下は新機能のリストです。

1.5.6 カスタム絵文字の表示
1.5.7 カスタム絵文字のAPNGアニメーション
1.6.0 絵文字データをiamcal/emoji-data と twitter/twemoji 由来のものに変更
1.6.1 絵文字とカスタム絵文字の入力補完
1.6.1 アカウント設定に「サーバタイムアウトを通知しない」を追加
1.6.4 絵文字ピッカー
1.6.6 某タンスのプロフィール絵文字の表示
1.6.7 アプリ設定に「カスタム絵文字をアニメーションしない」を追加
1.6.7 会話ビューでoEmbedのカードを表示する
1.6.9 アプリ設定に「絵文字コードの手前に空白以外の文字があっても変換する」を追加
1.7.0 添付メディアに説明文を指定できます。指定した説明文はTL中に表示されます。
1.7.5 ユーザのmoreメニューに「ユーザからのブーストをホームに表示しない」を追加
1.7.6 サイドメニューに「リスト」を追加。新しいカラム:リスト一覧、リストTL、リストユーザ
1.7.8 ミュート操作時に「通知もミュート」するか選べる
1.7.9 引っ越しされたアカウントのプロフ表示とフォローボタンの挙動を変更
1.8.1 ユーザをリストに登録する際に、他のリストに登録済かどうか分かるようにした
1.8.2 疑似アカウントでも公開TLのストリーミング受信を行う

リスト機能

マストドン2.1からリスト機能が追加されました。
フォローユーザの一部をリストに登録して、そのユーザのみのタイムラインを表示する機能です。
(Twitterと違って)マストドンではリストに追加できるのはフォロー済のユーザだけです。

公式WebUIのリスト追加操作は少し不便さが目立ちます。

  • 未フォローのユーザを直接リストに追加する動線がない
  • いちいち検索しないといけない
  • あるユーザが複数あるリストのどれに登録済か分からない

そこでSubway Tooter では公式Webとは異なるリスト管理UIを用意しました。
(ただしSubway Tooter 1.8.1以降とマストドン2.1.0rc4以降のインスタンスの組み合わせでないと機能しません)

任意のユーザのコンテキストメニューから「リストに追加/削除…」からダイアログを開くと、対象ユーザのリスト登録状況がひと目で分かるように表示されます。

f:id:tateisu:20171214091547j:plain

Subway Tooter では「フォローしてリストに追加」を簡単に行えるようにしています。
まだユーザをフォローしていないことを示すエラーがリストAPIから返ってきた際に、STは「フォローしてリストに追加」を提案します。
フォロー処理がサーバ側で進行中の間はこの処理は失敗しますが、簡単に手動でリトライできます。

f:id:tateisu:20171214091559j:plain

1.0.9から1.5.5までの新機能。自動CW。

しばらくblog更新をサボってましたがアプリの方はそれなりに更新していました。

以下は新機能のリストです。

1.0.9 (読み上げエンジンが対応しているなら)トゥートごとに音声をランダムに変更する
1.1.0 通知を個別に削除できる。会話ミュート。
1.1.1 アカウントのアクセストークンを手動入力できる。
1.1.2 名前を引用。
1.1.3 通知のカラム設定に(ブースト/お気に入り/フォロー)を表示しない設定を追加
1.1.4 カラム設定でAcctと本文の文字色を変更できる。GIFアニメを表示する設定。
1.1.8 メンションのインスタンス名部分を省略しない設定。
1.1.9 トゥートの公開範囲をTL中に表示する。プロフィール編集
1.2.1 インスタンス情報。相対時刻表示。
1.2.3 トゥートにNSFWが指定されていたかどうか開閉状態に関わらず分かるアイコンの表示。Android Oの通知スタイル設定に対応。
1.2.4 某タンスのアンケートに投票できる。
1.2.6 某タンスのアンケートを作成できる。
1.2.7 簡易投稿バーでも改行できる設定。
1.2.8 自動的に長文を隠す設定。
1.3.2 タイムラインのフォント(太字部分)を設定可能。
1.3.3 マストドン1.6の固定トゥートに対応。
1.3.7 TL中のアバターアイコン表示のサイズ変更。ローカルユーザのAcctのインスタンス部分を表示しない設定。
1.4.2 プル通知のチェックでタイムアウトが出たら死んだタンスかもしれないので警告を表示する。
1.4.3 トゥート中のハッシュタグをタップした時に引用できる。
1.4.4 某タンスには対応しないことにしました。
1.4.5 マルチウィンドウで非アクティブ状態でもストリーム受信を継続するようにした。
1.4.9 投稿の公開範囲の指定に「Webアプリの設定に追従する」を追加。インスタンス情報のカラムにユーザ数などの指標を表示する。通知カラムじゃなくても自分のトゥートなら「会話をミュート」できる。
1.5.0 添付メディアの送信前にMIMEタイプを検証する。
1.5.1 「別アカウントでお気に入り/ブースト/返信/フォロー/プロフ/メッセージ」のアカウント選択ダイアログで同タンスのアカウントを先頭に表示する。
1.5.5 インスタンス情報カラムにインスタンスのサムネイルを表示する(マストドン1.6.1以降)。

自動CW

中でも実装してみて良かったと思うのは、1.2.8以降で追加された「自動的に長文を隠す」設定です。
TLに急に長文が出るとスクロールするだけで大変ですが、自動CWを有効にすると適当に端折って表示します。これが思った以上に快適でした。

あと実装時の副次的な効用で、CWを開閉した時にテキストが全部表示されないことがあるバグがほぼ消滅しました。

(v1.0.8)URLの引用、ニコる対応

Subway Tooter 1.0.8 をリリースしました。

URLの引用

  • コンテキストメニューに「URLの引用」を追加しました。トゥートやアカウントのURLを引用した投稿を作成できます。

ニコる対応

インスタンスのカスタム絵文字とお気に入りボタンに対応しました。
ただし絵文字は回転しませんし、お気に入りのテキスト表記は「お気に入り」のままです。

(v1.0.6) ユーザ別通知音

「…」メニューから「通称と色と通知音」で通知音を指定すると、そのユーザから発生した通知イベントの音が変わります。 大事な相手や面倒そうな相手には特別な通知音を設定すると便利かもしれません。


お手持ちのmp3やoggファイルなどを通知音に指定したい場合は既存の通知音カスタマイズアプリをご利用ください。
(例) 着メロメーカー https://play.google.com/store/apps/details?id=com.herman.ringtone

(v1.0.2) 簡易投稿バー

Subway Tooter 1.0.2 をリリースしました。

簡易投稿バー


アプリ設定に「投稿/簡易投稿バーを表示」を追加しました。
有効にするとメイン画面でTLを見ながら投稿文を入力できます。
18:9端末などでご利用ください。

Everything is column

Subway Tooter では「サーバから情報を取得して表示する」全てのビューをカラムとして扱います。
ホームやTLはもちろん、ユーザプロフィールも会話ビューも検索もハッシュタグTLもミュートユーザ一覧もフォローリクエスト一覧もカラムです。

カラムは複数追加できて自由に並べ替えできて、好きなタイミングで他のカラムに切り替えられます。明示的に閉じるまではアプリを再起動しても残っています。

WebブラウザのタブやEmacsのバッファと同じくらい一貫した操作性と利便性を提供します。 Everything is column.

別アカウント操作

タイムラインを見てて「あ、これ別のアカウントでファボりたい」と思ったことはありませんか?

Subway Tooter は「別アカウント操作」を積極的にサポートしています。
「マルチアカウント対応」を謳うクライアントなら当然できて然るべきことです。

トゥートに対する別アカウント操作
  • 別アカウントでお気に入り
  • 別アカウントでブースト
  • 別アカウントで返信
  • 別アカウントで会話ビューを開く
  • 疑似アカウントで会話ビューを開く。(1.2.2から)
ユーザに対する別アカウント操作
  • 別アカウントでフォロー
  • 別アカウントでメッセージを送る
  • 別アカウントでプロフを開く
制約によりできないこと
  • 疑似アカウントでプロフを開く。ユーザアカウントの取得やユーザによるトゥート一覧の取得のAPIにはアクセストークンが必要になるため、疑似アカウントではプロフを開けません。

もし何か他にも便利そうな操作を思いついたら教えてください。可能なら実装します。

タイムラインのフィルタ

Subway Tooter はタイムライン表示をカラム設定でフィルタすることができます。

「添付データあり」

この項目をONにすると添付データのあるトゥートだけがタイムラインに表示されます。
インスタンスの「メディアタイムライン」とほぼ同じことを、どのインスタンスでも実現可能です。
ただし動作は結構重いです。

「ブーストを表示しない」「返信を表示しない」

ホームTLではブーストや返信の非表示設定が可能です。

「すべての画像を隠す」

添付メディアのサムネイルをNSFWと同じ状態にします。
ただし既に開閉したサムネイルには効果がありません。最後に開閉した時の状態を覚えています。

正規表現フィルタ

指定した正規表現にマッチしたトゥートを非表示にします。

正規表現のサンプルは #正規表現フィルタ などのハッシュタグを参考にするとよいでしょう。

Subway Tooter グッズの紹介

Subway Tooter のグッズを BOOTH で販売中です。

  • Subway Tooter マスキングテープ 25mm幅 \1650円+送料 (オンデマンド生産)
  • Subway Tooter マスキングテープ 15mm幅 \1250円+送料 (オンデマンド生産)
  • Subway Tooter ステッカー 16cm \260円+送料 (在庫50)
  • Subway Tooter ステッカー 10cm \180円+送料 (在庫45)

↓10cmと16cmのステッカー。

↓16cmステッカーはかなり大きいです。

↓マスキングテープ。