Elasticsearch を Homebrew でサクッと Mac インストールする手順

Mac に Elasticsearch をインストールしたので手順をご紹介します。

インストール可能な Elasticsearch のバージョンを確認

2016年4月26日時点での最新版 2.3.1 がインストールできそうです。

$ brew info elasticsearch
elasticsearch: stable 2.3.1, HEAD
Distributed search & analytics engine
https://www.elastic.co/products/elasticsearch
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/elasticsearch.rb
==> Caveats
Data:    /usr/local/var/elasticsearch/elasticsearch_bakorer/
Logs:    /usr/local/var/log/elasticsearch/elasticsearch_bakorer.log
Plugins: /usr/local/Cellar/elasticsearch/2.3.1/libexec/plugins/
Config:  /usr/local/etc/elasticsearch/
plugin script: /usr/local/Cellar/elasticsearch/2.3.1/libexec/bin/plugin
 
To have launchd start elasticsearch now and restart at login:
  brew services start elasticsearch
Or, if you don't want/need a background service you can just run:
  elasticsearch

Elasticsearch をインストール

brew コマンドでサクッと elasticsearch をインストールしようとすると Java が無いというエラーが発生します。Java・・・

$ brew install elasticsearch
elasticsearch: Java 1.7+ is required to install this formula.
You can install with Homebrew Cask:
  brew install Caskroom/cask/java
 
You can download from:
  http://www.oracle.com/technetwork/java/javase/downloads/index.html
Error: An unsatisfied requirement failed this build.

Java をインストール

Oracle 公式サイトから Java をインストールしてもいいんですが、楽するために Java も brew コマンドでインストールしてしまいます。

$ brew install Caskroom/cask/java
==> brew cask install Caskroom/cask/java
==> We need to make Caskroom for the first time at /opt/homebrew-cask/Caskroom
==> We'll set permissions properly so we won't need sudo in the future
Password:
==> Caveats
This Cask makes minor modifications to the JRE to prevent issues with
packaged applications, as discussed here:
 
  https://bugs.eclipse.org/bugs/show_bug.cgi?id=411361
 
If your Java application still asks for JRE installation, you might need
to reboot or logout/login.
 
Installing this Cask means you have AGREED to the Oracle Binary Code
License Agreement for Java SE at
 
  http://www.oracle.com/technetwork/java/javase/terms/license/index.html
 
==> Downloading http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-macosx-x64.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask java
==> Running installer for java; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
==> installer: Package name is JDK 8 Update 92
==> installer: Installing at base path /
==> installer: The install was successful.
🍺  java staged at '/opt/homebrew-cask/Caskroom/java/1.8.0_92-b14' (2 files, 227M)

念の為 Java がインストールされていることを確認します。

$ java -version 
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)

改めて Elasticsearch をインストール

$ brew install elasticsearch
==> Downloading https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.1/elasticsearch-2.3.1.tar.gz
######################################################################## 100.0%
==> Caveats
Data:    /usr/local/var/elasticsearch/elasticsearch_bakorer/
Logs:    /usr/local/var/log/elasticsearch/elasticsearch_bakorer.log
Plugins: /usr/local/Cellar/elasticsearch/2.3.1/libexec/plugins/
Config:  /usr/local/etc/elasticsearch/
plugin script: /usr/local/Cellar/elasticsearch/2.3.1/libexec/bin/plugin
 
To have launchd start elasticsearch now and restart at login:
  brew services start elasticsearch
Or, if you don't want/need a background service you can just run:
  elasticsearch
==> Summary
🍺  /usr/local/Cellar/elasticsearch/2.3.1: 59 files, 29.4M, built in 1 minute 40 seconds

こちらも念の為、elasticsearch のバージョンを確認しておきます。

$ elasticsearch --version
Version: 2.3.1, Build: bd98092/2016-04-04T12:25:05Z, JVM: 1.8.0_92

elasticsearch を起動

Elasticsearch を起動してみます。

$ brew services start elasticsearch
==> Tapping homebrew/services
Cloning into '/usr/local/Library/Taps/homebrew/homebrew-services'...
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 7 (delta 0), reused 6 (delta 0), pack-reused 0
Unpacking objects: 100% (7/7), done.
Checking connectivity... done.
Tapped 0 formulae (32 files, 46.0K)
==> Successfully started `elasticsearch` (label: homebrew.mxcl.elasticsearch)

elasticsearch のプロセスが起動されていることを確認しました。

$ ps aux | grep elasticsearch
bakorer          1308   0.5  1.5  5075616 256028   ??  S     7:04PM   0:07.18 /usr/bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/usr/local/Cellar/elasticsearch/2.3.1/libexec -cp /usr/local/Cellar/elasticsearch/2.3.1/libexec/lib/elasticsearch-2.3.1.jar:/usr/local/Cellar/elasticsearch/2.3.1/libexec/lib/* org.elasticsearch.bootstrap.Elasticsearch start
bakorer          1327   0.0  0.0  2432772    560 s000  S+    7:04PM   0:00.00 grep --color=always elasticsearch

[おまけ] elasticsearch-head をインストール

Elasticsearch には plugin をインストールできる仕組みがあり、elasticsearch-head をインストールするとブラウザから色々と確認できるようになります。

$ /usr/local/Cellar/elasticsearch/2.3.1/libexec/bin/plugin install mobz/elasticsearch-head
-> Installing mobz/elasticsearch-head...
Trying https://github.com/mobz/elasticsearch-head/archive/master.zip ...
Downloading 
...............................................................................................DONE
Verifying https://github.com/mobz/elasticsearch-head/archive/master.zip checksums if available ...
NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)
Installed head into /usr/local/Cellar/elasticsearch/2.3.1/libexec/plugins/head

管理画面の URL は http://localhost:9200/_plugin/head/ です。

elasticsearch-head を使って見れる管理画面

elasticsearch-head によって http://localhost:9200/_plugin/head/ から見れるそれっぽい管理画面

Elasticsearch を使い始めたばかりなので、これから徐々にキャッチアップしていきたいと思います。

Ansible 2 を Mac にインストールする方法

Ansible 2 系を brew コマンドを使ってサクッと Mac にインストールしました。

$ brew info ansible
ansible: stable 2.0.2.0 (bottled), devel 2.0.2.0-0.4.rc4, HEAD
Automate deployment, configuration, and upgrading
https://www.ansible.com/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/ansible.rb
==> Dependencies
Build: pkg-config ✘
Required: libyaml ✘, openssl ✘
==> Caveats
Homebrew writes wrapper scripts that set PYTHONPATH in ansible's
execution environment, which is inherited by Python scripts invoked
by ansible. If this causes problems, you can modify your playbooks
to invoke python with -E, which causes python to ignore PYTHONPATH.
$ brew install ansible
$ ansible --version
 
ansible 2.0.2.0
  config file = 
  configured module search path = Default w/o overrides

以上です。

brew update で fatal: cannot create directory at ‘.github’: Permission denied というエラーが出たときの対応方法

Mac で brew update を実行したら、

$ brew update
fatal: cannot create directory at '.github': Permission denied
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master

というエラーメッセージが表示されたときの対応方法をご紹介します。

/usr/local ディレクトリの permission を変更

fatal: cannot create directory at ‘.github’: Permission denied というエラーメッセージが表示されるのは /usr/local ディレクトリの permission が無いのが原因です。

chown コマンドで所有者を自分に変更しましょう。

$ ls -la /usr/local
total 112
drwxr-xr-x   24 root     wheel    816 Oct 28 08:47 .
$ sudo chown $(whoami):admin /usr/local
$ ls -la /usr/local
total 112
drwxr-xr-x   24 myname  admin    816 Oct 28 08:47 .

Homebrew の GitHub repository を master へ更新

cd `brew --prefix`
git fetch origin
git reset --hard origin/master

最後に Homebrew をアップデート

$ brew update
$ brew -v
Homebrew 0.9.9 (git revision 145155; last commit 2016-04-23)
Homebrew/homebrew-core (git revision bd06; last commit 2016-04-23)

以上です。

[Node.js] npm package の実行ファイルは node_modules/.bin にシンボリックリンクで存在する

Node.js で npm install した package の実行ファイルは node_modules/.bin ディレクトリ配下にシンボリックリンクが自動作成されます。

npm logo

(例) とある node_modules/.bin 配下

$ ls -l ./node_modules/.bin
lrwxr-xr-x  1 codenote  staff  22 Apr 21 18:11 express -> ../express/bin/express
lrwxr-xr-x  1 codenote  staff  22 Apr 21 18:11 grunt -> ../grunt-cli/bin/grunt
lrwxr-xr-x  1 codenote  staff  16 Apr 21 18:11 jade -> ../jade/bin/jade
lrwxr-xr-x  1 codenote  staff  21 Apr 21 18:12 npm -> ../npm/bin/npm-cli.js

Node.js で開発して4年以上も経つのに知らなくて、自分でもびっくりしました。

ちなみに、モジュールにコマンドが用意されていた場合のみ /path/your_project/node_modules/.bin にシンボリックリンクが作成されます。

サポートタイプのリーダーを目指すあなたにやってほしいこと

とあるチームの業務改善の一環で、そのチームのリーダー宛に送ったメールを一部編集して記事にしました。

以下、メール本文です。


チームの立て直しに関連して今後、◯◯さん(リーダー)にやってもらいたいことを、優先度順に書き出しました。
できること、できないことあると思いますが、ご確認よろしくお願いします。

概要

  • サポートタイプのリーダーなので、自分の時間を確保して業務キャッチアップして、把握できてないこと、できないことを減らしていって欲しいという考えのもとに書き出してます
  • 自分ができる業務は他のメンバーに任せても、最悪自分で解決できるので、時間の作り方としてオススメです
  • 僕も意識して開発メンバーに任せまくってます

流れ

  1. 自分の業務を手放す
  2. 元々、自分の業務だったものはフォローできる
  3. 空いた時間でキャッチアップ、勉強する
  4. チームメンバーの業務全てフォローできるようにする

サポートタイプのリーダーになるためにやってほしいこと

実務を早急にメンバーに引き継ぐ

実務を抱えてると時間が作れないと思うので、今までやっていたタスクはフォローできると思うので一旦、手放しましょう。
困ったらフォローする形でリーダーシップとっていくのが理想的です。

空いた時間でチームの業務を全てキャッチアップする

失礼ながら数字に弱い印象なので、扱ってる数字がどうなってるかは最低限、分かっていてほしいです。
その他、チームメンバーがやってる業務内容の概要を把握してください。
チーム内の業務で分からないことがあれば勉強してください。

チーム内の各業務 MTG にも時間の許す限り参加する

最初のうちは基本参加してください。

各メンバーの実務面での動きを見てないと、評価面談のときに何も書けないと思います。
メンバーのことを見ていない人に評価されても納得感がないと思います。

最後に、慣れてきたら MTG への参加頻度は減らしていきましょう。
MTG ばかり参加していると自分の仕事の時間が確保できなくなるからです。

他チームとの面倒な調整役を引き受ける

サポートタイプのリーダーが力を発揮できるポイントだと思います。
チームメンバーには各自の業務に集中できる環境を作ってあげましょう。


以上がメールに書いた内容でした。

最後に

「リーダーってどうあるべきだろう?」と悩んでいる方に少しでも参考になれば幸いです。

Google Analytics と AdSense を連携する

Google Analytics と AdSense の連携はアナリティクスの管理画面からできます。

Google Analytics と AdSense を Link する

セッション数や PV/UU などとアドセンス経由の収益の関係性を分析するために、この設定は必須ですね。

[Google Analytics]「セキュリティ上の問題が発生しました。ページを再読み込みしてください。 アカウントの認証情報を検証できません。アカウント情報を確認し、ログインし直してください。」の解決方法

Google Analytics で「セキュリティ上の問題が発生しました。ページを再読み込みしてください。 アカウントの認証情報を検証できません。アカウント情報を確認し、ログインし直してください。」というエラーメッセージが表示されたときの解決方法をご紹介します。

セキュリティ上の問題が発生しました。ページを再読み込みしてください。 アカウントの認証情報を検証できません。アカウント情報を確認し、ログインし直してください。

Google Analytics – セキュリティ上の問題が発生しました。ページを再読み込みしてください。 アカウントの認証情報を検証できません。アカウント情報を確認し、ログインし直してください。

複数の Google アカウントでそれぞれ Google Analytics を利用していると URL パラメータに固有の ID が、
https://analytics.google.com/analytics/web/?authuser=1#home/a21896103w50053525p50617345/
のように ?authuser=1#home/a21896103w50053525p50617345/ というように付いてしまいます。

例えば、この URL をブックマークしていると、別の Google アカウントでアクセスしたときにエラーメッセージが発生することがあります。

解決方法としては https://analytics.google.com/analytics/web/
のように URL パラメータを削除してアクセスすると「アナリティクス設定」のページをエラーメッセージ無しで、正常にアクセスできるはずです。

バックアップ用途としてオンラインストレージサービスを比較してみた

バックアップで利用している HDD 1TB をいつも持ち歩いてるのですが、調子が悪くて読み込めなくて焦るということが増えてきました。この HDD の中には消えると困るデータも入っているので、オンラインバックアップサービスを利用することを決めて、色々と検討した末に Google Drive を採用しました。

オンラインバックアップサービスに Google Drive を採用した理由

Google Drive は 20GB までなら無料で利用できますが、容量が足りないので 100 GB プランに上げて利用しています。100 GB プランだと月額 $1.99 です。全部バックアップした場合は 1TB にする必要がありますが、それでも月額 $9.99 で済みます。

Google Drive 100GB Plan

Google Drive 100GB Plan

オンラインストレージサービスの比較

他に検討したオンラインストレージサービスは以下の通りです。

Dropbox

1TB で ¥1,200/月 です。

有料プランがまず 1TB からなので 100GB もあれば充分という人には Google Drive を利用することをおすすめします。

OneDrive

1TB で $6.99/月と価格的には一番良さそうです。

もし Google Drive のプランを 100GB から 1TB にアップグレードする必要がでてきたときには OneDrive への移行も検討したいです。

ただ、1点だけ気になるのが OneDrive のサービスの使いやすさです。僕は OneDrive を全く利用したことが無いので Google Drive と比較してかなり劣るようだったら、安価だからという理由だけで OneDrive へ乗り換えるという選択肢はなさそうです。

MEGA

無料で 50GB のストレージが利用できるという点が素晴らしいです。

mega.nz pricing

mega.nz pricing

1TB 以上のプランを利用することが出てきたときに MEGA には、2TB 19.99 €/月 のプランがあるので Google Drive から乗り換えるという選択肢がでてくるかもしれません。

以前の Megaupload が違法ダウンロードサイトの巣窟になっていたので、Mega が同じ用途で利用されてサービス閉鎖に追い込まれないかだけがユーザ的には気になるポイントです。

Amazon S3

Web サービス開発での利用ではなく、単なるバックアップ用途として Amazon S3 だと価格はいくらぐらいになるか調べてみると意外と割高でした。

  • スタンダードストレージ $0.0300 /GB
  • 標準 – 低頻度アクセスストレージ $0.0125 /GB
  • Glacier ストレージ $0.007 /GB

標準で価格計算したとしても $0.0125 * 1TB (1000GB) = $12.5 と Dropbox と同程度でした。

B2 Cloud Storage

少し前に TechCrunch の「バックアップサービスのBackblazeがAmazon S3の1/4の料金でクラウドストレージサービスを立ち上げ」という記事で取り上げられていた Backblaze を利用すると 1TB 5$ とかなり低価格で利用できそうです。

$0.005 /GB なので $0.005 * 1TB (1000GB) = $5

今回、比較した中では最安価ですが Web アプリが使いにくいので個人用には向いてないと判断しました。例えば、ファイルサイズが 100MB を超える場合は Web からはアップロードできないので、CLI を利用するしかないというようなことです。

コストはかなり抑えられるので Web サービス開発で Backblaze を利用するのは良い選択かもしれませんね。

まとめ

オンラインストレージサービスはそれぞれ良い点・悪い点があるので、自分の用途にあったサービスを見極めて利用していけると良いですね。お金はそんなに掛けないで、大切なデータを守れるのがベストだと思ってます。

他に「このオンラインストレージサービスもオススメだよ!」という情報があればぜひコメントにて教えて下さい。

[Gmail] デフォルトのスター以外の複数のスターを設定して使用する

Gmail の ☆ (スター) の種類を増やせるということを会社の同僚に教えてもらってから、すぐに使いはじめました。

複数のスターを使えるようにする設定は https://mail.google.com/mail/u/0/#settings のページにてできます。

複数の種類のスターを使用する設定画面

複数の種類のスターを使用する設定画面

最初は、全てのスターを使えるように設定したのですが、種類を増やすと管理が煩雑になってしまいました。そこで、スターの種類を絞って、デフォルトのスター以外に red-bang, blue-info, green-check だけ使ってます。

  • has:yellow-star
  • has:blue-star
  • has:red-star
  • has:orange-star
  • has:green-star
  • has:purple-star
  • has:red-bang
  • has:yellow-bang
  • has:blue-info
  • has:orange-guillemet
  • has:green-check
  • has:purple-question

EC サイトは商品ページにレビューを表示させると SEO 効果が見込める

某 SEO 専門家の方に「EC サイトは商品ページにレビューを表示させると SEO 効果が高まる。3〜5件とか少しではなく、15件ぐらい表示させるべき。Amazon が模範的なカスタマーレビューの表示をしている。」というアドバイスをいただきました。

この SEO アドバイスを踏まえて、実際に Amazon.co.jp の商品ページを考察してみました。

Amazon 商品ページのカスタマーレビューのSEO考察

Amazon 商品ページのカスタマーレビューのSEO考察

メインエリアに「トップカスタマーレビュー」が6件、右サイドエリアに「最近のカスタマーレビュー」が10件表示されています。

SEO 専門家曰く、Google の検索ロジックはニュースサイトのコメントは SEO 効果が見込めないけど、EC サイトのレビューコメントは SEO 効果が見込めるとのことでした。

Amazon のカスタマーレビューの項目は SEO にかなり効きそうなので、EC サイトの運営者はぜひ試してみてはいかがでしょうか。