今回は,実際にhubotをインストールし,簡単なスクリプトを書いて動かしてみます。インストールHubotをインストールして動かすには,Node.js本体とNode.jsのパッケージマネージャであるnpmが動く環境を用意する必要があります。本節では,まずNode.jsとnpmをインストールしてからHubot自体をインストールする方法を解説します。Node.jsとnpmのインストールNode.jsとnpmをインストールするには,UNIX系ならばパッケージマネージャ,Windowsならインストーラを使う方法が簡単です。6では,パッケージマネージャであるyumにEPELリポジトリを追加することでNode.jsとnpmをインストールできるようになります。6(64ビット版)でパッケージマネージャを使用したインストール方法の例を次に示します。5は,EPELを追加してもNode.jsのパッケージを利用できませんし,Ubuntuも13.10以降でなければNode.jsのバージョンが古くてHubotが動かないうえに,13.10でもNode.jsのコマンド名がnodeでなくnodejsになるために若干の面倒があります。パッケージマネージャでのインストールが難しい場合は,nodebrewのようなツールを使用してNode.jsをユーザ権限でインストールし管理することもできます。nodebrewを使用する方法では,Node.jsをビルドするためにビルドの条件を満たす必要がある点には注意が必要です。詳しくはNode.jsの公式ドキュメントをご確認ください。nodebrewを使用したNode.jsのインストール方法の例を次に示します。--versionv0.10.26この方法でインストールした場合は,npm使用時のsudoは不要です。Node.jsの正確なインストール方法については,公式サイトのインストーラのダウンロードページやパッケージマネージャを使ったインストール方法などを参照してください。HubotのインストールNode.jsとnpmの準備ができると,後はnpmコマンドを使うだけでHubot本体をインストールできます。インストールコマンドを次に示します。coffee-script無事インストールできれば,Hubotを使う準備が整ったことになります。Hubotを動かしてみるHubotを動かすには,Hubotの本体や設定ファイルなどを適切な構成で配置したディレクトリを作る必要があります。hubotコマンドを使うと,そのようなディレクトリの雛形を作ることができます。ディレクトリ名を“⁠myhubot⁠”として雛形を作るコマンドを次に示します。myhubot実行すると,次のようなディレクトリが作られます。youtube.coffeeこのディレクトリが,botの設定と本体を格納したディレクトリとなります。.gitignoreファイルが含まれていることからもわかるように,このディレクトリをそのままGitで管理すると便利です。ディレクトリの中では,使用するスクリプトを指定するexternal-scripts.json,hubot-scripts.jsonとscriptsディレクトリや依存モジュールを記述するpackage.jsonがよく変更する要素になります。これらの要素については,本連載の後の回で具体的な使い方を解説します。起動Hubotを起動するには,myhubotディレクトリに入ってbin/hubotを実行します。bin/hubotbin/hubotはシェルスクリプトになっており,内部でnpmを実行してpackage.jsonに記述された依存モジュールを自動的にインストールしたうえでHubot本体を起動します。bin/hubotの実行に成功すると図1のように表示されます(エラーメッセージが表示され続ける場合は,Enterキーを押してみてください⁠)⁠。今回は,どのAdapterを使用するかを指定しないで起動したため,デフォルトのShellアダプタによりシェル上でHubotと対話することになります。エラーやワーニングが表示されますが,これらの解決方法は本連載の後の回でHubotの設定方法とあわせて解説します。--createでディレクトリを作成した時点でいくつかのスクリプトがデフォルトで用意されており,シェル上でHubotに呼びかけることで実行することができます。scripts/ping.coffeeスクリプトは,Hubotに呼びかけると“⁠PONG⁠”という文字列を返してくる“⁠ping⁠”コマンドを提供しています。--createコマンドの実行直後は,他にも様々なコマンドが使用可能な状態になっていますが,Hubotを強制終了するdieコマンドなど危険なコマンドも含まれているため,本番での運用時には要不要に応じてスクリプトを整理しておくことをお勧めします。helpコマンドで,現在使えるコマンドの一覧を表示することができるので,色々なコマンドを試してみて下さい。helpコマンドちなみに,このhelpコマンドはscripts/help.coffeeに記述されているので,このファイルを削除すると使えなくなってしまいます。“exit⁠”と入力するか、Ctrl-CでHubotを終了することができます。World本節では,スクリプトを書いてHubotに新しいコマンドを追加してみます。今回は最初なので,Hubotに“⁠hello⁠”と呼びかけるとHubotが“⁠hello⁠”と返してくれるコマンドを作ります。スクリプトは,JavaScriptでもCoffeeScriptでも書けますが,本連載ではHubot本体に合わせてCoffeeScriptで記述します。JavaScriptで書く場合には,適宜読み替えてください。それでは,scripts直下に次のスクリプトをhello.coffeeというファイル名で配置してみてください。"hello"スクリプトの詳しい書き方や各記述の意味は本連載の後の回で解説します。hello⁠”と話しかけてみてください。次の図のようにHubotから返答があれば成功です。helloコマンドの実行結果Hubotは,起動時にscriptsディレクトリの中にあるスクリプトを自動的に読み込むため,独自のスクリプトを追加したり既存のスクリプトを削除したりして動作を確かめてみてください。まとめ今回は,Hubotを動かす環境を整え,実際にスクリプトを書いて動かしてみました。Hubotとの対話にデフォルトのShellアダプタを使用したため,あまりbotを使っている感覚は感じられなかったかもしれません。次回は,サードパーティーのアダプタを使うことでHubotをIRCやTwitterと接続する方法などについて解説します。CoffeeScript著者プロフィール大谷和史(おおたにかずふみ)色々な物を動かして試してみることが好きなWeb開発者。現在は,メドピア(株)で日本の医療を良くするために働いています。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。