Submit Search
Upload
Go言語でBot開発やってみた
•
5 likes
•
3,681 views
Akihiko Horiuchi
Follow
第2回 Hubot×ChatOps勉強会 http://hubot-chatops.connpass.com/event/17902/
Read less
Read more
Technology
Report
Share
Report
Share
1 of 16
Download Now
Download to read offline
Recommended
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
Takuya Ueda
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
Takuya Ueda
go generate 完全入門
go generate 完全入門
yaegashi
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
Tomohisa Kusukawa
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Takuya Ueda
More Related Content
What's hot
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
x86x64 SSE4.2 POPCNT
x86x64 SSE4.2 POPCNT
takesako
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
ASP.NET Core の パフォーマンスを支える I/O Pipeline と Channel
ASP.NET Core の パフォーマンスを支える I/O Pipeline と Channel
Joni
Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在
Go Maeda
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Takuya Ueda
gRPC入門
gRPC入門
Kenjiro Kubota
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
In the DOM, no one will hear you scream
In the DOM, no one will hear you scream
Mario Heiderich
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
shigeki_ohtsu
Raspberry Piで始める自宅サーバー超入門
Raspberry Piで始める自宅サーバー超入門
VirtualTech Japan Inc./Begi.net Inc.
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語
Takuya Ueda
Rust で RTOS を考える
Rust で RTOS を考える
ryuz88
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
Go入門
Go入門
Takuya Ueda
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
What's hot
(20)
Oss貢献超入門
Oss貢献超入門
x86x64 SSE4.2 POPCNT
x86x64 SSE4.2 POPCNT
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
ASP.NET Core の パフォーマンスを支える I/O Pipeline と Channel
ASP.NET Core の パフォーマンスを支える I/O Pipeline と Channel
Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
gRPC入門
gRPC入門
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
In the DOM, no one will hear you scream
In the DOM, no one will hear you scream
オブジェクト指向できていますか?
オブジェクト指向できていますか?
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
Raspberry Piで始める自宅サーバー超入門
Raspberry Piで始める自宅サーバー超入門
テストコードの DRY と DAMP
テストコードの DRY と DAMP
プログラムを高速化する話
プログラムを高速化する話
Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語
Rust で RTOS を考える
Rust で RTOS を考える
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Go入門
Go入門
冬のLock free祭り safe
冬のLock free祭り safe
Viewers also liked
ChatOps@研究室
ChatOps@研究室
Akihiko Horiuchi
Filter・Mutator・Aggregateの使いドコロ
Filter・Mutator・Aggregateの使いドコロ
Akihiko Horiuchi
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
Kazuto Kusama
TranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたち
Masakazu Matsushita
クラウドでGolangのテスト&デプロイ!
クラウドでGolangのテスト&デプロイ!
Akihiko Horiuchi
Ginとbindataで作るシングルバイナリWebApp
Ginとbindataで作るシングルバイナリWebApp
Akihiko Horiuchi
BotKitで作るイベント駆動Bot
BotKitで作るイベント駆動Bot
Akihiko Horiuchi
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
Takuya Ueda
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
Akihiko Horiuchi
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
Leslie Samuel
My ambariexperience
My ambariexperience
wyukawa
OSS監視ツールSensuの紹介
OSS監視ツールSensuの紹介
Akihiko Horiuchi
Prometheus london
Prometheus london
wyukawa
Presto in my_use_case2
Presto in my_use_case2
wyukawa
今日から始める人工知能 × 機械学習 Meetup ライトニングトーク1
今日から始める人工知能 × 機械学習 Meetup ライトニングトーク1
Nguyen Tuan
Landset 8 的雲層去除技巧實作
Landset 8 的雲層去除技巧實作
鈵斯 倪
Upgrading from-hdp-21-to-hdp-24
Upgrading from-hdp-21-to-hdp-24
wyukawa
小魯蛇與他快樂的夥伴
小魯蛇與他快樂的夥伴
鈵斯 倪
合同勉強会20160821
合同勉強会20160821
Nguyen Tuan
20150419_pbtech_openstack_nyah #pbtech
20150419_pbtech_openstack_nyah #pbtech
ume3_
Viewers also liked
(20)
ChatOps@研究室
ChatOps@研究室
Filter・Mutator・Aggregateの使いドコロ
Filter・Mutator・Aggregateの使いドコロ
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
TranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたち
クラウドでGolangのテスト&デプロイ!
クラウドでGolangのテスト&デプロイ!
Ginとbindataで作るシングルバイナリWebApp
Ginとbindataで作るシングルバイナリWebApp
BotKitで作るイベント駆動Bot
BotKitで作るイベント駆動Bot
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
My ambariexperience
My ambariexperience
OSS監視ツールSensuの紹介
OSS監視ツールSensuの紹介
Prometheus london
Prometheus london
Presto in my_use_case2
Presto in my_use_case2
今日から始める人工知能 × 機械学習 Meetup ライトニングトーク1
今日から始める人工知能 × 機械学習 Meetup ライトニングトーク1
Landset 8 的雲層去除技巧實作
Landset 8 的雲層去除技巧實作
Upgrading from-hdp-21-to-hdp-24
Upgrading from-hdp-21-to-hdp-24
小魯蛇與他快樂的夥伴
小魯蛇與他快樂的夥伴
合同勉強会20160821
合同勉強会20160821
20150419_pbtech_openstack_nyah #pbtech
20150419_pbtech_openstack_nyah #pbtech
Similar to Go言語でBot開発やってみた
Golang入門
Golang入門
Yukihiro Kitazawa
Go言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンド
Atsushi Yasuda
OSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツール
Tano Makoto
Goとtest coverage
Goとtest coverage
nakaji-s
社内勉強会1 go lang
社内勉強会1 go lang
Tsuyoshi Nakamura
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会
Takuya Ueda
Shizuoka go lang csp
Shizuoka go lang csp
Makoto Kishimoto
What is "Go" Gopher?
What is "Go" Gopher?
Ryuji Iwata
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
Takuya Ueda
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
Takuya Ueda
2019-01_正月三が日でGolangを触ってみた
2019-01_正月三が日でGolangを触ってみた
Igarashi Toru
20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri
Yoshifumi Yamaguchi
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
京大 マイコンクラブ
Language toolを使ってみる
Language toolを使ってみる
Takatsugu Nokubi
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
IGDA JAPAN
20130316 プログラミング言語Go
20130316 プログラミング言語Go
Yoshifumi Yamaguchi
Go一緒にいかが?
Go一緒にいかが?
Ryuji Iwata
Goをえらんだ理由
Goをえらんだ理由
Tatsumi Naganuma
私なりのGo言語のご紹介
私なりのGo言語のご紹介
Ryuji Iwata
Jupyter notebook
Jupyter notebook
亮吾 守屋
Similar to Go言語でBot開発やってみた
(20)
Golang入門
Golang入門
Go言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンド
OSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツール
Goとtest coverage
Goとtest coverage
社内勉強会1 go lang
社内勉強会1 go lang
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会
Shizuoka go lang csp
Shizuoka go lang csp
What is "Go" Gopher?
What is "Go" Gopher?
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
2019-01_正月三が日でGolangを触ってみた
2019-01_正月三が日でGolangを触ってみた
20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
Language toolを使ってみる
Language toolを使ってみる
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
20130316 プログラミング言語Go
20130316 プログラミング言語Go
Go一緒にいかが?
Go一緒にいかが?
Goをえらんだ理由
Goをえらんだ理由
私なりのGo言語のご紹介
私なりのGo言語のご紹介
Jupyter notebook
Jupyter notebook
More from Akihiko Horiuchi
オープンソースBotフレームワークではじめるChatOps
オープンソースBotフレームワークではじめるChatOps
Akihiko Horiuchi
Sensuで始めるクラウド時代のシステム監視
Sensuで始めるクラウド時代のシステム監視
Akihiko Horiuchi
Ansibleで一発!! VPSにDokkuを構築してみた
Ansibleで一発!! VPSにDokkuを構築してみた
Akihiko Horiuchi
InfluxDataのTICK Stack on DockerでNW監視
InfluxDataのTICK Stack on DockerでNW監視
Akihiko Horiuchi
ポスト・フラットデザイン 〜フラットデザイン2.0とCSSフレームワーク〜
ポスト・フラットデザイン 〜フラットデザイン2.0とCSSフレームワーク〜
Akihiko Horiuchi
勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために
Akihiko Horiuchi
Sensuでネットワーク監視やってみた
Sensuでネットワーク監視やってみた
Akihiko Horiuchi
学生がJANOGに行くべき3つの理由
学生がJANOGに行くべき3つの理由
Akihiko Horiuchi
HubotとChatOpsについて語るBoF
HubotとChatOpsについて語るBoF
Akihiko Horiuchi
Sensu Introduction
Sensu Introduction
Akihiko Horiuchi
Sensu with golang
Sensu with golang
Akihiko Horiuchi
サーバ監視ことはじめ
サーバ監視ことはじめ
Akihiko Horiuchi
SKK
SKK
Akihiko Horiuchi
Self Introduction
Self Introduction
Akihiko Horiuchi
エディタじゃない"Emacsの使い方
エディタじゃない"Emacsの使い方
Akihiko Horiuchi
LET'S PRESENTATION!
LET'S PRESENTATION!
Akihiko Horiuchi
自己紹介などなど
自己紹介などなど
Akihiko Horiuchi
More from Akihiko Horiuchi
(17)
オープンソースBotフレームワークではじめるChatOps
オープンソースBotフレームワークではじめるChatOps
Sensuで始めるクラウド時代のシステム監視
Sensuで始めるクラウド時代のシステム監視
Ansibleで一発!! VPSにDokkuを構築してみた
Ansibleで一発!! VPSにDokkuを構築してみた
InfluxDataのTICK Stack on DockerでNW監視
InfluxDataのTICK Stack on DockerでNW監視
ポスト・フラットデザイン 〜フラットデザイン2.0とCSSフレームワーク〜
ポスト・フラットデザイン 〜フラットデザイン2.0とCSSフレームワーク〜
勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために
Sensuでネットワーク監視やってみた
Sensuでネットワーク監視やってみた
学生がJANOGに行くべき3つの理由
学生がJANOGに行くべき3つの理由
HubotとChatOpsについて語るBoF
HubotとChatOpsについて語るBoF
Sensu Introduction
Sensu Introduction
Sensu with golang
Sensu with golang
サーバ監視ことはじめ
サーバ監視ことはじめ
SKK
SKK
Self Introduction
Self Introduction
エディタじゃない"Emacsの使い方
エディタじゃない"Emacsの使い方
LET'S PRESENTATION!
LET'S PRESENTATION!
自己紹介などなど
自己紹介などなど
Recently uploaded
2024 03 CTEA
2024 03 CTEA
arts yokohama
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
ssuser370dd7
2024 04 minnanoito
2024 04 minnanoito
arts yokohama
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
arts yokohama
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
arts yokohama
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
Ayachika Kitazaki
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
Tetsuya Nihonmatsu
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
Sadao Tokuyama
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
Matsushita Laboratory
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
Shumpei Kishi
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
ssuser539845
Recently uploaded
(12)
2024 03 CTEA
2024 03 CTEA
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
2024 04 minnanoito
2024 04 minnanoito
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
Go言語でBot開発やってみた
1.
堀内 晨彦 @hico_horiuchi Go言語で Bot開発やってみた
2.
自己紹介 Akihiko Horiuchi 香川大学 修士2年 bit.ly/hiconyan 研究室のインフラと掃除担当 Emacs
/ Ruby / Rails / Golang Hubot / Sensu / Ansible 15/08/22 2
3.
15/08/22 3 Go言語とは? 1 /
3
4.
Go言語の概要 ● Go言語の概要 ○ 2009年にGoogleによって開発スタート ○
シンプルな言語仕様,低い学習コスト ○ HTTPやJSONのなどの豊富な標準パケージ ○ 高速な動作,クロスコンパイルのサポート ○ goroutine と channel による並列処理 ● 開発者 ○ Ken Thompson(C言語) ○ Rob Pike(UTF-8) ○ Brad Fitzpatrick(memcached) 15/08/22 4
5.
Go言語で嬉しいこと ● 常に綺麗なコード ○ 標準のコーディング規約が定義 ○
go fmt で自動的に整形,エディタの保存時に実行 ○ 未使用の変数があるとコンパイルエラー ● 高速な動作、楽なデプロイ ○ C言語並みの実行速度,バックエンドでの採用 ○ バイナリ1つでデプロイ,すぐに動作可能 15/08/22 5 $ go build hoge.go # command-line-arguments ./hoge.go:4: hoge declared and not used
6.
hello world 15/08/22 6 package
main // パッケージの宣言 import "fmt" // インポート func main() { var message string = "hello world" // 変数の宣言 fmt.Println(message) // 標準出力 } $ go run hello.go hello world $ go build hello.go $ ./hello hello world
7.
15/08/22 7 Botフレームワーク 2 /
3
8.
Go言語のBotフレームワーク ● Botフレームワーク ○ プラグインで機能を拡張できるもの ○
アダプタ,ストア(ブレイン)があればBetter ● GitHubで探してみた ○ danryan/hal :アダプタとストアあり,機能も充実 ○ brettbuddin/victor:アダプタとストアあり,活発に開発中 ○ groob/radigast :Slack限定,victorベース ○ kyokomi/slackbot :Slack限定,グノシーの方が開発 15/08/22 8
9.
halとvictorの比較 15/08/22 9 hal victor ★
150 113 アダプタ Shell,IRC HipChat,Slack(WebHook) Shell,Campfire HipChat,Slack(RealTime) ストア Memory,Redis Memory,BoltDB ヘルプ × ⃝(FogCreek) HTTP ⃝ × Hear ⃝ × Reply ⃝ ⃝(FogCreek)
10.
halとvictorの書き比べ ● Botの要件 ○ docomoの雑談対話APIを使ってお喋り github.com/kyokomi/go-docomo
を利用 ○ /say にPOSTしたBodyを通知 ○ アダプタはShell,ストアはなし 15/08/22 10
11.
dialogueHandler() 15/08/22 11 func dialogueHandler(res
*hal.Response) error { // インスタンス生成 d := docomo.NewClient(os.Getenv("DOCOMO_DIALOGUE_API_KEY")) // ユーザーの発話を設定 dialogue := docomo.DialogueRequest{ Utt: &res.Match[1], // hal Utt: &s.Params()[0], // victor } // docomo 雑談対話APIを呼出 get, _ := d.Dialogue.Get(dialogue, true) return res.Reply(get.Utt) // hal s.Chat().Send(s.Message().ChannelID(), get.Utt) // victor }
12.
sayHandler() 15/08/22 12 func sayHandler(w
http.ResponseWriter, r *http.Request) { defer r.Body.Close() body, _ := ioutil.ReadAll(r.Body) robot.Adapter.Send(nil, string(body)) // hal bot.Chat().Send("0", string(body)) // victor }
13.
danryan/hal 15/08/22 13 var robot
*hal.Robot func main() { robot, _ = hal.NewRobot() // インスタンス生成 // ハンドラー登録 robot.Handle(hal.Respond(`(.+)`, dialogueHandler)) hal.Router.HandleFunc("/say", sayHandler) robot.Run() // hal実行 }
14.
brettbuddin/victor 15/08/22 14 var bot
victor.Robot func main() { // インスタンス生成 bot = victor.New(victor.Config{ Name: "victor", ChatAdapter: "shell", }) dialogueHandler(bot) // ハンドラー登録 go bot.Run() // victor実行 http.HandleFunc("/say", sayHandler) // パス登録 http.ListenAndServe(":9000", nil) // HTTP待受 }
15.
15/08/22 15 デモ 3 /
3
16.
デモンスレーション github.com/hico-horiuchi/gobot Sample of chat
bot by golang 15/08/22 16
Download Now