Satena - はてなブックマーク クライアントアプリ
Android用オレオレはてブアプリの開発まとめ
Created at Updated at

3260 Words
Satena - はてなブックマーククライアント, はてブビューア

Satena - はてなブックマーククライアント, はてブビューア

すいはん無料posted withアプリーチ

だいたい2019年の8月末頃から開発を始めて、同年9月中頃よりストアで公開しているAndroidではてブやるやつ「Satena」なのだが、特にこれと言って紹介ページとか作っていなかったし、リリースノートは毎度うまくまとまらなくてしんどいし、計画的にカッチリ作っているわけでもないのでいい加減自分でも何やったか把握しきれなくなりつつあるので、ここらで記事にしておこうとか思ったのがコレというわけです。

-> (2022/01/02) 機能追加アップデートv1.10.0リリースしました


アプリ更新履歴

Satena/release_notes.txt at master · suihan74/Satena


既知の不具合,開発状況

Issues · suihan74/Satena


ソースコード

suihan74/Satena: Android用オレオレはてブビューア


動作環境

  • Android 6.0(M)以上 (minSdkVersion:23, targetSdkVersion:29)

  • スマホ想定

    タブレット向けのレイアウトはとくに用意していないが、まぁ動かないということはない。(はず)

開発環境

  • AndroidStudio 4.1

  • kotlin 1.4.21


アプリ側で実現している機能

はてなブックマークで提供されている機能の他に、Satenaの独自機能が幾つかあります。

ダークテーマ

黒い画面は好きです。真っ黒もいいです。
たまに白いのに変えても新鮮で楽しいです。

Mastodon連携

はてブで元々同時投稿できるTwitter,Facebookに加えて、Mastodonのアカウントを認証させることでそちらにも同時投稿できます。
Mastodonへの投稿は他のSNS連携とは異なり、サーバ側ではなくアプリ側で生成・投稿している都合上それに含まれるリンクははてなの短縮URLではなく対象ページのURLそのままになります。

Mastodonのアカウントも他同様1件のみ連携可能。
連合TLなどに同一投稿が複数並ぶのが嫌いなので、今後も複垢連携に対応する予定はありません。

NGワード・非表示サイト

エントリ一覧に表示しないURL(前方一致)や、NGワード(部分一致)を設定できます。
たとえば、虚構新聞の記事(ttps://kyoko-np.net/~~~.html)を非表示にしたい場合は、非表示URLに"kyoko-np.net"を追加するとエントリ一覧に表示されなくなります。例に他意はありません。

NGワードは単純に見たくない単語などを追加すればいいわけですが、各ワードに対して「エントリに適用するか」「ブコメに適用するか」を指定することができます。

アプリ内ブラウザ

WebViewで実装されたアプリ内ウェブブラウザを使用することができます。

ブクマタブ

ドロワ内でブクマリストを閲覧したり、ブコメを投稿することができます。

リソースブロック

広告リソースブロック機能を備えています。
読み込みたくないURLやドメインを指定することで対象のページや画像、スクリプトなどの読み込みを拒否することができます。

ChromeCustomTabs

WebViewを使用したブラウザの他にChromeCustomTabsを使用することもできます。
ブラウザ画面内でのブコメ閲覧機能やリソースブロックなどが使用できない代わりに、WebView版に比べ高速でより安定した動作が望めます。

ホームカテゴリの変更

好きなカテゴリを起動時に表示できます。
現在のところサブカテゴリや検索クエリなどは初期値を指定できないので、気が向いたらなんとかするかもしれません。

エントリをタップした時の挙動のカスタマイズ

「シングルタップ」「ロングタップ」「複数回タップ」時の挙動を「ブコメ一覧を開く」「ページを内部ブラウザで開く」「ページを外部ブラウザで開く」「メニューダイアログを開く」の中からユーザーが設定できます。

「ページかブコメくらいは読んでからブコメ書けや」という思想から、エントリ一覧画面から直接ブクマ投稿する機能は意図的に用意していません。
(「あとで読む」→「読んだ」の挙動設定によっては一応できる)

最近つけたスター・スターレポート

エントリ画面のカテゴリから「スター」を選択すると閲覧できます。
それぞれ「最近自分が付けたスター」「最近他人から付けられたスター」があるエントリの一覧です。

ブクマ閲覧履歴

Satena内でブクマ一覧画面を開いたエントリは直近何件か(デフォルトでは10件)は記憶され、「ブクマ閲覧履歴」カテゴリで閲覧できます。

ユーザーに対するタグ付け

ユーザータグと呼んでいる機能。
たとえば「面白」とかタグを作成して、「この人よく面白いこと言ってるな」とか思ったらそのユーザーに「面白」タグを付けます。その他色々用途はお察しください。
後述のカスタムブコメリストと組み合わせることで、ブコメリストのフィルタリングにも使えます。

設定画面では各タグが付いたユーザーの一覧を確認・編集することができます。

カスタムブコメリスト

ブコメ一覧画面のタブは、はてブ公式同様の「人気」「新着」の他に、「すべて」「カスタム」があります。

  • 「すべて」タブ

    ブコメの有無に関わらず全てのブクマを表示します。(無言ブクマも含む新着順)
    設定画面で振る舞いを変更できますが、「非表示ユーザー」や「NGワードを含むブコメ」も全て表示できます。

  • 「カスタム」タブ

    表示するユーザーをユーザータグで制御できます。
    「タグAが付いたユーザーは表示する」「タグBが付いたユーザーは表示しない」「タグが未だ付いていないユーザーは表示する」など細かく指定できます。

ブコメ詳細画面

リストの各ブコメを選択すると、そのブコメについての詳細情報を閲覧できます。
現在のところこの画面では、

  • 選択ブコメに付いたスターの一覧と、それを付けたユーザーが現在のページをブクマしている場合そのブコメを表示する

  • 選択ブコメを書いたユーザーがスターを付けた(現在のページに対する)他のブコメ一覧

  • 選択ブコメに対するIDコールが含まれるブコメ一覧

  • 選択ブコメがIDコールしている他のブコメ一覧

……が閲覧できます。

キーワードでブコメ抽出

たとえば「うんこ」とか入力するとコメント・タグに「うんこ」が含まれたものだけを抽出できます。

気が向いたら該当箇所をハイライトするようにしたい。

共有機能

ブラウザなどで閲覧しているページに対して「ブコメを書く」「Satenaでブコメ一覧を閲覧する」「ブコメページをブラウザで閲覧する(URLをブコメページのURLに変換して共有する)」機能を提供している。

ほか、色々細かめに設定可能


いつかその気になったらやりたいこと

通信部分の刷新

まだKotlinを碌に知らなかった頃、とにかくサクサクッと手癖で書いてしまった部分の最たるものであるのでえらいことになっている。

別リポジトリでちまちまと進めている。

重要度の低い警告発生個所の修正

クラッシュしたりとかは気付き次第、レポートが入り次第直しているが
それ以外のたとえば「色の組み合わせが悪くて見づらいですよ」とかそういうやつ。


既知の(放置している)問題

Google認証を使用したサインインに対応していない

所詮他所の人間が勝手に作ったものなので、この認証方式は使えないっぽい。なのでこの方法でアカウント作った人が興味持ってくれてもサインインできなくてガッカリしたりしているのかもしれないが、おれにはどうしようもないのだ。
そういえば何故今どきOAuth認証でもなくBasicで認証しているのかというと、公開されているOAuth認証対応のAPIができること少ないため。(知らないだけで色々できるのか?)

データ使用量・バッテリ使用量

実のところその辺特別気を付けて作っていない。

スター情報の取得などで若干無茶をしている関係か分からないが、ブクマ数が極端に多いページのロードで問題が起きがちという問題も見て見ぬふりしている。

See Also