Submit Search
Upload
Go言語でBot開発やってみた
•
5 likes
•
3,692 views
Akihiko Horiuchi
Follow
第2回 Hubot×ChatOps勉強会 http://hubot-chatops.connpass.com/event/17902/
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 16
Download now
Download to read offline
Recommended
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
JustSystems Corporation
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計
Shinnosuke Tokuda
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
Masahito Zembutsu
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
Recruit Lifestyle Co., Ltd.
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
日本語テストメソッドについて
日本語テストメソッドについて
kumake
Recommended
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
JustSystems Corporation
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計
Shinnosuke Tokuda
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
Masahito Zembutsu
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
Recruit Lifestyle Co., Ltd.
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
日本語テストメソッドについて
日本語テストメソッドについて
kumake
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Azure AD による Web API の 保護
Azure AD による Web API の 保護
junichi anno
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
Shinji Takao
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話
disc99_
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
Masatoshi Tada
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
ブレソルでテラバイト級データのALTERを短時間で終わらせる
ブレソルでテラバイト級データのALTERを短時間で終わらせる
KLab Inc. / Tech
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
ChatOps@研究室
ChatOps@研究室
Akihiko Horiuchi
Filter・Mutator・Aggregateの使いドコロ
Filter・Mutator・Aggregateの使いドコロ
Akihiko Horiuchi
More Related Content
What's hot
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Azure AD による Web API の 保護
Azure AD による Web API の 保護
junichi anno
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
Shinji Takao
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話
disc99_
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
Masatoshi Tada
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
ブレソルでテラバイト級データのALTERを短時間で終わらせる
ブレソルでテラバイト級データのALTERを短時間で終わらせる
KLab Inc. / Tech
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
What's hot
(20)
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
テストコードの DRY と DAMP
テストコードの DRY と DAMP
WebSocketのキホン
WebSocketのキホン
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
Azure AD による Web API の 保護
Azure AD による Web API の 保護
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
Docker Compose 徹底解説
Docker Compose 徹底解説
Oss貢献超入門
Oss貢献超入門
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
ブレソルでテラバイト級データのALTERを短時間で終わらせる
ブレソルでテラバイト級データのALTERを短時間で終わらせる
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
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
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Takuya Ueda
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
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っぽいの作る
京大 マイコンクラブ
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Takuya Ueda
Language toolを使ってみる
Language toolを使ってみる
Takatsugu Nokubi
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
IGDA JAPAN
20130316 プログラミング言語Go
20130316 プログラミング言語Go
Yoshifumi Yamaguchi
Go一緒にいかが?
Go一緒にいかが?
Ryuji Iwata
Similar to Go言語でBot開発やってみた
(20)
Golang入門
Golang入門
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
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のコントリビューターになる方法
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
2019-01_正月三が日でGolangを触ってみた
2019-01_正月三が日でGolangを触ってみた
20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Language toolを使ってみる
Language toolを使ってみる
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
20130316 プログラミング言語Go
20130316 プログラミング言語Go
Go一緒にいかが?
Go一緒にいかが?
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!
自己紹介などなど
自己紹介などなど
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