Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

TwitterとWikiを使った自動情報提示システム

894 views

Published on

Wiki に書いたスクリプトに従って, 自動的に Twitter で tweet する情報提示システムと, その開発と利用例について述べる. ここで, 実際にtweet するホストと スクリプトが書かれている Wiki のサーバのホストとは独立している. このシステムを使って着る電光掲示板を拡張し, それを使って, フルマラソンのスタートからゴールまで, 周りの参加者や沿道の観衆にメッセージを送り続けることができた. このシステムを拡張し, インターネット上の応用システムの障害対策や, ハードウェアやソフトウェアの更新等によるダウンタイムの低減に役立てることについても検討を行う.

A system which tweets messages automatically, is shown. The system is a kind of bot networks, bots of which are controlled by commands on a wiki page, according to the script in the wiki page. We have constructed a wearable LED matrix sign which tweets automatically, using this system, and we have applied this to a public relations in a full marathon race. We also consider to use the structure of this system to enhance the resilience of application systems.

Published in: Technology
  • Be the first to comment

TwitterとWikiを使った自動情報提示システム

  1. 1. TwitterとWikiを使った 自動情報提示システム 山之上卓 福山大学 IPSJ IOT32 (平成27年度第4回) 研究会, 3/3, 2016
  2. 2. 内容 • はじめに • システムの概要と利用例 • Botの詳細 • 可用性向上のためのシステムの拡張 • 関連研究 • おわりに
  3. 3. 1. はじめに • 昨年のIOT28
  4. 4. 1. はじめに 昨年の発表 • 電光掲示板 – その設置については, 設置場所の確保, 電源の確保, 掲載内容の 設定, 内容の保守・管理などの問題 • もし, - 人に, 常時電源供給の必要がない電光掲示板を装着 - 掲示内容を無線ネットワーク経由で柔軟に追加・変更 嬉しい!
  5. 5. 1. はじめに 昨年の発表 • 人が電光掲示板になることによって – 従来はその設置が非常に困難であった人ごみの中への掲示板の 設置, – 人と一緒に移動する掲示板の設置, – 森林の奥深くや山頂, 崖, 海中など, 人でないとそこに到達すること が困難な場所への掲示板の設置などが可能.
  6. 6. 1. はじめに 昨年の発表 • 重大な災害発生時 従来電光掲示板の設置が困難であったこれらの場所 電光掲示板が設置 - いままで困難であった被災者への情報伝達が簡単に - 人の歩く速度で移動することができるので, 避難誘導などに役立つ可能性.
  7. 7. 1. はじめに 昨年の発表 5. 利用例 • 5.1 歩く広告 • 5.2 マラソン大会走者用案内表示 – 参加者と一緒に走る案内表示 • 5.3 緊急避難誘導 – 情報を表示しながら避難誘導 • 5.4 災害避難所での掲示 – いつでもどこでも掲示。Twitterと連携しているので、迷子呼び出し のような使い方もできる。
  8. 8. 1. はじめに • 2016 1/10 実際にフルマラソン で使ってみました。
  9. 9. • 誰も tweet してくれなかったら寂しい。 • いつ、なにをtweet するか? 設定で自動的にやりたい。 • いつでもどこでも設定変更したい。 • Wiki (と Bot) を使った自動 tweet.
  10. 10. 2. システム概要と利用例
  11. 11. 2. システム概要と利用例
  12. 12. 2. システム概要と利用例
  13. 13. 2. システム概要と利用例 • command: <コマンド> コマンド行 • exit コマンド … exit. • #で始まる行はコメント
  14. 14. 2. システム概要と利用例 • command: tweet "#IOT32dn TwitterとWikiを使った自動情報 提示システム - <hour>:<min>." when "*,3,3,13,1,0" • 毎年, 3月3日 13:01 に、 “#IOT32dn TwitterとWikiを使った自動情報提示システム - 時間:分.” を tweet する。
  15. 15. 2. システム概要と利用例 • もちろん, 普通につぶやいても、つぶやきが ぶつからなければ、表示されます。 • #iot32dn で「短く」つぶやいてみてください。
  16. 16. 2. システム概要と利用例 • 菜の花マラソンのときの tweet
  17. 17. • 着る電光掲示板 がtweetした 現在位置
  18. 18. 3. Botの詳細 • Java • Factory Method パターン • Apache Httpclient • Twitter4j • Raspberry Pi
  19. 19. 4. 可用性向上のための システム拡張 • 本システム – Bot net の C&Cサーバに相当するWikiサーバが停止しても, Bot そのものは動作を継続可能 – もし Bot が複数いた場合, Bot の1台が停止しても別のBotが動作 を継続可能 • この性質を使って, システムの可用性能力向上?
  20. 20. 4. 可用性向上のためのシステムの拡張 4.1 前提 • Bot は – 定期的に Wiki サーバのスクリプトとデータを読込み – 一定時間内にスクリプトの実行を終了 – 定期的に実行結果やBotの活動状況を Wikiサーバに書込み – それぞれを識別できるIDを持つ.
  21. 21. 4. 可用性向上のためのシステムの拡張 4.2 オブジェクト指向言語の継承の利用 • 従来のWiki Script から Class と Object を分離 • 継承を利用 • 無駄な記述の削減
  22. 22. 4. 可用性向上のためのシステムの拡張 4.3 Classページの failover • Objectページで include <class-page-1> or <class-page-2>
  23. 23. 4. 可用性向上のためのシステムの拡張 4.4 Ojectページの failover • objectPage <url1> or <url2>
  24. 24. 4. 可用性向上のためのシステムの拡張 4.4 Ojectページの failover • device dv1 or dv2 start after no write for 10 min.
  25. 25. 4. 可用性向上のためのシステムの拡張 4.6 システム更新への応用 • このシステムそのものの更新 • 運用停止時間をできるだけ短く • Primary の Class ページ実行中 Secondary のClassページを入替 強制的に Primary のClassの サーバを停止 Classページのサーバのfailover Primary のClassページを更新 • Objectページでも同様
  26. 26. 4. 可用性向上のためのシステムの拡張 (4.7 例…Dynamic Programming) • Minimal Path • (Backupも含めて)2枚のWikiページを1node に割り当て • (Backupも含めて)2つのBotで1nodeの計算を担当 • 並列計算 (条件が良ければ) N node の場合, O(𝑁 1 2)の時間で計算終了
  27. 27. • 各ノードの記載内容。バックアップは同じ内容。 – objectPage <url1> or <url2> device <dev1> or <dev2> start after no write for 10 min. command: set readInterval=100000 //100秒 command: set sendInterval=0 command: program dp include <url1> or <url2> // class の継承 command: end dp command: run dp 4. 可用性向上のためのシステムの拡張 (4.7 例…Dynamic Programming)
  28. 28. control: currentDevice=<dev>, Date=<date> result: kind=“nodeInfo”, nodeName=<name>, startNode=“”, val=<val>, path=“…” //自ノードの情報 kind=“preNode”, No=1, url=<url>, url2=<url2>, arcVal=x, val=y, path=“” … kind=“preNode”, No=n, url=<url>, url2=<url2>, arcVal=x, val=y, path=“” 4. 可用性向上のためのシステムの拡張 (4.7 例…Dynamic Programming)
  29. 29. node-1 objectPage http://www.yama-lab.org/dp-1/index.php?node-1 or http://www.yama-lab2.org/dp-1/index.php?node-1 device yamaRasPiDp1_1 or yamaRasPiDp1_2 start after no write for 10 min. command: set readInterval=60000 command: set sendInterval=0 command: program dp include http://www.yama-lab.org/dp-1/index.php?DpClass1 or http://www.yama-lab2.org/dp-1/index.php?DpClass1 command: end dp command: run dp control: currentDevice="yamaRasPiDp1_1", Date=2016/2/20/ 12:12:12 result: kind="nodeInfo",nodeName="node-0",startNode="node-1", selectedNode="", val=0, path="node-1" 1 2 3 4 6 5 7 8 9 5 7 3 8 5 2 5 3 10 3 4 Start Goal 4. 可用性向上のためのシステムの拡張 (4.7 例…Dynamic Programming)
  30. 30. node-6 objectPage device control: … Result: kind="nodeInfo",nodeName="node-6", startNode="node-1",selectedNode="",val=0, path="", kind="preNode", No=1, url="http://www.yama-lab.org/dp-1/index.php?node- 5",url2="http://www.yama-lab2.org/dp-1/index.php?node-5",arcVal=5,val="", path="" kind="preNode", No=2,url="http://www.yama-lab.org/dp-1/index.php?node- 3",url2="http://www.yama-lab2.org/dp-1/index.php?node-3",arcVal=3,val="", path="" 1 2 3 4 6 5 7 8 9 5 7 3 8 5 2 5 3 10 3 4 Start Goal 4. 可用性向上のためのシステムの拡張 (4.7 例…Dynamic Programming)
  31. 31. • kind="nodeInfo",nodeName="node-6", startNode="node-1", selectedNode="",val=0, path="", • kind="preNode", No=1, url="",url2="", arcVal=5,val="", path="" • kind="preNode", No=2,url="",url2="", arcVal=3,val="", path="" 1 2 3 4 6 5 7 8 9 5 7 3 8 5 2 5 3 10 3 4 Start Goal 4. 可用性向上のためのシステムの拡張 (4.7 例…Dynamic Programming)
  32. 32. • Class の処理 – preNode のすべてについて • val <- arcVal と url/url2のnodeInfo の val の合計 • path <- url/url2のnodeInfo の path – val が最も小さな preNode を選択, nodeInfo を更新 • selectedNode <- 選択したpreNodeのNo • val <- 選択したpreNodeの val • path <- 選択した preNodeの path + “ - ” + 自ノード名 4. 可用性向上のためのシステムの拡張 (4.7 例…Dynamic Programming)
  33. 33. • O(𝑁 1 2)の時間経過後 –goal の web の nodeInfoのpath に最小経路表示 –goal の web の val に最小値 4. 可用性向上のためのシステムの拡張 (4.7 例…Dynamic Programming)
  34. 34. • node-9 • 計算前 kind="nodeInfo",nodeName="node-9", startNode="node-1", selectedNode="", val=0, path="" • 解が求まった後 kind="nodeInfo",nodeName="node-9", startNode="node-1", selectedNode=2, val=17, path="node-1 - node-3 - node-6 - node-8 - node-9" 4. 可用性向上のためのシステムの拡張 (4.7 例…Dynamic Programming)
  35. 35. • ごめんなさい。可用性向上の部分についてはまだコーディン グ中です。でもできる自信はあります。 4. 可用性向上のためのシステムの拡張 (4.7 例…Dynamic Programming)
  36. 36. 5. 関連研究 • 5.1 京都女子大における卒論提出期限の自動 tweet • 5.2 Twittbot, AutoTweet!, twiRobo • 5.3 VRRP • (5.4) Dynamic Programming の並列処理の研究 – 「動的計画法の並列計算」情報処理学会論文誌 Vol.26, No.5, 1985 – 「動的計画法に基づく資源配分並列アルゴリズム」電子情報通信学 会論文誌 D,情報・システム 71(4), 1988 • (5.5) SETI@HOME
  37. 37. 6. おわりに • WikiとBotで, 自動的にtwitter で tweet • 「twitter と連携した着る電光掲示板」を組み合わせてフルマ ラソンで実証 • 可用性強化への応用を検討 – まだコーディング中 – 並列動的計画法計算への応用も • セキュリティについての検討も必要

×