技術は私たちの力。技術は私たちの楽しみ。 Creative Developer BLOG 技術部ブログ
Technology is our strength. Technology is what we enjoy.

仕事を効率化できる「モノ」を創る

2018-08-01 勉強会
 
 
 

仕事の効率化とは何なのかを考える

仕事の効率化とはなんでしょう?
・無駄なことを極力省く
・単純な作業を自動化する
・ダラダラと仕事をしない
などなど色々ありますよね。

ただ、具体的な仕事の効率化となるとひとえになかなかアイディアは思い浮かばないものです;;

そこで視点を変えて今あるサービスまたは使用したことのあるサービスで実現できることを探し
仕事の効率化に繋がるアイディアを模索してみました。

今あるサービス・使用したことのあるサービス

・SaaskeやCGI-Parkまたは新型CMSなどのインターパーク独自のサービス
・世の中にあるサービス(バックログやGmail)
など色々と検討してみましたが、

サスケのサーバー負荷や画像ファイルの確認などで日々使用している
AWS(Amazon Web Services)のサービスがあるので
AWSで提供されている機能を使用して仕事の効率化ができる「モノ」を
創ることができないか検討することにしました。
 
 

AWSのサービスを調べてみようー

★AWSの全サービス群(2018年6月時点)★

105サービス

 
 

★AWSのカテゴリ群★

 

上記の通り、日々使用しているEC2(WEBサーバー)やRDS( DBサーバー)、S3(画像やPDFファイルなどコンテンツの保管場所)など以外にも全く知らない機能が数多く存在するのがわかります。

この中から東京リージョンで使用できるサービスでどのようなサービスかを調べてみました。
以下サービスごとの説明になります。

1. Amazon Sumerian(シュメリアン)

https://aws.amazon.com/jp/sumerian/
テンプレートを使用することで簡単に3Dモデルの作成が可能になるサービス

<アイディア>
・3Dモデルを使用したゲーム
・3Dモデルによる機能説明の動画
 

2. Amazon Rekognition(レコグネイション)

https://aws.amazon.com/jp/rekognition/
AIを活用した画像認識サービス。
予め登録しておいた人物と同一人物かどうかを分析したり、画像内の顔の位置を特定して、
その人の感情を判定したりできる。

<アイディア>
・顔認証で出退勤を管理
→事前に社員の顔をとっておいてその画像と出社時の人物が同一人物かチェックするなど。
・Saaskeと連動し画像振り分け機能
→ 例えば人、物(車)、風景などに分類しCloudScanの資料(アンケート用紙)を自動分類分けし・・・
・CloudScanのOCRとして使用しているユニメディアさんにとって変わる文字起こしの仕組みを代用
 ※ただし、現状は英語のみの対応

3. AWS Elemental MediaLive(エレメンタル メディアライブ)

https://aws.amazon.com/jp/medialive/
ライブ動画処理サービス。
24時間365日動画をどのような規模でも簡単配信できる。

<アイディア>
・カメラ機能と連動し監視
・セキュリティーの監視。オフィスのエントランスを自動監視

4. Amazon IoT(アイオーティー)

https://aws.amazon.com/jp/iot/
スマホ機器や家電製品などのモノとインターネットを通してAWSと接続しデータの取得や管理できるサービス

<アイディア>
・電球や蛍光灯と接続し、点灯時間の管理が行えるシステム
・電子錠システム
→Raspberry Piを使用すれば機器とAWSの接続は行える

 

前置きが長くなりましたが、色々と検討した結果『4. Amazon Iot(アイオーティー)』のサービスを使用して
仕事を効率化できる『モノ』を創っていきたいと思います。
 
 

AWS IoT Enterprise Buttonを使って集荷サービスを自動化する

 
 

集荷サービス自動化を実現する為にやらないといけないこと

-----------
1. AWS IoT Enterprise Buttonの購入
2. AWS IoT Enterprise Buttonのデバイスの登録
3. AWS IoT 1-Clickの設定&動作確認(SMS送信)
4. AWS IoT 1-Clickの設定をAWS Lamdaに変更
5. EC2へSSH接続するためのプログラムを作成(py)しAWS Lamdaにアップロード
6. EC2にSeleniumおよびSelenium side ruunerの設定&動作確認
7. ブラウザからSeleniumでヤマト運輸の集荷サイトを自動化し自動化したファイルを(sideファイル)取得
8. 最後にAWS IoT Enterprise Buttonを押下し集荷依頼
 ※cgiファイルからSelenium side ruunerを呼び出しヤマト運輸の集荷サイトにアクセス
-----------

以下、トピックスで説明

①AWS Buttonをデバイス登録する

AWS ButtonをインターパークのAWSアカウントに紐づけ、Buttonのデバイスを認識できるように設定を行います。
なお、設定方法ですが
1.スマホ端末に専用アプリインストールしデバイス登録する方法

2.AWS側AWS IoT 1-Clickのサービスを使用してデバイス登録する方法
の2種類ありますが、
今回は操作が簡単な「1.スマホ端末に専用アプリインストールしデバイス登録する方法」で登録します。
以下、スマホアプリの登録画面になります。

ログイン画面

セットアップ画面

デバイススキャン画面

②AWS IoT 1-Clickの設定&動作確認(SMS送信)

AWS Buttonの動作確認を行います。
ボタンを押した時の挙動確認です。

ボタンを押したら指定したスマホのSMS(メッセージ)に
予め設定しておいたメッセージが届く動作を確認しました。

SNSへ届いたメッセージ

AWS IoT 1-Clickの設定画面

③selenium

ヤマト運輸の集荷サイトに個人情報(会社名や住所)および集荷サービス(宅急便やクール便など)を予め設定した内容で自動入力させる必要があるため、「selenium」という自動入力ツールを使用して行います。
seleniumには「Selenium IDE」というプラグイン
(ブラウザでの操作を記録したり記憶した内容を再現できるChrome、Firefoxなどで利用可能な拡張機能)があるため、この機能を使用して自動入力します。

seleniumの設定画面(入力パラメータ)

④コマンドラインでseleniumを実行する

今後はコマンドライン上でseleniumを実行させます。

コマンドライン上でseleniumを実行させるためには「Selenium SIDE Runner」というプラグインを使用します。
cgiファイルからselenium side runnerを呼び出すコマンドを実行します
以下ソースコードです
#! /usr/bin/perl
my $command = qq|selenium-side-runner -c "chromeOptions.args=[--headless]" /home/ec2-user/regist_test.side|;

print `$command`;
1;

⑤PythonからEC2にSSH接続する

EC2にあるseleniumを実行するためのcgiファイルをhttp接続で実行しようと試みましたがうまくいかなかったため、SSHで直接EC2に接続しcgiファイルを実行するようにしました
PythonでEC2にSSH接続します
以下ソースコードです
import boto3
import paramiko
def worker_handler(event, context):

s3_client = boto3.client('s3')
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())

host=event['placementInfo']['attributes']['IP']
print "Connecting to " + host
c.connect( hostname = host, username = "selenium", password = "selenium" )
print "Connected to " + host

commands = ["perl selenium.cgi"]
for command in commands:
print "Executing {}".format(command)
stdin , stdout, stderr = c.exec_command(command)
print stdout.read()
print stderr.read()

return
{
'message' : "Script execution completed. See Cloudwatch logs for complete output"
}

⑥いよいよ動作確認!

全ての設定が完了しましたのでAWS Buttonを押して確認してみます。
いきなりヤマト運輸の集荷サービスを実行すると不安なので、
テストサスケ(https://test.saaske.com/)のデモアカウントのサスケリードに自動的に
顧客ができるようなプログラムを作成し一連の動作を確認してみます。
以下、動作結果です。

サスケリード自動登録

⑦ヤマト運輸集荷サービスへ自動依頼

では最後にAWS buttonを押して自動集荷依頼を試してみたいと思います。
実演!

まとめ

今回、自動集荷を行うにあたって色々なサービス・機能・プラグインを使用してみました。
・AWS Button
・AWS IoT 1-Click
・AWS Lambda
・Perl
・Python
・selenium
・selenium side runner
などなど

一つの機能にとらわれず世の中にある機能を組み合わせることで
色々なサービスを作ることができたのは非常に勉強になりました。
また、昨今IoTの進歩が目覚ましい中、IoTの今後の可能性に非常に魅力を感じたのと
新しいサービス、技術に触れることができた良い機会だったと思います。

ご静聴ありがとうございました。
記事一覧へ