つばくろぐ @takamii228

知は力なり

AWS ElasticBeanstalkにDocker Imageをさくっとデプロイしてみた

AWSのElasticBeanstalkのDockerホスティングを使ってDocker Imageをサクッとデプロイできたのでメモとして残しておきます。

デプロイするもの

int128先輩が作ったJiraのWebhookのJSONを加工してしてSlack / Mattermostに通知連携してくれるGoアプリを動かしてみます。

github.com

int128.hatenablog.com

ElasticBeanstalkにデプロイする

ドキュメントに従ってデプロイしてみます。

docs.aws.amazon.com

まずドキュメントに従ってDockerrun.aws.json作成しzipで固めたものを用意します。

// Dockerrun.aws.json
{
  "AWSEBDockerrunVersion": "1",
  "Image": {
    "Name": "int128/jira-to-slack"
  },
  "Ports": [
    {
      "ContainerPort": "3000"
    }
  ]
}

DockerfileとDockerrun.aws.jsonの2つをまとめたzipの場合は以下のように書けばOKです。

// Dockerfile
FROM int128/jira-to-slack

EXPOSE 3000
CMD ["/jira-to-slack"]
// Dockerrun.aws.json
{
    "AWSEBDockerrunVersion": "1",
    "Ports": [
      {
        "ContainerPort": "3000"
      }
    ]
}

マネジメントコンソールでElasticBeanstalkで以下の設定で環境を新規に作成します。

  • アプリケーション名
    • 適当な名前をつける
  • プラットフォーム
    • 汎用Docker
  • アプリケーションコード
    • コードのアップロードを選択して、上記で作ったzipファイルをアップロードする

最低限必要なものは上記だけですが、「さらにオプションを設定」を選択すると以下の項目が追加で設定できます。

  • ソフトウェア
    • ログローテの設定やCloudWatchLogsとの連携ができます
    • ElasticBeanstalkはリクエストをnginxが受けていて、そこのアクセスログやDockerのログをS3においたりCloudWatchLogsと連携したりできます
  • インスタンスタイプ
  • 容量
    • AutoScaling Groupの設定ができます。デフォルトは単一インスタンスです。
  • ロードバランサー
    • AutoScaling Groupを設定すると設定できます。単一インスタンスの場合は選択できません。
  • ローリング更新とデプロイ
    • デプロイメントの反映のさせ方の設定ができます。
  • セキュリティ
    • ElasticBeanstalkに付与するIAMロールが設定できます。
  • モニタリング
    • CloudWatchでモニタリングする項目やヘルチェの設定できます
  • 管理された更新
    • メンテナンスウィンドウによる更新を定期的に行う設定のようです
  • 通知
    • 通知をメールで飛ばせるようです
  • ネットワーク
    • vpcやパブリックIPが設定できます
  • データベース
    • RDSの設定ができます
  • タグ
    • タグが付けられます

上記の設定を変更したあとに アプリの作成 を選択すると、環境構築がスタートします。

3分程まつと環境構築が完了しアプリが利用できるようになります。

2019-01-30 22:56:57 UTC+0900 INFO    Environment health has transitioned from Pending to Ok. Initialization completed 49 seconds ago and took 2 minutes.
2019-01-30 22:56:15 UTC+0900    INFO    Successfully launched environment: Test-env
2019-01-30 22:56:15 UTC+0900    INFO    Application available at Test-env.xxxxxxx.us-east-1.elasticbeanstalk.com.
2019-01-30 22:55:58 UTC+0900    INFO    Docker container xxxxxxxxx is running aws_beanstalk/current-app.
2019-01-30 22:55:57 UTC+0900    INFO    Added instance [i-xxxxxxxxx] to your environment.
2019-01-30 22:55:50 UTC+0900    INFO    Successfully built aws_beanstalk/staging-app
2019-01-30 22:55:48 UTC+0900    INFO    Successfully pulled int128/jira-to-slack:latest
2019-01-30 22:55:24 UTC+0900    INFO    Waiting for EC2 instances to launch. This may take a few minutes.
2019-01-30 22:54:19 UTC+0900    INFO    Created EIP: xxxxxxxxxxxx
2019-01-30 22:54:03 UTC+0900    INFO    Created security group named: awseb-e-wi8p8yhmvx-stack-AWSEBSecurityGroup-E0I6S0124S51
2019-01-30 22:53:57 UTC+0900    INFO    Environment health has transitioned to Pending. Initialization in progress (running for 9 seconds). There are no instances.
2019-01-30 22:53:38 UTC+0900    INFO    Using elasticbeanstalk-us-east-1-xxxxxxxx as Amazon S3 storage bucket for environment data.
2019-01-30 22:53:38 UTC+0900    INFO    createEnvironment is starting.

ログを見るとS3バケットやSG、EIPが作られていることがわかります。

わずか数行でDocker Imageをデプロイすることができました。PaaSらくちん!

お片付け

環境を削除するときは アプリケーションの削除 を選択すれば作成したスタック一式が削除されます。

ただし作成されたS3バケットは残ってしまいます。このバケットはデフォルトでは手動で消せない設定になっているので、バケットポリシーを手でいじってから消すようにしましょう。

参考

コマンドラインツールのebコマンドを使えばローカルやCIを経由して継続的にデプロイすることも可能なようです。今回は頻繁に更新するようなものでもないので実施しませんでした。また別の機会に検証してみようと思います。

github.com

2018年の振り返りと2019年の抱負的な何か

2018を雑に振り返る

特に目標も立ててなかったので、2018年のインプット/アウトプットを中心に雑にまとめてみる。

仕事では一度やったことの応用ならそれなりに立ち回れるようになった。でもまだやったことがないことに対するコミットはビビってしまう。

インプット

読んだ本

他にもたぶんあるけど省略。

NPSが高いのはカイゼンジャーニーと業務システムモダナイゼーションかなぁ。

以下の積読は年始に読む(読む)

本は去年はジュンク堂とかで買ってたけど、まずはメルカリで中古探してみて、なければヨドバシカメラで10%還元で買うようになった(そして読み終わって手元になくていいやつはメルカリに出品)。

参加した主な勉強会

転記が面倒だったのでconnpassを参照。

connpass.com

connpass履歴にないやつだとGopher道場、AWS Summit、Google Cloud Next、Jenkins User Conference、SpringFestとか行った。

時間に対する費用対効果を意識するようになったのか、特にAWS SummitとかGoogle Cloud Nextみたいな大規模なイベントは人の混雑に疲弊するので、特段発表者と話をしたいとか参加者と交流したいとか生で聞きたいとか理由がなければストリーミング中継やあとで資料見るでいいやというお気持ちになってきた。

その他

たたき売りされたUdemyをやった。

AndroidとReactのやつは途中でやめた。

アウトプット

作ったもの

Jenkins周りの連携のテンプレプロジェクトとか、GoのCLIアプリとか、簡単なiOSアプリとかLaravelのサンプルとか作った。

github.com

あとGitHub Pagesで雑なabout me的なLPを作った。

takamiii.com

登壇発表

実は対外的に情報発信するのははじめての年だった。

Qiita

よく使うツールスタックの連携方法を備忘録としてまとめた。

その他

2018年に新しく学んだ・身についた技術

もともとやってたGit+Jenkins的なCI/CDのパイプライン設計に加えて、Laravel・AWS周りをよく触った一年だった。そういえば春先はElasticsearchもいじってたなぁ。

振り返り

  • 良かったこと
    • 未経験・新しい技術に対して学ぶ姿勢が継続できていること
    • 勉強会やイベントに目的を持って参加できるようになったこと
    • 対外イベントで登壇発表できたこと
    • 一度作ったアウトプットを参照系の情報として再活用できていること
  • 良くなかったこと
    • 積読やWIPの本が残ってるのに新しい本を買ってしまったこと
    • 中途半端で終わってるものがあること(iOSGolangGCP
    • ブログ投稿が少なかったこと

中途半端で終わってるものは、たぶん中途半端な状態で始めたからだと思う。

スモールゴールで始めたやつとかゴールがクリアなやつはそれなりに完遂できてるので、まずは中途半端な状態で始めないようにしよう。

2019年にやろうと思ってること

いくつできるかわからんけどとりあえず書いてみる。

  • AWS SAを取る
  • GolangJava/PHPと同じくらい書けるようになる
  • Spring Bootでアーキテクチャ設計できるようになる
  • GCPAWSくらいできるようになる
  • Firebase + iOS or Android or JSで何か作る
  • PHP以外のフロントエンド開発(html/css/jsとかブラウザとか通信とか)の設計がわかるようになる
  • 外部イベントの運営・ボランティアスタッフをやる
  • ブログを最低月一回投稿する
  • 競技プログラミングを再開する
  • 英語学習を復活して少なくともTOEICスコア(785)を更新する
  • 3年後、5年後の自分の仕事・人生の具体的なイメージを持つ

社会人歴5年目だけどまだまだ自分がこれから進みたい方向性はぶれてるので、いろいろつまみ食いしながらレベル上げしたいと思ってる。

けどいろんなところに顔つっこみ過ぎている感もあるし時間は有限なので、かけるべき時間と期限を決めてうまくやっていこうと思う。

f:id:takamii228:20181231113301j:plain

東京メトロTo Me Card Primeで年会費の元が取れるか1年かけて検証してみた

はじめに

みなさんは家計簿をつけていますか?私は社会人になってから本格的につけ始めました。

最近はキャッシュレス決済が話題になっていますが、キャッシュレスだとお金の流れのデータがトレーシングしやすいというメリットがあるので、個人的にはクレジットカードと合わせて積極的に使っていきたいと思っています。

そこで昨年の家計簿を見直してみると、近所のスーパー(現金払いじゃないとポイントがたまらない)とPASMOのチャージはまだ現金で払っていました。

PASMOのチャージはいつも手動でやっていて、残高が無くなりそうになってからいちいちチャージするのが面倒だと思っていました。

そういえばPASMOにはオートチャージのカードがあったと思い調べてみると、「To Me Card Prime」でオートチャージができることが判明。

www.to-me-card.jp

To Me CARD Prime PASMO東京メトロの車両の広告や駅での販促で見かけていてポイントが貯まるというのが気になっていました。

To Me CARD Prime PASMOでは以下の利用でメトロポイントを貯めることができます。

  • 1乗車で平日10ポイント、休日は20ポイント(定期券区間は除く)
  • To Me CARDによる定期券購入金額の0.5%
  • 連携店舗の電子マネー利用に応じたポイント
  • クレジットカードとしての決済金額の0.1%がNICOSのわいわいポイントとして貯まり、200ポイントが1000ポイント(1わいわいポイントあたり5ポイント相当)と交換可能

メトロポイントは1000ポイントを1000円分のPASMOのチャージ分として利用できたり、連携先の他のポイントに変換できます。またTo Me Cardを持っていればECHIKAやESOLAで優待が受けられます。

いわゆるソラチカルートと呼ばれるマイルに変換する陸マイル勢が有名。

http://www.to-me-card.jp/common/pdf/card_list.pdf

ただしTo Me CARD Prime PASMOは初年度は無料ではあるものの、年会費が2160円かかってしまいます。

そこで1年運用してみてこの年会費2160円がペイするのかどうか検証してみました。

乗車ポイント + 定期券・キャンペーンポイント + わいわいポイント×5 + その他ポイント ー 年会費2160円 =?

1年運用してみた

しょっぱなから設定をミスる

最初の一月、メトロポイントPlusの設定忘れで1ヶ月分のポイント取得を逃しました・・・。

会員サイトでPASMOのコードを登録しないと乗車ポイントがたまりません。

ポイント獲得結果の反映が月次バッチだから気づくのに遅れてしまいました。早くリアルタイムになってほしい。。。

設定手順はこちらから。

www.to-me-card.jp

獲得ポイント内訳

気を取り直して結果を見ていきます。

1年間の乗車によって取得した乗車ポイント

獲得ポイント
12月 90
1月 60
2月 140
3月 140
4月 230
5月 330
6月 360
7月 160
8月 170
9月 80
10月 90
11月 180
合計 2030

月によってばらつきはあるものの月平均で150ポイントほど稼げることがわかりました。仕事での外出でメトロの利用が多かった月は稼げています。

キャンペーン、定期券購入分、電子マネー利用によって得られたポイント

現在もキャンペーンで入会で800ポイント、オートチャージの登録で1000ポイントもらえます。

www.to-me-card.jp

内容 獲得ポイント
入会キャンペーン 800
オートチャージ登録キャンペーン 1000
定期券上半期 230
定期券下半期 230
電子マネー利用分 29
合計 2289

正直このキャンペーン分で元が取れることはほぼ確定してました。

ただしこのうち1800ポイントは初年度だけで、来年度はないので注意しないといけません。

NICOSわいわいポイントで得られたポイント

NICOSわいわいポイントと定期購入分のポイントは二重取りが可能です。

獲得わいわいポイント 獲得わいわいポイント×5
12月 0 0
1月 67 335
2月 12 60
3月 15 75
4月 18 90
5月 12 60
6月 22 110
7月 77 385
8月 23 115
9月 22 110
10月 21 105
11月 22 110
合計 311 1555

わいわいポイントは200ポイント単位で利用可能です。端数にならないように注意しないといけません。

結果発表

1年間で取得したポイントをまとめると以下になりました。

種別 獲得ポイント
年間獲得乗車ポイント 2030
キャンペーン等での取得ポイント 2289
わいわいポイントでの取得ポイント分 1555
合計(初年度キャンペーン含む) 5874
合計(初年度キャンペーン除く) 4074

年会費は2160円ですので、約3700円分、初回キャンペーンを除いても約1900円分プラスになっていることがわかりました。

昨年の現金チャージ分との比較

わいわいポイントからなんとなく察している人もいると思いますが、オートチャージを利用している関係でPASMOでの決済金額が大きく増えました。。。

従来は現金チャージで主に電車賃にのみつかっていたPASMOですが、オートチャージにすることによって電車賃だけでなく自販機やコンビニの支払い、PASMO対応のお店ではPASMO払いが当たり前になってしまいました。

特にコンビニの利用率が以前と比べてかなり増えたのかなと思っています・・・(ほぼ毎日利用するようになってしまった)。

チャージ金額分を昨年度と比較してみるとなんと約2倍に増えていました・・・😇😇😇

金額
昨年のチャージ分(定期代除く) 101000円
オートチャージ変更後のチャージ分(定期・クレカ分除く) 204000円

まんまとオートチャージの罠にハマってしまっています。

それでも現金チャージの手間や現金払いの手間が減っている分まぁいっかと思っています。

まとめ

1年かけて検証してみたわけですがオートチャージ効果によって支出は増えていたものの、年会費分を差し引いても結果的にはプラスになってたことがわかりました。

振り返ってみてメリット・デメリットをまとめると以下のようになるかなと思います。

  • メリット
    • PASMOオートチャージ機能が使える
    • 普通に使えば乗車ポイント、定期券ポイント、わいわいポイントで年会費2160円はほぼペイできる
    • 提携するお店の優待が受けられる
  • デメリット
    • オートチャージ機能によって結果的に出費が増える可能性がある
    • 全く使わないと年会費2160円をペイできない可能性もある
    • 複数の経路の候補がある場合、ポイントが貯まるルートにしようという意識が働いて結果として移動時間がかかる場合もある
    • PASMOにロックインされる

都内に勤務していて外回りでメトロの利用が多い方は、日々の乗車ポイントで余裕で年会費はペイできると思うのでぜひ申し込んでみてはどうでしょうか。

利用する交通機関SUICA圏の人はおそらくVIEWカードで同様のことができると思うので調べてみると良いでしょう。

来年度はPASMOでの利用をちょっと自重してみて、それでも2160円以上使えるかを経過観察しようと思います。

また今はチャージ分をクレカ引き落とし分にまとめてしまっていてPASMOでの買い物の内訳を見れていないので、来年はマネーフォワードを活用して分類してみようと思います。

https://corp.moneyforward.com/news/release/service/20151120-cardreader-expense/

【おまけ】メトポは無料なのでやるべき

同時期にメトポという年会費無料のポイントサービスが始まりました。

メトロポイントクラブとメトロポイント、名前がわかりにくい・・・。

こちらは1乗車あたり平日3ポイント、休日7ポイントもらえます。

www.metpo.jp

メトポでは1年間で以下のポイントを取得しました。

2018年5月31日までに申し込めば500ポイントもらえましたが、今はもう貰えないようですね・・・。

獲得ポイント
3月 3
4月 540
5月 79
6月 72
7月 34
8月 39
9月 16
10月 19
11月 36
合計(キャンペーン含む) 838
合計(キャンペーン除く) 338

こちらはやるだけでポイントがもらえるのでまだの方は忘れずに登録しておきましょう。

【追記】ToKoPoも無料なのでやるべき

メトポと同じように都営地下鉄での乗車でポイントがもらえるサービスがあることを教えてもらいました。こちらも無料なので登録しておきましょう。

ToKoPo 都営交通のポイントサービス | 東京都交通局