cayman-5’s TechStudio

テクノロジーを源泉に世の中に本質的な価値のあるものを作り、浸透させたい。サービスの企画・開発からグロースまで一貫したプロダクトマネジメントが強み。価値を宿すプロダクト作りを信条に。グロースハック/プロダクトマネジメント/RaspberryPi/フィジカルコンピューティング/IoT/Rails/PHP/Python/Google Analytics/Google Tag Manager/Google Optimize エンジニアリングバックグラウンドで今はとあるIT企業で事業部長兼プロダクトマネージャ。個人

グロースハックとは?グロースハックについて学ぶ

いつもはRailsでプロダクト開発してる僕ですが最近どうやらグロースハックも担当しなきゃいけなくなりました。 そこで一つ疑問が。 グロースハックってバズワードっぽいけどそもそもデータ解析とかデータサイエンティストと何が違うんだ? マーケティングとかとも被ってそうだし。 グロースハックってなに?って聞かれたら明確に答えられる人は少ないんじゃないでしょうか?

なのでグロースハックについて調べてみることにしました! 今回はとりあえず優しそうな本2冊ピックアップしてグロースハックの概要をつかむことに。

グロースハッカー 第2版

グロースハッカー 第2版

この2冊の本によると

以下ライアン・ホリデイの「グロースハッカー」から引用

グロースハッカーの目標は、製品自体を数百万人の顧客にリーチ自己永続マーケティングマシンにすることだ。

こっちは金山裕樹・梶谷健人の「グロースハック教本」から引用

グロースハックとは、製品の中に自発的に成長する仕組みを組み込んで、その結果をデータで判断して改善していくこと。

ほうほう。

なるほどー。

2冊共に共通して書かれているんですけど

グロースハックはマーケティングと製品開発を統合したものである。

ここがデータサイエンティストやデータ解析みたいな分野とグロースハックの明確な違いかなと思いました。

製品自体の中にマーケティングの仕組みを内包する。そのためにデータを用いた意思決定をしながら日々改善し、その仕組みを構築していく。

そのようなグロースハックのために必要なマインドとスキルを身につけていきたいな。

とりあえず グロースハックについて知りたい方は以下の2冊が入門用としてはおすすめです。

グロースハッカー 第2版

グロースハッカー 第2版

今後もグロースハックについて定期的にブログ書いていこうと思います。

エンジニア兼プロダクトマネージャーのPCデスク作業環境の紹介とオススメの便利グッズ紹介[2018年版]

オススメのPC作業環境・デスク環境と便利グッズの紹介

2018年版のPC作業・デスク環境に更新しました!

さてさて久しぶりの記事更新。

今日から少しずつ記事の更新していきたいと思います!

新年初記事はPC作業環境について書いていこうと思います。

私は普段エンジニア兼プロダクトマネージャーとして働いています。そのためデスク環境が日々の作業効率に多大な影響を及ぼすので非常に大事なものになってきます。

Web上にもオススメのデスク環境や作業環境をアップしたブログがたくさんありますが

それに習って私もオススメのPC作業環境や便利グッズを紹介したいと思います!

ちなみに私は普段MacBook Pro13 をメインマシンとして利用しているのでその点考慮した作業環境となっております。

ディスプレイ

続きを読む

Macのシェルをbashからzshに変える方法と設定(oh-my-zshとpecoも追加)

私生活でも仕事でもほそぼそとプログラムを書いてるけど前々からシェルをデフォルトのbashからzshに変えたいと思っていた。

どうせならシェルだけではなくターミナル周り全般やCUI環境をしっかり作り直したいと思ってはいたけどなかなか敷居が高く今までやろうと決心がつかなかった。

なによりこういう情報を探してて思うのは初心者がzshを理解してステップアップしていく過程をどう過ごすか記載されている情報が少ないこと!

とりあえず俺の設定ファイル使いなよみたいな記事が多く、githubからcloneしてくれば確かに使えるんだけど、ブラックボックスなまま使うのがすごい嫌だなと常々感じていた。

なので自分の勉強も兼ねて少しずつzshを理解して使いこなせるようになる過程を書いていきたいと思います! (これはvimやtmuxなども同様に記録していきたい。)

ちなみに私の環境はMacOSX 10.10.5です。

  • zshについて
  • zshのインストール
  • oh-my-zshのインストールと.zshrcの設定
  • pecoのインストールと設定

という手順で紹介します

zshについて

シェルにも色いろあるのdすがBourne Shell系をベースとして、kshcshtcsh)、bashの各シェルの機能を取り込み,作られたのがzsh(ゼットシェル)です。zは最後の、究極のという意味でzなんですね。

主なメリットとしては

  • 優れた入力補完
  • 非標準コマンド(brew、gitとか)の入力補完
  • 見やすいカラーリング
  • bashより処理が高速
  • ターミナル間でのhistory共有
  • gitのカレントブランチの表示
  • コマンドの入力ミスを修正してくれる
  • 処理後の通知

などがあげられます。

zshのインストール

ではではそんな便利なzshをインストールしてみましょう。 macではデフォルトでzshが入ってますがバージョンが古いためhomebrewでインストールしましょう。

brewについてはこちらを参照

brew install --without-etcdir zsh

ついでにzshの補完機能をパワーアップする「zsh-completions」もインストール。こいつのおかげでgitなどの非標準コマンドも補完されます!(設定ファイルへの追記は後で)

brew install zsh-completions

ここでHomebrewで入れたzshへのパスを追加します。

vi /etc/shells

開いたファイルの最後に/usr/local/bin/zshを追加

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not  using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/zsh #ここに追加

ではログインシェルをzshに切り替えましょう!

chsh -s /usr/local/bin/zsh

パスワードを聞かれます。無事終わってからターミナルを再起動してみるとzshに切り替わってるはずです! これでbashともおさらば。

oh-my-zshのインストールと.zshrcの設定

zshのインストールと設定が一段落したのでoh-my-zshをインストールします。 oh-my-zshzshを管理するフレームワーク

  • 豊富なプロンプトテーマ
  • 便利なaliasの設定
  • プラグインの利用

といったメリットが有ります。

以下のコマンドでoh-my-zshをインストールしましょう。

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

oh-my-zshをインストールすると~/.zshrcというファイルが作成されます。これがzshの設定ファイルです。

 vi ~/.zshrc

oh-my-zshをインストールした時点で色々とファイルには書かれてますが

https://gist.github.com/mollifier/4979906

これを参考にさらに設定を追記しました。

# Path to your oh-my-zsh installation.
export ZSH=/Users/yuta144k/.oh-my-zsh
 
# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
# oh-my-zshで利用できるテーマを指定
ZSH_THEME="robbyrussell"
 
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
 
# Uncomment the following line to use hyphen-insensitive completion. Case
# sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
 
# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"
 
# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13
 
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
 
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
 
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
 
# Uncomment the following line to display red dots whilst waiting for completion.
# COMPLETION_WAITING_DOTS="true"
 
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
 
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# HIST_STAMPS="mm/dd/yyyy"
 
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
 
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
# oh my zshで利用できるプラグインを指定
plugins=(brew brew-cask ruby osx bundler rails)
 
# User configuration
 
export PATH="/usr/local/sbin:$PATH"
# export MANPATH="/usr/local/man:$MANPATH"
 
source $ZSH/oh-my-zsh.sh
 
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
 
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
#   export EDITOR='vim'
# else
#   export EDITOR='mvim'
# fi
 
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
 
# ssh
# export SSH_KEY_PATH="~/.ssh/dsa_id"
 
# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"


# 少し凝った zshrc
# License : MIT
# http://mollifier.mit-license.org/

########################################
# 環境変数
export LANG=ja_JP.UTF-8


# 色を使用出来るようにする
autoload -Uz colors
colors

# vim風キーバインドにする
bindkey -v

# ヒストリの設定
HISTFILE=~/.zsh_history
HISTSIZE=1000000
SAVEHIST=1000000

# 単語の区切り文字を指定する
autoload -Uz select-word-style
select-word-style default
# ここで指定した文字は単語区切りとみなされる
# / も区切りと扱うので、^W でディレクトリ1つ分を削除できる
zstyle ':zle:*' word-chars " /=;@:{},|"
zstyle ':zle:*' word-style unspecified

########################################
# for zsh-completions
fpath=(/usr/local/share/zsh-completions $fpath)
# 補完
# 補完機能を有効にする
autoload -Uz compinit
compinit -u

# 補完で小文字でも大文字にマッチさせる
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'

# ../ の後は今いるディレクトリを補完しない
zstyle ':completion:*' ignore-parents parent pwd ..

# sudo の後ろでコマンド名を補完する
zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \
                   /usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin

# ps コマンドのプロセス名補完
zstyle ':completion:*:processes' command 'ps x -o pid,s,args'


########################################
# vcs_info
autoload -Uz vcs_info
autoload -Uz add-zsh-hook

zstyle ':vcs_info:*' formats '%F{green}(%s)-[%b]%f'
zstyle ':vcs_info:*' actionformats '%F{red}(%s)-[%b|%a]%f'

function _update_vcs_info_msg() {
    LANG=en_US.UTF-8 vcs_info
    RPROMPT="${vcs_info_msg_0_}"
}
add-zsh-hook precmd _update_vcs_info_msg


########################################
# オプション
# 日本語ファイル名を表示可能にする
setopt print_eight_bit

# beep を無効にする
setopt no_beep

# フローコントロールを無効にする
setopt no_flow_control

# Ctrl+Dでzshを終了しない
setopt ignore_eof

# '#' 以降をコメントとして扱う
setopt interactive_comments

# ディレクトリ名だけでcdする
setopt auto_cd

# cd したら自動的にpushdする
setopt auto_pushd

# 重複したディレクトリを追加しない
setopt pushd_ignore_dups

# 同時に起動したzshの間でヒストリを共有する
setopt share_history

# 同じコマンドをヒストリに残さない
setopt hist_ignore_all_dups

# スペースから始まるコマンド行はヒストリに残さない
setopt hist_ignore_space

# ヒストリに保存するときに余分なスペースを削除する
setopt hist_reduce_blanks

# 高機能なワイルドカード展開を使用する
setopt extended_glob

# ウインドウ名の表示
set -g set-titles on
set -g set-titles-string '#W'

########################################
# キーバインド

# ^R で履歴検索をするときに * でワイルドカードを使用出来るようにする
bindkey '^R' history-incremental-pattern-search-backward

########################################
# エイリアス

alias la='ls -a'
alias ll='ls -l'

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

alias mkdir='mkdir -p'

# sudo の後のコマンドでエイリアスを有効にする
alias sudo='sudo '

# グローバルエイリアス
alias -g L='| less'
alias -g G='| grep'

# C で標準出力をクリップボードにコピーする
# mollifier delta blog : http://mollifier.hatenablog.com/entry/20100317/p1
if which pbcopy >/dev/null 2>&1 ; then
    # Mac
    alias -g C='| pbcopy'
elif which xsel >/dev/null 2>&1 ; then
    # Linux
    alias -g C='| xsel --input --clipboard'
elif which putclip >/dev/null 2>&1 ; then
    # Cygwin
    alias -g C='| putclip'
fi



########################################
# OS 別の設定
case ${OSTYPE} in
    darwin*)
        #Mac用の設定
        export CLICOLOR=1
        alias ls='ls -G -F'
        ;;
    linux*)
        #Linux用の設定
        alias ls='ls -F --color=auto'
        ;;
esac

# vim:set ft=zsh:


#ここに.bashrcや.bash_profileに書かれている$PATHの設定を転記しましょう
export PATH=/usr/local/bin:$PATH
export PATH=$(brew --prefix)/bin:$PATH
# rbenv & phpenv
export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init - zsh)"
export PATH=$HOME/.phpenv/bin:$PATH
eval "$(phpenv init - zsh)"

ZSH_THEMEというところのテーマ名を変えるとシェルのカラーリングや見た目が変わります。お好みで変えてみましょう!

テーマはこちらのサイトで見れます

https://github.com/robbyrussell/oh-my-zsh/wiki/Themes

お好きなテーマ名を設定ファイルに書いてターミナルを再起動してみてください。

その他コメント参考にお好みで修正していきましょう。よくわからない場合はコメントアウトしてみて挙動の変化をみてみてもいいかもしれません。 最後の.bashrcからの$PATHの転記はやっておいてくださいね! rbenvの eval "$(rbenv init - zsh)" はzshを追加しないとうまくいかない場合があるようです。

設定を終えたら

source ~/.zshrc

で設定ファイルを再読み込みしてください。

これでzsh環境が構築できました!

pecoのインストールと設定

では最後にpecoを導入しましょう。

brew install peco

pecoはコマンド出力結果のインクリメントサーチが出来るツールです。bashでC+rでヒストリー履歴の検索ができたかと思いますがそれを超絶便利にするものがこれです!

.zshrcにpecoの設定を追記してzshのヒストリと連携させましょう! zshのCtrl+rをオーバーライドする形で設定します!

vi ~/.zshrc

 

function peco-select-history() {
    local tac
    if which tac > /dev/null; then
        tac="tac"
    else
        tac="tail -r"
    fi
    BUFFER=$(\history -n 1 | \
        eval $tac | \
        peco --query "$LBUFFER")
    CURSOR=$#BUFFER
    zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history

これを.zshrcに追記してください。

             

 source .zshrc

このコマンドでzshrcを再読込して設定を反映します。

さらにキーバインドの設定を追加します。

mkdir ~/.peco
vi ~/.peco/config.json
{
  "Keymap": {
    "M-v": "peco.SelectPreviousPage",
    "C-v": "peco.SelectNextPage",
    "C-c": "peco.Cancel"
  }
}

~/.peco/config.jsonを以上のように書き足して保存。

これで設定が完了しました!

ではzsh上でC+rを実行してみましょう!

ただのヒストリ検索ではなくpecoが起動していれば成功です!

以上でシェルをzshにしてoh-my-zshを入れて少し設定を加えて、pecoを入れてヒストリ検索を超絶便利にするところまでできました!

まだまだzshはチューニングできる部分があると思うので勉強しながら少しずつ紹介したいと思います!

はじめてのRaspberryPi(Jessie)(4)-固定IPで無線LAN接続-

はじめてのRaspberryPi第4回!

前回は無線LANでインターネットに接続する設定をしました!

cayman-5-tech.hatenablog.com

しかし、前回の無線LANの設定はDHCPという方法でIPが割り振られていたため、IPアドレスが変わってしまう可能性があります。IPアドレスが変わるとSSHVNCするために毎回IPアドレスを調べなくちゃいけなくなるため面倒ですよね。

そこで今回は前回の設定に引き続いて、固定化されたIPアドレスをRaspberry Piに割り当てる方法を紹介したいと思います。 といっても前回の設定を少し書き換えるだけなのですぐに終わります!

Raspberry Pi 2 Model B (1)

Raspberry Pi 2 Model B (1)

それでは1つずつ設定していきましょう(^O^)/

続きを読む

はじめてのRaspberryPi(Jessie)-(3)-無線LANでのネット接続入門-

はじめてのRaspberryPi第3回!今回は無線LANの設定をしてみたいと思います! 前回までの記事でJessieになって多少設定が変更されたところを含めてRaspberry Piの初期設定と

cayman-5-tech.hatenablog.com

SSH及びGUIでのリモートログインによる遠隔操作

cayman-5-tech.hatenablog.com

の設定を行ってきました!

今回はこれまで有線LANでインターネットに繋いできたRaspberry Piを無線LANで接続してみようと思います。

使うものはこれ!

それでは1つずつ設定していきましょう(^O^)/

無線LAN機器の接続状況確認

まずRaspberry Piはこんな感じです!有線LAN、電源、無線LANアダプタが差し込まれた状態で手持ちのMacからSSHでリモートログインして作業してます。

f:id:cayman-5:20151107221300j:plain

続きを読む

Raspberry Pi2 B orRaspberry Pi B+で使えるケース15選まとめ

今回はRaspberry Piで使えるケースを集めてみました!(Raspberry Pi2 TypeBもしくはRaspberry Pi TypeB+)

ケースにもメタルケース、ファン付き、ヒートシンク付き、いろいろありますがオススメの良さそうなケースを集めてみました!








1. ひとつめはこれ!ネジを使わないはめ込み型!

続きを読む

はじめてのRaspberryPi(Debian Jessie)-(2)-リモートアクセス・GUIでの遠隔操作-

cayman-5-tech.hatenablog.com

今回は上記前回の記事で初期設定をしたRaspberryPi2にリモートからアクセスしGUIで遠隔操作できる状態にまでカスタマイズしていこうと思います。

Raspberry Piには色んな使い方があります。普通のデスクトップPCみたいにディスプレイやマウス、キーボードを用意して使う場合もありますが様々な制約の中でそれらのデバイスを利用することができない環境もあると思います。

そもそもRaspberry Piをいじるためにわざわざディスプレイやマウスをつなぐのが面倒くさいと思いませんか?

今回紹介する方法を使えばネットワークに繋がってさえいればほかのPCからRaspberry Piにネットワーク越しにアクセスして遠隔操作が可能になります!!!

そうすればRaspberry PiにはLANケーブルと電源アダプタさえつなげば操作が可能になりますね!すごく楽です!

ちなみにオススメとしては無線LANアダプタを設定して無線でネットワークに繋げる状態にしておくことです(無線設定は後日ブログで紹介します)RaspberryPiから出るケーブルは電源ケーブルだけになるので見た目もすっきりします!!

今回紹介する方法でラズベリーパイの遠隔操作に挑戦してみましょう!

続きを読む