Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,053 views

Published on

ルーチンワークを自動化するためのツールの紹介など

Published in: Technology
  • Be the first to comment

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

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

×