はじまる

適当な事を適当に書く

板垣政樹 『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
  • 認知度がかなり高くなってきたので、新規事業に取り組む際に、社内に受け入れられやすいのでは(流行ってる:意識高い系=アーリーアダプターには数年前に流行ったけど、裾野が広がってきた)
  • 僕らが自分達で考えたプロセスを導入します!→ふーん
  • デザイン思考を導入します!→なんかウケが良さそう(深く考えるタイプのひとには、そうでもないと思うけど、ライトなスタッフは乗り気になりそう)

 

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

Node-RED だけで Single Page Application を作る

なんでわざわざそんなことやるのって、まぁそういう状況になったのだから仕方ない。普通に悪手なので、他に選択肢があるなら敢えてやらなくていいです。セキュリティ上、とてもインターネット上での公開に堪え得るものにはならないので、コントロール下にあるローカルネットワークで事が済む場合だけにしてください。

 

・HTTP リクエストノード・Templateノード・HTTPレスポンスノードの3つを組み合わせて、メインページを書く

CSSJavaScript などはtemplateノードにベタがき or HTTP ノードからローカルのノードを返すAPIを作って、HTMLノードにonLoadでそれらを呼ぶ処理を書く

・画像も専用のAPIを作る

・諸々の処理はローカルAPIを作って、それを呼ぶことで処理を実行するようにする。

・逐次処理などはPromise とか使う。

・つまりは HTTP リクエストノードでAPIを作りまくって、それを画面から呼びまくる作りになる

 

 

AWS IoT CLI or SDK で device shadow を更新したい

はじめに

とあるデバイスのなかで稼働する特定のミドルウェアの起動状態を AWS IoT の Shadow で管理している。

  • middleware.poweron のときにサービス起動
  • middleware.poweroff のときにサービス停止

といった感じ。ちなみにデバイスのなかに、AWS IoT のエージェントが常駐している。 下記のようなイメージ。

f:id:satorusangakoronda:20170331180726p:plain

非商用のデモ用デバイスで、使う機会はそんなになく、あまり厳密な管理はしていないのだけど、諸用でちょこちょこ再起動が必要になってきた。で、再起動には device shadow の middleware.poweroff してから on するといいんだけど、AWS IoT の管理画面をちょこちょこいじるのは面倒になってきたので、手元のPCから操作ちょっとしたスクリプトを書こうと思った。

アプローチ

aws iot-data コマンド

$aws iot-data update-thing-shadow help

~
SYNOPSIS
            update-thing-shadow
          --thing-name <value>
          --payload <value>
          outfile <value>

OPTIONS
       --thing-name (string)
          The name of the thing.

       --payload (blob)
          The state information, in JSON format.

       outfile (string) Filename where the content will be saved

OUTPUT
       payload -> (blob)
          The state information, in JSON format.

partial update は出来ないようだ。なので、divice shadow の一部分を更新したい、というときは、一度 aws iot-data get-thing-shadow でshadow の全文を取得し、書き換えてから改めてupdate-thing-shadowで全文を書き換えるということになる。なんか嫌だけど、そのくらい割り切った方がスッキリしていていいかもしれない。

実装

あとで書く

エンドポイント

ちなみに、AWS IoT はリージョンサービスで、エンドポイントはリージョン毎に異なる。 ただし、リージョンの前にくるサブドメインは、1 ルートアカウントにつき1つになる。 f:id:satorusangakoronda:20170331174403p:plain

JSON がらみの Webサイトまとめ

設計記述

JSON Schema の公式サイト json-schema.org

変換

JSON 形式の文字列を貼り付けると 整形(pretty print) してくれる jsonprettyprint.com

JSON Schema Editor JSONSchema.Net

JSON 形式の文字列を貼り付けると、以下の4つの形式に変換してくれる

  • Pretty
  • Plain
  • Mini
  • Web

検証

JSON Schema Online Validator www.jsonschemavalidator.net