LoginSignup
55
54

More than 5 years have passed since last update.

次世代メールプラットフォームInboxを試してみた。

Last updated at Posted at 2014-07-10

先日、次世代メールプラットフォームInboxが発表されましたね。以前、メールを扱ったアプリをつくろうと思いましたが、IMAPなどの仕様にハマって断念したことがあり、これは、と思い期待しているので早速試してみました。

開発の理由がクールですね。

GrinichはInboxを開発の狙いについて、「私はMITでメールのツールについて論文を書いたときにメール・アプリの開発がいかに難しいか気づいた。その根本的な原因は、IMAP、MIME、文字のエンコードといったインフラにあった。Inboxはそうした問題をデベロッパーに代わって解決する」
DropboxのOBらが次世代メールのプラットフォーム、Inboxを発表―Gmail APIに似ているが汎用 - TechCrunch

inboxとは?

inboxは、古い仕様で作られたIMAPメールを簡単に扱うためのラッパーです。inboxはREST APIに対応しており、メールデータを取得、修正、送信といったことが簡単にできます。また、レスポンスは全てJSONなので、扱いやすいです。

現在のステータス(2014/7/10時点)

Inbox SDK(JavaScript版とiOS版)を利用したデモ・アプリがいくつかGitHubで公開されています。また、開発者向けに、Sync Engineが公開されており、これをローカル開発環境で立ち上げて、開発を始めることが出来ます。(将来的には、Sync Engineはinboxによってホストされる予定)

そこで!

今日はこの、Sync Engineをローカルで立ち上げて、APIを叩いてみる、というところまでやってみたいと思います。

ざっとした流れとしては、GitHubにアップされている、Sync Engineをローカルに持ってきて、それをVagrantで立ち上げることができるので、Vagrantで立ち上げて、初期設定後、自分のGmailアカウントと同期し、apiの口を開けて、curlで叩いてみる、という流れです。

手順

Install VirtualBox

VirtualBoxが入っていない人は入れましょう。

Install Vagrant

Vagrantってなんぞや、という人は http://dev.classmethod.jp/server-side/virtual-box-vagrant/

Install Inbox

git clone git@github.com:inboxapp/inbox.git

とりあえず、デスクトップでやりました。

cd inbox     # inboxって何かと使う名前なので困りますよね。
vagrant up   # Vagrantを立ち上げて。
vagrant ssh  # Ubuntuにつながります。
cd /vagrant  # sshしたら、ルートにvagrantフォルダがいるので移動。
bin/inbox-start

Sync Engineが立ち上がるのか・・・な。フォアグラウンドで起動します。ログが見たかったので、別タブでもう一つVagrantを立ち上げました。別タブで

cd inbox
vagrant ssh
cd /vagrant
bin/inbox-auth [YOUR_ACCOUNT]@gmail.com

同期したいメールアドレスを入力します。すると、「To authorize Inbox, visit this url and follow the directions:」というレスポンスが返ってくるので、それ以下のURLをブラウザで立ち上げます。するとGoogleの認証画面が立ち上がるので、承認します。すると認証コードが表示されるのでそれをコピー。コマンドラインの「Enter authorization code:」のところに貼り付けて返してあげます。すると認証が完了します。Googleアカウントのパスワードじゃないことに注意です。

bin/inbox-sync start [YOUR_ACCOUNT]@gmail.com

これをすると、inboxとauthしたGmailの同期が開始されます。「Note that an initial sync can take quite a while depending on how much mail you have.」と書かれているように、最初の同期は時間がかかるようです。自分は60000通ほどありましたが、45分で5000通くらいです(その間にこれを書いています。)APIのテストをする上ではもう次に進んで問題ないので、放置プレイで行きましょう。

bin/inbox-api

これでAPIの口が開きます。

curl http://localhost:5555/n/

さあ・・・叩いてみると、

[
    {
        "account": "hogehogehoge",
        "email_address": "hogehoge@gmail.com",
        "id": "hogehogehogehoge",
        "namespace": "hogehogehogehoge",
        "object": "namepace",
        "provider": "gmail"
    }
]

とJSONでレスポンスが返ってきましたよ!ヮ(゚д゚)ォ!このnamespaceというのが認証したアカウントを識別するものとなります。

あとは、APIのレファレンス通りに叩いてみると・・・

curl http://localhost:5555/n/<namespace>/tags
[
    {
        "id": "replied",
        "name": "replied",
        "namespace": "hogehogehoge",
        "object": "tag"
    },
    {
        "id": "all",
        "name": "all",
        "namespace": "hogehogehoge",
        "object": "tag"
    },
    {
        "id": "sent",
        "name": "sent",
        "namespace": "hogehogehoge",
        "object": "tag"
    },
    {
        "id": "inbox",
        "name": "inbox",
        "namespace": "hogehogehoge",
        "object": "tag"
    }...
]

tagの一覧が取れたり・・・メッセージを取得できたり、送信したりと色々なことができます。

楽しみですね!

55
54
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
54