Subway Tooter blog

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

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ステッカーはかなり大きいです。

↓マスキングテープ。

(v1.0.0) 重複チェックヘッダを付与しない / バグ修正

Subway Tooter v1.0.0 をリリースしました。

正式版?

このアプリの場合は 1.0.0 といっても正式版とかメジャーアップデートとかそういうセマンティックバージョン的な意味合いは全くなく、単に100回目のリリースってだけです。

  • versionCode=100
  • versionName="1.0.0"

つまり versionCode をドットで区切っただけだった!

100回リリース達成!

これがゲームならなんか実績解除されて強くなりそうですが、現実にはそんなことは特にありませんでした。

重複チェックヘッダを付与しない

Subway Tooter はデフォルトで投稿時に「Idempotency-Key」ヘッダを付与して同一内容の連投を防止するようになっています。回線状態や操作ミスなどでの連投を防止するのが主な目的です。

重複チェックヘッダを付与しない」を有効にするとこのヘッダを付与しなくなります。連投がしたい人には嬉しいかもですね。

バグ修正

v0.9.9 で追加されたフォントサイズ設定を行うと、簡略表示でタイムラインが表示されなくなるバグを修正しました。

(v0.9.9)通知音の選択 / フォントサイズの調整

Subway Tooter v0.9.9 をリリースしました。

通知音の選択

アカウント設定で通知音を選択可能です。

お手持ちのmp3やoggファイルなどを通知音に指定したい場合は既存の通知音カスタマイズアプリをご利用ください。

(例) 着メロメーカー https://play.google.com/store/apps/details?id=com.herman.ringtone

フォントサイズの調整

アプリ設定でタイムラインのフォントと Acct/時刻のフォントのサイズを調整可能です。
数値の単位はsp(scale-independent pixel)です。 sp と実際のピクセル数の関係は、端末設定の「文字の大きさ」の影響を受けます。
空欄にするとデフォルトの大きさ(14とか12とか)に戻ります。

選択してコピー

Subway Tooter はトゥートのテキスト等を「選択してコピー」画面から扱うことができます。

わざわざ別画面にしている理由は「メタデータをまとめてコピー/共有できるから」です。
トゥートのURL、時刻、投稿者のAcctやdisplay_nameなど、本文以外の情報も含まれるので、メモアプリへのスクラップ保存などに適しています。

選択されたテキストに対して行える操作は

です。