メッセージングを考える

自分がインターネットを使い始めたのは1997年あたりからだ。幸運にも、父がパソコン関係の仕事をしており、PC9801時代からパソコンが家にあった。薄っぺらい5インチフロッピーのことを覚えてる人はもう少ないだろう。いや、いまとなってはフロッピー自体知らない人も増えてきてるはずだ。そのうちCDも忘れられていくのだろう。USBメモリも。そしてすべてクラウドへ。

なんて脱線から入ってきたが、メッセージングの歴史を語るには知識が少なすぎるので、自分がネットを使い始めてからのところから考えてみた。

1990年代

まず当然ながらEmailは当時(それ以前)からあり、今でもみんなが使っているメッセージング機能である。当時はインターネット・サービス・プロバイダ(ISP)が付与するメールアドレスを使用するのが定番だったが、インターネット黎明期で、ベンチャーな企業がウェブメールを始めてた時期。とても初期の時代である。自分は最初JMAILを使っていた。驚いたことに今でも存在している

そして、当時一気にブレイクしたのがICQだ。ICQはインスタントメッセンジャー(IM)で、後で述べるが、今で言うLINEのようなものだ。友達登録をすることで自分の友達一覧を作り、オンラインの友達とリアルタイムでチャットができる機能だ。自分は英語・国際に興味があったので、インターネットの使用目的の一番大きなものが海外に友達を作ることだった。そして多くの人が海外の友達とも気軽に会話するのにIM、ICQを多用していた。その後、ITの巨人Microsoftがメッセンジャー(その後Windows Live Messengerになり、今ではSkypeに統合された)をリリースしたことでICQの人気は衰えていくことになる。自分もMSNメッセンジャーに移行した。

当時は他にもメッセージングサービスがあった。IRCである。こちらは現在でも現役で多くのユーザーがいる。一般にはほとんど知られていないが、技術者などには知名度が高い。IRCはサーバーに接続し、誰でも自由に部屋を作り、気のあう仲間同士で入室しチャット出来る機能だ。とてもシンプルでテキストメッセージを多人数でやるには良い機能だった。自分はAOC仲間と使っていた。

時代は進化しモバイルの時代がやってくる。1990年代後半、携帯電話が一般化しはじめテキストメールサービスが始まった。当時、自分は中国地方でサービスしていたデジタルツーカーを契約し、スカイウォーカーというテキストメールサービスを利用していた。その後JPHONEになりVodafoneになり現在のSoftbankになる。なお、一般向けには短命に終わったポケットベルは割愛する。また当時のインターネット速度は56kbpsでNTTのテレホーダイを使うのが常識だった。懐かしい。

2000年代前半

この辺りでSoftbankがYahooBBモデムを街頭で配りまくる戦略を始め、日本は一気にブロードバンドが普及していく。例に漏れず、自分もYahooBBに加入した。ここでネット界では巨人となっていたYahooに代わりGoogleが台頭してくる。そんな激動の時代。

メッセージングはそこまで大きく変化していないが、ウェブメールが一気に普及し始める。Yahoo始め大手がそれぞれウェブメールを始めていたし、90年代終わりから世界的にはhotmailが大ヒットしていた。そしてGoogleがGmail(2004)を始めたことで、ウェブメールの地位を確立していく。大容量で使いやすく、しかも無料ということで多くの人の注目を得たがGmailは最初招待制だった。eBayなどで招待状が販売されてた記憶がある。

この時期にもうひとつ特筆すべきものといえばSkype(2003)の登場だ。基本的にはインスタントメッセンジャーだが、高音質な無料のネット電話として一気に知名度を広げ、その後ネットから通常の電話にかけられるサービスや実際の電話番号を使って電話を受けられるサービスなど、ネットの先進的な使い方が受け世界的超ヒットした。今では人気のあるサービスである。

そしてこの時期にソーシャルネットワークサービス、通称SNSが始まる。その草分けがFriendster(2002)と言われている。その後一気にブレイクしたのはFacebook(2004)、ではなく、MySpace(2003)だ。おそらく、世界で最初に1億ユーザーを達成したソーシャルネットワークサービスだと思う。飛ぶ鳥を落とす勢いでSoftbankも出資し日本での展開を始めた。が、Facebookがアプリなどでエコシステムを作り上げヒットしMySpaceは落ちていくことに。日本ではmixi(2004)がヒット。SNSにより多くの人がウェブ上でメッセージをやりとりするようになった。

携帯電話も進化していき、ただのテキストメールから長文で写真も添付出来るようになり、一般ではもっとも普及したメッセージング機能となる。

2000年代後半

この時期での一番の変革は2007年に発売されたiPhoneだ。スマートフォンの時代がやってくる。これにより、ソーシャルネットワークがより一般の人に使いやすくなっていく。いつでもどこでもSNSを見て、メッセージを送受信出来るようになる。だが、それでもまだスマートフォンはインターネットを便利に使えるという位置づけで、メッセージングの主役は一般的には携帯メールだっただろう。だが、TwitterとFacebookが一気に普及し、これらでメッセージのやりとりをする人が増えていく。

2010年代

スマートフォンの普及により、インターネットが一般の誰でも利用出来るようになり、端末やOSの進化により多くのことができるようになった。それに伴い、多くのユーザーは携帯の音声通話・テキストメッセージにいちいち課金されるのに嫌気がさしていくことになり、すべてIPでやりとりするアプリ・サービスが普及し始める。ネットユーザーでは人気を博していたインスタントメッセンジャーが、ついに一般層にまで広がり始めたのだ。欧米ではWhatsAppViberが普及し、日本などアジアではLINEが、中国ではWeChatなど。これらの登場・普及により、オンラインじゃないとチャット出来ないSkypeは後塵を拝し、モバイルアプリのサービスインが遅れたFacebookも苦戦している。Googleに至ってはGoogle+の苦戦に加えHangoutsも苦戦中。iOS同士でしか使えないAppleのiMessageも・・・これにより、携帯メールも減りつつあるのが現状のようで、特に日本では携帯メールよりLINE、が常識になってきているようだ。

ここで大きな問題が出てくる。各サービスごとで分離されており、メッセージの送受信ができないことだ。携帯メール(SMS・MMS)なら携帯番号があればキャリア関係なく世界中誰とでも送受信出来る環境が出来ていた。Emailは昔から今日までオープンな仕様の元、メールアドレスがあれば誰とでもやりとりすることが可能で安定していた。日本の携帯メール(MMSまたは独自仕様)はプロトコルは違うにせよ、ユーザーにとってはEmailに近い存在だ。だが、現在のIMブームでこれらの”リアル世界”が縮小し、小さな島が浮上してくることに。これはユーザーにとっては不幸だと思う。

そこでインスタントメッセンジャーが普及し始めている今、注目してほしいのがXMPP(旧Jabber)だ。これはEmailがオープンな仕様で世界的に共通使用されているように、インスタントメッセンジャーのオープン仕様だ。Hangoutsの前にGoogleはGoogle TalkというXMPPベースのインスタントメッセンジャーサービスをしていた。今でもYahoo MessengerやApple MacのMessages(旧iChat)アプリで利用出来る。このXMPPを各社が採用することでサービスを超えてやりとりができるようになる。現状はLINEはチャットはHTTPと独自仕様でやりとりし、音声通話はSIPを使っているらしい。

もしくは、各社がAPIを公開または提携することでサービス同士のやりとりが可能になるだろう。現状は競争し合ってる中で、提携までいく可能性は低い。さらに、オープン仕様ではないので、誰でもサーバーを立ち上げて、というわけにはいかないのが面倒なところだ。アドレスも限定されてしまう。いってみればxxx@LINEかxxx@whatsappのような形でドメイン部分がサービス企業だけに独占されることになるわけだ。自由なインターネットという意味では健康とは言えない。

今後

この後、インスタントメッセンジャーサービスも統廃合が進むはずだ。Facebookが大手IM企業を買収して勝負を決める可能性もある。このIMが一時的なブームで終わるのかEmailと並んでメッセージングの双璧となっていくのかはわからないが、ぜひともオープンなもので誰でも自由に使えるものになればと思う。

 

Feedie

Feedie

これは素晴らしいアイデアだ。Feedieは見た目は普通の写真共有サービス。でも、裏側は大いなる目的がある。まさに世界を良くするためのサービスだ。

簡単に言うと仕組みはこうだ。

まずあなたがすべきことは、アプリをインストールして、ユーザー登録をしたら、あとはレストランに行って美味しい食事の写真を撮って共有する。みんながやってることだ。これでどうやって世界を変えるかって?ここに隠されてる裏側はこうだ。

写真を撮るべきレストランは、実は決められている。どこで撮っても良いというわけではない。アプリ内で表示されるレストランだけで効果が出る。なぜかって?それは、あなたが写真を撮って共有することでお店が広告料をFeedieに支払うからだ。しかし、なぜお店はわざわざ写真を共有してもらって広告料を支払うのか。Feedieにこだわる必要があるのか。普通にお店PRの広告を打てば良いではないか。そうではない、なぜなら、Feedieに支払われた広告料の一部が貧しくて食事が足りない国や地域に支援金を送れるからだ。

ユーザーがたくさんの写真を共有し楽しむほど、お店は口コミ効果の利益が得られるし、Feedieも事業継続のための資金が得られ、最終的に食料に困ってる人たちを助けることになる。

とても素晴らしいアイデアであり、楽しいだけではなく困ってる人を助けることができるサービスだ。だが、残念なことに、まだまだ契約店は少ないし、アメリカでもほんの一部地域でしかお店がない。日本での展開はあったとしても遠い先になるだろう。それでも、こういう楽しいだけではない、社会の役に立つサービスは大きくなってほしいと思う。

最後にビデオを見てほしい。気に入ったらアプリも試してみてほしい。日本では使い物にならないだろうけど・・・

 

 

メール暗号化のGPGを試してみる

Screen Shot 2013-09-04 at 0.15.34

インターネットが普及して、みんな当たり前のようにメール(Email)を使うようになった。なかには携帯メールから使い始めEmailの仕組みなどを知らずに使ってる人も多い。(Emailの場合返信するとき元のメッセージを引用するのが常識だけど、携帯メールからの人にはうざいらしい) またウェブのことをインターネットと呼んでる人がたくさんいるので「じゃあメールはネットじゃないのか?」といつもツッコミたくなったりする。

さて、今回必要に迫られメールの暗号化をすることになった。昔S/MIMEを試したことがあるが、あっちは認証局にに署名してもらわないといけないようで、無料サービスもいくつかあるが基本的にSSLと同じように有料。個人で使うには難があった。今回挑戦したのはGnuPG。歴史をかいつまんで解説すると、もともとPGP(Pretty Good Privacy)という暗号ソフトウェアがあって、それをEmailにも使えてたけど開発は営利企業でいろいろライセンス問題もあったりしたらしく、openPGPという形でオープンライセンスで利用でき、それに準拠してるのがGnuPG(GPG)だ。

私はMac使いなのでMacでの使い方を調べたがどうやらApple Mail.appでは対応してないらしい。だが、GPGのソフトウェアをインストールすることでMail.appでGPGが使えるようになる。ということで、GPGToolsをインストールした。GPGToolsはいくつかのGPG関連ツールの集合体で、Mail.appをGPG対応させるものだったり、鍵を管理するアプリだったりする。

インストールや初期設定はサイトを見てもらえばすぐにわかる。鍵の作成はMail.appに登録しているアカウントから選択して作成出来る。
作成したら、新規メール作成画面でOpenPGPという表示が出るようになる。Fromに作成したメールアカウントを選択した場合のみだ。

gpgtools

これでメールに署名して送信出来るようにはなった。だが、まだ暗号化はされていない。暗号化メールを送るには相手の公開鍵が必要だ。暗号メールを送る前に相手から公開鍵をもらってGPG Keychain Accessに登録しておこう。また同時に自分の公開鍵も相手に渡しておこう。公開鍵はGPG Keychain Accessからアカウントを選択してExportできる。署名付きメールに鍵を添付して相手に送るといいだろう。

うまくいけば相手から自分へも暗号メールを送ってくれる。その場合 Mail.appでは

encrypted

 

という具合にメールのヘッダー表示にマークがつく。安心暗号生活に入れるゾ!

最後に言うのもなんだけど、世の中に出回ってるメールは基本的に暗号化されておらず、中間で見ようと思えば見ることが出来る。たとえば、Gmailでいえば、自分のパソコンからメール送信すると「パソコンからGmail送信サーバー」までは暗号化されてるけど、「Gmail送信サーバーから相手の受信サーバー」までは見放題。またもし相手のメールサーバーが暗号化通信に対応してなかったら「相手のメールサーバーから相手のパソコン」までも見放題となる。このとき、相手が公衆無線LANなどを利用してた場合、他人にメール内容を見られる可能性がある。

当然だけど、Gmail使ってて暗号化しなかったらGoogleにも見られ放題です。

メール暗号化、もっと普及するといいんだけどね・・・

 

 

PHPの型チェックのメモ

テストコード

$f = tempnam(‘/tmp/’,’test’);
$testme = array(
null,
true,
false,
array(),
0,
1,
0.10,
1.123,
”,
‘0’,
‘1’,
’10’,
‘0.10’,
‘1.123’,
‘1,234,567’,
‘ 1’,
‘1 ‘,
‘ 1 ‘,
‘Hello’,
new stdClass(),
fopen($f,’w’),
);

$result = array();
foreach($testme as $value){

$tmp = array();
$tmp[‘value’] = $value;

$tmp[‘isset’] = isset($value);
$tmp[‘null’] = is_null($value);
$tmp[’empty’] = empty($value);

$tmp[‘bool’] = is_bool($value);

$tmp[‘array’] = is_array($value);

$tmp[‘string’] = is_string($value);

$tmp[‘int’] = is_int($value);
$tmp[‘float’] = is_float($value);
$tmp[‘numeric’] = is_numeric($value);

$tmp[‘scalar’] = is_scalar($value);

$tmp[‘object’] = is_object($value);
$tmp[‘resource’] = is_resource($value);

$tmp[‘true’] = ($value) ? true : false;
$tmp[‘false’] = (!$value) ? true : false;

$result[] = $tmp;

}
fclose($value);
@unlink($f);

var_dump($result);

結果

array (size=21)
  0 => 
    array (size=15)
      'value' => null
      'isset' => boolean false
      'null' => boolean true
      'empty' => boolean true
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean false
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean false
      'false' => boolean true
  1 => 
    array (size=15)
      'value' => boolean true
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean true
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  2 => 
    array (size=15)
      'value' => boolean false
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean true
      'bool' => boolean true
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean false
      'false' => boolean true
  3 => 
    array (size=15)
      'value' => 
        array (size=0)
          empty
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean true
      'bool' => boolean false
      'array' => boolean true
      'string' => boolean false
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean false
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean false
      'false' => boolean true
  4 => 
    array (size=15)
      'value' => int 0
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean true
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean true
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean false
      'false' => boolean true
  5 => 
    array (size=15)
      'value' => int 1
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean true
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  6 => 
    array (size=15)
      'value' => float 0.1
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean true
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  7 => 
    array (size=15)
      'value' => float 1.123
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean true
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  8 => 
    array (size=15)
      'value' => string '' (length=0)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean true
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean false
      'false' => boolean true
  9 => 
    array (size=15)
      'value' => string '0' (length=1)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean true
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean false
      'false' => boolean true
  10 => 
    array (size=15)
      'value' => string '1' (length=1)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  11 => 
    array (size=15)
      'value' => string '10' (length=2)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  12 => 
    array (size=15)
      'value' => string '0.10' (length=4)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  13 => 
    array (size=15)
      'value' => string '1.123' (length=5)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  14 => 
    array (size=15)
      'value' => string '1,234,567' (length=9)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  15 => 
    array (size=15)
      'value' => string ' 1' (length=2)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  16 => 
    array (size=15)
      'value' => string '1 ' (length=2)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  17 => 
    array (size=15)
      'value' => string ' 1 ' (length=3)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  18 => 
    array (size=15)
      'value' => string 'Hello' (length=5)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  19 => 
    array (size=15)
      'value' => 
        object(stdClass)[7]
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean false
      'object' => boolean true
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  20 => 
    array (size=15)
      'value' => resource(10, Unknown)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean false
      'object' => boolean false
      'resource' => boolean true
      'true' => boolean true
      'false' => boolean false

@ Mac PHP 5.3.27

 

Photo Storage サービスを比較してみる

flickr
flickr

500px
500px

everpix
Everpix

Smugmug
Smugmug

比較

flickr 500px everpix Smugmug
特徴
  • オーソドックス
  • 画像共有トップ
  • 様々なサードパーティアプリ
  • 超高品質な写真サービス
  • 写真の販売
  • flickrやinstagram、パソコンから自動収集
  • 高性能な自動Organizer
  • 基本非公開
  • 独自のギャラリーページが作れる
無料サービス
  • 300MB/Month(30MB per photo)
  • view only recent 200 photos
  • 2 videos
  • Small size
  • 10 uploads per week
  • Personal store(sell photos)
  • All your photos from the PAST 12-24 MONTHS
  • Unlimited photos
有料サービス

$25/Year

  • Unlimited photos(50MB per photo)
  • Original size
  • Unlimited HD videos

$20/Year

  • Unlimited photos

$50/Year

  • Custom domain
  • Google Analytics

$50/Year

  • Unlimited photos

$40/Year

  • Unlimited photos(50MB per photo)
  • Editable gallary pages
  • Sell photos

$60/Year

  • Unlimied HD videos
iPhone app Yes Yes Yes No
iPad app No Yes Yes No
Android app Yes Yes No Yes

こうしてみると、flickrは格安で共有という意味では最良だ。だが、あまり進化がない。個人的な写真の管理では、写真を自動でまとめてくれるEverpixがオススメだ。ちょっと高いし動画も非対応だが、サービス内容はとても魅力である。試す価値は十分ある。

 

カレンダーアプリが熱い!!

最近モバイルでカレンダーアプリが熱くなっている。いくつか紹介しよう。

Cue

Screen Shot 2013-04-06 at 1.42.19

CueはもともとGreplinというサービスだった。TwitterやFacebookなどの自分のアカウントを登録して、一箇所ですべて検索可能にする、というサービスだったと記憶している。だが、なかなか需要がなかったか、カレンダーアプリに鞍替えしたようだ。まだヘビーに使ってないが、前事業に関連して、ソーシャルサービスと連携する機能はついてる。各種サービスのタイムラインとスケジュールを一括管理できるということだろうか。

 

Tempo

Screen Shot 2013-04-06 at 1.42.08Tempoは最近一気にブレイクしたカレンダーアプリ。同様に一気に人気を博したMailboxと同じように、アプリ利用するまでに順番待ちになっている。今始めても最低でも数日は待つ必要があるだろう。このアプリは比較的王道のPIMとして利用できるようだ。ようだ、というのは、こちらもまだそこまで使ってないのだ。iPhoneのカレンダーに直接アクセスして同期が可能。連絡先も連携して利用できる。さらに、Gmailなど自分が使っているメールアカウントを登録することで、スケジュールに自動的に関連するメールを紐付けることができるようだ。そのメールに添付されてるファイルもうまく取り扱うことが出来る。自分は疑り深いので、連絡先へのアクセスも認めてないし、メールアカウントも渡してない。のでカレンダーのみしか利用してない。限定的なものだが、iPhone標準のカレンダーアプリよりは見やすい。

 

Sunrise

Screen Shot 2013-04-06 at 1.41.50

Sunriseも少し前に話題になったアプリだ。基本的にFacebook連携みたいで、利用するにはFacebook認証が必要になる。自分は疑り深いので、無駄にFacebookのアクセス権を認めないので、こちらも門前払い状態である。だが機能面、UIは良さそうである。

 

まとめ

どれも良さそう。でも、しょうがないことだが、いろいろ個人情報へのアクセスを要求してくる。アプリとしてなら良いかもしれないが、あっち側のサーバーに情報を送信・保存してサービスになっちゃうのはあまり気持の良いものではない。まだ検討の段階であるが、どれも魅力的なのは確かだ。もう少し様子を見てみよう。

P.S.

私は慎重派です。