Mac利用のエンジニアに必ず入れて欲しいソフトAlfredとは
Macを利用してこれ入れてない人は人生損するというソフト、Alfredを紹介します
このソフトのせいで私はもうWindowsに戻ることはないでしょう
Windowsを使っている人もこのソフトのためにMacに変えても良いかもね!
で、Alfredって何ができるの?
Alfredは、簡単に言うとランチャーアプリです
ランチャーアプリなにそれおいしいの?
という方に簡単に説明しますと、「ソフト(アプリ)を起動することができる」というものです
これだけ聞くと全然便利そうじゃありませんよね
では例えば、
今あなたがAtom(or Sublime Text, eclipse)を開いていて、クロームを開きたくなったとします
どうやってFinderを開きますか? DockにあるFinderアイコンをクリックする? Mission Controlを使ってFinderウィンドウをクリック?
いやいやナンセンス、無駄無駄無駄無駄
この瞬間人生損してます
Ctrl+spaceでAlfredを起動して、chrと打つだけでクロームを開くことができます
なんならPowerPack(Alfredの拡張パック 有料)を入れればブックマークさえ一発で開けます(それは別の機会に紹介します)
そう、Alfredならね
いやでもSpotlight検索と何が違うの
無料のままだとAlfredとSpotlight検索にそれほどの差はありません。ただ日本人でSpotlight検索を使っていると必ず経験のある事象をなくすことができます(筆者はこれがきっかけでAlfredを使い始めました)
なんと、起動した瞬間に英語入力に切り替えることができます
もう一度言います起動した瞬間に英語入力に切り替えることができます
Spotlight検索開く→「chrome」と入れたかったが「chく」→一旦消す→英語入力に切り替え→「chrome」と入力
という悪夢をもう見なくて良いんです
設定する場所は下図に示しているところを設定すれば良いです
便利なのはなんとなくわかったけど人生損するは言い過ぎでは?
たしかに上記機能だけではそれほど便利には思えないかもしれません
でも、こういう小さい変化が実は劇的にPCライフを変えることを私達エンジニアは知っているはずです
それでももっと便利なんでしょ?
はい
ここで簡単にAlfredの有料パック(Powerpack)を導入することであなたのPCライフがより劇的に便利になることを紹介しましょう
(詳しくは別の機会に話しますが)
- スニペットの貼り付け 超便利機能。あのコマンドなんだっけ?をずばり解決
snippetを登録しておくことでAlfredからsnippetを貼り付けできます
例えばmysqldumpの方法、railsのmigrationコマンドとか、忘れてしまって毎回ググっちゃいますが、そんな自分にバイバイ!
- Google検索
Alfredでgoogle検索してchromeで開けます。サジェストも利用可能。わざわざchrome開いて新しいタブ or 検索バーに移動する手間が省けますね
- Chromeのブックマーク検索
ブックマークを検索して開くことができます。超便利
- Chromeのタブ検索
タブを一覧化して検索できますタブをいっぱい開く人には便利
Githubのレポジトリを簡単に検索してブラウザで開くことができます。(図はgh myと打って自分のページ一覧を出しているもの)
- DashでAPI検索
dashをAlfredから利用できます。dashを開いて検索するの面倒なので便利です
- その他
他にもクリップボード履歴を検索して貼り付ける、Evernote検索、Slackの特定のチャンネルを開く、SourceTreeで特定のレポジトリを開くなど便利な機能がいっぱいあります
この辺りはまた別の機会に詳しく語ります
vagrantを使ったLinuxの仮想環境構築
概要
簡単に仮想環境を構築できるvagrantの導入方法を説明します
Chefで環境構築するときは構築→やり直しを何度も行うため、 必須と言って良いでしょう
Vagrantを利用するにはVirtual Boxのインストールも欠かせません
今回はどちらもインストールして、ubuntu環境を作るまでをゴールとします
Vagrantとは
Vagrantとは、仮想環境をコマンドラインから簡単に操作できるソフトウェアです
実際にVagrantが行っているのは、仮想環境をコマンドラインで操作できるようにしていることだけです
そのため、仮想環境としてVirtual Boxを入れておく必要があります
Boxを登録しておけば様々な環境をすぐに作成したり削除したりできます。とっても簡単です
便利なプラグインもあります。それは次回紹介します
手順
- VirtualBoxのインストール
- Vagrantのインストール
- ubuntuのboxのダウンロード
- 仮想環境用のフォルダの作成と起動
VirtualBoxのインストール
下記サイトにアクセスしてファイルをダウンロード、インストール
Downloads – Oracle VM VirtualBox
Vagrantのインストール
上と同様、下記サイトにアクセスしてダウンロード、インストール
ubuntuのboxのダウンロード
vagrantにubuntuのboxをダウンロードして登録する必要がありますので、下記サイトからubuntuを探す
A list of base boxes for Vagrant - Vagrantbox.es
ubuntuを探したら、下記コマンドで登録する
# ubuntu14.10の例 vagrant box add ubuntu14.10 https://github.com/kraksoft/vagrant-box-ubuntu/releases/download/14.10/ubuntu-14.10-amd64.box
仮想環境用のフォルダの作成と起動
Boxがダウンロードできたら、次は仮想環境を作る
mkdir sample-ubuntu cd sample-ubuntu vagrant init ubuntu14.10
これで構築準備が環境。作成して起動する(初回は少し時間がかかる)
vagrant up # 上記のフォルダで行う
あとはログインして仮想環境で自由にやってください
vagrant ssh
Vagrantで利用するよく使うコマンド集
vagrantのコマンドなどの使い方は下記を参照 lean-blog.hatenablog.com
Vagrantでよく使うコマンド集
Vagrantでよく使うコマンドをメモしておきます
新しい仮想マシンを作る
- フォルダを作って、そこに環境を構築する
mkdir sample-centos cd sample-centos vagrnt init centos7 # boxとしてcentos7が登録してある前提 # Boxの操作の項目参照 vagrant up # 仮想環境の起動
仮想マシンの操作
- 起動
vagrant up # 仮想マシンを作成したディレクトリ内で実施する
- 停止
vagrant halt # 仮想マシンを作成したディレクトリ内で実施する
- 再起動
vagrant reload # 仮想マシンを作成したディレクトリ内で実施する
- 状態を保存して停止
vagrant suspend # 仮想マシンを作成したディレクトリ内で実施する
- ログイン
vagrant ssh # 仮想マシンを作成したディレクトリ内で実施する
Boxの操作
- 新しいBoxを登録
vagrant box add NAME URL # centos7の例 vagrant box add centos7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box # ubuntu14.10の例 vagrant box add ubuntu14.10 https://github.com/kraksoft/vagrant-box-ubuntu/releases/download/14.10/ubuntu-14.10-amd64.box
- 登録しているBoxのリストを取得
vagrant box list
その他 便利サイト
Vagrant Boxを紹介しているサイト A list of base boxes for Vagrant - Vagrantbox.es
秘密情報をchefで扱う
概要
Chefで秘密情報を扱うときは、data_bagというものを利用する。
秘密情報は、BAGとITEMで表され、Projectは複数のBAGを持ち、BAGは複数のITEMを持つ
ITEMはjsonで表現され、Chefのコードからアクセス可能である
セットアップ
knife-solo_data_bagのインストール
gem install knife-solo_data_bag --no-ri --no-rdoc # knife-soloのdata bag用プラグイン
暗号化に利用する鍵を用意する
cd project-directory openssl rand -base64 512 > .chef/encrypted_data_bag_secret
.chef/knife.rbを変更
cookbook_path ["cookbooks", "site-cookbooks"] node_path "nodes" role_path "roles" environment_path "environments" data_bag_path "data_bags" encrypted_data_bag_secret ".chef/encrypted_data_bag_secret" # ← ここを変更 knife[:berkshelf_path] = "cookbooks" Chef::Config[:ssl_verify_mode] = :verify_peer if defined? ::Chef
data bag用のエディターを設定する
# .bash_profileに書くと良いかも。vimを色々いじっているとエラーが発生するのでemacsとかにすると良いかも export EDITOR=vi # or emacs, notepad
暗号化データを作成する
BAGとITEMの作成
# BAGだけでは作成できないので必ずITEMも必要 knife solo data bag create <BAG> <ITEM>
ITEMの編集
knife solo data bag edit <BAG> <ITEM>
作成されるもの
上記の編集コマンドだと復号化された状態が見れるが、作成されるファイルは暗号化されている。
例:data_bags/certificates/ssl.json
{ "id": "ssl", "test": { "encrypted_data": "Ht6iZta7RqJN7Xc+tF7p1vIp/n0p2Jz33VRB35vbwqo=\n", "iv": "dJMOFLGm3NtW1Z0YYMTbgw==\n", "version": 1, "cipher": "aes-256-cbc" } }
ファイルを扱う
証明書などをアップロードしたいときとかあると思います
ファイルだと持てないのでJSONで扱う必要があります
なので下記コマンドでファイルを文字列にする
cat <filename> | sed s/$/\\\\n/ | tr -d '\n' -OR- /usr/bin/env ruby -e 'p ARGF.read' <filename> -OR- perl -pe 's!(\x0d)?\x0a!\\n!g' <filename>
復元するときは、下記のようにやる
data_bag = Chef::EncryptedDataBagItem.load('certificates','ssl') execute "create_key" do command "echo \"#{data_bag['file_name']}\" > /path/to/file ; chmod 600 /path/to/file" user "root" group "root" action :run end
Utils
バッグリストの取得
knife solo data bag list
バッグの中のアイテムリストの取得
knife solo data bag show <BAG NAME>
Chefのセットアップ
Chefのセットアップ方法についてのメモ
インストール
- rubyのインストール
省略します - chefのインストール
gem install chef --no-ri --no-rdoc # chefの本体
- knife-soloのインストール
gem install knife-solo --no-ri --no-rdoc # chef(knife)のプラグイン
- knife-solo_data_bagのインストール
gem install knife-solo_data_bag --no-ri --no-rdoc # knife-soloのdata bag用プラグイン
- berkshelfのインストール
gem install berkshelf --no-ri --no-rdoc # サードパーティのクックブックを管理しやすくするgem
初期設定
ディレクトリの作成
knife solo init chef-directory ## 下記のようなフォルダができるはず $ tree chef-directory/ chef-directory/ ├── cookbooks ├── data_bags ├── environments ├── nodes ├── roles └── site-cookbooks
Chefの初期設定を行う
knife configure # knifeはchefのインストールで一緒に入るコマンド。色々聞かれるが全てEnterで良い
自分のクックブックの作成
上で作成したディレクトリにて下記を実行
knife cookbook create <COOKBOOK NAME> -o site-cookbooks/
サードパーティ製のクックブックを利用する
サードパーティ製のクックブックはここで探しましょう
Berkshelfを利用します。ディレクトリのルートにBerksfileを作成する
vim Berksfile
Berksfileは下記のようになります
source "https://supermarket.chef.io" cookbook 'yum' # 探してきたクックブックを貼る(バージョン指定は cookbook 'yum', '~> 3.8.2'のようにやる) cookbook 'mysql'
次のコマンドでサードパーティのクックブックがcookbooksディレクトリに入ります
berks install
実行前のサーバの登録
IPアドレス指定+鍵でもいけますが、個人的には~/.ssh/configにサーバを登録することをおすすめします。簡単なので
vim ~/.ssh/config # 下記を記述 Host server-name HostName <IP Address> # IPアドレスを記述 User <username> # ログインするユーザ名を記述 Port 22 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile <SSH key path> # SSH鍵へのパスを記述 IdentitiesOnly yes LogLevel FATAL
サーバへのインストール
knife solo prepare server-name # 最初に一回だけ必要 knife solo cook server-name
はじめまして
はじめまして
はじめまして。やっすともうします
今日から「エンジニアが考えるリーンなブログ」を執筆させていただきます
目指すもの
みなさんはリーンスタートアップというものをご存知でしょうか?
リーンスタートアップというのは事業開発の手法です
このブログではそのリーンスタートアップについて、及び起業、エンジニアリングについて語っていこうと思います
最初のうちは一日一ページ単位、後々は一週間に一ページの単位で更新していきたいと思っています
よろしくお願いいたします。