SlideShare una empresa de Scribd logo
1 de 63
Descargar para leer sin conexión
Python × Herokuで作る
雑談SlackBot
2017/03/07
株式会社ビズリーチ
松岡 幸一郎
● 松岡 幸一郎
● 株式会社ビズリーチ
● 「キャリアトレック」開発
発表者紹介
会社・サービス紹介
ハイクラス層向け転職 求人検索エンジン
若年層向け転職 戦略人事 OB/OG訪問支援
会社・サービス紹介
ハイクラス層向け転職 求人検索エンジン
若年層向け転職 戦略人事 OB/OG訪問支援
Java + Angular2 (SPA) (一部) Scala + Angular1
MicroService
Java + React (SPA) (一部) Scala + React / Angular2
MicroService
Java + React (一部)
対象者
● テーマ
○ Python × Herokuで作る雑談SlackBot
● 想定対象者
○ SlackBotを気軽に作りたい、運用したい
○ Pythonで書きたい
■ Hubotが主流だが、CoffeeScriptを今から新しく覚えたくはない
■ Pythonのライブラリや既存資産を利用したい
早速喋ってもらいましょう
ゴールと構成
● 本日のゴール
○ 簡単なbotがかけるようになる
○ Herokuにデプロイできるようになる
○ 雑談会話用APIで簡単な会話が出来るようになる
○ 応用イメージが持てる
● 構成
○ ハンズオン風の資料だけどNotハンズオン
○ 概要と流れを説明
○ 資料を家で見て参考に作れるように
やらないこと
● Python言語自体の解説
● 雑談ロジック、言語解析や自然応答ロジックの詳細
○ 雑談ロジックは外部APIを使用
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
3. 雑談できるようにする
4. 応用のための情報
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
3. 雑談できるようにする
4. 応用のための情報
1. 基本的なBotを作る
a. 使用するライブラリ・サービスの紹介
b. slackでbot用API KEYを発行
c. ローカル環境でbotスクリプト作成
2. Herokuにデプロイする
3. 雑談できるようにする
4. 応用のための情報
基本的なbotを作る - 全体の流れ
使用するライブラリ・サービス
● slackbot
○ https://github.com/lins05/slackbot
○ Python3用
○ pipでインストール可能
○ SlackのRealTimeMessagingAPIを利用
○ プラグイン拡張が簡単
○ 接続が切れても再接続してくれる
使用するライブラリ・サービス
● Heroku
○ PaaS(Platform as a Service)
○ git連携して簡単にビルド・デプロイ
○ 無料で使えるが制限がある (1アカウント月間1000時間)
○ 元はRuby on Rails向けだったが、対象言語が拡張している
(Python, Java, Node.js, Scala, Cloujure..)
1. 基本的なBotを作る
a. 使用するライブラリ・サービスの紹介
b. slackでbot用API KEYを発行
c. ローカル環境でbotスクリプト作成
2. Herokuにデプロイする
3. 雑談できるようにする
4. 応用のための情報
基本的なbotを作る - 全体の流れ
● slackチームの準備
基本的なbotを作る - Bot integrationの登録
● slackルームにBotIntegrationを追加
基本的なbotを作る - Bot integrationの登録
基本的なbotを作る - Bot integrationの登録
● Bot integrationを新規登録する
基本的なbotを作る - Bot integrationの登録
● チャットで表示されるbotの名前を決める
基本的なbotを作る - Bot integrationの登録
● スクリプトで使用できるようにAPI Tokenをコピーしておく
1. 基本的なBotを作る
a. 使用するライブラリ・サービスの紹介
b. slackでbot用API KEYを発行
c. ローカル環境でbotスクリプト作成
2. Herokuにデプロイする
3. 雑談できるようにする
4. 応用のための情報
基本的なbotを作る - 全体の流れ
基本的なbotを作る - ローカル環境でbotを動かす
● slack botをインストール
○ $ pip install slackbot
● スクリプト作成
○ run.py : 本体
○ slackbot_setting.py:設定ファイル
(設定ファイル名は固定)
● 環境変数設定
○ $ export SLACKBOT_API=<<API TOKEN>>
(変数名は固定)
○ slackbot_setting.pyに書いても動くが、git管理したいので環境変数を使う
● run.py
● slackbot_settings.py
● 実行
○ $python run.py
(先ほどの環境変数を設定した環境で実行すること)
基本的なbotを作る - ローカル環境でbotを動かす
基本的なbotを作る - ローカル環境でbotを動かす
● slackのchannelにbotアカウントを招待
● botに話しかける
※画面デモ
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
3. 雑談できるようにする
4. 応用のための情報
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
a. アカウント作成・アプリケーション作成・設定
b. Heroku用設定ファイルの作成
c. デプロイ
3. 雑談できるようにする
4. 応用のための情報
Herokuにデプロイする
● アカウント作成
○ (画面キャプチャは省略)
Herokuにデプロイする
● アプリケーション作成
● 必要な設定を追加
○ 環境変数の設定
○ Buildpackの設定
Herokuにデプロイする
● 環境変数の設定
○ ローカルで設定したのと同じ変数名、API Tokenを設定する
Herokuにデプロイする
● Buildpackの指定
○ Pythonを指定する
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
a. アカウント作成・アプリケーション作成・設定
b. Heroku用設定ファイルの作成
c. デプロイ
3. 雑談できるようにする
4. 応用のための情報
Heroku設定ファイル作成
● buildに必要なファイルの作成
○ Procfile:
○ requirements.txt
○ runtime.txt
※いずれも、プロジェクトルートに置く必要がある
Heroku設定ファイル作成
● Procfile : Herokuでデプロイ時に実行するプロセスの定義
pbot: python run.py
● ①:プロセス名の定義 任意の文字列でOK
ただし"web"だけは特別な意味を持つ(死活監視が自動で設定される)
● ②:実行される処理
ローカルで実行したのと同じコマンド
①        ②
Heroku設定ファイル作成
● runtime.txt :実行Pythonのバージョンの定義
● requirements.txt : Pythonの依存ライブラリの定義
$ pip freeze > requirements.txt
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
a. アカウント作成・アプリケーション作成・設定
b. Heroku用設定ファイルの作成
c. デプロイ
3. 雑談できるようにする
4. 応用のための情報
Herokuにデプロイする
● (デフォルトリプライを変更しておく)
○ DEFAULT_REPLY = "Hey, I'm on Heroku!"
● デプロイ
「Deploy」タブ内に書いてあるコマンドを叩けばOK
● $ brew install heroku
● $ heroku login
● 以下、「Deploy」タブの記述通りにコマンド実行
○ $ cd my-project/
$ git init
$ heroku git:remote -a pbot-sample
$ git add .
$ git commit -am "make it better"
$ git push heroku master
Herokuにデプロイする
Herokuにデプロイする
● pushすると必要なモジュールのインストール、ビルドが走る
Herokuにデプロイする
● 起動の呪文
○ $ heroku ps:scale pbot=1
○ pbotに1プロセス割り当てさせるコマンド
● 話しかけてみる
(画面デモ)
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
3. 雑談できるようにする
4. 応用のための情報
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
3. 雑談できるようにする
a. 独自の返信を作成
b. docomo雑談APIサービス登録
c. 環境変数設定・実装
4. 応用のための情報
雑談できるようにする
● @respond_toデコレータ
● run.pyに以下のコードを追加
● 反応する単語を定義
● 半角、全角OK
● (.*)で変数を渡せる
● 変数の個数は増やせる
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
3. 雑談できるようにする
a. 独自の返信を作成
b. docomo雑談APIサービス登録
c. 環境変数設定・実装
4. 応用のための情報
Docomoの雑談対話API -
● Docomoが開発者向けに提供しているAPI
● ユーザーの発話テキストを受け付け、雑談的な会話を返答してくれる
● REST API jsonでリクエスト/レスポンスデータ受け渡し
● 呼び出しが簡単
Docomoの雑談対話API - 登録
● docomo Developer support
● アカウント登録し、「新規API利用申請」から「雑談対話」を選択
● 手順参考サイト
●
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
3. 雑談できるようにする
a. 独自の返信を作成
b. docomo雑談APIサービス登録
c. 環境変数設定・実装
4. 応用のための情報
● 環境変数のセット
$ export set DIALOGUE_API_KEY= XXXXXX
herokuでも設定してください
● コード
● default_replyデコレータで、他のメ
ソッドに反応しなかった場合のみ
呼び出される
● matchstrはライブラリのバグ?で
default_replyの時だけ略せない
● API指定の型でjson文字列化して
post送信
● 戻ってきた値をslackに投げる
Docomoの雑談対話API -
Docomoの雑談対話API -
● リクエスト・レスポンスのjson
Docomoの雑談対話API -
● 話しかけてみる
request
{'utt': 'docomoは使いやすいですね',
'yomi': 'docomoは使いやすいですね',
'mode': 'dialog', 'da': '5',
'context': 'gq-pS1Q_YcS_anHd0AttPw'}
Docomoの雑談対話API - コンテキストを記憶
● コンテキストを記憶させる(汚いコードですが。。)
● 一応文脈を記憶してくれます。
Docomoの雑談対話API -
● 正直あまり賢くはない。。
Docomoの雑談対話API -
● 雑談対話APIだけでは味気ないので拡張
run.py 雑談対話API
独自プラグイン
slack
ここではルーティングだけするものとすると、
I/OのシンプルなWebアプリケーションと
考えられる!!
- @respond_toのマッチ文字列
- メソッド内のロジック
などで分岐して呼び出す処理を切
り替える
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
3. 雑談できるようにする
4. 応用のための情報
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
3. 雑談できるようにする
4. 応用のための情報
a. slackbotライブラリの機能
b. 応用事例
拡張のためのアイデア - slackbotのその他の機能
● attachment
○ slack APIのAttachmentメソッドをサポート
○ 詳細は公式ガイド参照
拡張のためのアイデア - slackbotのその他の機能
● listen_toデコレータ
○ @botしなくても特定の文字列を監視 (乱用しないように。。)
● message.react
○ emojiリアクションをつける
拡張のためのアイデア - slackbotのその他の機能
● 独自プラグインの切り出し
run.py
アジェンダ
1. 基本的なBotを作る
2. Herokuにデプロイする
3. 雑談できるようにする
4. 応用のための情報
a. slackbotライブラリの機能
b. 応用事例
応用事例
● おぼえて機能
○ bot自体に反応キーワードと
返答の辞書を持たせる
○ 辞書にマッチしたら返答を返す
○ マッチしなければ雑談APIに投げる
○ @respond_to('覚えて(.*)')
でおぼえてメソッド呼び出し
○ 辞書マッチ前に形態素解析を挟むと
拾う率が上がる
応用事例
● ホットペッパーグルメ検索
○ ホットペッパーAPIと連携
○ @respond_to('ランチ (.*)')で拾い、
変数部分をホットペッパーAPIの検索クエリに渡す
応用事例
● 修造機能
○ ネガティブなことを言うと修造がランダムで励ましてくれる
○ @listen_to(‘だめ|修造’)とかで拾ってます。笑
○ attachmentで見た目を変えると楽しい
応用事例
● slack APIの仕組みが分かればGoogle App Scriptから叩くなども応用可能
締め
● slack bot、ChatOps、Hubotなどで検索すると色々事例が出るので
探してみてください
○ TranslimitのChatOps事情と愉快なbotたち
○ 我が家を支えるChatOps
○ ChatOpsでなにができるのかまとめ
● ぜひ興味を持ったらお家で試してみてください!
本日のサンプルコード
https://github.com/little-hands/pbot
ありがとうございました

Más contenido relacionado

La actualidad más candente

Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
Tetsuya Morimoto
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版
Katsuhiro Morishita
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
Atsushi Odagiri
 
PySide/QtWebkitで楽々 slideshare Hack
PySide/QtWebkitで楽々 slideshare HackPySide/QtWebkitで楽々 slideshare Hack
PySide/QtWebkitで楽々 slideshare Hack
Kazushige TAKEUCHI
 

La actualidad más candente (20)

「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
hubotで快適BOT生活
hubotで快適BOT生活 hubotで快適BOT生活
hubotで快適BOT生活
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版
 
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
 
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
 
Hubotをはじめる
HubotをはじめるHubotをはじめる
Hubotをはじめる
 
XML-RPC : Pythonが「電池付属」と呼ばれる理由
XML-RPC : Pythonが「電池付属」と呼ばれる理由XML-RPC : Pythonが「電池付属」と呼ばれる理由
XML-RPC : Pythonが「電池付属」と呼ばれる理由
 
TranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたちTranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたち
 
QtでHello, World!!
QtでHello, World!!QtでHello, World!!
QtでHello, World!!
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsインフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
 
Pythonでゲーム作る
Pythonでゲーム作るPythonでゲーム作る
Pythonでゲーム作る
 
hubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatopshubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatops
 
PySide/QtWebkitで楽々 slideshare Hack
PySide/QtWebkitで楽々 slideshare HackPySide/QtWebkitで楽々 slideshare Hack
PySide/QtWebkitで楽々 slideshare Hack
 
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勉強会
 

Similar a Python × Herokuで作る 雑談slack bot

LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
 

Similar a Python × Herokuで作る 雑談slack bot (20)

Programming AWS with Python
Programming AWS with Python  Programming AWS with Python
Programming AWS with Python
 
PythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEGPythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEG
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
 
Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapyWebフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapy
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Report
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplib
 
osakapy 2014.05 LT
osakapy 2014.05 LTosakapy 2014.05 LT
osakapy 2014.05 LT
 
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列) cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
 
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
 
俺とGitHub
俺とGitHub俺とGitHub
俺とGitHub
 
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
Botkit4.x Has Come!
Botkit4.x Has Come!Botkit4.x Has Come!
Botkit4.x Has Come!
 
DockerでJupyter使おうぜ
DockerでJupyter使おうぜDockerでJupyter使おうぜ
DockerでJupyter使おうぜ
 

Más de dcubeio

Más de dcubeio (20)

AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
 
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
 
20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料
 
Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話
 
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
 
BizReach x Marketo連携
BizReach x Marketo連携BizReach x Marketo連携
BizReach x Marketo連携
 
Kinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみたKinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみた
 
Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】
 
春の脆弱性祭り 2017/06/13
春の脆弱性祭り 2017/06/13春の脆弱性祭り 2017/06/13
春の脆弱性祭り 2017/06/13
 
DynamoDBを導入した話
DynamoDBを導入した話DynamoDBを導入した話
DynamoDBを導入した話
 
Play2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだことPlay2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだこと
 
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー! すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
 
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
 
【freee】プロダクトマネージャーの仕事と魅力
【freee】プロダクトマネージャーの仕事と魅力【freee】プロダクトマネージャーの仕事と魅力
【freee】プロダクトマネージャーの仕事と魅力
 
【ビズリーチ】プロダクトマネージャーの仕事と魅力
【ビズリーチ】プロダクトマネージャーの仕事と魅力【ビズリーチ】プロダクトマネージャーの仕事と魅力
【ビズリーチ】プロダクトマネージャーの仕事と魅力
 
HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介
 
Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217 Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217
 
機械学習を支えるX86 64の拡張命令セットを読む会 20170212
機械学習を支えるX86 64の拡張命令セットを読む会 20170212機械学習を支えるX86 64の拡張命令セットを読む会 20170212
機械学習を支えるX86 64の拡張命令セットを読む会 20170212
 

Python × Herokuで作る 雑談slack bot