botchy hack note

TypeScript、Ruby、Golang とか Macとかの備忘録です.間違いがあるとご指摘くださると嬉しいです.

VS Code で統合端末起動時に tmux が実行されるのを防ぐ方法

f:id:bokken31:20170827135138p:plain

こんにちは bokken (@_bokken)です。

VS Code を使う上で、コマンドをサクッと実行できる統合ターミナルはとても便利ですよね。

ただし、 ~/.zshrc などに tmux を初回起動するように設定していた場合、統合ターミナルは微妙に使いにくいものになります。 (具体的には、スクロールの挙動がおかしくなったり、コピペが上手くいかなかったりなどなど)

そもそも、 VS Code 自体も端末切り替えの機能が付いているので、必要ありません。

そこで、今回は VS Code 起動時に tmux を起動させない tips を紹介します。

続きを読む

VS Code の拡張機能がプロキシでインストールできないときの対処法

f:id:bokken31:20170613233337p:plain

こんにちは bokken (@_bokken) です。

今回は、プロキシに阻まれて VS Code の拡張機能がインストールできない問題への一時的な対処法をご紹介したと思います。

続きを読む

Go で簡単にターミナルから AWS コンソールにアクセスできるコマンドを作った

f:id:bokken31:20170510001805p:plain

こんにちは、TypeScript と VS Code、 AWS が好きな bokken (@_bokken) です。

今回はターミナルから AWS コンソールに楽にアクセスできる awsb (AWS browse) というコマンドを作ったので紹介します。

荒削りですがコマンドは Github で公開しています。

github.com

目次

背景

AWS を利用して開発をしているときに確認のためにブラウザを開いて AWS コンソールで確認する作業が手間になっていました。

サービスの選択が面倒なだけでなく開発先がデフォルトリージョンでない場合、リージョン変更の必要もあるためブラウザ遷移の時間がかかり非常に非効率です。

AWS コンソールの遷移は時間がかかりますし、遷移回数が多くなればなるほど開発効率が下がってしまいます。 (AWS のコンソールの遷移がやたら重い気がするのは気のせいでしょうか)

作ったもの

作ったコマンドではサービス名とリージョンを指定するとターミナルからすぐに対象のサービスのコンソール画面に移動できます

使用例は下記です。

$ awsb <service> [region (default: us-west-2)]

デモは下図です。

f:id:bokken31:20170510000950g:plain

インストー

Go を導入していただく必要があるのですが、導入していれば Windows, Linux, Mac 問わず下記コマンドで awsb をインストールできます。

go get -u github.com/negibokken/awsb

オプション

また、 筆者は移動対象のサービスの名称やリージョン名と地域の対応を忘れがちなので、$ awsb --service-list$ awsb --region-list で移動対象のサービスやリージョンの一覧を確認できます。

$ awsb --service-list

acm
apigateway
appstream
...
$ awsb --region-list

ap-northeast-1  Asia Pacific (Tokyo)
ap-northeast-2  Asia Pacific (Seoul)
ap-south-1      Asia Pacific (Mumbai)
...

メリット

このコマンドを利用すると

  1. ターミナルからブラウザの遷移の手間
  2. AWS コンソール上でのサービス変更の手間
  3. AWS コンソール上でのリージョン変更の手間

から解放されます。

まとめ

今回、ターミナルからAWSコンソールへ楽にアクセスするための awsb というコマンドを紹介しました。

本コマンドは随時アップデートしていく予定ですが、MR、Issues の登録は大歓迎です。

筆者自身 Go は習得途中であるため、ご指摘等もどしどしいただけると嬉しいです。

それでは、本コマンドが少しでも AWS を利用した開発の助けになれば幸いです。

良かったら TypeScript 関連や AWS 関連のつぶやきをしているので @_bokken をフォローしてみてください。

AWS Lambda のファンクションを TypeScript で作る! 実践編

f:id:bokken31:20170503123927p:plain

こんにちは、TypeScript と VS Code と AWS が好きな bokken (@_bokken) です。

以前、簡単に AWS Lambda のファンクションを TypeScript で作る方法を紹介しましたが、 今回は少し発展して、TypeScript でインターフェースをしっかりと定義しつつ、AWS については Amazon SNS と CloudFormation を使います。

実装する内容は前回と同様、WEB API 経由で天気の情報を取得するものです。ただし今回は毎朝 7:00 に天気を Amazon SNS を使ってメールで通知してくれる Lambda ファンクションを開発しましょう。

さらに CloudFormation を使って AWS Lambda や Amazon SNS などのリソースの設定を自動化するところまでが目標です。 (AWS CLI で Cloudformation を使う予定なので、前回の記事を参考に自分のアカウントに CloudFormation 実行権限を付けておいてください)

サンプルコードは Github に上げているので参照してみてください。

続きを読む

AWS IAM のポリシーをアカウントにアタッチする

f:id:bokken31:20170510000033p:plain

こんにちは、TypeScript と VS Code、 AWS が好きな bokken (@_bokken) です。

AWS CLI を使っているときに、下記のように AccessDenied エラーが出る事があります。

$ aws iam create-policy --policy-name test1 --policy-document file://policy.json

An error occurred (AccessDenied) when calling the CreatePolicy operation: User: arn:aws:iam::000000000000:user/bokken is not authorized to perform: iam:CreatePolicy on resource: policy test1

このエラーは自分のアカウントに権限が無いから起こっています。

AWS は権限周りの設定がやや手間になっているので、以降ではどうやって自分のアカウントに権限を付加するのかを紹介していきます。

続きを読む

Visual Studio Code で統合端末を毎回起動し直してしまう問題の解法

結論

早く解法を知りたい方のために、結論を最初に書くと、”新しい統合端末の作成” と ”統合端末の切り替え” のキーボードショートカットがバッティングしているのでキーボードショートカットを変更しましょう。

以下になんで起こってるのか、具体的にどうやってキーボードショートカットを変更するのか紹介していきます。

問題の内容

Mac 環境において、 Visual Studio Code で端末ペインを開こうと ⌘ + ` を押すたびに新しい端末を起動してしまいます。

下記の図にある統合ターミナルをショートカットキー*1で開くと、一度目は下図のようにデフォルト動作をして端末のペイン(下部のピンクの枠)を起動します。

f:id:bokken31:20170413234811p:plain

しかし、二度目に ⌘ + ` を押すとターミナルがもう一つ起動されてしまいます。(枠内の番号が2になりました)

f:id:bokken31:20170413235137p:plain

これでは、端末起動の時間がかかりますし、無駄なプロセスを起動してしまうことになります。

問題の解法

これは、⌘ + ⇧ + ` が ”新しい統合端末の作成” のショートカットキーだから起こっている問題です。

JIS キーボードは ` を入力するために シフト(⇧)を押す必要があって ⌘ + ` を入力しているつもりが、 ⌘ + ⇧ + ` が入力されていた。つまり、デフォルトでキーバインディングがバッティングしている状態だったということです。

US キーボード的にはバッティングしていないので、US キーボード使いの人たちには問題なく使えていたようです。

[US キーボード配列参考:http://blog.jnito.com/entry/2012/10/10/074739]

回避策

そのため、“新しい統合端末の作成” か ”統合端末の切り替え” のキーボードショートカットを変更すれば回避可能です。

Mac の場合だと、⌘ + K をおした後に ⌘ + S を押せば下図のようにキーボードショートカットの画面に遷移できるので、その後に"統合端末"で検索。 鉛筆のマークが出てくるので、そこからショートカットキーを設定しなおせば OK です。

f:id:bokken31:20170414000156p:plain

以降はもう ⌘ + ` を押しても新しい端末が起動しなくなっているはずです。

これでコーディングしつつ、キーボードショートカットで素早く端末へ移動することができますね。

それでは、良い Visual Studio Code ライフをお送りください!

*1:図ではメニューバーを出してますが

AWS Lambda のファンクションを TypeScript で作る! 入門編

f:id:bokken31:20170201224015p:plain

今回は TypeScript シリーズ第2弾。 AWS Lambda のファンクションを TypeScript 作成する方法について。

最近、サーバーレス化、Micro Services 化の流れで、AWS Lambda を使用する機会が増えてきてるように思います。

煩わしいサーバの管理から解放されてサービスのみに注力できるのはかなり魅力的。今回は Node.js と TypeScript を使って、Lambda ファンクションを作成する方法について解説していきます。

目標は AWS Lambda を使って CloudWatch Logs (ログ) に 天気予報を出力するところまで。

天気予報の取得には お天気Webサービス仕様 - Weather Hacks - livedoor 天気情報 を利用します。実際に取ってくるのはサンプルにある福岡県久留米の天気情報です。(http://weather.livedoor.com/forecast/webservice/json/v1?city=400040)

続きを読む