2016年10月18日火曜日

アドリブとスイッチサイエンスがソリューションパートナー契約を締結

プレスリリース
有限会社アドリブ
2016年10月18日

アドリブとスイッチサイエンスがソリューションパートナー契約を締結

有限会社アドリブ.,(以下アドリブ、本社: 神奈川県海老名市、代表取締役:加畑嘉孝)は、株式会社スイッチサイエンス(以下スイッチサイエンス、本社:東京都新宿区、代表取締役:金本茂)とソリューションパートナー契約を締結いたしました。今後は、お互いの製品に関して、共同でマーケティングや販売、新製品の開発協力を行ってまいります。

スイッチサイエンス製品:
  • IoT製品、教育向け製品を共同でマーケティングする。
アドリブ製品:
  • スイッチサイエンスの製品を使ったソリューション開発。

スイッチサイエンスについて

スイッチサイエンスは、「Light Up Your Science」をコンセプトに、誰でも科学を道具として当たり前に使いこなせる環境を目指して活動しています。科学の中でも、主に電気電子、ソフトウェアの分野を中心に、電子工作、教育、IoTを柱に事業を展開しています。

アドリブについて

アドリブ(adlib ltd.)は、Web、モバイル、ハードウェアを組み合わせたソリューションを10年以上にわたり開発、提供してきました。受託においては顧客の要望を単純に実装するのではなく、その要求の元となる思想は何かをつねに念頭においた開発を行っています。今回の提携により、さらに広範囲のアイデアを実現できることを嬉しく思っています。

お問い合わせ先

有限会社アドリブ 加畑(カバタ)までお願いいたします。

E-mail:info@adlibjapan.jp

2011年11月20日日曜日

Facebookモバイルアプリの超簡単サンプル(webintentもあるよ)


2011/11/20 にパソナさんで行われたハッカソンに参加してきました。
教えていただいた@KenTamagawa さん、 @horiuchiさん、そのた開催を開催をしていただいている
スタッフの方、ありがとうございました。


超参考になるリンク集
---
AWSチュートリアルの資料
①AWSのアカウントを開設する
http://www.slideshare.net/kentamagawa/3aws

②EC2を立ち上げる
http://www.slideshare.net/kentamagawa/3amazon-ec2

Facebook api関係リンクです。
http://facebook-docs.oklahome.net/archives/51972629.html
http://developers.facebook.com/docs/reference/api/
http://developers.facebook.com/docs/reference/javascript/FB.api/
https://developers.facebook.com/docs/reference/javascript/
http://www.facebook.com/notes/%E4%BD%90%E3%80%85%E6%9C%A8-%E9%99%BD/facebook-mobile%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9%E7%BF%BB%E8%A8%B3/391242249979
---


お礼(?)にそこで作ったアプリ(とソース)をさらしておきます。

できること:FacebookにPicasaの画像をアップする。
特徴(?):Facebookモバイルアプリなこと。(webIntenを使っていること。

ソースは↓。YOUR_APP_IDは自分のに変更してください&足りないファイルはhttp://webintents.org/から
さらってきてください。

index.html

<html>
    <head>
        <title>WithIntent</title>
        <meta name="viewport"
              content="initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
        <script src="./webintents.min.js"></script>
        <script src="./events.js"></script>

<!--
web intentの設定
//-->
    <intent
        action="http://webintents.org/pick"
        type="image/*"
        href="/fa/pick_google.html"
        title="Picasaから画像を選ぶ" />
    <intent
        action="http://webintents.org/pick"
        type="image/*"
        href="/fa/pick_google.html"
        title="Picasaから画像を選ぶ" />

<!--
facebook用の設定
//-->

    <script>
        window.fbAsyncInit = function() {
            FB.init({ appId: 'YOUR_APP_ID',
                status: true,
                cookie: true,
                xfbml: true,
                oauth: true});

            FB.Event.subscribe('auth.statusChange', handleStatusChange);
        };
    </script>
    <script>
        function handleStatusChange(response) {
            document.body.className = response.authResponse ? 'connected' : 'not_connected';
            if (response.authResponse) {
                console.log(response);

                updateUserInfo(response);
            }
        }
    </script>

<!--
ボタンが押されたときのハンドラとintentの設定
//-->
    <script>
        attachEventListener(window, "load", function() {
            var pickImage = document.getElementById("pickImage");
            attachEventListener(pickImage, "click", function() {
                var intent = new Intent(
                "http://webintents.org/pick",
                "image/*");

                window.navigator.startActivity(intent, intentResponse);

                return false;
            });

            var intentResponse = function (data) {
                var output = document.getElementById("output");
                output.src = data;
                focus();
                data = data + "#";
                var obj = {
                    method: 'feed',
                    source: data,
                    link : data,
                    name: 'WithIntent',
                    caption: 'Image',
                    description: 'This image is posted from another web service via webIntents.'
                };

                function callback(response) {
                }
// 戻ってきたデータを組み立ててFBに送る(とダイアログが出ます)
                FB.ui(obj, callback);
            };
        }, false);
    </script>

    <style>
        body.connected #login { display: none; }
        body.connected #logout { display: block; }
        body.not_connected #login { display: block; }
        body.not_connected #logout { display: none; }
    </style>
</head>
<body>
    <h2>Upload from Picasa image to Facebook</h2>
    <div id="fb-root"></div>
    <script>
        (function() {
            var e = document.createElement('script'); e.async = true;
            e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
            document.getElementById('fb-root').appendChild(e);
        }());
    </script>
    <div id="login">
        <p><button onClick="loginUser();">Login</button></p>
    </div>

    <script>
        function loginUser() {  
            FB.login(function(response) { }, {scope:'email'});
        }
    </script>

    <script>
        function updateUserInfo(response) {
            FB.api('/me', function(response) {
                document.getElementById('user-info').innerHTML = '<img src="https://graph.facebook.com/' + response.id + '/picture">' + response.name;
            });
        }
    </script>

    <div id="logout">
<!--
ログインしないと出ない
//-->
        <p><button  onClick="FB.logout();">Logout</button></p>
        <div id="user-info"></div>
        <fb:like></fb:like>
        <button id="pickImage"><img src="picasa.jpg"/></button>
        <img id="output" />
        <!--
        <a href="#" onclick="getUserFriends();">Get friends</a><br>
        <div id="user-friends"></div>
        <a href="#" onclick="sendRequest();">Send request</a><br>
        //-->
    </div>

</body>
</html>

2011年11月4日金曜日

Web Intent の使い方メモ

EXP-Hackathonに参加してきました。

そこで@a2cさんたちのチームでGitkitとWebIntentを使ったサービスを作成したのですが
私はweb intent側を担当しました。
前から触ってみたかったのですが、どうしても?なところがあったので、いいチャンスだと
思い、Googlerの方にいろいろ聞いてなんとか理解できた(気がする)のでメモしておきます。

*Web Intentとは?
http://webintents.org/ を見てください。
.....これでわかる人はこれ以上読まなくてOKですw
あるいは
Web Intent: GoogleによるWebアプリ連携メカニズムも参考になります。

上記を読んだのですが、androidにおけるintentみたいなものだと思っていたのでどうしても
わからない点がありました。それは、あるintentを発行した際にどのサービスがその処理を
行うことができるかの関連づけを、どこのだれがやるかということです。

androidの場合であれば、アプリのマニフェストファイルにインテントフィルタを記述すると
OSにそのフィルタが登録され、ほかのアプリケーションのintentによってそのアプリが一覧から出てきます。
例えばAというアプリのマニフェストファイルに
<action android:name="android.intent.action.SEND" />
とあれば、他のアプリ(例えばB)からは
 Intent intent = new Intent();
 intent.setAction(Intent.ACTION_SEND);
 startActivity(intent);
のようにするとA(と同じフィルタを持つアプリ)が表示されます。
ここで重要なのは、Aがどんな種類のインテントに反応するかを「自ら」OSに登録し、
BはAの存在を知らない(暗黙的なので)という点です。

さてWeb Intentですが、前記の記事を読むとわかると思いますが、A,Bそれぞれに関する記述はあります。
しかし肝心のBがある処理を選ぶ際にリストされる要素のバインディング(?)がどのように
行われるかが具体的に記述されていないのです(読解力ないです)。
いいかえると
「どうやってBはAの存在を知ってるわけ?」
ということです。

いろいろいろいろ考えたのですが結局わかりませんでした。で、今回のEXP-Hackthonで謎が解けたと。

答えは簡単で
「Bの中にAやA’の情報が記述されていた」
です。なんだってーーー!?

はじめはwebintents.orgにAの情報を登録するのかなと思いました。なぜなら
http://webintents.org/#api
を見ると、
Intent Registration
があるので、てっきりどこか「別の」所に登録するのかと思ったわけですよ。

実はどこかに登録するわけではなく、Bのソース内にA(やA’)の情報を記述する必要があり
webintents.orgに「これこれを処理できますよ」情報があつまってるわけでも何でもないと
いうわけです。

なのでBはAの存在を知らないと作れないというわけでした。ちゃんちゃん。

備考1)
http://examples.webintents.org/intents/pick/index.html
のソースをよーく読むとわかります。不親切ですみません。

備考2)
BはAの存在を知らないと作れないと書きましたが、どこかの誰かがサービスディレクトリのようなものを
作って、必要なIntentリストを返すようにし、動的にインクルードできるようにすれば、androidの
暗黙的intentのように使えると思います。
それとgitkitを組み合わせるようにすれば、認証あり/なしで使えるものリストを変更できるように
すれば課金とかのビジネス化もできるかもです。

2010年2月2日火曜日

銀賞受賞、BentoBox(TM)アフィリエイトツール企画・開発コンテスト

リンクシェアさんのBentoBox(TM)アフィリエイトツール企画・開発コンテストにて、『マスター部門銀賞』に選ばれました。結果はこちら

http://www.bento-box.jp/bento/bentoboxcontest_2009_master.html

Androidでも*なんとか*動きます。
(両方で動かすためにかなり汚いコードになってしまいましたが)

2009年5月29日金曜日

wiiリモコン認識のコツ

1,2ボタンを連打しながら認識させる。
ピポッと音がすればOK。