はじまる

適当な事を適当に書く

atlassian 製の AWS モックツール LocalStack をさわってみた

Local Stack とは

https://i.imgsafe.org/fe38108cd6.png

こいつです

bitbucket.org

LocalStack provides an easy-to-use test/mocking framework for developing Cloud applications. Currently, the focus is primarily on supporting the AWS cloud stack.

クラウドアプリのテストやモックに使うフレームワークです。現在はとりあえず AWS のサービスに対応することに注力しているみたいです。手間の削減や、お金の節約になるね!仕事のプロジェクトに本格導入するのはまだ怖いけど、手元のプログラムとかのテストとかには良さそう!ただ既存のシステムへの改修のテストにつかうのは、既存の模倣が大変そうなのでいまのところシンドそう!

起動

docker run -it -p 4567-4580:4567-4580 -p 8080:8080 atlassianlabs/localstack

こんな感じで、localhost に各AWSサービスを偽装したエンドポイントが立ち上がります。

...
Starting local dev environment. CTRL-C to quit.
 * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
 * Restarting with stat
Starting local Elasticsearch (port 4571)...
Starting mock ES service (port 4578)...
Starting mock S3 (port 4572)...
Starting mock SNS (port 4575)...
Starting mock SQS (port 4576)...
Starting mock API Gateway (port 4567)...
Starting mock DynamoDB (port 4569)...
Starting mock DynamoDB Streams service (port 4570)...
Starting mock Firehose service (port 4573)...
Starting mock Lambda service (port 4574)...
Starting mock Kinesis (port 4568)...
Starting mock Redshift (port 4577)...
Starting mock Route53 (port 4580)...
Starting mock SES (port 4579)...
Starting mock CloudFormation (port 4581)...
...

ダッシュボード

http://0.0.0.0:8080/ にアクセスすると表示される。正直まだちょっと何につかうか、わからない。

f:id:satorusangakoronda:20170428175242p:plain

つかってみた

トーリー

DynamoDB の テーブルをつくって、Item を挿入できるか

1. DynamoDB テーブル作成

aws cli をつかって、テーブルを作成してみます。--endpoint-url オプションを LocalStack の 偽装エンドポイントを指定します。

$aws dynamodb create-table \
     --endpoint-url=http://localhost:4569 \
     --table-name Music \
     --attribute-definitions \
         AttributeName=Artist,AttributeType=S \
         AttributeName=SongTitle,AttributeType=S \
     --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
     --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1

こんなレスポンスが返って来ればOK

{
    "TableDescription": {
        "TableArn": "arn:aws:dynamodb:us-east-1:000000000000:table/Music",
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 1,
            "ReadCapacityUnits": 1
        },
        "TableSizeBytes": 0,
        "TableName": "Music",
        "TableStatus": "CREATING",
        "KeySchema": [
            {
                "KeyType": "HASH",
                "AttributeName": "Artist"
            },
            {
                "KeyType": "RANGE",
                "AttributeName": "SongTitle"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1493371126.181
    }
}

テーブルができたみたいです。

2. DynamoDB テーブルの確認

他のコマンドを実行してみます。dynamodb のテーブル一覧を取得してみましょう。

$aws --endpoint-url=http://localhost:4569 dynamodb list-tables

こんなレスポンスが返って来ればOK

{
    "TableNames": [
        "Music"
    ]
}

さきほど作成した Music テーブルの情報が返却されてきます。

3. DynamoDB に Item を挿入する

$aws dynamodb put-item \
 --endpoint-url=http://localhost:4569 \
 --table-name Music  \
 --item \
     '{"Artist": {"S": "No One You Know"}, "SongTitle": {"S": "Call Me Today"}, "AlbumTitle": {"S": "Somewhat Famous"}}' \
 --return-consumed-capacity TOTAL

こんなレスポンスが返って来ればOK

{
    "ConsumedCapacity": {
        "CapacityUnits": 1,
        "TableName": "Music"
    }
}

4. DynamoDB の table を scan してみる

Item 挿入されたか確認する為に、scan してみましょう。

$aws --endpoint-url=http://localhost:4569 dynamodb scan --table-name=Music                                                                                               

挿入されてるみたいですね。

{
    "Count": 1,
    "Items": [
        {
            "AlbumTitle": {
                "S": "Somewhat Famous"
            },
            "SongTitle": {
                "S": "Call Me Today"
            },
            "Artist": {
                "S": "No One You Know"
            }
        }
    ],
    "ScannedCount": 1,
    "ConsumedCapacity": null
}

5. スタックのリセット

Ctrl+C でプロセスを終了すると、スタックはクリアされます。 もういちど起動して、再度 dynamodb のテーブル一覧を取得してみましょう。

$aws dynamodb list-tables --endpoint-url=http://localhost:4569

さきほどの Music テーブルが消えてることがわかります。

{
    "TableNames": []
}

板垣政樹 『ITエンジニアが覚えておきたい英語動詞30』

私は英語話者の外国人エンジニア(日本語わかる)達と普段から仕事をしている。一応、彼らとのコミュニケーションは日常会話と仕事の会話の両方で、英語を用いている。

 

最も英語に触れていた大学生活から長く時間が経ってしまい、ほとんど英単語や熟語を思い出せなくなってしまったから、かなり砕けた言い回しや文法の誤りも含んだ英語で話している。一応業務はまわっているので、意味は通っているようだ。つまり、この本にあるような内容を実践していた。まぁ相手が日本語わかるので、最悪日本語と英語両方で意味が伝えられるという甘えはあるけど。

 

動詞よりも、例文にある動詞以外の単語や言い回しが参考になった。ITソフトウェア開発の現場でのコミュニケーションを想定した英文というのはなかなかない。

 

 

AWS CodeStar をさわってみた

はじめに

開発環境をセットアップする新サービスがリリースされてたので試してみた。

AWS CodeStar – Quickly develop, build, and deploy applications on AWS

f:id:satorusangakoronda:20170420113730p:plain

現在対応しているリージョンは下記のよう

f:id:satorusangakoronda:20170420090319p:plain

印象

触ってみた印象としては、既存の AWS サービスである

  • CodeCommit
  • CodeDeploy
  • CodePipeline

などを活用するためのフロントツールという印象でした。

活用できる場面

GitHub 一強のコード管理時代な昨今です。CI環境やプロジェクト管理ツールも GitHub と連携するサービスが既に多数あり、余り新規の環境を試すメリットはないと思います。(現状、CodeCommitや、CodeDeployをわざわざ選択しているチームがどれほどあるか?)

ただ、CodeStar は 少しターゲットが異なり、 windows/エンタープライズでの活用を見込んでいるのではないかと感じました(対応している IDE がまず VisualStudio と Eclipseだったので)。ひとが入れ替わりやすいSI開発では、開発環境の管理・構築は結構面倒なので、そこで活用の場面があるのかな〜?と感じました。AWS は昨今、アーリーアダプター以外の受託開発(エンタープライズやWeb制作)への利用拡大路線をとっているので(日本だとNECさん日立さんとかとの連携強めていますね。)、受託で使いやすいものを目指して行くのではないかと踏んでいます。

JIRAなどの拡張があり、おそらく今後も拡張機能は増えていくと思います。

値段が気になるところですが、それについては未調査です。 AWS Codestar 自体の利用は無料でした。

つかってみる:プロジェクトを新規作成する

画面がこんな感じ。「Start a project」ボタンをクリックをします。

f:id:satorusangakoronda:20170420090459p:plain

Codestar の利用には CodeStarFullAccess などのIAMロールが必要です。今回は管理者ユーザーでログインしているので、とりあえず大丈夫。

f:id:satorusangakoronda:20170420090636p:plain

OK, Got it をクリックするとテンプレートを選択する画面になります。

f:id:satorusangakoronda:20170420090751p:plain

今回は、Node.js を EC2 でつくるテンプレートを選択してみます。

f:id:satorusangakoronda:20170420091048p:plain

プロジェクトの作成画面になります。よしなに。 f:id:satorusangakoronda:20170420091428p:plain

ちなみに、Edit Amazon EC2 Configuration をクリックすると、VPCとサブネットの設定ウインドウが開きます。

f:id:satorusangakoronda:20170420091340p:plain

とりあえず Next ボタンをクリックすると、EC2のキーペアを選択するウインドウが表示されます。よしなに。 f:id:satorusangakoronda:20170420091628p:plain

AWS CodeStar を使うのがはじめての場合、AWS CodeStart のの設定画面がでます。ちなみに、薄々判断はつくと思いますが、ここで日本語の名前を設定すると、普通に他の画面で文字化けします。 f:id:satorusangakoronda:20170420092440p:plain

IDE/Editor の選択画面がでます。私はmacなので、今回は Command line tools を選択します。 f:id:satorusangakoronda:20170420092701p:plain

ローカル環境の設定画面がでます。HTTP を選択しました。 f:id:satorusangakoronda:20170420092850p:plain

スクロールするとこんな感じ。git リポジトリをローカル環境に clone するのですが、これみると プロジェクトの namespace は リージョンでユニークっぽいですね。 f:id:satorusangakoronda:20170420093111p:plain

You’ll need Git credentials for your IAM user. You can generate them here.

ということで AWS CodeCommit の認証情報をつくります。(AWS CodeCommit つかったことなかったので) f:id:satorusangakoronda:20170420093403p:plain

ターミナルで clone してみますね。できました。 f:id:satorusangakoronda:20170420093908p:plain

管理画面をつかう

Dashboard

プロジェクトの作成が完了しました。管理画面が表示されます。 リポジトリの接続設定をするようにアラートが表示されていますが、さっきやったので I have already done this でいいですね。 f:id:satorusangakoronda:20170420094242p:plain

いろいろ消すとこんな感じ。 f:id:satorusangakoronda:20170420094533p:plain

f:id:satorusangakoronda:20170420094634p:plain

Code

code タブは CodeCommit へのリンクですね。 f:id:satorusangakoronda:20170420094846p:plain

Deploy

deploy は CodeDeploy へのリンクです。 f:id:satorusangakoronda:20170420095111p:plain

Pipeline

CodePipeline へのリンク f:id:satorusangakoronda:20170420095302p:plain

Team

プロジェクトメンバーを管理する画面です。文字化けしてますね。 f:id:satorusangakoronda:20170420095507p:plain

Extension

いまはJIRA拡張ひとつのみみたいですね。 f:id:satorusangakoronda:20170420100310p:plain

Project

プロジェクトのリソースの一覧など。地味にこれは便利かも…。 f:id:satorusangakoronda:20170420100521p:plain

最後に

いきなりチームでの開発環境を移行するのは難しいと思うので、やっていく気持ちで試してみましょう。

Python & OpenCV で 画像に含まれる円を検出する(OpenCVがver2の場合)

これの続きです。

maroyaka.hateblo.jp

mac での場合

❯❯❯ uname -a
Darwin xxxx 14.5.0 Darwin Kernel Version 14.5.0: Wed Jul 29 02:26:53 PDT 2015; root:xnu-2782.40.9~1/RELEASE_X86_64 x86_64
❯❯❯ brew --version                                                                                                                                                                                                                                                   
Homebrew 1.1.13
Homebrew/homebrew-core (git revision 7b34e; last commit 2017-04-19)

homebrew で opencv をインストールすると、バージョンが2系のがはいる。

❯❯❯ python
Python 2.7.13 (default, Dec 18 2016, 07:03:34)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'2.4.13.2'

前回のPythonスクリプトをそのまま使うと、エラーになる。

解決にはここを参考にした。

stackoverflow.com

修正後はこんな感じ

import sys
import cv2
import cv2.cv as cv #2系だと HOUGH_GRADIENT がこのモジュールにはいってる
import numpy as np

args = sys.argv

img = cv2.imread(args[1], 0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img, cv.CV_HOUGH_GRADIENT,1,20,
                            param1=50,param2=30,minRadius=0,maxRadius=0) #ここを修正した

circles = np.uint16(np.around(circles))
for i in circles[0,:]:
    # draw the outer circle
        cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
    # draw the center of the circle
        cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)

cv2.imwrite('detected_' + args[1], cimg)

某大学でデザイン思考の講義を受けている

講義内容は 非公開らしいので、講義から派生して自分で調べたら内容とかを書いていこうと思う。

 

〜デザイン思考〜

 

  • 内容自体は目新しいことはない。古き良きマーケティング経営学と同じ。
  • プロセスがタスクレベルまで落ちていて、実践しやすいことが受け容れられている所以ではないかと感じた。
  • ユーザーとのコンタクトが重視されており、実践しなければいけないタスクとしてユーザーへのインタビューや観察が含まれているため、ユーザー無視の事業企画を回避しやすいのでは(例:ダサピンク現象 http://d.hatena.ne.jp/yuhka-uno/touch/20141123/1416735993
  • 認知度がかなり高くなってきたので、新規事業に取り組む際に、社内に受け入れられやすいのでは(流行ってる:意識高い系=アーリーアダプターには数年前に流行ったけど、裾野が広がってきた)
  • 僕らが自分達で考えたプロセスを導入します!→ふーん
  • デザイン思考を導入します!→なんかウケが良さそう(深く考えるタイプのひとには、そうでもないと思うけど、ライトなスタッフは乗り気になりそう)

 

あと、私が講義に参加しているデザインスクールは「ものづくり(製品・サービス)」を重視している』ということで、いわゆるテックスタートアップのような会社と相性がいい。