kei0425tan’s blog

技術的なことを主に

ぶりかまでブリ大根

昨日の帰りにデパ地下にいってみたら、ブリのカマが売っていました。
398円に半額シール

これはお得と購入。

やっぱり、ブリはブリ大根でしょ?ということで以前購入した電気圧力鍋で作ってみました。

f:id:kei0425tan:20170301110558j:plain

ちなみに使った電気圧力鍋はこちら



電気圧力鍋は、普通の圧力鍋と比べると、、、

メリット

  • 静か

→ ガスの圧力鍋はしゅーーーーってかなり音がでるのでちょっと怖いです。

  • タイマー付で放置調理が可能。

→ ガスの場合は放置しちゃ絶対ダメ!爆発します。

  • コンロがふさがれない。

→ 同時に他のおかず作ったりするのも楽にできます。特にうちはガスコンロでご飯を炊いているので

  • 機種にもよるが多機能。

→ うちの電気圧力鍋は他にもスロークックモードもありじっくりコトコト調理もできます。ついでに炊飯もできます。

  • 専用レシピがついてくる。

→ どれも簡単に作れそう。見てるだけで楽しいです。

デメリット

  • 一度に作れる量に制限がある。

→ うちのは基本的に2,3人前までしか作れません。普通の料理なら材料を等倍にすれば何とかなりますが、電気圧力鍋の場合はそもそも入らなくなったりするのでレシピ通りの分量で作るのが無難です。

  • 後片付けが大変。

→ 調理器具の宿命ですね。まあなれれば何とかなりますが。

  • 専用レシピをなくすと何もできなくなる。

→ ちゃんと自分の電気圧力鍋の特性を覚えてアレンジできるようになればいいのですが、例えばクックパッドのレシピなどで作ろうとしてもうまく行かないことが多いです。

というわけで、レパートリーが広がるので興味がある人はぜひ購入してみるとよいかと思います。

最近レシピが追加されて無水調理もできるようになったみたいです。
http://www.siroca.co.jp/img/kitchen/autoclave/musui.pdf

レシピは以下の5つが載っています。

  • 野菜たっぷりカレー
  • 鶏肉のトマト煮込み
  • ひよこ豆と野菜のスープ
  • 鮭ときのこのしょうゆ煮
  • あさりの酒蒸し

claudia.jsでslack custom commandsを作る

kei0425tan.hatenablog.com

というわけで、まずはslackを使いこなせないと始まりません。

手始めに、custom commandsを使ってみます。

こちらが公式ページ(英語です)
api.slack.com

その前に、ここまでできてる前提で話しますね。
kei0425tan.hatenablog.com

slackの設定

というわけで、AWS lambdaで、web APIは使いこなせる??ようになっているはずです。
なので、slackでの設定を行います。

まずは、slackのチーム名の隣の下向き▼を押して、メニューを出して、「Apps & integrations」をクリックします。

面倒だったら、以下をクリックで!
slack.com

外部連携は基本的にいつもこのページからできるはずです。

その後、右上の「Build」をクリックし、「Something just for my team」をクリックします。

すると、以下の4つが表示されます。

  • Incoming WebHooks

→ slackにメッセージを表示する。

  • Bots

→ いわゆるBots

  • Slash Commands

→ /で始まるコマンド

  • Outgoing WebHooks

→ slackの表示されたメッセージを外部に渡す。

今回は、Slash Commandsを作成するので、そちらを選択します。

そうすると、コマンド名を入力する画面になるので、好きなコマンド名を入力します。

すると、まずPOSTデータのサンプルが表示されます。

token=RIKqnGNDN6r2yx01mOkIGgwe
team_id=T0001
team_domain=example
channel_id=C2147483705
channel_name=test
user_id=U2147483697
user_name=Steve
command=/weather
text=94070
response_url=https://hooks.slack.com/commands/1234/5678

それぞれの意味は以下です。

  • token → slackの認識用のトークン。受け取ったらまずここをチェックして違ったら弾くこと。
  • team_id → チームID。チームドメインは変更可能だが、team_idはずっとユニークで変更できないはず。
  • team_domain → チームドメイン。urlの最初。
  • channel_id → チャンネルID。チャンネル名は変更可能だが、こちらはユニーク。
  • channel_name → チャンネル名。
  • user_id → ユーザID。こちらもユニーク
  • user_name → ユーザ名
  • command → 入力されたコマンド(/つき)
  • text → 入力されたコマンドの引数。日本語も入ります。入力通りに受け取れます。
  • response_url → 処理に時間が掛かるときに利用するレスポンス用URL

次に、上から順に以下を設定していきます。

  • URL → 前回作成したURL
  • Method → POSTのまま
  • Token → そのまま。メモっておきましょう。
  • Customize Name → 表示するコマンド名。
  • Customize Icon → アイコンの変更ができます。
  • Preview Message → 上のCustomize NameとCustomize Iconを適用したプレビュー
  • Autocomplete help text → こちらを設定しておくと補完が効いてヘルプが見えます。
  • Escape channels, users, and links → ここを設定しておくと、POSTデータのtextが拡張されて、一緒にユーザIDなどが来ます。
  • Descriptive Label → なんだろう??知ってる人教えてください。

というわけで、大事なのはURLだけですね。

ここでは仮に、
コマンド名は/test
claudiaのpathも
https://yfw8aqrorg.execute-api.ap-northeast-1.amazonaws.com/latest/test
にしましょう。

それで、最後までいったら「Save Integration」をクリックします。
画面は遷移しませんが保存されます。

AWSの設定


とりあえず、前回のスクリプトに以下を追加。トークンは上のトークン入れてくださいね。

api.post('/test', function (request) {
    if (request.post.token != 'トークン') {
        return {message:'token error'};
    }
    
    return {
        "response_type": "in_channel",
        "text": "It's 80 degrees right now.",
        "attachments": [
            {
                "text":"Partly cloudy today and tomorrow"
            }
        ]
    };
    
});

APIのレスポンスはJSONで返します。

  • response_type → "in_channnel"を指定するとチャンネル全員が見えます。"ephemeral"を指定するとコマンドを発行した人のみに見えます。デフォルトでは、"ephemeral"を指定したのと同じです。
  • text → 表示するメッセージです。
  • attachments → 追加情報。引用みたくみえます。

さあ、ここまでできれば、あとは自由自在にコマンドを作れますね。

レッツコーディング!

いきなりステーキ ワイルドハンバーグ

今日は2/28

いつもいきなりステーキで29日にチャージをしています。
肉の日で5倍になるからです。
通常1万円チャージすると300円分ポイントが付くのですが、肉の日に限ってはその5倍で1500円分。
ランチ1食以上浮いてしまいます。

で、今月は28日までしかないのでチャージできないなと思っていたのですが、いきなりステーキではなぜか今日5倍になっていたので行ってきました!

ワイルドハンバーグ300g ライス抜き ブロッコリー変更 黒烏龍茶(肉マイレージおまけ)
f:id:kei0425tan:20170228140334j:plain

昔は「ライス大盛り無料ですがいかがいたしますか?」と聞かれると、はい、お願いしますって答えていたのですが、ロカボダイエットを始めてからは常にライス抜きにしています。

いきなりステーキではロカボ対応ということで、ライス抜きだと100円引き。さらに通常はコーンが付け合せなのですが、より糖質の少ないブロッコリーに無料で変更できます。

税込972円なり。

ちょっとランチにしてはお値段はりますが、300gは結構満足します。

マイレージは16625gまでたまりました。
あと、3375gで念願のプラチナカードなんだけどな。。。
ikinaristeak.com

ランチであと11回ちょっと。
プラチナ目指してがんばろう!

AWSで何をするのか

いろいろやりたいことがたくさんあるのですが、こんなことをやりたいなと思っています。

  • slackと連携していろんなbotを作成する。
  • 気になるホームページの更新のお知らせ。
  • アプリケーション(スマホやwebアプリなど)のバックボーン

slackと連携していろんなbotを作成する。

スマホしか持っていない友達がブログを作っているのですが、よくお店の地図のタグ送ってと頼まれます。
PCで検索して共有を選んでコピペするだけなのですが、時間が掛かって申し訳ないなぁと思ったりします。
それをbotでさくっと出せたら便利かな。

あと、メールでしか来ないお知らせを、slackに転送したりとかもしたいですね。
これは、サクラのクラウドで実現してたのですが、サクラの仮想マシンは高いので削除してしまいました。

利用するだろうAPI

  • AWS lambda → slackのbot
  • Google MAP API → お店のランドマーク検索

気になるホームページの更新のお知らせ。

自社のホームページが更新されても現状社内にお知らせがきません。
上長に更新のお知らせを社員にしたほうがよいのではと提案したところ、そんなものは自分でこまめにチェックしろといわれてしまいました。
なので、botで更新チェックできたらいいなぁ。。。
ちなみに、頻繁に更新されるものではないので、RSSも設定されていません。

あと、住宅ローン金利を更新されるたびにgoogle spread sheetに保存するのは、google apps scriptを利用してやってたりします。

利用するだろうAPI

  • AWS lambda → slackのbot
  • AWS DynamoDB → 更新前のhtmlの保存用

アプリケーション(スマホやwebアプリなど)のバックボーン

直近で作成したいのが、体重管理アプリ。個人的にはwebアプリのほうが便利かなぁと思っているけど、androidiPhone用アプリもあったらいいのかな?

利用するだろうAPI

  • AWS lambda → slackのbot
  • AWS RDS → 日々の記録用
  • Google API → ユーザ管理用


こうみてみると、EC2でホストマシンを立てて、そこにapacheやらpostgresやらインストールしてって思っていたのですが、実はもうそういう時代は終わったのかなぁと思っています。

かつや やみつきスパイスのチキンカツ定食

f:id:kei0425tan:20170227141729j:plain

今日はかつやの割引券が2月末までだったのでかつやに行ってきました。

期間限定メニュー「やみつきスパイスのチキンカツ定食」を頼んでみました。

f:id:kei0425tan:20170227142104j:plain

6味スパイスとは以下になります。

  • フライドガーリック
  • 唐辛子
  • 魚粉
  • フライドエシャロット
  • クミン
  • コリアンダー

いつものようにご飯抜き。
かつやの場合は「やみつきスパイスのチキンカツ定食単品で。あとトン汁小!」と頼むとスムーズです。

よくあるとんかつ屋さんと違って、かつやはキャベツが食べ放題じゃありません。
なので、キャベツを食べる配分には気を付けましょう。

今回、キャベツ先に食べきってしまったので、最後ちょっと辛かったです。
あと、結構フライドガーリックがきついかも??
今でもお口が臭い感じしちゃいます。
なので、お昼に食べるのはちょっと危険かも??

税抜き690円(税込745円)

ご飯なし+100円引きなので税込558円でした!

ちなみに、かつやの単品は税込216円引き。
それに、トン汁小が税込129円なので、ご飯分は税込87円ですね。

claudia.js使ってAWS lambdaはじめました

いろいろ調べてみたら、claudia.jsを利用すると簡単にAWS lambdaを利用できるようです。

とはいうものの、ほんとにはじめの一歩になるのでかなり苦労しました。

例によって、実行環境はcloud9を利用します。

cloud9でのワークスペースの作成

テンプレートにpython用を選択して作成すること。

最初はなんでもいいやということで、blankを選択したのですが、AWSCLIコマンドをインストールするのに、pipを利用します。
その際に、Python.hが必要になるのですが、blankには入っていませんでした。
それで、ググってみると、sudo apt-get install python2.7-devをすればいいよとあるのですが、なぜかそんなパッケージは見つからないと出てきます。

なので、最初からpython用のテンプレートを選択することによりすんなりと先に進めます。

nodeの確認

python用のテンプレートを利用しても、nvmやnodeはインストールされています。
ところが、バージョンを確認すると、v4.7.3がインストールされています。

AWS lambdaを調べてみると、4.3.2(と0.10.36)しかサポートされていないため、念のため、バージョンを合わせておきます。

$ nvm install 4.3.2
$ nvm alias default 4.3.2

AWS CLIのインストール

pipで簡単にインストールできます。

$ sudo pip install awscli

まあ、こちらのほうが詳しいですね。
docs.aws.amazon.com

AWS CLIの設定

AWSのページで先にユーザを作成し、アクセスキーとシークレットキーを生成しておきます。
管理ポリシーしは以下の3つを指定しておいてください。

  • AWSLambdaFullAccess
  • IAMFullAccess
  • AmazonAPIGatewayAdministrator

https://aws.amazon.com/jp/developers/access-keys/aws.amazon.com


aws configureで対話形式で設定できます。

$ aws configure
AWS Access Key ID [None]: 「アクセスキー」
AWS Secret Access Key [None]: 「シークレットキー」
Default region name [None]: ap-northeast-1(東京)
Default output format [None]: json

上記操作により、以下の2つのファイルが作成されます。
~/.aws/credentials

[default]
aws_access_key_id =「アクセスキー」
aws_secret_access_key = 「シークレットキー」

~/.aws/config

[default]
output = json
region = ap-northeast-1

claudia.jsのインストール

ここからは英語ですがチュートリアルがあります。

claudiajs.com

しかし、残念ながら私は英語苦手なのでこちらを参考にしました。
dev.classmethod.jp


npmでグローバルインストール

$ npm install claudia -g

プロジェクトの作成

$ mkdir web-api-sample
$ cd web-api-sample
$ npm init

とりあえず、全部エンターでちゃかちゃかやっちゃいましょう。

プロジェクトの dependency に Claudia API Builder を追加

$ npm install claudia-api-builder --save

web-api-sample/app.jsを以下の内容で作成。

var ApiBuilder = require('claudia-api-builder');
var api = new ApiBuilder();
 
module.exports = api;
 
api.get('/hello', function () {
    'use strict';
    return 'hello claudia.js';
});

web-api-sample/package.jsonに"files": "*.js"を追加

{
  "name": "web-api-sample",
  "version": "1.0.0",
  "description": "",

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "claudia-api-builder": "^2.4.0"
  }
}

AWSにデプロイ

$ claudia create --name web-api-sample --region ap-northeast-1 --api-module app

結構時間かかります。
何かが間違えてるとエラーになります。
うまく行くと以下のようになります。

saving configuration
{
  "lambda": {
    "role": "web-api-sample-executor",
    "name": "web-api-sample",
    "region": "ap-northeast-1"
  },
  "api": {
    "id": "yfw8aqrorg",
    "module": "app",
    "url": "https://yfw8aqrorg.execute-api.ap-northeast-1.amazonaws.com/latest"
  }
}

そしたら、urlに/hello(app.jsに追加したやつ)を付けてアクセスしてみましょう!

https://yfw8aqrorg.execute-api.ap-northeast-1.amazonaws.com/latest/hello

"hello claudia.js"

と表示されれば完成です!
お疲れ様でした!

ここで作成した関数は、AWSのlambdaのところで参照できます。
最初アクセスしたときは、スタートアップ画面しかでてこなかったので、適当な関数を一度登録したところ、表示されるようになりました。
右上にリージョン選択があるので、「東京」を選んでくださいね。

AWSはじめました

AWSずっと気になっていたんですが、なぜかメジャーに負けてはいけないような気がしてなかなか使っていませんでした。

でも、1年間無料で利用できるんですね。
なので、お試しで使い始めてみました。

アカウント登録に必要なもの。

  • クレジットカード

JCBでも大丈夫でした。

  • 通話できる電話

→ 本人確認のため電話がかかってきます。それで4ケタの認証番号を入力します。LINEとかと違って、SMSではないので通話ができないとダメです。

これからいろいろ試していきたいなぁ。。。。