日本語URLを使って140字以上のツイートをする画期的な手法と自動化ツール生成とその考察

発端

というツイートを見て安直にもこう思ったのである。
140字で収まりきらなかった時は毎回こうしたい、と

そもそもどういう仕組みなのか

早速 http://テスト.だよん/ というふうに打ってみるけど、URLになってくれない…
http://テスト.com というふうにドットの横を存在するドメイン名にすればURLになるけど上のツイートみたいにするには、とTwitterで聞いてみたみたところ…
Chromeのアドレスバーに打ち込んだ結果をコピペするとこうなるとの声が!

そこで実際に http://テスト.だよん/ とアドレスバーに打ってコピペした結果がこれ。

http://xn--zckzah.xn--g9j3d7a/

この変換について調べてみるとどうやら…Punycodeというのがあるらしい。ふむふむ…

となったら、自動で出来るよう実装するしか無い!

早速変換関数を探して実装

PHPでそういう変換関数無いのかなと探してみたところidn_to_asciiという関数があるようで…と早速使おうとするも…

Fatal error: Call to undefined function idn_to_ascii()が出てしまったorz

どうやら実行するにはpeclとさらにintl拡張モジュールが必要なようで、早速インストール。

変換できない文字たち

それで、実際に超手抜きのやっつけではあるものの実際に変換ツールを作ってみました。
ところが、これで色々試してみると、うまくいかない文字が結構出てきたりしてしまいました…
自分が思いつく範囲で実際に変換できるか際どそうな文字たちをまとめてみるとこんな感じに。

      大丈夫なもの
  • 読点(、)
  • ハイフン(-)
  • 全角の括弧(「」【】など、丸括弧など一部を除く)
  • 全角引用符(”、“、‘、’、❞、❝、’など)
  • 不等号(≧、≦に限る)
  • 全角の算術記号(×−÷など、ただし+だけダメ)
  • その他ダメなものにない全角記号は大体OKっぽい(機種依存文字でもOK、ただし絵文字はNG)
    1. 強制変換されるもの
  • 句点(。)→自動的に半角ドット(.)に変換される

  • 全角ドット(.)→自動的に半角ドット(.)に変換される

      ダメなもの
  • カンマ(,)
  • 半角引用符(’、”、’など)
  • アポストロフィ()
  • 丸括弧((),())
  • 疑問符(?、?)

  • 感嘆符(?、!)
  • アンド(&、&)
  • ジャープ(#、#)
  • 等号(=、=)
  • 不等号(>、<、>、<)
  • 半角および一部の全角算術記号(*、/、-、+、+)
  • 二点リーダー、三点リーダー(‥、…)
  • アットマーク(@、@)
  • 空白、改行
  • 絵文字
  • 確かに発端のツイートを見ると改行や記号などをきっちり省いてるようで、ちゃんと無理なものは除いてたんだなと納得。
    しかし?や!とか…はよく使ってしまうし、そのほかのアウトな記号も無意識のうちに結構使ってるものだし、改行や空白が無理だとただでさえ読みづらい長文ツイートの可読性が落ちまくるのでやっぱりつらいところ。

    こんなふうに意外と制約条件が多いので、利用者が増えれば残り文字数の目安つけたりダメなものは予め注意してあげたりなんて実装もしたいですけど、どうせ定着しなさそうな気が。(その前にTwitter側で対策されるかもしれませんしw)

    オチ

    …でも確かツイートボタンには画像を添付して他の投稿と同じくタイムラインに表示させる機能が無いんですよね。アプリを作って認証させればできるのですが、さすがにこのためだけにアプリ連携させるのはユーザーにとって敷居が高い気がしますし、うーん…

    コメントを残す

    メールアドレスが公開されることはありません。