狠狠撸

狠狠撸Share a Scribd company logo
ルーチンワーク自動化のはなし
#nds54 @civic
自己紹介
? Twitter: @civic
? Python, Java
? サーバーサイドをメインにコード書いてます
2017年NDS発表内容
? NDS51
? PostgreSQLのテ?ータ型
? NDS52
? なんてかんたんなJavaEE
? NDS53
? IoTフ?ラットフォーム
? NDS54
? 第54回ルーチンワーク自動化の話
今日話す内容
? ルーチンワークを自動化するための手段を紹介
? Webサービス
? IFTTT、GAS、AWS
? アフ?リ
? Workflow
? 方法
? スクレイピング
? メールトリガー
2017年は
これで楽をしよう
大がかりなシステムを作らず
細かい作業を自動化して楽しよう
ルーチンワークについて考える
ルーチンワークについて考える
? 日常的に行う作業
? 毎日?毎週?
? 定型的な作業
? 手続きが一定
? 繰り返し行う作業
? 何度も発生する
こういったことは機械にやらせよう
→わかってる!!
自動化すればできるんだけど...
ついつい、その場しのぎで片付けてしまう
自動化するため
の労力
手作業で処理する労力
×
繰り返し回数
自動化しない理由
自動化すればできるんだけど...
自動化する労力を軽減することで、
自動化を促進しよう
自動化するため
の労力
手作業で処理する労力
×
繰り返し回数
この労力を軽減
余談:運用するコストも考える
? 例:サーバーをレンタルして、
常時稼働するフ?ログラムがルーチンワークを行う
? サーバーを保守運用する作業が発生
? サーバーをレンタルする金銭的コスト
(貧乏性ポリシー)
自動化ターゲット
タスクの
発生
タスクの処理
自動化の対象
タスクの発生をどのように
検知しているか?
? 特定のメールが届く
? 時々Webサイトを見て確認
? 毎週月曜の朝は〇〇する 自動化の対象
自动化するためのツール
滨贵罢罢罢(イフト)
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起動
登録
まとめ
まとめ
? 既存のサービスの組み合わせでもタスクを消化で
きる
? 作るなら運用コストがかからないな方法で
? 连携サービスの组み合わせは膨大

More Related Content

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