14
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

Ringを使って魔法のようにkeynoteとslackをコントロールしてみる

Ringの紹介

Ringは「Shortcut Everything」をコンセプトにした指輪型デバイスです。
Ringを人差し指にはめて、ハリーポッターの杖みたいに、「エイッ!」ってやれば、魔法のようにいろんなことができちゃうっていうデバイスです。

この動画を見ていただければ、すぐに世界観は掴めるかと。


Screen Shot 2014-11-25 at 2.14.21 AM.png
Vimeoで見る

kicksterterというクラウドファンディングサービスで資金を集めているときに資金提供させてもらった「Ring」がようやく届いたので、とりあえず色々いじってみました。
8ab3195e54cc61f6e44f17e509072b48.jpg

KeynoteをRingでコントロールしてみるとちょ〜かっこいい

プレゼンテーションツールの「keynote」を遠隔でコントロールするスマホアプリとかはたくさん出ていますが、「Ring」を使って指で「次へ」とか「前へ」とかができたらかっこいいのでやってみます。

まずはnodeでAPIを作る

app.js

    var express = require('express');
    var app = express();

    function sendkey(code, callback) {
      var exec = require('child_process').exec;
      //keynoteをアクティブにする
      exec("osascript -e 'tell application \"Keynote\" to activate\'", function(err, stdout, stderr) {
        //Apple Scriptでkeynoteをコントロールできるようにする。
        exec("osascript -e 'tell application \"System Events\" to key code " + code + "'", function(err, stdout, stderr) {
          callback();
        });
      });
    }

    app.get('/right', function (req, res) {
      sendkey(124, function() {                                                                                                                              
        res.sendStatus(200);
      });
    });

    app.get('/left', function (req, res) {
      sendkey(123, function() {
        res.sendStatus(200);
      });
    });

    app.listen(3000);

あとは、

package.json
    {                                                                                                                                                          
      "name": "ring-keynote",
      "version": "0.0.1",
      "private": true,
      "scripts": {
        "start": "node app"
      },
      "dependencies": {
        "express": "*"
      }
    }
    npm install
    npm start

とするだけ。

あとは、macのIPアドレスを調べてブラウザでアクセスすれば、keynoteのスライドを行ったり来たりできるようになります。

http://(MacのIPアドレス):3000/left
http://(MacのIPアドレス):3000/right

次にRingのOpenURIで、新しいアクションを追加する

  1. Ringのアプリを開く
  2. 最下部の「EDIT YOUR ACTION」をタップ
  3. 最下部の「Add New Actions」をタップ
  4. 「Open URI」をタップ
  5. 「Add」をタップ
  6. ジェスチャーをタップ
  7. APIのURLを入力
  8. 必要に応じてジェスチャーも編集できる

7番で入力するAPIのURLは、以下2つ。
http://(MacのIPアドレス):3000/right/
http://(MacのIPアドレス):3000/left/

これで、あとはジェスチャーをするだけ!

実際にジェスチャーをカスタマイズして、こんな感じにしてみました。
5109a4276635b89504107a50496fa197.jpg

人差し指で「右!」ってやるとkeynoteが次のスライドに行くっていう素敵な状態になりました。


Screen Shot 2014-11-25 at 10.35.46 AM.png
Vimeoで見る

slackでいいね!的な返事をRingを使って一瞬で済ませてみる

皆さんご存知チャットツール「Slack」を使って、チャット内での「いいね!」的な簡単なコミュニケーションをわざわざアプリを見なくともできると楽だなと思ったので、作ってみました。

これはAPIをrailsアプリにして作ってみました。

    rails new slack_by_ring

 
slackにポストするメソッドを作成

app/model/slack_post.rb

    require 'addressable/uri'
    require 'net/http'

    class SlackPost

      def self.post_to_slack
        endpoint = 'https://slack.com/api/chat.postMessage'
        token="#{SLACK_API_TOKEN}"
        channel=params[:channel]
        text=':thumbsup:' #何でもいい
        username="#{USERNAME}"
        icon_url="#{ICON画像のURL}"

        uri = Addressable::URI.parse(endpoint)
        query = {token: token, channel: channel, text: text, username: username, icon_url: icon_url}
        uri.query_values ||= {}
        uri.query_values = uri.query_values.merge(query)

        Net::HTTP.get(URI.parse(uri))

      end

    end

apiを作成

app/controller/apis_controller.rb

    class ApisController < ApplicationController

      def send_to_slack
        eval("SlackPost.post_to_slack(#{params[:channel]})")                                                                                                              
        render json: {result: "done"}
      end

    end

これで、localhostでサーバーを立ち上げて、パラメータに投稿したいchannel名を指定してアクセスすれば、指定のslackのchannelにいいね!の絵文字が投稿される。


Screen Shot 2014-11-25 at 10.36.04 AM.png
Vimeoで見る

利用イメージ

slackのデスクトップノーティフィケーションで見えた内容で判断して「いいね!」ってやりたいときに、slackをアクティブにしなくても、Ringでジェスチャーをするだけで、「いいね!」って送れるので楽!!

ただ、それだけですw

まだまだアイデア次第では色々なことができそうですね!!
面白い!!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
14
Help us understand the problem. What are the problem?