Tweetbotから「はてなブックマーク」へ登録する方法

Tweetbotから外部ブラウザを経由せずにそのまま「はてブ」(アプリ経由)へ追加したり、WebViewで開いてサイトを確認してから追加できるMyScripts用スクリプトを作ってみました。最近、(いまさらですが)はてなブックマークが便利だということを覚えたので、個人的にはかなりアツいスクリプトです。

Tweetbot ― 個性派Twitterクライアント (for iPhone) 2.7.3
ソーシャルネットワーキング, ライフスタイル
App Storeで詳細を見る

はてなブックマーク 2.9
ソーシャルネットワーキング, ユーティリティ
App Storeで詳細を見る

何ができるのか

TweetbotのタイムラインまたはWebViewからURLをコピーするだけで「はてなブックマーク」へ追加することができます。タイムライン上の短縮URLは展開後のURLを登録しますので、他ユーザとの共有に問題はありません。また、短縮URLを展開する際にブラックリストやマルウェアの配布サイトに指定されていないかをチェックする外部Web APIを使用しています。

MyScripts用スクリプト『Hatebu』の登録はこちら

MyScripts 2.5
仕事効率化, ユーティリティ
App Storeで詳細を見る

はてなブックマークのURLスキーム

iPhone用にはURLスキームが提供されています。ありがたいことにコールバックできますので、Tweetbotを指定しておくことで追加完了後にワンタッチでタイムラインへ戻ることが出来ます。

iPhone向けAPI – はてなブックマーク外部連携API – Hatena Developer Center

コメントを見る
hatenabookmark:/entry?url=追加するURL&title=ページタイトル&backurl=コールバック先 “&backtitle=コールバックタイトル

追加する
hatenabookmark:/entry/add?url=追加するURL&title=ページタイトル&backurl=コールバック先 “&backtitle=コールバックタイトル

スクリプトHatebuでは、コメントを見てから追加できるように「コメントを見る」側のURLスキームを採用しています。

titleはWebViewだとdocument.titleが取れないので削除しています。backurlやbacktitleはお使いのクライアントに合わせて自由に変更してください。

スクリプト「Hatebu」を使ってみる

まず、MyScriptsを起動し「Hatebu」のヨコの□にチェックしてクリップボードのバックグラウンド監視モードにします。

たとえば、Tweetbotのタイムラインから短縮URLをタップし、WebViewでサイトを表示します。

IMG_1210
IMG_1211

メニューアイコンから「URLをコピー」を選択すると、バックグラウンドでクリップボードを監視していたMyScriptsスクリプト(Hatebu)が起動して、はてなブックマークへ飛ぶためのURLスキームを生成して通知バーに表示します。

IMG_1212
IMG_1213

その通知バーをタップすると、はてなブックマークが起動します。WebViewだとページタイトル(document.title)がとれませんが、はてなブックマークに読み込ませればタイトルを取得してくれます。はてなブックマークのURLスキームのコールバックにTweetbotを設定しているので、この画面をキャンセルしてタイムラインへ戻ることが出来ます。

IMG_1214
IMG_1215

ブックマークに追加したところです。そして、Tweetbotに戻るをタップすると戻ります。一瞬、TweetbotのWebView画面へ戻った後、自動でタイムラインが左からスライドして現れてくれます。WebViewを閉じる手間がありません。なんとすばらしい!

IMG_1216
IMG_1217

URL以外がコピーされた場合の挙動

URL以外がコピーされた場合は「はてなブックマーク」へ飛ばないようにしています。たとえば、ツイートをまるごとコピーした場合です。

IMG_1218
IMG_1219

コピーした内容が、http(s)以外で始まる文字列の場合は、その旨を通知バーで通知します。

IMG_1220

短縮URLをはてなブックマークへ登録する場合

Tweetbotタイムライン上の短縮URLをそのまま「はてなブックマーク」へ登録することもできますが、その場合、他のユーザは展開URLを登録しているので、「はてな」側で違うURLと認識されるためにコメントを見たり共有することができなくなります。従って、短縮URLはブックマーク登録する前に展開しなければなりません。

「はてなブックマーク」のURLスキームで登録するだけではダメと気づき、短縮URLを展開するサービスを探した結果、外部Web APIを使うためにXMLHttpRequestやJSONが必要になりました。ついでというか、短縮URLがマルウェア配布サイトだったりする危険もありますので、展開する際に危険があるサイトの場合はWarningを出すようにしてみました。

ゲヒルン、セキュアなURL短縮/展開サービス「ux.nu」を提供開始 | ゲヒルン株式会社

URLの短縮・展開サービス「ux.nu」は、Google Safe Browsing API、ブラックリストの照合を行っているようです。

IMG_1221

Web APIのJSON出力内容を確認するアプリ

今回、いろいろと初めてチャレンジしたことがありますが、そのうちのひとつがJSON形式の出力内容を取り出す作業。何度かテストするのにこちらのアプリが非常に役に立ちました。URLとパラメーターを事前に登録して実行するシンプルな機能しかありませんが、都度スクリプトやブラウザ経由で確認する手間が省けて便利です。

JSON+ API Response Parser 1.3.2
ユーティリティ, 仕事効率化
App Storeで詳細を見る

IMG_1222
IMG_1223

スクリプト「Hatebu」のソース

正規表現やXMLHttpRequest、JSONを初めて使ってみました。プログラミングについてド素人なのでいろいろとアドバイスいただけると嬉しいです。

外部Web APIを使うのでインターネット環境がないとネットワークエラーになってしまいます。IS_ASYNCで同期処理した方がいいのかも。

バックグラウンド制限を外す方法

JailBreakするとiOSのバックグラウンドの10分制限を外すことが可能です。なお、JailBreakはメーカーのセキュアな環境を無効化する行為であり、保証対象外となりますので自己責任でお願いします

[JB]iOS 5のバックグラウンド動作10分の時間制限を取り払うDontKillBG | ひとりぶろぐ

他のTwitterクライアントやiPadでの動作

アプリ自身を起動するURLスキームがあればどのクライアントでも可能です。

Twitter公式とEchofon Proはイマイチであることを確認しています。Twitter公式クライアントは、WebViewからURLコピーがうまく反応しないのでHatebuを起動できません。EchofonではWebViewにURLコピーのメニューがないので、タイムラインからしか起動できません。

iPadでは「はてなブックマーク」アプリのURLスキームがサポートされていませんので残念ながらこのスクリプトが動きません。

Sylfeedで開いてもいいのでは?

TweetbotのWebViewで開いたサイトをもう一度Sylfeedで開くことになりますし、Sylfeedからは「はてなブックマーク」の他ユーザのコメントは見ることができません。Webクリッパーとしては断然Sylfeedなんですが悩ましいところです。

リーダー機能だけじゃない! Sylfeedの意外な使い方 あらゆるサイトでEvernoteの範囲選択クリップや投稿機能を使い倒す