...

Kadeckly - Kadecot

by user

on
Category: Documents
5

views

Report

Comments

Transcript

Kadeckly - Kadecot
Kadeckly / KAIT-4S -Canvas-
ドキュメンテーション
2014 年 12 月 26 日
株式会社ソニーコンピュータサイエンス研究所
本文書では、神奈川工科大学 HEMS 認証センターからの委託を受けて、株式会社
ソニーコンピュータサイエンス研究所で開発された「Kadeckly / KAIT-4S -Canvas-」
(以下 Kadeckly と呼称)の使い方やインストール方法などを記しています。
本アプリは HTML5 によって記述された Web アプリであり、動作させるためには
Apache などの Web サーバ配下に設置し PC などのブラウザで読みこんで実行される必
要があります。また、宅内機器やセンサーにアクセスするために、Google Play から公
開されている Android アプリ「Kadecot」が必要です。
全体のアーキテクチャ
また、Twitter や Google カレンダーの機能を用いる場合は API Key の上限が各事
業主によって定められていますのでご注意ください。(2014 年 11 月現在、Twitter は
15 回/15 分、Google カレンダーは 10 万回/日です。前者は1ユーザー当たりの制限、
後者は全ユーザーの総和の制限です)。ご了承ください。
目次
目次 ........................................................................................................................ 2
第一章 とにかく使ってみる .................................................................................. 3
フレームワーク ................................................................................................... 3
Kadecot のインストール ..................................................................................... 4
Kadeckly から Kadecot への接続とプログラムの実行 ........................................ 6
ファイル入出力 ................................................................................................... 8
第二章 ブロックリファレンスとサンプルコード .................................................. 9
機器ブロック ....................................................................................................... 9
ECHONET Lite 定数ブロック .......................................................................... 10
ECHONET Lite 値変換ブロック ...................................................................... 12
Wait ブロック ................................................................................................... 13
条件ブロック ..................................................................................................... 14
天気ブロック ..................................................................................................... 14
Twitter ブロック ............................................................................................... 15
Google Calendar ブロック ................................................................................ 16
サンプルプログラム集 ....................................................................................... 16
第三章 自分の Web サーバへのインストール方法 .............................................. 18
Web サーバへのファイルの展開........................................................................ 18
Twitter ブロックの設定 .................................................................................... 18
Google Calendar ブロックの設定 ..................................................................... 20
天気ブロックの設定 .......................................................................................... 23
Appendix .............................................................................................................. 24
Kadeckly で使っているオープンソース ............................................................ 24
Blockly .......................................................................................................... 24
jQuery/jQuery UI .......................................................................................... 26
TwitterOAuth ............................................................................................... 26
第一章
とにかく使ってみる
本アプリが
http://app.kadecot.net/Apps/Kadeckly/ に設置されています。実験
目的にのみアクセスしてください。まずはこれを使ってエアコンを ON するプログラム
を書いてみましょう。
フレームワーク
上記 URL にアクセスすると、以下のような起動画面が現れます。
この画面で、これから作るプログラムで用いる機器の種類と数を設定します。例え
ば照明2つとエアコン1台を使うプログラムを作りたかったら、GeneralLighting の行
と HomeAirConditioner の行を探し、次のようにチェックを入れ、機器の数を指定し
てください。
そうしたら下の方に表示されている Create New Project ボタンを押してください。
プログラムのエディット画面が現れます。
基本的な操作は、左側に並んでいるブロックを右側の白い領域にドラッグして相互
につなげてプログラムを作っていくというものです。試しにエアコンを ON するプログ
ラムを書いてみましょう。左側からブロックをドラッグして、次のようなプログラムを
作ってみてください。
このように、Kadeckly では右のブロックから出力されるものを左のブロックに入力す
るのが基本です。
これだけでプログラミングが完了です!次は早速これを動かしてみましょう!
Kadecot のインストール
まず、プログラムの実行には Android アプリの「Kadecot」が必要なので、お手持
ちの Android に Google Play から Kadecot をインストールします。
https://play.google.com/store/apps/details?id=com.sonycsl.Kadecot
EULA にご同意いただき、チュートリアルをご覧いただいた上で、Kadecot のアカ
ウントを設定してください。名前もパスワードも個性的なものにしてください。
アカウント設定が完了すると、デバイス一覧画面になります。画面下の SERVER
OFF というボタンをタッチして ON にし、Wi-Fi に接続すると対応機器が機器発見さ
れます。
※所望の機器が見つからない場合は、左下の Refresh ボタンを押してください。
※もし ECHONET Lite 対応機器をお持ちでない場合は、SonyCSL から
フリーのエミュレータ(PC 用)も配布されていますので、よろしければお試しく
ださい。
機器が見つかったら、Kadecot が実行されている Android の IP アドレスを調べて
おいてください。IP アドレスは通知領域を引き出せば見られますし、Kadecot の設定
画面から一番上の「開発者モードを有効にする」にチェックを入れると、そのすぐ下や
機器一覧画面で見られるようになります。今は 192.168.10.202 のようですね。
Kadeckly から Kadecot への接続とプログラムの実行
Kadeckly に戻り、右上の「Run」ボタンを押すことでプログラムの実行ダイアログ
が開きます。
IP アドレスを入力するところがあるので、ここに先程の Kadecot の IP アドレスを
入力し、右側の「Set」を押してください。
もしうまく Kadecot につながれば、
一旦 Kadecot の認証画面に遷移します。これは、
app.kadecot.net に対して Kadecot へのアクセスを許可するためのものです。Kadecot
インストール時に指定したパスワードを入力して「送信」を押してください。すると、
エディット画面に戻ります。
ここで、もう一度 Run を押します。この作業は一度行えばブラウザに情報が残り、
次回からはスキップされます。以下のように表が挿入されているはずです。
この表は、これまでプログラムしてきた仮想的な機器を、宅内に実在する機器と対
応付けるためのものです。左側はプログラミングに用いた仮想的な機器、右側は実在の
機器です。例えば HomeAirConditioner1 の右のドロップダウンリストの内訳をみると
エアコンが二つ表示されています。このエアコンは実際に Kadecot が認識しているエ
アコンで、Kadecot で設定したニックネームが表示されています。ドロップダウンリス
トで選んだ方が実際にプログラムからの制御対象となります。
割り当てが完了したら、あとは実行するだけです。ダイアログ右下の「Run once」
または「Run interval」を押すことで実行が始まります。エアコンの電源が入りました
か?
なお、Run once は一回のみ実行します。Run interval は、Stop を押すまで数秒お
きに何度も繰り返し実行します。
ファイル入出力
作ったプログラムはファイルとして保存することができます。(Chrome と Firefox
でのみ動作確認しています)
それには、メインの画面右上の Open File と Export File ボタンを用います。Export
File を押すと、ローカル環境にプログラムをファイルとしてダウンロードすることがで
きます。Firefox の場合には拡張子すらないランダムなファイル名になるので[ファイル
名].kadeckly という名前に変更しておくとよいと思います。Chrome の場合は自動的に
blocks.kadeckly という名前で保存されてしまうので、こちらは拡張子は維持して、フ
ァイル名のみプログラムの内容を反映したものに変更するとよいと思います。
ダウンロードしたファイルは、あとで他の環境で Open File ボタンから読み込ませ
ることができます。実機器構成が異なれば機器の割り当ても異なってくるので、実行時
にはまた機器の対応を指定する必要があります。
第二章
ブロックリファレンスとサンプルコード
さて、第一章ではいきなりエアコンの電源を操作してみました。本章ではそこで使
わなかったブロックも含め、Kadeckly に入っている様々なブロックの説明を行います。
とは言え以下イメージしやすくするため、一章で作ったサンプル画面をもう一度見てみ
ましょう。
機器ブロック
上の方にある4枚の黄緑色のブロックは機器ブロックと言って、今回の例では最初
に指定した照明とエアコンを表現するブロックになります。
入力用と出力用に2枚づつあり、微妙に形状と色合いが違うことに注意してくださ
い。(上段が出力用、下段が入力用)
それぞれ No.1 と書かれており、1 の部分がドロップダウンになっています。これは、
最初に複数存在すると設定した機器(一章の例では照明が2つあることとしていました)
に、それらを区別するためのものです。GeneralLighting の方は1台目か2台目かを選
べますが、HomeAirConditioner は1つしかないことにしていたので今回は選択の余地
はありません。
その右にある「電源」というドロップダウンリストは、機器が持つ個別の「機能(プ
ロパティ)」を表しています。
ECHONET Lite ではこの「機能」を EPC という数値で表していますが、これでは
わかりづらいので名前で特定できるようにしているわけです。と言っても ECHONET
Lite で規格化されている機能は膨大であり、現在の Kadeckly では主要な機器の主要な
プロパティのみ名前で表示されるようになっています。ここに望みの名前がない場合は
Others を選び、新しく表れるテキスト領域に EPC を直接数値で指定しなければなりま
せん。
EPC については ECHONET Lite の規格書から「APPENDIX ECHONET 機器オ
ブジェクト詳細規定」を参照してください。
ECHONET Lite 定数ブロック
紫のブロックは ECHONET Lite ブロックというもので、ECHONET Lite 対応機
器ブロックを使いやすくするためのものです。現在の例では4種類のブロックが表示さ
れています。最初の二つ「エアコン設定値」「一般照明設定値」と表示されているブロ
ックは、「定数ブロック」と呼び、機器特有の(ここではエアコンと一般照明)の機能
について、定数値を出力するためのものです。
ECHONET Lite では機器の「機能」を EPC という数値で表していると述べました
が、そこに設定されている「値」の方も EDT という数値の配列で特定するのであまり
わかりやすくありません。よく使うものだけはこのブロックに定義されているので簡単
に名前で扱えるようにしているわけです。
結果として、照明の2番とエアコン(の1番)の電源を ON にする、というプログ
ラムは次のようになります。
ECHONET Lite 値変換ブロック
今回の例において、紫の残りの2枚のブロックは、ECHONET Lite の値全般につ
いて扱いやすくするためのものです。Kadeckly では、やりとりされる情報は内部的に
8ビットの数値の配列を文字列化したものになっています。この値を直接指定して作り
出すのが次のブロックです。
このブロックは、主に先程の「エアコン設定値」のような ECHONET Lite 定数ブ
ロックに所望の値が含まれていないときに用います。例えば、フルカラー照明に色を付
けたいとき、その色を指定する値ブロックは現状では存在しません。所望の色を表す配
列を自分で作る必要があります。赤い色は RGB で[255,0,0]と表せるので、次のように
書けば「赤」を表す ECHONET Lite の値を作ることができます。値は 10 進数または
0x を頭につけた 16 進数をカンマ区切りで並べることで指定してください。
なお、これを受け取る側である照明の方も、色の設定対象となるような名前付きの
「機能」はまだありませんので、機能を others に設定の上、値を 16 進数で直接指定し
ます。色を指定する機能に対応する EPC は 0xC0 です。結局フルカラー照明の色を赤
に設定するプログラムは次のようになります。
さて、先程 ECHONET Lite の情報は配列を文字列化したものだと述べました。こ
の情報をまとめて一つの整数値に変換して出力するのが2枚目のブロックです。
これは、配列をまとめて一つの値にして出力します。配列は上の桁から先に並ぶ、
ビッグエンディアンだと解釈されます。例えば以下のプログラムは 0xFF0000 すなわち
10進数で 16711680 を表示します。(「表示します」パネルは alert を呼び出します
Wait ブロック
赤茶色の Wait ブロックは機器操作コマンドの間に待ち時間を挿入するというもの
です。例えば、以下のプログラムは 3.5 秒間だけ照明を ON にするというプログラムに
なります。(ブロックを縦に並べると順々に実行されます)
Wait ブロックはその中に含まれるコマンドを遅らせることができますが、外側では
遅延は発生しないので、次の例ではまず「1」「3」が表示された後、しばらくしてか
ら2が表示されることになります。
また、待ち時間の設定は 1ms 単位で(つまり 0.001 秒単位で)行うことができます
が、あまり厳密に実行されるものでもないことにもご了承ください。これはメッセージ
送信が、一般には時間がかかる機器との送受信と歩調を合わせながら行われるためです。
条件ブロック
条件も設定することができます。例えばエアコンのモードが冷房のときは温度を
28℃に、暖房の時は 18℃にするプログラムを書いてみます。これには、「もし~して
ください」というブロックと、真ん中に=が書かれた比較用のブロックを用います。
これを使うと、さきのプログラムはこのように実現されます。
このように、「もし~してください」というブロックは、条件を入力とし、それが
満たされているときは「してください」の右側を実行します。上のまとまりは、冷房の
時に 28℃設定とするもので、下のまとまりは暖房の時に 18℃設定にするというもので
す。
天気ブロック
Kadeckly の画面右上のブロックのうち、「Set
Location」というボタンを押すと、Kadeckly はブ
ラウザから緯度経度の情報を取得し、
OpenWeatherMap という API を用いて宅外環境
情報を取得するようになります。この機能を実現す
るのは Weather というブロックです。位置情報を
取得したときのみ現れます。出力専用です。
これを使うと、暑いときに自動的にエアコンを
つけるようなプログラムを書くことができます。
このように、順々にメッセージを送りますが、白物家電機器のネットワーク機能は
比較的非力なことが多いので、このようにコマンドを続けて送る場合は、途中に Wait
を挟んだ方がよいかもしれません。
Twitter ブロック
Login Twitter ボタンを押すと、Twitter
のログイン画面が出ます。ログインすると、
Twitter ブロックが出現します。
これは、ログインしたアカウントでダイレ
クトメッセージを受け取ると、その中に設定
した文字列が入っていたらトリガーを出すと
いうものです。これをつかうと、例えば宅外
にいて、Twitter に DM を送ることで照明と
エアコンをコントロールするようなことがで
きます。
以下は、「つけて」という言葉が含まれるメッセージを受信すると照明とエアコン
が ON になり、
「けして」というメッセージが来ると両方 OFF になるというものです。
Google Calendar ブロック
Login GCalendar ボタンを押すと、
Google のログイン画面が出ます。ログイン
すると、カレンダー用のブロックが現れます。
このカレンダーブロックは、指定した
Google カレンダーの予定情報を取得し、実
行時間になった時にその予定のタイトルに
特定の文字列が含まれていたらトリガーを
出すというブロックです。
これを用いることで、例えば目覚ましプ
ログラムを簡単に書くことができます。
以下の例は、
「スケジュール/WorkLog」
という名前のカレンダーに「起きる」という
文字列が含まれたスケジュールがあり、Kadeckly の実行中にその時間になったとする
と、照明とエアコンを ON にするというプログラムになります。
サンプルプログラム集
ここまでの知識で様々なプログラムを作成できますが、使っているうちにいろいろと疑
問点も出てくるかもしれません。ここではちょっとトリッキーな例も含めて、様々な使
い方をお見せしたいと思います。
○エアコンをつけると照明も自動的につき、エアコンを消すと照明も自動的に消えると
いうものです。照明の電源とエアコンの電源の形式が、実は同じであることを利用して
います。
○鍵が閉まったらブラインドを閉める
※実際には鍵はほとんど常に施錠されているので、実用性は低いかもしれません。条件
はなにがしか他の、在宅状況を示す値がよいかと思われます。
○気温が 28℃を超えたら 28℃設定で冷房をつける
※温度は 0.1℃単位の整数なので、そのまま整数にすると 28℃=280 となります。
※コマンドを続けて送る場合は、途中に Wait を挟んだ方がよい場合もあります。
第三章
自分の Web サーバへのインストール方法
本章では Kadeckly を新たな Web サーバにインストールするときに必要な設定につ
いて解説します。主に外部 WebAPI ブロックの API キー設定が必要になります。これ
らは API 提供者の都合によりいつでも変更の可能性があります。
Web サーバへのファイルの展開
まず、Kadeckly.zip をどこかの Web サーバの htdocs (Apache の場合)に展開しま
す。これを http アクセスした場合の URL を、ここでは仮に、
http://tinpu.info/VisualKadecot/とします。(tinpu.info は今は存在しないテスト用のサ
ーバであり、VisualKadecot とは Kadeckly / KAIT-4S -Canvas- の開発中コードネー
ムです)
Twitter ブロックの設定
Kadeckly から Twitter 機能を使うには、Twitter アプリの登録と、そのキー情報を
Kadeckly のファイル内に張り付けることが必要です。
それには、まず https://dev.twitter.com にアクセスしてください。右上の Sign in
からログインします。(アカウントがなければ作ってください)
そしてまた元の画面に戻ってください。右下の方に Manage Your Apps というリン
クがあるのでクリックします。
アプリ一覧が出るので、右上の「Create New App」をクリックします。(図の中
にある Moekaden Ogiri DB updater というのは他のアプリなので気にしないでくださ
い)
アプリの情報を入力する画面が出るので、http://tinpu.info/VisualKadecot をベー
スに埋めていってください。
重要なのは Callback URL なので、ここには必ずアプリの URL
http://tinpu.info/VisualKadecot/index.html
と入れて下さい。入れ終わったらページ一番下の Yes, I agree にチェックを入れて
一番下の「Create your Twitter application」ボタンを押してください。
次に出る画面で、このアプリの権限を拡大しておく必要があります(ダイレクトメ
ッセージを読み取るため)。Application Settings ⇒ Access Level から、modify app
permission を押します。
「Access」
を
「Read, Write and Access direct messages」
を選び、
ページ下の Update
Settings をクリックしてください。次に、Keys and Access Tokens のタブをクリック
します。
ここに表示される Consumer Key と Consumer Secret が重要です。
これを、先程 http://tinpu.info/VisualKadecot の下に展開したファイルのうち、
/settings.php の中に書き込みます。
<?php
$twitter_consumer_key = '[Please input your twitter consumer key]';
$twitter_consumer_secret = '[Please input your twitter consumer secret]';
?>
の文字列をキー文字列に書き換えてください。(角括弧も消してください)
これで Twitter の設定は終了です。
ブラウザで開いている Kadeckly の「Login Twitter」ボタンを押したときに、一章
で説明したような Twitter へのログイン画面が出て、Kadeckly に戻ってきたときに
Twitter ブロックが出現するかどうかご確認ください。
Google Calendar ブロックの設定
まず、https://code.google.com/apis/console/にアクセスします。
お手持ちの Google アカウント
でログインします。
すると、このような画面になる
ので、左の APIs&auth から APIs
を選びます。
どの API を ON にするか設定す
る画面になるので、Calendar API
を探して ON にします。
選ばれたものは画面の上の方
に移動します。
次は、キーを生成します。左
のメニューから APIs & auth⇒
Credentials を選ぶと、Public
API access のところに API KEY
が表示されているので、これをど
こかにコピーしておきます。
次に、アプリの登録を行いま
す。
画面上の方の Create new
Client ID をクリックすると、確
認が出るので、”Configure
consent screen”を押します。
アプリの URL
http://tinpu.info/VisualKade
cot/index.html をベースに適当に
埋めていきます。
ページ一番下の「Save」を押
します。
すると、Client ID の発行のため
の情報を入力する画面になります。
上のラジオボタンは「Web
application」、AUTHORIZED
JAVASCRIPT ORIGINS は
「http://tinpu.info」、
AUTHORIZED REDIRECT URLS
は
「http://tinpu.info/VisualKadecot/i
ndex.html」としてください。
最後にページ下の Create
Client ID ボタンを押します。する
と、Client ID が生成されます。
この Client ID と、先程の API
KEY は、Web 上の Kadeckly 内の
settings.js の中に書き込みます。こ
の2つの変数の値をキーの値にし
てください。
var google_apikey = '[Please input the registered api key for your app.]' ;
var google_client_id = '[Please input the registered client id for your app.]' ;
これで設定は完了です。
天気ブロックの設定
天気ブロックを動作させるのには特別なにもする必要はありません。
OpenWeatherMap というオープンな天気 API にアクセスして動作します。
Appendix
Kadeckly で使っているオープンソース
Kadeckly では、以下のオープンソース成果物を利用しています。
Blockly
Blockly は、Apache License, Version 2.0 のライセンスで配布されています。
Blockly は以下のサイトから入手できます。
https://developers.google.com/blockly/
ただし、Kadeckly では、オリジナルの Blockly の msg/js/ja.js の 338 行目に以下の変更を加
えています。
オリジナル: Blockly.Msg.TEXT_PRINT_TITLE = "%1 を印刷します。";
変更後:
Blockly.Msg.TEXT_PRINT_TITLE = "%1 を表示します。";
License
Apache License
Version 2.0, January 2011
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of
this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under
common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code,
documentation source, and configuration files.
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated
by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and
for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of
authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link
(or bind by name) to the interfaces of, the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or
additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the
copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this
definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives,
including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that
are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by
Licensor and subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a
perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a
perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make,
have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims
licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their
Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity
(including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work
constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work
shall terminate as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or
without modifications, and in Source or Object form, provided that You meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative
Works; and
(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to
any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the
Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display
generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are
for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works
that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution
notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and
conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your
use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in
the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have
executed with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of
the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content
of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this
License.
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work
stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been
advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to
offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with
this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on
behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
jQuery/jQuery UI
jQuery / jQuery UI は MIT ライセンスで以下のサイトから配布されています。
http://jquery.com/
http://jqueryui.com/
License
Copyright 2005, 2014 jQuery Foundation and other contributors,
https://jquery.org/
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/jquery/jquery
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
All files located in the node_modules and external directories are externally maintained libraries used by this software which
have their own licenses; we recommend you read them, as their terms may differ from the terms above.
TwitterOAuth
TwitterOAuth は Abraham Williams によって開発されている php のソフトウェア
成果物です。MIT ライセンスと同文です。こちらからダウンロードできます。
https://github.com/abraham/twitteroauth
License
Copyright (c) 2009 Abraham Williams - http://abrah.am - [email protected]
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Fly UP