SlideShare uma empresa Scribd logo
1 de 51
hubotで快適BOT生活
 hubotの導入とIRCでの活用方法のまとめ

                 miff
                 http://blog.fumiz.me/
最初に

       前半でhubot自体の説明をしていますが、


        そんなのわかっているという方は、


後半でIRCとの連携方法や基本的なコマンドの書き方を説明しているので


            そこだけ見て下さい
目次
第一章 hubotとは何か

第二章 hubotのインストールと起動

第三章 hubotとIRCの接続

第四章 スクリプトの書き方

第五章 具体的なスクリプトの例

おまけ noticeでメッセージを送る

最後に
第一章
hubotとは何か
hubotとは

github社が作ったBOTのフレームワーク



           http://hubot.github.com/
BOTとは

    呼びかけに反応する

    定型文を定期的に発言する

    単体テストの失敗を通知する

    今日の天気を調べる




   IRCなどの上でこういった定形処理を
 人に代わって行なってくれるソフトウェアです
BOTのフレームワーク
 対象サービスごとに様々なフレームワークが存在します
                      IRCなら……
IRCbot console http://www.enjoyxstudy.com/ircbotconsole/
                   http://search.cpan.org/~yappo/App-
   ikachan              Ikachan-0.02/bin/ikachan

   phenny             http://inamidst.com/phenny/



    とにかく沢山あります。それらと比べてhubotは?
BOTのフレームワーク
  サービス      BOTフレームワーク     コマンド

                         呼びかけに反応する
  Twitter     twittbot
                          定期的につぶやく


                          テストの結果を表示
              ikachan
                          今日の天気を表示
  IRC

プラットフォームごとに様々なBOT作成フレームワークがあります


                         twittbot http://twittbot.net/
BOTのフレームワーク
   サービス       BOTフレームワーク       コマンド

                              呼びかけに反応する
    Twitter     twittbot
                              定期的につぶやく


                              テストの結果を表示
                 ikachan
                              今日の天気を表示
    IRC

例えばtwittbotはTwitterと結合しているのでIRCのBOTは作れません
BOTのフレームワーク
  サービス      BOTフレームワーク    コマンド

                         呼びかけに反応する
  Twitter     twittbot
                         定期的につぶやく


                         テストの結果を表示
              ikachan
                         今日の天気を表示
   IRC

 それぞれのフレームワークは別の仕組みで動いているので、
一方に向けて作ったコマンドをもう一方で動かすこともできません
hubotを使うとどうなるか
サービス          Adapter           Scripts

                              呼びかけに反応する
          hubot-twitter   h
Twitter                   u   定期的につぶやく
                          b
                          o
                              テストの結果を表示
            hubot-irc     t
                              今日の天気を表示
IRC

プラットフォームとの接続部分とコマンドを本体から切り離す

 ことで多くのプラットフォームに対応可能となっています
多様なサービスに対応
          IRC

          Twitter

          Google Talk

          Skype


    加えて、新しいAdapterを作るのも簡単です
hubotは



 自由に拡張できる
 簡単に使える

 色々なサービスに対応可能
          そんなBOTのフレームワークです
第二章
hubotのインストールと起動
公式サイトを見ても
使い方がよくわからない
簡単に動かす方法を説明します、が

     hubotの動作には、次の3点が必要です

  Node.js
  CoffeeScript
  Redis
                           カンタン
インストール方法はWebで
            http://blog.fumiz.me/2012/07/26/hubot-irc-bot/
手順1 インストール
どこかのディレクトリにpackage.jsonを作る
{
    "name": "hubot-sample",
    "version": "0.0.1",
    "dependencies": {
      "hubot": "2.3.0"
    }
}


必要なモジュールをインストールする
% npm install
ディレクトリ構成はこんな感じになっている筈
% tree -L 2
.
¦-- node_modules
¦ `-- hubot
`-- package.json
手順2 実行
hubotコマンドを叩く
% node_modules/hubot/bin/hubot




すると……
www12395ue:miff% node_modules/hubot/bin/hubot
path.exists is now called `fs.exists`.
Hubot>


                         無事、動きました
しかし、このままではコマンドを使えません
www12395ue:miff% node_modules/hubot/bin/hubot
path.exists is now called `fs.exists`.
Hubot> hubot ping
Hubot> hubot help
Hubot> hubot die
Hubot> ( ゚д゚ )
手順3 コマンドを入れる
本体同梱のコマンドをカレントディレクトリにコピー
cp -R node_modules/hubot/src/scripts ./


今度こそ動きました
www12395ue:miff% node_modules/hubot/bin/hubot
path.exists is now called `fs.exists`.
Hubot> hubot ping
Hubot> PONG
Hubot> hubot die
Hubot> Goodbye, cruel world.
Hubot> %
% tree -L 2
.
¦-- node_modules
¦ `-- hubot
¦-- package.json
`-- scripts
    ¦-- google-images.coffee
    ¦-- help.coffee
    ¦-- httpd.coffee
    ¦-- maps.coffee
    ¦-- math.coffee
    ¦-- ping.coffee
    ¦-- pugme.coffee
    ¦-- roles.coffee
    ¦-- rules.coffee
    ¦-- storage.coffee
    ¦-- translate.coffee
    `-- youtube.coffee


  実行時のカレントディレクトリ下にあるscriptsディレクトリに
           入っているスクリプトが起動時に実行される仕組み
TIPS
起動時にこういうエラーが出る時はポートが既に使われています
Hubot> [Wed Aug 01 2012 02:18:37 GMT+0900 (JST)] ERROR Error: listen
EADDRINUSE

使ってないポート番号を指定することで回避できます
% export PORT=9999




           hubotでは、設定を環境変数で指定します
第三章
hubotとIRCの接続
プラットフォーム        Adapter           Scripts

                                呼びかけに反応する
            hubot-twitter   h
  Twitter                   u   定期的につぶやく
                            b
                            o
                                テストの結果を表示
              hubot-irc     t
                                今日の天気を表示
  IRC


   素の状態にAdapterを追加することでIRCに接続できます
hubotとhubot-irc、サンプルスクリプトを
   まとめたパッケージを作りました




  https://github.com/fumiz/hubot-ircbot-example
1. インストール


  パッケージをダウンロードしてモジュールをインストール
% git clone git://github.com/fumiz/hubot-ircbot-example.git
% cd hubot-ircbot-example
% npm install
2. 設定

同梱のrunhubot.shを編集してIRC接続用の設定を書きます




                            BOTの呼び名
3. 実行
% ./runhubot.sh




                  無事、IRCに接続できました
第四章
スクリプトの書き方
JavaScriptでもOK

scriptsディレクトリ下に.jsか.coffeeを置く
基本的な書き方
hello.coffee
 module.exports = (robot) ->
  robot.respond /who are you/i, (msg) ->
   msg.send "I'm hubot!"


  robot.hear /HELLO$/i, (msg) ->
   msg.send "hello!"


  robot.respond /who am I/i, (msg) ->
   msg.send "You are #{msg.message.user.name}"


  robot.respond /what is this (.*)/i, (msg) ->
   msg.send "This is #{msg.match[1]}"
respondとhear

robot.respond /who are you/i, (msg) ->
 msg.send "I'm hubot!"


robot.hear /HELLO$/i, (msg) ->
 msg.send "hello!"




                respond「呼ばれて答える」

                hear「チャンネル上の発言に反応する」
msgオブジェクト

robot.respond /who am I/i, (msg) ->
 msg.send "You are #{msg.message.user.name}"




  msgオブジェクトには、関数が呼び出された時の発言に関する
                        情報が入っています

    msg.send関数によって発言が行われたチャンネルに対して
                BOTに発言させることができます
正規表現とキャプチャ

robot.respond /what is this (.*)/i, (msg) ->
 msg.send "This is #{msg.match[1]}"




   第一引数に渡す正規表現にマッチした発言が行われた場合に
                  第二引数に渡す関数が実行されます

   正規表現でキャプチャした文字列は、msgオブジェクトから
                                取り出せます
基本的な書き方については以上です


後はnode.jsの豊富なライブラリを組み合わせることで、


 大抵の処理をBOTに行わせることができる筈です
第五章
具体的なスクリプトの例
ここで紹介するサンプルは、hubot+hubot-irc導入パッケージの
      scriptsディレクトリに入っています
    https://github.com/fumiz/hubot-ircbot-example




  cron.coffeeのみ、メッセージの送信先チャンネルを

      手動で設定する必要があるので注意です
定期実行 cron
cron. coffee
 cronJob = require('cron').CronJob


 module.exports = (robot) ->
  send = (room, msg) ->
   response = new robot.Response(robot, {user : {id : -1, name : room}, text : "none", done : false}, [])
   response.send msg


  # *(sec) *(min) *(hour) *(day) *(month) *(day of the week)
  new cronJob('0 0 * * * *', () ->
    currentTime = new Date
    send '#your-channel-name', "current time is #{new Date().currentTime.getHours()}:00."
  ).start()


       cronモジュールを使うことで処理の定期実行が可能です

       処理タイミングの指定方法は、通常のcronと同じです
              cronモジュール https://github.com/ncb000gt/node-cron/
                    参考 http://d.hatena.ne.jp/anatoo/20120204/1328368042
WEB API http
twitter. coffee
 module.exports = (robot) ->
  robot.respond /twitter (.*)/i, (msg) ->
   keyword = encodeURIComponent msg.match[1]
   request = msg.http('http://search.twitter.com/search.json')
                   .query(q: keyword)
                   .get()
   request (err, res, body) ->
    json = JSON.parse body
    msg.send json.results[0].text if json.results.length > 0


   msgオブジェクトのhttpメソッドを使うとHTTP通信できます

   bodyに取得結果のテキストが入っているのでそのまま使えます
                                                      ※)ただし、レスポンスがUTF-8の場合に限る
 httpで取得できるオブジェクトの実体
 https://github.com/technoweenie/node-scoped-http-client
                                         例で検索に引っかかったツイート         https://twitter.com/deep_hoge/status/231719844532350977
スクレイピング request
title. coffee
request = require 'request'
cheerio = require 'cheerio'


module.exports = (robot) ->
 robot.respond /title (.*)/i, (msg) ->
  url = msg.match[1]
  options =
    url: url
    timeout: 2000
    headers: {'user-agent': 'node title fetcher'}


  request options, (error, response, body) ->
    $ = cheerio.load body
    title = $('title').text().replace(/n/g, '')
    msg.send(title)

  msg.httpよりも高性能なrequestを使う方がリダイレクト時の処
 理などが入っており実用的
     cheerioを使うとjQueryと同じ感覚で要素を取得でき便利
     デフォルトではUTF-8しか処理できない
色んなエンコーディングも読むなら→ http://blog.fumiz.me/2012/07/28/node-js-scraping-with-multibyte-characters/
記憶 robot.brain
plus.coffee
module.exports = (robot) ->
 robot.hear /^(.+)++$/i, (msg) ->
  user = msg.match[1]


  if not robot.brain.data[user]
    robot.brain.data[user] = 0


  robot.brain.data[user]++
  robot.brain.save()


  msg.send robot.brain.data[user]


 robot.brain.dataにデータを保存しておけます
 robot.brain.saveで保存したデータを永続化できる筈が、できま
せんでした今のところ原因は不明です
HTTPD
module.exports = (robot) ->
 robot.router.get "/version", (req, res) ->
  res.end robot.version



  robot.routerを使うことでhttp経由での呼び出しを受付可能

  ブラウザや他のツールと組み合わせることで色々できそう




    hubot本体同梱のサンプル
                 https://github.com/github/hubot/blob/master/src/scripts/httpd.coffee
もっと沢山のサンプルが、hubot-scriptsにはあります
   https://github.com/github/hubot-scripts
おまけ
標準のhubot/hubot-ircでは、

   BOTにnoticeで発言させることができません。

しかし、BOTにnoticeで発言させたいこともありますよね?
というわけで
BOTにnoticeで発言させたければ、自分でパッチを当てましょう
   https://github.com/fumiz/hubot-irc/commit/
   a70f95bf0b784b2f402d86dc87258938fed38926



              module.exports = (robot) ->
               robot.hear /hi$/i, (msg) ->
                msg.notice "hi"
最後に
hubotはBOTのフレームワークであり、


   hubot-ircを併用することでIRCのBOTとして活用できます。


BOTとしての動作はJavaScriptもしくはCoffeeScriptで簡単に拡張でき

Node.jsの持つ豊富なモジュール群を活用して仕事を効率化できます。
参考文献
        hubot本家             http://hubot.github.com/


         hubot-irc          https://github.com/nandub/hubot-irc/


github社製ボットフレームワーク、hubotを
                            http://d.hatena.ne.jp/anatoo/20120204/1328368042
 IRCボットとして導入した話(修正あり




  hubot irc を使うHow To       http://qiita.com/items/c117b64ac3f7aeab3389

hubotを使ってircのルームに           http://chobie.hatenablog.com/entry/
     しゃべらせてみる               2012/02/26/125532

                            http://theprogrammingbutler.com/blog/archives/
  hubot Scripts Explained
                            2011/10/28/hubot-scripts-explained/
以上で、本スライドは終了です。

知りたいことは書いてあったでしょうか?

読んで頂きありがとうございました。

あなたが良いBOTライフを送ることを祈ります。

Mais conteúdo relacionado

Mais procurados

ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方Yosuke Furukawa
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Yasutaka Kawamoto
 
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門infinite_loop
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景Ryunosuke SATO
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of PythonTakanori Suzuki
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門to_ueda
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎真哉 杉野
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようKenji NAKAGAKI
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティAtsuo Ishimoto
 
Touhou Project on JavaScript
Touhou Project on JavaScriptTouhou Project on JavaScript
Touhou Project on JavaScriptsairoutine
 
Goodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxGoodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxKouhei Maeda
 
Ruby way-openstack.keynote
Ruby way-openstack.keynoteRuby way-openstack.keynote
Ruby way-openstack.keynoteUchio Kondo
 
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をするChef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をするHidetoshi Ochiai
 
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツールaoshiman
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会Tetsuya Morimoto
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpYoshifumi Yamaguchi
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangYoshiki Shibukawa
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境Hisao Soyama
 

Mais procurados (20)

ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
 
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティ
 
Touhou Project on JavaScript
Touhou Project on JavaScriptTouhou Project on JavaScript
Touhou Project on JavaScript
 
Goodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxGoodby Hatena, hello Sphinx
Goodby Hatena, hello Sphinx
 
Ruby way-openstack.keynote
Ruby way-openstack.keynoteRuby way-openstack.keynote
Ruby way-openstack.keynote
 
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をするChef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
 
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
 
第1回python勉強会
第1回python勉強会第1回python勉強会
第1回python勉強会
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 

Semelhante a hubotで快適BOT生活

Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する日本マイクロソフト株式会社
 
バージョン管理
バージョン管理バージョン管理
バージョン管理Misa Kondo
 
ラズパイ × Bluemix IoTハンズオンセミナー
ラズパイ × Bluemix IoTハンズオンセミナーラズパイ × Bluemix IoTハンズオンセミナー
ラズパイ × Bluemix IoTハンズオンセミナーsoftlayerjp
 
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話shigeki_ohtsu
 
20130329 rtm2
20130329 rtm220130329 rtm2
20130329 rtm2openrtm
 
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法Tokyo University of Science
 
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on LinuxTakayoshi Tanaka
 
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話shigeki_ohtsu
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Takako Miyagawa
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMFAtomu Hidaka
 
130329 02
130329 02130329 02
130329 02openrtm
 
HTTPとサーブレット
HTTPとサーブレットHTTPとサーブレット
HTTPとサーブレットTakashi Makino
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門Muyuu Fujita
 
LibreOfficeコミュニティに不具合修正パッチを送ってみた
LibreOfficeコミュニティに不具合修正パッチを送ってみたLibreOfficeコミュニティに不具合修正パッチを送ってみた
LibreOfficeコミュニティに不具合修正パッチを送ってみたTomofumi Yagi
 
CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ
 CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ
CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 BotのプチレシピKazumi IWANAGA
 

Semelhante a hubotで快適BOT生活 (20)

Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
Github第8章
Github第8章Github第8章
Github第8章
 
Code ignitertalk 01
Code ignitertalk 01Code ignitertalk 01
Code ignitertalk 01
 
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
 
バージョン管理
バージョン管理バージョン管理
バージョン管理
 
ラズパイ × Bluemix IoTハンズオンセミナー
ラズパイ × Bluemix IoTハンズオンセミナーラズパイ × Bluemix IoTハンズオンセミナー
ラズパイ × Bluemix IoTハンズオンセミナー
 
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
 
20130329 rtm2
20130329 rtm220130329 rtm2
20130329 rtm2
 
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
 
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
 
Botkit4.x Has Come!
Botkit4.x Has Come!Botkit4.x Has Come!
Botkit4.x Has Come!
 
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
 
Mercurial入門
Mercurial入門Mercurial入門
Mercurial入門
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
130329 02
130329 02130329 02
130329 02
 
HTTPとサーブレット
HTTPとサーブレットHTTPとサーブレット
HTTPとサーブレット
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門
 
LibreOfficeコミュニティに不具合修正パッチを送ってみた
LibreOfficeコミュニティに不具合修正パッチを送ってみたLibreOfficeコミュニティに不具合修正パッチを送ってみた
LibreOfficeコミュニティに不具合修正パッチを送ってみた
 
CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ
 CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ
CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ
 

hubotで快適BOT生活

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n