SlideShare a Scribd company logo
1 of 34
ルーチンワーク自動化のはなし
#nds54 @civic
自己紹介
• Twitter: @civic
• Python, Java
• サーバーサイドをメインにコード書いてます
2017年NDS発表内容
• NDS51
• PostgreSQLのデータ型
• NDS52
• なんてかんたんなJavaEE
• NDS53
• IoTプラットフォーム
• NDS54
• 第54回ルーチンワーク自動化の話
今日話す内容
• ルーチンワークを自動化するための手段を紹介
• Webサービス
• IFTTT、GAS、AWS
• アプリ
• Workflow
• 方法
• スクレイピング
• メールトリガー
2017年は
これで楽をしよう
大がかりなシステムを作らず
細かい作業を自動化して楽しよう
ルーチンワークについて考える
ルーチンワークについて考える
• 日常的に行う作業
• 毎日?毎週?
• 定型的な作業
• 手続きが一定
• 繰り返し行う作業
• 何度も発生する
こういったことは機械にやらせよう
→わかってる!!
自動化すればできるんだけど...
ついつい、その場しのぎで片付けてしまう
自動化するため
の労力
手作業で処理する労力
×
繰り返し回数
自動化しない理由
自動化すればできるんだけど...
自動化する労力を軽減することで、
自動化を促進しよう
自動化するため
の労力
手作業で処理する労力
×
繰り返し回数
この労力を軽減
余談:運用するコストも考える
• 例:サーバーをレンタルして、
常時稼働するプログラムがルーチンワークを行う
• サーバーを保守運用する作業が発生
• サーバーをレンタルする金銭的コスト
(貧乏性ポリシー)
自動化ターゲット
タスクの
発生
タスクの処理
自動化の対象
タスクの発生をどのように
検知しているか?
• 特定のメールが届く
• 時々Webサイトを見て確認
• 毎週月曜の朝は〇〇する 自動化の対象
自動化するためのツール
IFTTT(イフト)
IFTTT(イフト)
• if (that) then (that)「もしXが発生したらYをする」
みたいなシンプルな定義でWebサービス間の連携
を定義できるサービス
「#nds54ハッシュタグでツイート」したら「emailを自分に送る」
トリガー アクション
多数の連携可能サービス
連携サービス
いくつあるの
?・・
・
IFTTTをルーチンワークで活用
• トリガー便利
• 常駐監視する作業が不要になる
新着メール, feed, Tweet
• Notification便利(iPhoneへの通知)
• 発動するアクションは転送程度の機能
• IFTTTだけではタスク処理できない
• Webhookアクションを使って外部で解決
• 自前Webサービス, lambda
• myThingsという似たようなYahoo製サービス
Google Apps Script
Google Apps Script (GAS)
• Google Driveの各種サービスのマクロ的なスクリ
プト (Excel VBA的な)
• ちょっとしたWebアプリも作れる
スクリプト例
function doGet(e) {
var value = SpreadsheetApp.getActiveSheet().getRange("A1")
.getValue();
return ContentService.createTextOutput(value);
}
GETリクエストでセルA1の値をレスポンス
POSTリクエストでセルA1の値を更新
function doPost(e) {
var value = e.parameter['v'];
SpreadsheetApp.getActiveSheet().getRange("A1").setValue(value);
return ContentService.createTextOutput("OK");
}
$ curl -L -F v=Hello https://script.google.com/macros/s/xxx/exec
OK
GASをルーチンワークで活用
• 任意のコードを書いて処理を実行可能
• SpreadSheetをデータベース代わりに
• サーバーレスなWebサービスとして運用可能
• IFTTTのWebHookから呼べる
• 実行権限の匿名化
• Publicなサービスが動いても問題ないか注意
Workflow
Workflow
• Appleが買収した作業自動化アプリ
• AutomatorのiOS版
• 見た目はIFTTTっぽい
• iPhone内の操作の自動化
• IN/OUTの連携
• 開始は手動(ボタン押下)
最新の写真をリサイズしてツイート
Workflowをルーチンワークで活用
• 起動は手動だが強力
• URLからGET Contents
• 正規表現でスクレイピング
• UIの利用
• 選択肢を表示してユーザーに選んでもらう
• 入力ダイアログ
• Pythonista(iPhone Pythonアプリ)連携でPythonコ
ードの実行
Amazon Web Service
Simple Email Service(SES)
Lambda
AWS SES, Lambda
• AWS Simple Email Service(SES)
• メール送受信サービス
• メール受信をトリガーにAWSの機能に連携
• AWS Lambda
• サーバーレスなコンピューティングサービス
• NodeJS, Python, Java, C#
• AWSイベントでコード実行(メール受信など)
AWSをルーチンワークで活用
• メール受信トリガーをプッシュ型通知の受け口に
• 好きな言語で書けるLambdaで任意のコードが実
行できる(無料枠あり)
• メール通知→SES→Lambda
• メール受信でタスクが発生した瞬間に
処理を完了させるパターン
モデルケース
connpassでの登録
• connpassの発表者の登録でNDS告知サイトの発
表者一覧を更新する
• 参加登録時のメール通知でタスク発生
• connpassのサイトにログインしてアンケート確
認
• NDSサイトの編集
• 内容を確認したいので完全自動化はしない
第一段階「登録情報の取得・保存」
第二段階「データの更新」
• 通知内容を見て確認
• 必要に応じてSpreadSheetを手編集
• Workflowの実行で発表者を公開状態に更新
自動化の様子
登録内容通知
Workflow起動
登録
まとめ
まとめ
• 既存のサービスの組み合わせでもタスクを消化で
きる
• 作るなら運用コストがかからないな方法で
• 連携サービスの組み合わせは膨大

More Related Content

Similar to #nds54 ルーチンワーク自動化の話

人気の勉強会を逃さないシステム
人気の勉強会を逃さないシステム人気の勉強会を逃さないシステム
人気の勉強会を逃さないシステムryonext Shimamoto
 
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話Shota Umeda
 
WordPressで行うシステム開発 WordCamp Tokyo 2015用
WordPressで行うシステム開発 WordCamp Tokyo 2015用WordPressで行うシステム開発 WordCamp Tokyo 2015用
WordPressで行うシステム開発 WordCamp Tokyo 2015用Satoshi Kamigaki
 
20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize Tools20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize ToolsKazuki Ueki
 
個人開発 in フィリピン
個人開発 in フィリピン個人開発 in フィリピン
個人開発 in フィリピンdeeeki
 
趣味プログラマの先輩からのアドバイス
趣味プログラマの先輩からのアドバイス趣味プログラマの先輩からのアドバイス
趣味プログラマの先輩からのアドバイスHiroaki Murayama
 
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノBluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノKazumi IWANAGA
 
20141122 デジコミュ秋田 WordPressサイト永代供養の儀
20141122 デジコミュ秋田 WordPressサイト永代供養の儀20141122 デジコミュ秋田 WordPressサイト永代供養の儀
20141122 デジコミュ秋田 WordPressサイト永代供養の儀Seiji Akatsuka
 
qpstudy3周年記念LT大会
qpstudy3周年記念LT大会qpstudy3周年記念LT大会
qpstudy3周年記念LT大会Tomohiro Ikeda
 
マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャota42y
 
趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送るvolpe_hd28v
 

Similar to #nds54 ルーチンワーク自動化の話 (20)

今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
 
人気の勉強会を逃さないシステム
人気の勉強会を逃さないシステム人気の勉強会を逃さないシステム
人気の勉強会を逃さないシステム
 
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
 
恋するJenkins
恋するJenkins恋するJenkins
恋するJenkins
 
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話
 
Yapc2012ltthon
Yapc2012ltthonYapc2012ltthon
Yapc2012ltthon
 
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
 
WordPressで行うシステム開発 WordCamp Tokyo 2015用
WordPressで行うシステム開発 WordCamp Tokyo 2015用WordPressで行うシステム開発 WordCamp Tokyo 2015用
WordPressで行うシステム開発 WordCamp Tokyo 2015用
 
20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize Tools20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize Tools
 
個人開発 in フィリピン
個人開発 in フィリピン個人開発 in フィリピン
個人開発 in フィリピン
 
Nishimoto 170603-mruby
Nishimoto 170603-mrubyNishimoto 170603-mruby
Nishimoto 170603-mruby
 
面白いは正義
面白いは正義面白いは正義
面白いは正義
 
Ansible入門 20151226
Ansible入門 20151226Ansible入門 20151226
Ansible入門 20151226
 
趣味プログラマの先輩からのアドバイス
趣味プログラマの先輩からのアドバイス趣味プログラマの先輩からのアドバイス
趣味プログラマの先輩からのアドバイス
 
TOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
TOPPERSプロジェクトの紹介 OSC2017 Tokyo FallTOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
TOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
 
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノBluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
 
20141122 デジコミュ秋田 WordPressサイト永代供養の儀
20141122 デジコミュ秋田 WordPressサイト永代供養の儀20141122 デジコミュ秋田 WordPressサイト永代供養の儀
20141122 デジコミュ秋田 WordPressサイト永代供養の儀
 
qpstudy3周年記念LT大会
qpstudy3周年記念LT大会qpstudy3周年記念LT大会
qpstudy3周年記念LT大会
 
マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャ
 
趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る
 

More from civicpg

オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!civicpg
 
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)civicpg
 
第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEE第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEEcivicpg
 
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51civicpg
 
第49回emailを安全んにつかうための心がけ
第49回emailを安全んにつかうための心がけ第49回emailを安全んにつかうための心がけ
第49回emailを安全んにつかうための心がけcivicpg
 
jupyterの紹介 #nds48
jupyterの紹介 #nds48jupyterの紹介 #nds48
jupyterの紹介 #nds48civicpg
 
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?civicpg
 
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46civicpg
 
Amazon SESのメール受信対応でサーバー減らせた話 #nds44
Amazon SESのメール受信対応でサーバー減らせた話 #nds44Amazon SESのメール受信対応でサーバー減らせた話 #nds44
Amazon SESのメール受信対応でサーバー減らせた話 #nds44civicpg
 

More from civicpg (9)

オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!
 
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
 
第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEE第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEE
 
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51
 
第49回emailを安全んにつかうための心がけ
第49回emailを安全んにつかうための心がけ第49回emailを安全んにつかうための心がけ
第49回emailを安全んにつかうための心がけ
 
jupyterの紹介 #nds48
jupyterの紹介 #nds48jupyterの紹介 #nds48
jupyterの紹介 #nds48
 
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
 
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46
 
Amazon SESのメール受信対応でサーバー減らせた話 #nds44
Amazon SESのメール受信対応でサーバー減らせた話 #nds44Amazon SESのメール受信対応でサーバー減らせた話 #nds44
Amazon SESのメール受信対応でサーバー減らせた話 #nds44
 

#nds54 ルーチンワーク自動化の話