sitateru tech blog

sitateru tech blog

シタテルの技術やエンジニアの取り組みを紹介するテックブログです。

2019年1月4日金曜日

【mac】操作スペースを使いこなす!

1月 04, 2019

こんにちは!
シタテル株式会社エンジニアのいしづかです。

開発作業をしているといろんなソフトウェアを使いますね。
Slack・Webブラウザ・コードエディタ・gitツール・DBツール・・・etc

これらを1つのウィンドウ内に置いてキーボードで切り替えてもいいんですが、どうしてもゴチャゴチャ感は否めません。

macには「操作スペース」と呼ばれる仮想的なデスクトップ機能があります。
ディスプレイを何枚も持っているようなイメージの機能ですね。それを切り替えて使います。

今回はその操作スペースを使いこなすために、私が行っている設定をご紹介します。

操作スペースをつかう

Mission Controlを起動すると「デスクトップ1」って感じで表示されている部分、ここ Spacesバー って言うらしいです。最初はデスクトップ1だけですが、右端の+ボタンから増やすことができます。

私はいつも6つ用意しています。
それぞれ置いておくものを決めていて

  • デスクトップ1: Slack
  • デスクトップ2: Webブラウザ
  • デスクトップ3: コードエディタ(Visual Studio Code)
  • デスクトップ4: gitクライアント(SourceTree)
  • デスクトップ5: DBクライアント(SequelPro)
  • デスクトップ6: 予備

こんな感じで使っています。
どこに何があるか決めておくことで、ほしいウィンドウをパッと取り出せるようにしています。

ちなみに、このウィンドウの順番を使用状況に応じて並び替える機能があって、macさんの親切心なんですが、私にとって余計なお世話と化していたのでOFFにしています。

↓コレです。システム環境設定のMission Controlにあります。

すばやく切り替えるための設定

それでもデスクトップ1からデスクトップ4まで移動するにはトラックパッドを三本指でシャッシャッシャッと3回やることになります。

この行ったり来たりが地味にめんどくさい。。。

そこでショートカット1発で「デスクトップ○」を出すようにしています。

システム環境設定の「キーボード」でMission Controlのショートカット設定ができます。
↓コレです。

ここでは「control + 数字」を押すとデスクトップを切り替えるようにしています。

これでどのデスクトップを表示していても、Slackが見たければ「control + 1」ですし、コードエディタを出したければ「control + 3」で一発移動が可能です。

まとめ

ホントにちょっとしたことなんですが、毎日発生する微細な面倒事を放っておくと慣れてしまって当たり前になってしまうので、こんな細かい工夫も怠らないように心がけています。

みなさんそれぞれ快適な開発環境を構築しているようですので、その工夫を聞いて取り入れていきたいですね。

2018年12月28日金曜日

WOVNさんのオフィスに遊びに行ってみた!

12月 28, 2018

こんにちは!
シタテル株式会社CTOの和泉です。

WOVNさんのオフィスに遊びに行ってみた!

https://wovn.io/

images/image-1.png

WOVNはウェブページなどの多言語化ソリューションを提供している企業です。自社のホームページを多言語化しようと思うと何かと考えないといけないことが多くて大変なのですが、WOVNは特許を持つ技術なども組み合わせてスマートに解決するソリューションを提供しています。

先日、CTOのジェフさんにお会いして、遊びに行かせてください!と押しかけました。最近オフィスに押しかけるのが小さなマイブーム。

オフィス

第一印象。ピザパーティーができそう!

images/image-4.png

写真のセンスがなさすぎて申し訳ないぐらい伝わらないのですが、、、

写っている場所は中央にあるフリーアドレスの 執務スペースです。この両側にも執務スペースがあり、そこはオフィススタイルにテーブルが並んでいます。

左下のテーブルにお菓子がありますね。
気になって横に振り向くと、、、

images/image-3.png

社内セルフコンビニ!!
頭使うと糖分が欲しくなったりするのでこれは嬉しい。

僕は食べ過ぎるタイプなのでご利用は計画的にしないといけなくなりそうですが。

多言語化をサポートしている企業ですので、社員にも外国籍出身の方が多くおられます。

images/image-5.png

クリスマスツリーもしっかりと飾ってありました

教えてもらったこと

WOVNが提供するサービスについて、営業の長谷川さんにいろいろと教えてもらいました。

まず冒頭にも紹介したとおり、ウェブページの多言語化をクラウド上で一元管理しながら行えるツール群を提供してくれています。

このツール群がスグレモノで、ページの文章を抜き出して翻訳しやすい単位に分割してくれたり、HTMLのタグで分断されている文字列を再構成してくれたりします。分割した文字列は機械翻訳で一括翻訳。もちろん翻訳を独自に修正することも出来ます。また、企業独自の 言葉を優先的に翻訳する辞書の定義もできます。

ページへの組み込みは、Javascriptで動的に 他の言語に書き換える方法だけでなく、検索エンジン最適化(SEO)ができる形で言語ごとのプラグインも提供されていて、ユーザーのニーズに合わせた方法が選べるようになっています。不勉強で知らなかったのですが、実はネイティブアプリにも対応しています。そしてそれらは全てクラウド上の単一リソースとして管理できる。素晴らしい!

そしてそして、単にツールを提供してくれるだけではなく、実は人手による翻訳もツールに統合された形で簡単に依頼できるようになっています。翻訳会社を探して対訳表のエクセルを作ってといった煩雑な作業が無くなるのはすごく嬉しい !

気になるお値段

価格についても教えていただきました。

今は基本的には固定の値段表は無く、使用するサイトの規模感に合わせて見積もりをする形を取られているとのこと。スタートアップで資金に不安がある場合は、こういうふうな使い方すると費用が抑えられますよとか、アドバイスまでしてくれる親切対応。

実はシタテルでもリアルに導入を検討しているのでとても参考になりました。

まとめ

機能から詳しい使い方、金額感までとても詳しく教えていただきました。
訪問ブログの公開もご快諾いただけて感謝感謝。

冒頭に紹介したCTOのジェフさんを始め国外の方も多くおられのも理由かなと思うのですが、
やはり インターナショナルでオープンな雰囲気のあるオフィスでした。

シタテルのウェブページが多言語対応する日も近いかも!
(自分やれっていう戒め)

繰り返しになりますが、ご対応いただいたジェフさん、長谷川さん、ありがとうございました!!

2018年12月27日木曜日

コンソール上でディレクトリの中身を樹形図表示する - tree コマンドの紹介

12月 27, 2018

こんにちは! シタテルエンジニアの諏訪です。

今日はコンソール画面で使う tree コマンドについてご紹介します。

コンソールでディレクトリの中身をみる

ファイルの一覧表示

みなさんはコンソールを使っていてあるディレクトリ内のファイルの一覧がほしいときに
どんなコマンドを打ちますか?

たいていは ls コマンドを使うと思います。

……コンソールを使う人が最初に覚えるコマンドの一つですね!

$ ls
Gemfile        Rakefile    config        lib        public        tmp
Gemfile.lock    app        config.ru    log        storage        vendor
README.md    bin        db        package.json    test

これだと一覧性に欠けてちょっと見づらいので -l オプションを付ける方も多いでしょう。

$ ls -l
total 56
-rw-r--r--   1 p-san  wheel  2210 12 27 12:34 Gemfile
-rw-r--r--   1 p-san  wheel  5360 12 27 12:34 Gemfile.lock
-rw-r--r--   1 p-san  wheel   374 12 27 12:34 README.md
-rw-r--r--   1 p-san  wheel   227 12 27 12:34 Rakefile
drwxr-xr-x  10 p-san  wheel   320 12 27 12:34 app
drwxr-xr-x   9 p-san  wheel   288 12 27 12:34 bin
drwxr-xr-x  16 p-san  wheel   512 12 27 12:34 config
-rw-r--r--   1 p-san  wheel   130 12 27 12:34 config.ru
drwxr-xr-x   3 p-san  wheel    96 12 27 12:34 db
drwxr-xr-x   4 p-san  wheel   128 12 27 12:34 lib
drwxr-xr-x   3 p-san  wheel    96 12 27 12:34 log
-rw-r--r--   1 p-san  wheel    67 12 27 12:34 package.json
drwxr-xr-x   9 p-san  wheel   288 12 27 12:34 public
drwxr-xr-x   3 p-san  wheel    96 12 27 12:34 storage
drwxr-xr-x  11 p-san  wheel   352 12 27 12:34 test
drwxr-xr-x   5 p-san  wheel   160 12 27 12:34 tmp
drwxr-xr-x   3 p-san  wheel    96 12 27 12:34 vendor

ディレクトリ直下のファイルを確認するにはこれでよいのですが

時として、サブディレクトリの中のファイルも同時に確認できると便利なことがあります。

新米エンジニアPさんの奮闘記を見てみましょう。

ファイルを探せ!

登場人物

  • 【Pさん】
      開発チームにジョインしたばかりの新米エンジニア。
      シェルコマンドは cd と ls しか知らないくせに
      やたらとコンソール画面を使いたがる、ちょっとクセのある新人。

Pさん初めてのタスク

Pさんの仕事初日。ソースコードの構成もよくわかっていない中で最初のタスクが飛び込んできました。

── Pさん、早速で悪いけど、404.html をちょっと修正してもらえる?

── は〜い、わかりました〜!

元気よく返事をしたものの、その 404.html とやらは一体どこにあるのでしょう?

開封したての PC にまだエディタすら入れていないPさん。
とりあえずコンソール画面で ls コマンドを打ちまくって手当たり次第に探すことにしました。

── えーっと、エラー画面のソースだから…… view ディレクトリの中にあるんだよねきっと。

$ cd app/views/
$ ls -l
total 0
drwxr-xr-x  2 p-san  wheel  64 12 27 12:34 item
drwxr-xr-x  5 p-san  wheel 160 12 27 12:34 layouts
drwxr-xr-x  2 p-san  wheel  64 12 27 12:34 message
drwxr-xr-x  2 p-san  wheel  64 12 27 12:34 user

ありません。

── おや、、、フォルダしかないじゃん。。。すると layouts の中かな。。。

$ cd layouts/
$ ls -l
total 24
-rw-r--r--  1 p-san  wheel  347 12 27 12:34 application.html.erb
-rw-r--r--  1 p-san  wheel  229 12 27 12:34 mailer.html.erb
-rw-r--r--  1 p-san  wheel   13 12 27 12:34 mailer.text.erb

ありません。

── あれれ。。。あー、さては assets の中だな(錯乱)

$ cd ../../assets/
$ ls -l
total 0
drwxr-xr-x  3 p-san  wheel   96 12 27 12:34 config
drwxr-xr-x  3 p-san  wheel   96 12 27 12:34 images
drwxr-xr-x  8 p-san  wheel  256 12 27 12:34 javascripts
drwxr-xr-x  6 p-san  wheel  192 12 27 12:34 stylesheets

やっぱりありません。

── これはもう素直に find コマンドを使うしか…

$ cd ../../
$ find . -name '404,html'

(何も表示されない)

── 見つから…ない…… あっ、見つからないから 404 なんだ。なんつってハハハ(錯乱)

(注)錯乱したPさんはタイプミスをしていますが、本人気づく様子がありません。

コンソールの敗北

結局Pさんは、cd コマンドを使って 404.html を探すのを諦め
GUI なエディタをインストールしました。

エディタにはファイルを樹形図表示する機能があって
それを使うと一瞬で目的のファイルが見つかったのでした。

── はぁ〜意外と浅いところにあったのね。。。もうコンソールきらい。使うのやめよ。。。

やっぱり GUI ソフトにあるようなファイルの樹形図表示機能はとても便利です。
サブディレクトリも含めてファイルを一覧表示してくれるから。

Mac や Windows を使っていれば Finder や エクスプローラその他 GUI ソフトを使えばいいのですが
クラウドサービス上の仮想マシンに SSH でつなぐ場合など
シェルだけで操作を完結させないといけない場面も多いです。

……上の物語に出てきた新人Pさん、今後の仕事でちょっと苦労しそうですね。

コンソール画面でも、こんなふうに樹形図表示することができたらいいのに。。。

コンソールでディレクトリの中身をみる(再)

ファイルの一覧表示 (樹形図)

問題提起したばっかりですが結論です。樹形図表示、 実はできるんです

ご覧いただきましょう。tree コマンドです。

$ tree
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── Rakefile
├── app
│   ├── assets
│   │   ├── config
│   │   │   └── manifest.js
│   │   ├── images
│   │   ├── javascripts
│   │   │   ├── application.js
│   │   │   ├── cable.js
│   │   │   ├── channels
│   │   │   ├── item.coffee
│   │   │   ├── message.coffee
│   │   │   └── user.coffee
│   │   └── stylesheets
│   │       ├── application.css
│   │       ├── item.scss
│   │       ├── message.scss
│   │       └── user.scss
│   ├── channels
│   │   └── application_cable
│   │       ├── channel.rb
│   │       └── connection.rb
│   ├── controllers
│   │   ├── application_controller.rb
│   │   ├── concerns
│   │   ├── item_controller.rb
│   │   ├── message_controller.rb
│   │   └── user_controller.rb
│   ├── helpers
│   │   ├── application_helper.rb
│   │   ├── item_helper.rb
│   │   ├── message_helper.rb
│   │   └── user_helper.rb
│   ├── jobs
│   │   └── application_job.rb
│   ├── mailers
│   │   └── application_mailer.rb
│   ├── models
│   │   ├── application_record.rb
│   │   └── concerns
│   └── views
│       ├── item
│       ├── layouts
│       │   ├── application.html.erb
│       │   ├── mailer.html.erb
│       │   └── mailer.text.erb
│       ├── message
│       └── user

      :
    (省略)
      :

├── public
│   ├── 404.html
│   ├── 422.html
│   ├── 500.html
│   ├── apple-touch-icon-precomposed.png
│   ├── apple-touch-icon.png
│   ├── favicon.ico
│   └── robots.txt

      :
    (省略)
      :

300 directories, 1311 files

どうですかこの見事な樹形図!!! (グルメリポート風に)

深さを指定する

デフォルトだと上のように、カレントディレクトリから 3-階層目まで表示されます。
これだとちょっと多すぎる(or 少なすぎる)という場合は -L オプションで階層の深さを指定できます。

例: 2-階層目まで表示

$ tree -L 2
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── Rakefile
├── app
│   ├── assets
│   ├── channels
│   ├── controllers
│   ├── helpers
│   ├── jobs
│   ├── mailers
│   ├── models
│   └── views

      :
    (省略)
      :

├── public
│   ├── 404.html
│   ├── 422.html
│   ├── 500.html
│   ├── apple-touch-icon-precomposed.png
│   ├── apple-touch-icon.png
│   ├── favicon.ico
│   └── robots.txt
├── storage

      :
    (省略)
      :

33 directories, 35 files

変更時間順にソートする

-t オプションを指定すればファイルの変更時間順に並べ替えて表示することができます。

$ tree -t
.
├── Gemfile
├── README.md
├── Rakefile
├── config.ru
├── app
│ ├── assets
│ │ ├── config
│ │ │ └── manifest.js
│ │ ├── images
│ │ ├── javascripts
│ │ │ ├── application.js
│ │ │ ├── cable.js
│ │ │ ├── channels

      :
    (省略)
      :

300 directories, 1311 files

ディレクトリを指定する

ls コマンドがそうであるように、対象ディレクトリを指定して表示させることもできます。

$ tree app/assets/
app/assets/
├── config
│   └── manifest.js
├── images
├── javascripts
│   ├── application.js
│   ├── cable.js
│   ├── channels
│   ├── item.coffee
│   ├── message.coffee
│   └── user.coffee
└── stylesheets
    ├── application.css
    ├── item.scss
    ├── message.scss
    └── user.scss

5 directories, 10 files

このほかにもさまざまなオプションを指定できます。

インストール・Tips

For Linux

Linux の場合は yum でインストールします。

yum install tree

インストールできたことの確認:

$ tree --version

バージョンが表示されれば OK 。

For Mac

Mac の場合は homebrew でインストールできます。

$ brew install tree

インストールできたことの確認:

$ tree --version

バージョンが表示されれば OK 。

Tips (文字化けするとき)

Linux だと罫線が文字化けすることがあります。

$ tree
.
tqq 404.html
tqq 422.html
tqq 500.html
tqq apple-touch-icon-precomposed.png
tqq apple-touch-icon.png
tqq favicon.ico
mqq robots.txt

そんなときは --charset=C を指定すると OK です。

$ tree --charset=C
.
├── 404.html
├── 422.html
├── 500.html
├── apple-touch-icon-precomposed.png
├── apple-touch-icon.png
├── favicon.ico
└── robots.txt

おわりに

tree コマンドによるコンソールでの樹形図表示、いかがでしたでしょうか。

便利だなと思った方、ぜひ今日インストールして使ってみてくださいね。

一度インストールしておけばずっと使えます。

2018年12月26日水曜日

プロジェクトの振り返りをやってみた

12月 26, 2018

kaizen
こんにちは、シタテルの藤本です。
主にSCS(Sitateru-Control-System)という生産管理システムのバックエンド(Rails)を担当しています。

シタテルに入って小さい機能の追加、改修を行ってきたのですが
最近要件定義からリリースまでが3ヶ月程度のプロジェクトが終了しました。
そのプロジェクトに対して振り返りを行ってみたので内容について書いてみたいと思います。

やり方

シタテルの開発では2週間のタイムボックスで動いており、最終日にKPTにて振り返りを行っています。
今回のプロジェクトの振り返りでは繰り返し性がないことから
KPTの拡張版でやってみました。参考にさせていただいたのは以下です

プロジェクトの振り返り(KPTの様な何か)

各種情報

参加人数:4人
場所:熊本(2拠点)、東京
テレビ電話:Zoom
ボード:Google スプレッドシート

KPTから追加されている項目

KPTとの違いとして以下の項目が追加しております

  • Good
    よかったことをあげる、続けたいものをKeepにする
  • Issue
    Problemから導き出された課題
  • Risk
    今回具体的には発生していないが危ないと考えられること、将来起こりそうな問題
  • Solution
    IssueとRiskに対しての解決策を考える
  • Task(今回は対象外の項目とした)
    Solutionから導かれる具体的なアクション

進行順序

  1. Good、Problem、Riskを考えて、付箋に記載
  2. 各々の内容を確認してグルーピング
  3. GoodをKeepにするものを選択
  4. Problem(Risk)をIssueにするものを選択
  5. 4.で選択したものからIssueを考える
  6. Issueを共有する
  7. Solutionを話し合いながら出し合う
  8. 次に対応するSolutionを決める

付箋を張っていったボードは以下のような形です
board

やってみて

アウトプット

Good:14
Keep:4(Goodからグルーピングしている)
Problem:21
Risk:5
Issue:22

対象としたProblemとRiskは共に1つで
Solutionを合わせて6つ出し合った

よかったこと

  • みんなが考えていたことが共有できる
    自分の考えだけだと狭い範囲になりますがみんなの考えていること出してもらい共有することで
    各々の考えが掛け算になりより良いSolutionを出すことができた
  • 単発ものの振り返りの形式としては良い
    KPTだと繰り返すことで仕分けを流れになっていますが今回の形式では
    「続けたいこと」と「原因となったこと」を明確にして解決策を導くことができた
  • Solutionを話し合いながら考えることができて前向きになる
    みんなが思っていた問題はたくさん出たけど最後にSolutionについて議論をしていると
    前向きに次はもっと良くしよう、良くできると思うことができた

反省点

  • 予定した時間が甘すぎた
    1時間は流石に少なすぎました、大幅にオーバーしてしまい倍の2時間かかってしまいました
    (参加した方には申し訳なかったです、かつ快く続行していただき、ありがとうございました!)
    単発での実施かつ対象とする期間が大きいので最初から時間を長めに取っておくべきでした
  • 各項目の意味がパッとわからない
    ProblemとRiskってどう違うということが出たりしました、事前にちょっと時間をとり
    認識を合わせておいたほうがスムーズに入ることができたかなと思いました
  • 思い出す時間がなかった
    Good、Problem、Riskについて事前にちょっと考えておくとかのアナウンスをしていなかったので
    思い出す時間がちょっと少なすぎかなと思いました

まとめ

プロジェクトを振り返ることでよかったこと、問題となったことを再認識しその解決策まで
出すことができたことはとてもよかったと思います。
ただし出してよかったで終わると何も変わっていかないので次やる時に
今回上がったことを見直して実際の行動に移して、少しでも良いプロジェクトにしていきたいと思います。

2018年12月25日火曜日

[第一回]SansanとHubSpotの連携

12月 25, 2018

こんにちは、シタテルエンジニアの工です!
今回は、SansanとHubSpotの連携の仕方について書いていきます 🚀

はじめに

シタテルでは、衣服生産をSCS、マーケティング・営業の部分をHubSpotを使って管理しています。

HubSpotを導入する際に、Sansanの情報をHubSpotに同期したいという要望があったので、SansanのAPIとHubSpotのAPIを組み合わせて同期処理を実装しました。

AWSLambdaを使って、定期的に同期処理を実行しています。

HubSpot公式にもSansanとハブスポットの連携の仕方という記事も公開されていますので参考にしてみてください。

Sansanの名刺情報をHubSpotにインポートする

使うもの

余談ですが実装したときAWSLambdaにはRubyの選択肢がなかったのですが、今は使用できるみたいですね。
普段はRubyを使うことが多いので、次にLambdaを使うときはRubyで実装してみたいです。

Sansanの情報を取得

公式ドキュメント Sansan Open API

handler.js

const axios = require('axios')
const moment = require('moment')
axios.defaults.headers.common['X-Sansan-Api-Key'] = process.env.SANSAN_API_KEY
axios.defaults.headers.get['Content-Type'] = 'application/json'

module.exports.importSansanData= async (event, context, callback) => {
  var updatedFrom = moment().subtract(2, 'hours').format("YYYY-MM-DDTHH:mm:ss")+"Z"
  var updatedTo = moment().format("YYYY-MM-DDTHH:mm:ss")+"Z"

  await axios.get(`https://api.sansan.com/v2.0/bizCards?updatedFrom=${updatedFrom}&updatedTo=${updatedTo}&range=all`)
      .then(function (response) {
        importHubspot(response)
        callback(null, response.data)
      })
      .catch(function (error) {
        callback(error)
      });
};

詳しくはこのあたりを参考にしてください。
AWSLambdaとServerlessを使ってみる[第1回]
AWSLambdaとServerlessを使ってみる[第2回]

日時取得のところがとてもブサイクです... 😢
なぜかタイムゾーンZにしないとうまくいかなっかった 🤔
本当は+09:00に設定したい。

var updatedFrom = moment().subtract(2, 'hours').format("YYYY-MM-DDTHH:mm:ss")+"Z"
var updatedTo = moment().format("YYYY-MM-DDTHH:mm:ss")+"Z"

HubSpotにインポート

取得したSansanデータをインポート。
propertyは数が多いのでほとんど割愛して記載します。

公式ドキュメント HubSpot Developers

handler.js

function importHubspot (response) {
  response.data.data.forEach(createContact)
}

function createContact (value, index) {
  var properties = [
      {
        property: 'email',
        value: value.email
      },
      {
        property: 'firstname',
        value: value.firstName
      },
      {
        property: 'lastname',
        value: value.lastName
      }
    ]

  axios.post(`https://api.hubapi.com/contacts/v1/contact?hapikey=${process.env.HUBSPOT_API_KEY}`, {
    properties: properties,
  })
  .then(function (response) {
    console.log(response.data)
  })
  .catch(function (error) {
    console.error(error.response.data)
  });
}

上の例はひとつひとつPOSTしていますが、こちらのAPI使えば1回のPOSTでまとめてCreateできます。
Create or update a group of contacts | Contacts API

CloudWatchでスケジュールを設定

serverless.ymlにスケジュールを設定します。
2時間おきにインポート 🚀

serverless.yml

functions:
  importSansanData:
    handler: handler.importSansanData
    events:
      - schedule: cron(0 */2 * * ? *)

これで2時間おきに、Sansanの名刺情報がHubSpotのコンタクトに同期されます!👏

最後に、deploy 🚀

serverless deploy -v

まとめ

今回はSansanとHubSpotのAPIを使って、Sansanの名刺情報をHubSpotのコンタクトにインポートする方法について書きました。

SCSと外部サービスとの連携は今後もどんどん加速していくと思います!
マーケティング・営業 -> 衣服生産 -> 請求この流れがシステムでシームレスに実現できるように開発中です 💻

2018年12月21日金曜日

金沢で開催された IVS CTO Night & Day に参加してきました!

12月 21, 2018

こんにちは!
シタテル株式会社CTOの和泉です。

12月17〜19の3日間、金沢で開催された IVS CTO Night and Day 2018 Winter powered by AWS に参加してきました。

images/image1.jpg

どんな会なのか? 詳しくはこちら!
CTO Night and Day 2017
(リンク先は昨年のレポートです)

新旧大小さまざまな企業のCTOがずらり100人以上。

前夜祭に始まり、AWSの最新技術や文化紹介、選ばれた15社の技術やマネジメント紹介(登壇しました)、先輩CTOとの公開メンタリング、ダンスパーティーまで盛りだくさん。

「CTOがいなくなって8ヶ月がたった話」「CTOの休み方」など、CTOにまつわる、CTOならではの話題や悩み相談が随所で繰り広げられていました。

事業を進めていくのは本当にエネルギーが必要で、でも皆さん熱量高く真摯に取り組んでおられて本当に刺激になりました。

40名を超える方と名刺を交換して事業について意見交換させていただいて素晴らしい出会いがたくさんありました。

そして、本当にAWSの運営の方々のホスピタリティが半端ない!

私も事前に伝えていた事業内容に対してこの人が最適だろうという方を紹介いただいて、有意義なディスカッションが出来ました。

来年もできたら参加したい!頑張ろう!とめちゃくちゃテンションが上りました。

反省

話すのに忙しすぎて写真を全然撮っていませんでした、、、

2018年12月20日木曜日

プロジェクトごとに環境変数/クレデンシャルを管理する

12月 20, 2018

shell
unsplash-logoLauren Abrahall

sitateruでサービス・プロダクトを担当している北爪です。
インフラを見ることもあり、今日はShellでの環境変数の扱い方について書きます。

プロジェクトごとに環境変数/クレデンシャルを管理する

複数のプロジェクトに関わっているときに、プロジェクトごとの環境変数やAWSのkey/secretsなど環境変数に設定し管理する必要があることがあります。

Shellを使って管理する一つの方法を記述します。

準備

プロジェクトごとにクレデンシャルフェイルを作る

クレデンシャルファイル置き場を作ります

$ mkdir ~/.crds/

プロジェクトごとにプロジェクトファイルを作ったディレクトリ以下に置きます。
ディレクトリはinvisibleファイルにしておきます。

$ touch ~/.crds/pj-1

ファイルに必要なクレデンシャルを記述します

export AWS_ACCESS_KEY_ID==XXXXX
export AWS_SECRET_ACCESS_KEY==XXXXX
export AWS_DEFAULT_REGION=ap-northeast-1
export TF_VAR_secret_key=XXXXX
export TF_VAR_rds_password=XXXXX

読み込みと切り替え

設定した環境変数群を以下の方法でプロジェクトごとに読み込みます。
リセットはされないので、別プロジェクトに変える際は、あらたにshellを立ち上げるようにします。

プロジェクトのクレデンシャルを読み込む

source コマンドをつかってシェルに読み込めば(dot operatorでもOK)

$ source ~/.crds/pj-1

or

$ . .~/.crds/pj-1

別のプロジェクトのクレデンシャルを読み込む

複数のプロジェクトファイルを作ることで、クレデンシャルを別で読み込むことができます。

$ source ~/.crds/pj-2

Tips

初期読み込みが必要な場合は、 bashrcやzshrcなどに、読み込みコマンドを記述しておけます

まとめ

クレデンシャルファイルを特定のディレクトリに作り、基本コマンドで呼び出すだけです。一覧性も高く、管理しやすくなります。