dondakeshimoの丸太

データサイエンス/Webアプリケーション/

webアプリを独力で作る体験をするのだ[AWSのサービスを一通り眺めてまとめた]

AWS

みなさんご存知AWSだと思うのですが、 そのサービスの量に圧倒されました。 どのような設計がベストプラクティスなのかは、 経験と丹念なリサーチによって判断されるものだと思いますが、 初心者だってサービスを作りたいのです。 そこで、丹念なリサーチのみでawsサービスでの ウェブアプリケーションを設計を試みましたが、 とんでもなく時間がかかっているので、 ざっくりとしてサービスまとめを作っていきたいと思います。

コンピューティング

何かしらのソースコードをデプロイして、 CPUに計算を行わせるサービスはここに分類されるようです。

EC2

ありのままのサーバーみたいなもの

Lightsail

簡単にEC2を作るやつ

VPC

まだ調べていない

Batch

まだ調べていない。
まとめて処理?

Beanstalk

EC2上に簡単にウェブアプリケーションの作成を行える。 webサーバーの構築をスキップして、 アプリケーションサーバーのみを作成すれば良くなる。

Lambda

関数をデブロイしておくと、 登録したタイミング(時間指定やイベント指定)でその関数を実行してくれる。

Auto Scailing

これはここに分類されるの正しいのだろうか?
結構なサービスにつけれられる機能で、 仮想サーバーの処理能力を自動、半自動、手動で上下させることでコストを抑えたり、 サーバー負荷によるダウンを防ぐ。

ストレージ

いろんなウェブアプリケーションの事例を検索していた感想としては S3を使えれば良いのではないだろうかと考えています。 ということで今回はスキップさせていただきます。

データベース

データベースも色々出してるっぽいですね。

Aurora

下にあるRDSの中に含まれるべきと思うのですが... amazonが作ったRDSだと。

RDS

MySQLなどのリレーショナルデータベース。 結構色々種類ある。

DynamoDB

言わずと知れたamazonのNoSQLデータベース。

Elastic Cache

Redisなどのインメモリキャッシュミドルウェアを使えるサービス。 サービスの高速化のために。

Redshift

データウェアハウス?ってなんだ... SQL系のデータベースを解析するっぽい

AWS Database Migration Service

データ移行してくれるらしい 次の大項目移行やねんけど、ここであってるんか?

移行

と思ったらAWS Database Migration Serviceちゃんとありました笑 これもしばらく使わなさそうな項目なのでスキップです。

ネットワークとコンテンツ配信

VPC

Virtual Private Cloudの略らしい。 仮想環境の中で仮想コンピュータを立ち上げるみたいな感じなのだろうか。

Cloud Front

CDNサービス。 フロントとしてS3の前に設置するのを良く見る。

Route 53

ドメインネームシステム。 ドメインを取得するのだ。

Direct Connect

専用線接続するらしいです。 すみません勉強不足です

Elastic Load Balancing

サーバーの前などに設置したら、うまいこと負荷を分散してくれるやつ。

開発者用ツール

何やらCodeシリーズみたいなものが大量にありましたが、 自動デプロイとかは使うかもしれないなぁくらいなのでとりあえずスキップ。

管理ツール

Cloud Watchが有名な気がする。 監視系と管理系が詰まっているが、とりあえずスキップ。

セキュリティ、アイデンティティコンプライアンス

疲れてきたので、使いそうなもののみピックアップします!

Certificate Manager

HTTPSにするやつだと思ってるがあっているのだろうか

WAF

よしなに守ってくれるらしい

分析

データベースをうまいこと集計するときとかに使えそうなもの多数

人工知能

クラウドMLは楽しそうですね。 金も吹っ飛びそうですが

モバイルサービス

API Gateway

なぜここにあるのだろうか... APIのフロントエンドになってくれる。 バックエンドとしてLambdaと親和性が高い。

Cognito

認証機能を提供してくれるツール。 それだけかと思っていたら、デバイス間の同期とか書いていたからもう少し高機能っぽい。 コスト的に普通に自分で実装することになりそう

アプリケーションサービス

ふむ。次!!

メッセージング

あらゆるタイプの通知

SQS

どこかに何かを送信するのをキューとして管理

SNS

シンプルな情報発信

PinPoint

プッシュ通知

SES

Emailの送受信

その他

今の所使わなそうだからスキップ!!

感想

多すぎてサービスだけでコアな部分出来上がりそうやけど、 コストとのせめぎ合いになるのだろうか。 クラウドだからと行って管理が楽かは使い方次第だろうしな。 しっかし調べてみて、SIerがなんで儲かるか良くわかったわ。

webアプリを独力で作る体験をするのだ[序章~特に内容がありません~]

Webアプケーションを作る!ぞ!!(読み飛ばしてください)

ご無沙汰しておりました。 今回、見出しに書いているように、webアプリケーションを作る決心をしまして、 コードを書くのが楽しかったのとシンプルにブログ書いてる暇があったらinputしなきゃ! ってなっていたのでブログかけていませんでした。 しかし、inputがなければoutputができないように、 定期的なoutputがないと人は何をinputしていいかわからなくなるもの...? 嘘かもです。とりあえずひと段落ついたので久しぶりに投稿いたします。
モチベーションとしては、就活を控える身となって、 エンジニア職を探していると登録フォームに必ずと言っていいほど

成果物

欄があってですね、そういえば筆者は独力で何かしらの成果物を作り上げたことがあるのか 少し不安になってきまして、いっちょやってやるかとなったわけです。
どんなサービスを作るかはとりあえず秘密です! (上手いこといったら金取れるんちゃうん...とか考えてます)


hapi

Node

インターン先でNodeを使っており、 今の所Nodeの問題点にもそれほど遭遇していないため、 Nodeを使ってサービスを作って行きます! Nodeの大きなメリットは 非同期処理! アクセスが集中しても速度を保ちやすいらしいです! 後、Nodeはフレームワークではなくプラットフォームです。 筆者は使い始めてしばらく勘違いしていました。笑

フレームワーク

有名どころだと

  • express
  • hapi

だと思っています。 文献数が圧倒的に多いexpressを使おうかと思ったのですが、 インターン先で使っているhapiの方が学習コストを抑えられるなと思い、こちらにしました。 ちゃんとリサーチしていないので、双方の強みとかあまりわかってません。

学習方法

ドキュメントの概要みたいなものを一通り読んで、 インターン先のコードを参考にさせてもらいながら、 とりあえず手を動かす方式で行くことにしました。

jwt

認証方式が色々あって色々考えたのですが、 json web tokenがなんか最近流行ってそうかなと 適当に色々斜め読みした結果思ったので、 使うことにしました。 hapiでは hapi-auth-jwt2というpluginを入れてあげて ちょこちょこと設定をすればjwtが使えました。 主にgithubのreadmeを読みながら格闘しました。

Elasticsearch

人気の検索エンジン?ですよね??
なんか普通にデータベースとしても相当優秀なのではないかと思って、 こいつにデータをぶち込んでます。 JSON形式のものをそのまま突っ込むだけなので本当に楽、 その代わり頑健性的にはよくないのだと思います。

nodemon

ファイルに変更が加わったら、サーバを再起動してくれる便利なモジュール。
あってますか?笑 適当な認識でとりあえず使ってますが、 とても簡単に導入できて便利で良いです!

npm i -g nodemon

localのbinディレクトリにpath通すのが面倒だったので globalに入れました!

Vue.js

こいつが今回の関門だと思っています。 フロントエンドの勉強は全然足りていないので、 今からとりあえずドキュメントを一通り読みきろうかと思います。

まとめ

本文にまとまりが一切ないというか、 完全に自分の行なっていることの記録と化してしまいましたが、 とりあえず以上のような環境を用いて実装していこうと思います! 問題にぶつかったり面白いTipsが見つかったりしたら投稿していきます!

node + opencvに踊らされた話するわ

Open CV

言わずと知れた汎用画像処理ライブラリ。 最近知ったのはIntel社が出しているということ。 とりあえずかなりすごいという印象。 今回、行いたかったのは顔認識を行って顔部分を切り取って背景に乗っけるというもの。

went-went-takkun135.hatenablog.com

これの続きです! node上でopencvを扱えるライブラリも出ていたので、 こいつはサクッと行けるだろうとタカをくくっていたのですが、、、
ということで、今回露頭に彷徨いながら無理だったこととできたことを書きます。

Mac OS Xに導入

開始前の状態

実は自分のMacにはずいぶん前に師匠が入れてくれていたので、 そもそもopencvが存在する状態ではありました。 また、node-opencvはopencv2系のみをサポートしており、 ずいぶん前に入れていたことが功を制し、もう

npm install --save opencv

だけで行けると思ってたのですが、エラー。。

エラーに次ぐエラーと調査に次ぐ調査

brew update

エラーログを調べると明らかにopencvがないと言っていて、 パソコンを調べると明らかにopencvが入っているという矛盾。 昔に入れたから何かしらが変わったのかと思ってとりあえずは、

brew update opencv

そしたら、hey hey!opecv3にあげるならupgradeにしないと! 的なこと言われてfu*kってなりました。 結果、npmは微動だに認識せず。

brew unlink, brew reinstall

とりあえず、片っ端から再インストール系のコマンドを試していきましたが

なんの成果も得られませんでしたぁぁ!!

実行ファイルをリンク

結論から言うと、下記のコードを打ち込めばなんとかなりました。 opencvのバージョンは自分のものに直しました。

brew link --force opencv3
ln -s /usr/local/Cellar/opencv3/3.1.0_3/share/OpenCV/3rdparty/lib/libippicv.a /usr/local/lib/

Error: opencv@5.0.0 install · Issue #398 · peterbraden/node-opencv · GitHub

コマンドを眺める限り実行ファイルがbrewのカゴの中から 飛び立てなかったようですね。 これはopencvが悪いと言うよりは、 node-opencvがopenvを認識する範囲が狭すぎたことが原因の仮説です。

npm install opencv

これはこれで地獄を見ました。 謎のエラーが出続けるのですよ。 今回の一件でnode-pre-gypと言う謎のライブラリとELIFECYCLEなるエラーコードを 心底憎むようになりました。

様々なものをアップデート

とりあえずこれをしてみなよ!ってどっかのISSUEで言っていた諸々updateをやりました

npm install node-pre-gyp
npm install node-gyp
npm update -g npm

しかし効果はいまいちのようだ。

腹たったのでとりあえずnode_moduleを削除

一回ぶち消してもう一回installして見ました。 案の定ダメでした。
が、
少し収穫、sharpなる画像のサイズ変更モジュールとの依存関係がうまく言ってないっぽい?

腹たったのでとりあえずnode_moduleを削除2

依存関係か、なるほどと思い、その時相当尖っていた筆者はもう一度node_moduleを削除。

npm install -save opencv
npm install

と言う順番でinstallを敢行。 なぜだろう、動いてしまった。 原因はおそらくだがsharpとの依存関係で何かしらの悪さがあったのだろう

実はこれすればよかった説

npm dedupe

って打ち込むとなんかバグってる依存関係直してくれるらしいので、 最初からこれして入ればよかったかもしれないですね。

AWS Elastic Beanstalkに導入

結論から言いますが、できませんでした。

Elastic Beanstalkについてざっと

ソースコードをデプロイしたら、その他諸々の設定を自動でこなしてくれるAWSの1サービス。 nodeのものを使う場合、基本的にはpackage.jsonを勝手に読み込んでくれるため、 本当に特に設定なしで使える(はず)。 拡張設定を行いたい場合.ebextensionsと言うディレクトリを作成し、 その中にyaml形式かな?でコマンド等を書き込んでいく。

yumopencvのライブラリがない問題

Amazon Linuxのパッケージマネージャーはyumのはずなんですけど、 yumには一発でopencvが入るものが内容です。 正確には公式サイトに

sudo yum install numpy opencv*

で一発だよって書いているんですが、amazonyumは少し普通と違うのかな? 了解した。じゃあ生コードから入れるっきゃねーな。

とりあえずssh接続で確認

いきなり.ebextensionsにコマンド頑張って書き込んでミスりまくってたら恥ずかしいので、 まずはssh接続して、内部で試してみました。

sudo yum install -y cmake
sudo git clone https://github.com/Itseez/opencv.git /opt/elasticbeanstalk/eb_infra/opencv
cd /opt/elasticbeanstalk/eb_infra/opencv
sudo git checkout 2.4.13.2
sudo cmake ./
sudo make
sudo make install

これ最終形態ではあるんで、ここに来るまでの紆余曲折はあったものの 基本的にこれでインストールぽいことができていたと思います。 usr/local/binopencv_versionみたいなコマンドが存在することを 確認しただけではありますが。

.ebextensionsに記述

上記のコマンドをそのまま写しました。 そのまま順番に01-command, 02-commandとやって最初試すと、 04-command.gitディレクトリがないとのたまい始めたので、 これはもしかしたら並列処理で進んでる可能性があると考え、 全部&&で結んで一行のコードにしてやりました。 そしたら通ったので、elasticbeanstalkはおそらく 番号まで振らしておきながら 並列でコマンドをかけてやがります。

npm install 。。。

再度ここで壁にぶつかりました。 もうnode使うのやめろよと言う悪魔の声を 宗教上の理由で! と言う意味不明のパワーワードで搔き消しながら進んでいこうとしたのですが、 序盤に行ったようにnpm installを自動で実行してくれるため、 順番を変えたりできないんですよね。。 内部のPythonコードを書き換えたりしてみたのですがダメでした。

Game Over

でございました。

結論

OpenCV使うならPythonがいいと思う。


追記(2017/10/2)

上でグダグダぐちぐち言っておりますが、原因がわかったと思われます。

Unsupported platform for fsevents@1.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

エラーコードにこれが含まれていました、依存ライブラリがもしかしたらそもそもlinuxはサポートしていなかったのかもしれない。。 お騒がせいたしました。

Exif情報を抹消する最速の手法を思いついた気がする

iPhoneで撮った写真

iPhoneで撮った写真には大量のメタ情報が含まれています。 それらをまとめてExif情報っていうらしいんですけど、 普通に写真を扱いたい時に邪魔じゃないですか。 写真をアップロードして表示とかする時に、 あいつのせいで勝手に回転してたりするのがどうも気に食わない時があったんですよね。 ということでそれを削除するというのが今回の目標です。

検索結果と最初にやっていた解決法

Exif情報を消し去ってくれるアプリの宣伝等がヒットしました。 アプリ入れるの面倒だなとなんとなく思い別の記事を見ると、 プレビューアプリ使って、pngにフォーマット変換したらExif消えるよって書いていたので、 pngに変換して見ると、pngって重たいんですね、データサイズが5倍くらいになってしまったので これはいかんとそれを再度jpegに変換。 これをiPhoneからAirdropで送られて来た写真に対し繰り返していました。

気づいてしまった最速の手法

  1. iPhoneからラインで公式アカウントなどに画像を送信します
  2. PCでそのラインを開き画像をダウンロードします
  3. Exif情報が消えます

なるほど、ライン様様ですね。 アップロードの際にExif情報消してくれるらしいですね。

欠点

まとまった大量の画像などには適用しづらいかもです。 アルバム機能使ったらいいかもですけど、 Airdropの方が早いし、そういう時はサクッとアプリを入れてしまえばいいのかなと。

機械学習の勉強会「夏のトップカンファレンス論文読み会」に参加して来た

勉強会?的なものに初?挑戦

すみません。文字化けみたいになりました。 本日abejaさんが企画する 夏のトップカンファレンス論文読み会 に参加して来ました! abejaさんの名前からわかる通り、機械学習の論文読み会です。 企業が主催する勉強会というものに参加したのが初めてのようなもので、 (何回か就活系で行ったことある気もする)しれっと緊張してました。

abeja-innovation-meetup.connpass.com

参加動機として、日頃から参加させていただいている実装クラブのスラックに 本読み会の情報が流れて来て、先輩に筆者のようなへぼエンジニアが参加しても意義はあるのか? と、問うたところ 「正直よくわからん!」 と言われたので行って来ました!笑 予習ばっちしって状態で行く予定でしたが、何も間に合わず前半の人が何を話すかの把握程度での 参加となってしまいましたが、 その中で筆者がなんとなく思ったことなどをまとめていきます。

ディープラーニングは今尚最盛期

まだまだディープラーニングへの熱は冷めてない模様。 一部のトップリサーチャーなどはもう飽きたという声も上がりつつも、 全体のトレンドとしてはまだまだ来ている。 一方で、火付け役となったDCNNは論文がガンガン出てくるような状況ではなく、 GANやRNNなどのCNN以外のディープラーニングの技術が来ている様子。 CNNに関してはこれまでにでた技術を礎として、 その上に何を構築するかのフェーズに入ってきているとのこと、 そんな中、

CNNの畳み込み方には改善の余地がある

という論文を読んでくださったのがyosuke_shinyaさん。 少し、内容が難しくて理解できていない部分の方が多いのですが、 ざっくり言うと既存の画像認識では矩形を設定して畳み込んでいるが、 絶対矩形じゃない方が制度出るよね!その効率的なアルゴリズム考えたよ! みたいな感じだと思います。 すみません。やっぱり何もわかってないかもです。 既存の画像認識で難しかった小さい物体の検出や精度向上が期待されるみたいです!

DNNの見える化

DNNといえばブラックボックスで そのくせにハイパーパラメータが大量にあって、 いや、なんか知らんけどめっちゃいいの出てきたすごない? みたいな分野かなと思っていたのですが、 実際結構そう言う部分があってそこに問題意識もあるようで、 中間層の見える化が進んでいるようです。 これができるようになったらハイパーパラメータの数が減るかもしれないし、 ハイパーパラメータの最適化もすぐ済ませることができると思うから お買い得技術だなと思って聞いていました。

データがやはり大事だが…

データ作成をしている人たちがちゃんといてだな

質のいいデータこそが質の良いモデル作成に必須であることは周知の事実らしいですが、 金銭的コストも時間的コストも持って行かれてかつ、 面白くない という問題だらけのデータ作成問題?アノテーション問題が横たわっているらしいです。 逆にそこに目をつけてデータを売ったり、 有益なデータセットを作成するのも大事な仕事、研究だったようで、 データが命 っていうことはなんども聞いていた気がしたけど、 データ産業の大きさがなんとなく体感できてよかったなと思いました。 また、片岡さんという方がおっしゃっていましたが、 データセットを作るような研究をしていると 問題を出す側に回ることができるそうで、そうすることで 時代を引っ張るような大きな流れを生み出すリサーチャーになれる可能性が出てくるとのこと。 なるほどです。

高価なデータを効果的に利用するという観点

坂井さんという方が発表していらっしゃった内容は、 半教師なし学習です。 正直な話、今日の読み会に出席してトレンドなどとこの発表を聞くまでは 教師の有無に関してわかっているようで何もわかっていませんでした。 教師なしとはつまり強化学習であると思っていたくらいです。 半教師で精度が出せる話を丁寧にしていただいたのですが、 これまた正直な話、多分半分もわかっていないです。 ただ、概念的な説明からしていただいて、そっちの方は理解できたかなと。 ラベル付きのデータセットはコストがかかるので、 ラベルがないデータをうまく使って、コストを抑えることができないか、 また、現実的にラベル付きデータを作成しながら学習させるよりも 大量のラベルなしデータでさらに精度の良い学習ができないか。 というのがモチベーションだと思います。 その中で発表していただいたのはうまくラベル付きとなしを混ぜて行くというもので、 案外それでも精度が出るらしいです。 なるほどです。

今回の勉強会を終えて

わかったこと

  • DCNNに関してはかなりモジュール化が進んでいる
  • DCNNを使って何かをするために最新の技術をサーベイしまくるとかはもう必要なさそう
  • データは死ぬほど重要だから大事に扱う
  • データのうまい使い方はいくらでも出てきそうだからサーベイした方が良さそう?
  • 勉強会に参加することでモチベーションが上がる
  • 機械系の筆者が行くような企業がいっぱい来てたからみんなDL勉強中
  • インターンこそ現代就活最大の武器
  • セカンドエキスパートは最強らしい
  • DNNはツールだから自分の専門に持ち帰ると良い
    • そうすることでDNNのメンターもつくかも!
  • とりあえず実装して遊ぶことから始める
  • (その場では)わからなくてもいいから勉強会に参加するのは大事
  • 大企業でDLの企画?を通すのはなかなか難しい
  • やっぱり数学も大事かも

これからやるべきこと

  • とりあえず実装 -> 現在3D GANを実装というか実装済みのものを理解せんとしてます
  • 最低限の数学的知識を得る(特に表記がわからないという絶望的状況からの脱却)
  • 情報蒐集の網を広げる -> このような勉強会があればまた参加したいなと

以上です!雑なまとめですみません!何か情報があれば教えてくれるとありがたいです。発表者の皆さんお疲れ様でした!

node.jsのgmライブラリでCopyOpacityするのに1日ハマった話するわ

gmライブラリ

node.jsにおける画像編集の鉄板?ライブラリである。 バックでGraphicsMagick(ImageMagick)が動いており、 それらをnode.jsの機能のように使うことをapiなのだろうか。 今回はこのgmライブラリを使ってはまりまくったので、 後に筆者のような愚かな人間が生まれないように記事を書く。 多少心が荒んでいるので、丁寧語が抜けていることをお許し願いたい。

今回やりたかったこと

blog.yug1224.com

サムネイルを作る目的ではないが、 こちらの記事にあるようにmaskとなるpngファイルから 透過値をコピーして、丸く切り取るようなことがしたかった。 また、作業に際し速度が必要であったため、 ImageMagickではなくGraphicsMagickを使うことにした。

compositeとconvert

おそらく、ちゃんとした区分があるのだろうが、筆者のなんとなくの理解では

  • 画像の変換系はconvert
  • 画像の合成系はcomposite

である。 GraphicsMagickにある、コマンドはそんなに多くない。 というかむしろほとんどのことは convertですませるのだろう。 convertを使う場合、基本的に画像ファイルの引数は二つだ。 ここで、問題が生じる。 maskを用いた透過値のコピーには引数が3つ必要なのである。 上記ページからもわかる通り、このような場合はcompositeを用いる他ない。

gmライブラリの仕様上注意

今回のメインディッシュである。 gmライブラリは今のところ、convertコマンドしかサポートしていないのだ。 これが何を意味するかというと,

gmライブラリで今回の目的が達成できない

最終的な筆者のソリューションは、おそらくみなさんが行なっているであろう。 child_processを使って、シェルに直接実行してもらう方針である。

// gmモジュールがcompositeをサポートしていないため関数定義
internals.gmcomposite = function(maskImagePath, tempImagePath, newImagePath, callback) {
  var gmspawn = spawn('gm', ['composite', '-quality', 100, '-compose', 'CopyOpacity', maskImagePath, tempImagePath, newImagePath]);

  gmspawn.stdout.on('data', function(data) {
    console.log('stdout: ' + data);
  })

  gmspawn.stderr.on('data', function(data) {
    console.log('stderr: ' + data);
  })

  gmspawn.on('exit', function(code) {
    if (code !== 0) {
      callback(code, null)
    }else {
      callback(null, null)
    }
  })
};

これでひとまずは実行できた。 恥ずかしい話、ここにたどり着くまでに1日の時間を要した。

GraphicsMagickのややこしいオプション

今回、ここまで時間がかかったのにはgmがサポートしていなかったことと 合い重なってGraphicsMagickのオプションがわかりづらいと言うことがある なんと、

  • convertコマンドには-composite
  • compositeコマンドには-convert

オプションが存在するのだ。 筆者は永遠とgmライブラリの-compositeオプションを使い、 どのオペレータを用いればmaskを用いたCopyOpacityができるのか延々と悩んでいたわけである。

まとめ

え、今回の問題に直面した時の反省点ですか?…マジでわからん。。。 こう言う泥沼にハマった時の対処法誰か教えてください。。

werckerをmac(docker for mac)で動作させたわ

docker for mac

なんか最近出たらしいですね。 これまではdocker toolboxみたいなので、 virtualbox上でdockerを走らせていたらしいのですが、 virtualboxじゃない仮装アプリでなんかdockerの利点を最大限生かせるようになったのが docker for macみたいな記述があった気がします ただいかんせん新しいので、ドキュメントが少ない問題に直面しまして、 誰かの助けになればいいなと一筆した次第であります。

導入手順

wercker-cliを(macに)インストールします

$ brew install wercker/wercker/wercker-cli

macにwercker-cliがインストールされたら、

$ wercker build

で、勝手にdockerがimageを引っ張ってきてくれて使えるようになります。

ちょっと解説のようなもの(間違ってる説は結構ある)

docker toolboxだとvirtualbox上にLinuxカーネルを立てて、 その上にdockerを起動し、さらにその上にwerckerをインストールして起動します。 それに対し、docker for macは仮装環境は挟んでいるものの、 基本的にはOS Xカーネルを使うらしいので、 mac自体にwerckerがインストールされていないと使えない ということで、macの方のlocalにwercker-cliを入れてあげて、 docker上で起動すると、dockerの機能でimageを探してきてくれます!

引っかかったところ

あくまでmac上で起動されているため、 node.jsに置けるbcryptのようなlinuxOS Xで挙動の違うライブラリは macの方のバージョンを入れる必要があります。 そんなん知らんやん。。。 invalid ELFみたいなのが出てきたら用心してください!!

まとめ

dockerは勉強した方が良いな完全に。。。