Comments
Description
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.