忘れたらググればいい

2012年2月7日火曜日

短縮URLを使ってiPhoneアプリ (もどき) をtwitterで配布する

dataスキームへのリンクを短縮URLに渡す

dataスキームを使ってアプリの内容を記述すれば,ローカルアプリをリンクに埋め込むことができる.

iPhone のルート検索ショートカット作成アプリをCSS対応+完全ローカル化 | 忘れたらググればいい

ということは,短縮URLの転送先をURLスキームにしてしまえば文字数制限のあるtwitter上でもアプリ配布できちゃうんじゃね? ということで調べてみた.

tinyURL以外はdataスキームそのままはできない

すでに調べている人がいて,tinyURL以外の短縮URLではdataスキームが登録できなかったり, 登録できても "http://" を勝手につけてしまうようになっている.

URL 短縮サービスで data スキームを短縮する (良い子はマネしちゃダメ) - 何にしても生っかじりの朴念仁

tinyURLはそのまま転送するが,文字数制限がある

そこでtinyURLでアプリを登録してみようとしたが,長すぎて無理だった. ちなみに画像埋め込みがないver.1.0は登録できた. → http://tinyurl.com/6wdjrvc

dataスキームそのままはあきらめて,文字数制限が長い短縮URLを使う

"http://" が頭に付加されてしまうが,文字数制限が長い短縮URLとして pixiv の p.tl を使う.

そこで… 数ある短縮URLサービスの中で、POSTメソッドを使っているサービスを見つけました。 Pix◯vが運営するp.◯lです。 URLの文字数が最大約32000文字のものまで短縮できるため、小さい画像であれば1つの短縮URLで十分間に合います。

URL短縮サービスを利用したオンラインストレージ | 自称プログラマーの備忘録

URL短縮サービス[p.tl] - pixiv

p.tlでもダメだった...

アイコンに使っているpngファイルがbase64エンコードで29KBもある上に2回出ててくるので全体で89KBにもなり,さすがに入りきらなかった. しょうがないので,完全ローカル化はあきらめる. アイコンの出現を1回減らして,アプリインストール時 (ホーム画面に追加する時) だけオンラインにする,という制限を加えた.

88613文字が16文字に!

減らしたバーションで短縮してみたら,できた! http://p.tl/Wxmz

開いたリンクの "http://" を消せばアプリが表示される...のだけれど, iPhoneのSafariのロケーションバーは選択しても,どうしてもURLの末尾にしかカーソルが合わず, 先頭に持っていくのは相当時間がかかる.

ここまで来たのに一手間増える...

結局,適当なテキストエディタに一旦コピーして,"http://" を消してからもう一回コピーしてSafariで開く,しか対応が思いつかなかった. 専用bookmarkletを用意する方法もあるだろうけど,それだとtwitterでの配布には向かない. せっかくここまで行けたので,なんとかならんかなぁ.

twitterで配布 (2012/02/08 追記)

twitterでiPhoneアプリもどきを配布してみる http://t.co/3ofYDmQy | 1.URLを開く http://t.co/8Xe15CWw 2.転送先のURLから "http://" を消して開く 3.表示された画面で"ホーム画面に追加"でインストール完了.2012年2月7日 4:37 via YoruFukurou

iPhone のルート検索ショートカット作成アプリをCSS対応+完全ローカル化

以前作ったアプリもどき

以前,Data URI スキームを使って,iPhone (iOS) のマップアプリのルート検索のショートカットをホーム画面に追加するアプリを作った.

iPhoneのホーム画面にルート検索のショートカットを追加するアプリもどきを作る | 忘れたらググればいい

CSSで見た目をよくする

以前公開したやつは,素のHTMLであんまりカッコよくなかったので,適当なCSSを使って見栄えをよくする. 適当に探すと,CSSでiPhoneネイティブアプリっぽく表示させることができるframeworkとして iWebKit というのを見つけたので使うことにした.

iWebKit | SnippetSpace

完全ローカル化

せっかくData URI スキームを使うことでローカル化できるので,完全ローカル化をさせたい. したがって,すべてをHTMLの中に埋め込む必要がある.

CSSとjavascriptは問題ない

CSSは<style></style>を,javascriptは<script></script>を使えば問題ない.



画像はbase64でエンコーティング

ネット上の画像をsrcで参照にしてしまうとオフラインでは画像が表示できない. したがって埋め込むためには,base64でエンコーディングして埋め込む. CSS上でもHTML上でもbase64でエンコーティングした画像は指定できる. なお,base64エンコーティングにはbase64コマンドを利用する.

% base64 images/arrow.png
iVBORw0KGgoAAAANSUhEUgAAAAgAAAAaCAMAAAC9z+0pAAAAA3NCSVQICAjb4U/gAAAAUVBMVEX///////+AgID///+AgID///+AgID///+AgID///+AgID///+AgID///+AgID///+AgID///+AgID///+AgID///+AgID///+AgID///+AgICXHOeoAAAAGXRSTlMAEREiIjMzRERVVXd3iIiqqru7zMzd3e7utIir7QAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNAay06AAAABiSURBVAhbdYxJFoAgDEMB51kGxfb+B7WmuIRNPi8/NS7MBi8wj4CT+amTaOq5W6h0vMv/a1ZNuOnfJH56bF1okcb6ScETDYCDKNdJNPXsJVQ62r5Dkosm3PhvIuUOW+sb5AsIAQis/N2LZQAAAABJRU5ErkJggg==
%


完成

このリンクをiPhoneで開くとアプリが表示される. そのままブックマークに登録する要領でホーム画面に追加すればインストール完了. 使い方は↑の記事参照.

giftee のギフトをもらってきた

gifteeでギフトをもらた

以前参加したTwitter Tokyo Developer Teatimeのアンケートの抽選に当たってgifteeのギフトをもらった.

To: @fukubaya Tokyo Developer Teatimeのアンケートご記入ありがとうございました! giftee for you: Glorious Chain Café http://t.co/FFgnaCpZ2011年12月6日 16:32 via giftee, Inc.

gifteeとは

gifteeは相手の住所や本名を知らなくても,twitterやFacebookのアカウント,Eメールアドレスを知っていればギフトを贈れるサービス.

giftee - Send a Small Thank You.
giftee は、Twitter, Facebook, Eメールで、 日頃の「小さなありがとう」を簡単にギフトとして 送ることができるサービスです。 ...


ギフトの受け取り

twitterのmentionでもらったリンクを開くと,ギフトの内容が表示されるので, 「このギフトを受け取る」を開いて,アカウントの認証を行う (twitterの場合).

次の画面にパスコード入力画面が出るので,お店の人に聞いてパスコードを入力 (この時行った店では,慣れていないようで,店員さんが僕のケータイを持ちながら右往左往していた).

パスコードの入力し,正しく認証されれば, 受けとり可能画面が表示されるので,これを店員に見せて商品を受け取る.

無事,ギフトを受け取れた.チョコレートおいしかった.

まだ受け取り可能店舗が少ない

今回のギフトは,自分が選んで 先方 (@twj_dev) に贈ってもらうことになっていたので, 自分で選べたんだけど,何をもらうかかなり悩んだ.

ギフトの一覧を見ると分かるけど,ほとんどが都内の店舗に行かないと受け取れない. 全国展開しているようなお店が対応してくれると,もっと贈りやすくなるだろうな.今のところ無印良品が提携しているので,無印の全国展開に期待.

giftee - Send a Small Thank You.