ぼっちエンジニアのリーンなブログ

リーン・スタートアップ、プログラミングなどについてまとめます

Mac利用のエンジニアに必ず入れて欲しいソフトAlfredとは

Macを利用してこれ入れてない人は人生損するというソフト、Alfredを紹介します

このソフトのせいで私はもうWindowsに戻ることはないでしょう

Windowsを使っている人もこのソフトのためにMacに変えても良いかもね!

www.alfredapp.com

で、Alfredって何ができるの?

Alfredは、簡単に言うとランチャーアプリです

ランチャーアプリなにそれおいしいの?

という方に簡単に説明しますと、「ソフト(アプリ)を起動することができる」というものです

これだけ聞くと全然便利そうじゃありませんよね

では例えば、

今あなたがAtom(or Sublime Text, eclipse)を開いていて、クロームを開きたくなったとします

どうやってFinderを開きますか? DockにあるFinderアイコンをクリックする? Mission Controlを使ってFinderウィンドウをクリック?

いやいやナンセンス、無駄無駄無駄無駄

この瞬間人生損してます

Ctrl+spaceでAlfredを起動して、chrと打つだけでクロームを開くことができます

f:id:lean-blog:20151202014054p:plain

なんならPowerPack(Alfredの拡張パック 有料)を入れればブックマークさえ一発で開けます(それは別の機会に紹介します)

そう、Alfredならね

いやでもSpotlight検索と何が違うの

無料のままだとAlfredとSpotlight検索にそれほどの差はありません。ただ日本人でSpotlight検索を使っていると必ず経験のある事象をなくすことができます(筆者はこれがきっかけでAlfredを使い始めました)

なんと、起動した瞬間に英語入力に切り替えることができます

もう一度言います起動した瞬間に英語入力に切り替えることができます

Spotlight検索開く→「chrome」と入れたかったが「chく」→一旦消す→英語入力に切り替え→「chrome」と入力

という悪夢をもう見なくて良いんです

設定する場所は下図に示しているところを設定すれば良いです

f:id:lean-blog:20151202014901p:plain

便利なのはなんとなくわかったけど人生損するは言い過ぎでは?

たしかに上記機能だけではそれほど便利には思えないかもしれません

でも、こういう小さい変化が実は劇的にPCライフを変えることを私達エンジニアは知っているはずです

それでももっと便利なんでしょ?

はい

ここで簡単にAlfredの有料パック(Powerpack)を導入することであなたのPCライフがより劇的に便利になることを紹介しましょう

(詳しくは別の機会に話しますが)

  1. スニペットの貼り付け 超便利機能。あのコマンドなんだっけ?をずばり解決

snippetを登録しておくことでAlfredからsnippetを貼り付けできます

例えばmysqldumpの方法、railsのmigrationコマンドとか、忘れてしまって毎回ググっちゃいますが、そんな自分にバイバイ!

f:id:lean-blog:20151202021303p:plain

  1. Google検索

Alfredでgoogle検索してchromeで開けます。サジェストも利用可能。わざわざchrome開いて新しいタブ or 検索バーに移動する手間が省けますね

f:id:lean-blog:20151202020055p:plain

  1. Chromeのブックマーク検索

ブックマークを検索して開くことができます。超便利

f:id:lean-blog:20151202020302p:plain

  1. Chromeのタブ検索

タブを一覧化して検索できますタブをいっぱい開く人には便利

f:id:lean-blog:20151202020443p:plain

  1. Githubレポジトリ検索

Githubレポジトリを簡単に検索してブラウザで開くことができます。(図はgh myと打って自分のページ一覧を出しているもの)

f:id:lean-blog:20151202020615p:plain

  1. DashでAPI検索

dashをAlfredから利用できます。dashを開いて検索するの面倒なので便利です

f:id:lean-blog:20151202020756p:plain

  1. その他

他にもクリップボード履歴を検索して貼り付ける、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のインストール

上と同様、下記サイトにアクセスしてダウンロード、インストール

Download Vagrant - Vagrant

ubuntuのboxのダウンロード

vagrantubuntuの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

はじめまして

はじめまして

はじめまして。やっすともうします
今日から「エンジニアが考えるリーンなブログ」を執筆させていただきます

目指すもの

みなさんはリーンスタートアップというものをご存知でしょうか?
リーンスタートアップというのは事業開発の手法です
このブログではそのリーンスタートアップについて、及び起業、エンジニアリングについて語っていこうと思います

最初のうちは一日一ページ単位、後々は一週間に一ページの単位で更新していきたいと思っています
よろしくお願いいたします。