2008/01/31


携帯電話でブラウズしている時に突然、はてなブックマークに登録しておきたくなったりしませんか?
はてなブックマークから画面遷移している時は、はてな専用携帯変換ページが表示されブックマークへのリンクも付けられている為「このページはてブしたい」と思った時にも簡単にはてなブックマーク出来るでしょう。
でも直接そのページを見ている時には携帯では術がありません。
私はよく
  1. 携帯でブラウズ
  2. 携帯のブックマークに登録
  3. PCでブックマーク登録
という煩わしい作業をしてたりします。
例えば、専用ページを作ってリファラを見ても画面遷移では無いので登録しようとしているブックマークURLは取得出来ません。

これを何とかしようと言うのが今日のお話。
殆どの携帯電話には、「URLでメールを送信」という機能が備わっています。
これを使い、サーバ側に登録させるのです。
ニワンゴ開発サイトに「hatebu」というコマンドを作りました。
ニワンゴ開発サイトは、簡単な形式で記述されたメールからコマンドとしてWebAPIをキック、その応答をメールで返すという機能を提供してくれています。
この「hatebu」コマンドから呼ばれるサーバ側CGIとして以下の様なphpのコードを置きました。
※phpなんか久しぶりに書いたのでかなり適当
※何故phpなのかというと、無料で使えてソケット系APIが動くサーバで見つけたのがphpしか動作しなかったから...

<?php
header('content-Type: text/plain; charset="Shift_JIS"');

# URLかどうか...(適当)
function isUrl($str) {
  return (preg_match('/^(https?)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/', $str) && $str!="");
}

# コマンドとパラメータ
$c="";
$p2="";
$subject="";

if(isset($_REQUEST['c'])){
    $c = $_REQUEST['c'];
}
if(isset($_REQUEST['p2'])){
    $p2 = $_REQUEST['p2'];
}
if(isset($_REQUEST['subject'])){
    $subject = $_REQUEST['subject'];
}
$c = mb_convert_encoding($c, "SJIS");
$pi = mb_convert_encoding($pi, "SJIS");
$subject = mb_convert_encoding($subject, "SJIS");

# コマンドのチェック
if ($c != 'hatebu|| $p2 == "" || !isUrl($p2)){
  echo "response=ERROR\n";
  echo "subject=".$c." ".$p2."\n";
  echo "body=Failed\nInvalid parameter \"$c\" \"$p2\" \"$subject\"";
  exit;
}

# AtomPubで送信
error_reporting(E_ALL);
require_once('class.atomapi.php');
require_once('class.wsse.php');

$username = 'xxxxxxxxxxxxxxxx';
$password = 'xxxxxxxxxxxxxxxx';
$endpoint = 'http://b.hatena.ne.jp/atom/post';
$auth     = 'WSSE';

$entry = new AtomEntry();

$entry->set_title('HATENA');
$entry->set_content('BOOKMARK');
$entry->set_summary($subject);
$entry->add_link($p2, 'related', '', 'text/html');
$auth_obj = new WSSE($username, $password);
$post = new AtomRequest('POST', $endpoint, $auth_obj, $entry->to_xml('POST'));
$post->exec();
if ($post->error()) {
  echo "response=ERROR\n";
  echo "subject=".$c." ".$p2."\n";
  echo "body=Failed\nInvalid parameter \"$c\" \"$p2\" \"$subject\"";
} else {
  echo "response=SUCCESS\n";
  echo "subject=".$c." ".$p2."\n";
  echo "body=Succeeded";
}
exit;
?>
この状態で、ニワンゴ開発サーバからコマンドを発行する為に
m at open dot niwango dot jp
※「at」は「@」に、「dot」は「.」に置き換えます
というアドレスへ hatebu [URL] ※[URL]はとりあえず、http/httpsのみにしました。
とうい本文のメールを送信すると、はてなの「i_am_not_mattn」というアカウントのはてなブックマークに[URL]で指定したサイトがブックマークされます。メールの題名がブックマークコメントになっています。
適当に使ってみて下さい。
※なお、ニワンゴ開発OpenAPIの仕様で私にメールアドレスがばれる事はありません。
※如何わしいサイトが登録された場合はアカウント停止します。

アプリとして言うならば「i_am_not_mattn」のアカウントだけでしか動作出来ないのが苦しい所...
まさかメール本文にパスワード書くってのも嫌だし...
専用サーバでqmailからキックさせるか、sidebar.jpでXMLRPCをキックさせるのが良いんでしょうね。
Posted at by




最近、「今何してる?」でつながり合うTwitterというサービスで遊んだりしてます。

http://twitter.com/

基本的にはチャット、しかも「垂れ流し」系のチャットで、どちらかというと「カテゴリ無し」で「オーナー無し」の掲示板とも言えます。

SNSを歌うだけあってか、friendsと呼ばれる、お気に入りユーザを互いに登録する機能もあります。

ただfriendsといっても「垂れ流し」ですから、どちらかと言うと各ユーザがラジオのパーソナリティのようで、friends登録はラジオのチャンネルを登録しているって感じです。

あくまで、その時に、あの人が、何をしているかを互いに晒し合って楽しみます。

いわば束縛の「ゆるい」、SNSと言って良いかもしれません。

最近のSNSのように日記記事1件に対して、複数のコメントやレスが繋がる形式だと、「読み逃げ」等といった、「一文にも値しない価値観」に悩まされたりしますが、Twitterの場合は「垂れ流し」ですから、書く側は「見られてなくてもいい」、見る側も「コメントなんか要らない」といった割り切りが最初から存在するんです。
前に書いた記事のコメントにレスしなきゃ新しい記事が書けない!そんな心配も要りません。

チャットだから見逃したら、そこで話題はお終いって所が、書く側も、見る側も認識出来るのです。

最近、mixi等SNSに疲れを感じる人には良い保養所になりそうな気がします。

ちなみに私はココにいます。

http://twitter.com/mattn_jp

「垂れ流し」ですから、レスもないかもしれませんけど、気軽にfriends登録して頂いても構いません。
Posted at by






そう...我々がwebなのだ
Posted at by