新人エンジニア研修用の教材として「WEB+DB PRESS 総集編」を購入した

「4月から入社したエンジニアの新入社員さん向けにどういう研修をしていこう?」ということが、ずっと議題としてあがっている昨今です。

そんな前提の下、4月号の WEB+DB PRESS が時期的に「Web開発新人研修」という特集記事を扱っていました。

WEB+DB PRESS Vol.92

この特集を目にして「過去の WEB+DB PRESS を全て目を通して、今でも使える特集をピックアップして研修に使えばいいじゃん」という話になって、WEB+DB PRESS総集編 [Vol.1~84] を取り寄せました。

WEB+DB PRESS総集編[Vol.1~84]

目次だけざっと目を通してみると prototype.js や ActionScript など今からわざわざ手を出す必要がない内容もあれば、計算量の話など一生使える枯れた知識も載っているので、良い特集だけピックアップして使っていきます。

某IT企業の広報の方にオススメされた本「広報の仕事術」

某IT企業の広報の方とお話する機会がありまして、そのときに ”広報の仕事をしていて参考にしている本” を教えてもらいました。

中小企業だと広報という職種を担っている社員はせいぜい1〜2名ぐらいですが、サイバーエージェントの規模となると何人もいるわけでそういう会社で「広報」をチームとしてどう運用していくべきかという点でノウハウが詰まっている本とのことでした。僕はまだ読めてないので聞いた話によるとなんですが。

「広報」という仕事を理解する必要がでてきたタイミングで読みたいです。

Acer Aspire R7 の互換代用電源ケーブル

出張でアメリカから日本に来てる同僚が Aspire R7 の電源ケーブルを忘れてしまったので、調べたことをメモ。

まず、オフィスに代替品となる電源ケーブルがないか探してみたけどありませんでした。社内はほぼ Mac ユーザばかりなので Mac の電源ケーブルを忘れても他の人に借りれるんですけどね。

電源:入力 AC100~240V / 50~60Hz 出力 19V 3.42A 65W(最大) 色: 黒

ネットで検索してみたところ Amazon に AC アダプターの代替品が販売されてました。

値段が2800円ぐらいなので買ってしまうのも手かもしれませんね。今回は出張が5日間だけだったので、予備の Mac を使ってもらうことにしたので購入しませんでした。

ドキュメント化するとメンテナンスコストが掛かるので「社内の誰が専門家か?」だけ分かればとりあえずOK

いつかのアニメ鑑賞会で伊藤直也さんから教えてもらった「トランザクティブ・メモリー」の内容を、そのまま社内の日報メールで共有することがあったので、一部抜粋して記事にしてみました。

以下、日報メールの内容を一部抜粋したものです。

僕)

ノウハウが共有される良い文化が営業部にも根付いてきていて良いですね!

Hさん)
昨日、某氏とも話していたのですが、前例が参考にされないパターンってめっちゃあると思うんですよね。
Google ドキュメントにまとめていても検索しない、見つけられないなどありそうです・・・。
開発チームでなにか情報共有のノウハウがあれば教えていただきたいです!

僕)

組織全体が「同じ知識を記憶すること」ではなく、「組織内で『誰が何を知っているか』を把握すること」である

という考え方があります。

少し前に、エンジニア界隈の有名人 伊藤直也さんから教えてもらたことで、それが下記の記事です。

ドキュメント化ってメンテナンスコストが掛かるので、「社内の誰が専門家か?」だけ分かればとりあえずOKで、よくある質問は質問される人 or 質問した人が自然とドキュメント化していく流れが理想なのかなと思ってます。

僕も質問される頻繁が高い内容はドキュメント化しています。

営業部で Trello の運用がスタートしたと思うので、やりながら運用で困ってることを相談してもらえると嬉しいです。
僕が知っていればノウハウを共有できるのかなと思ってます!

その後、H さんは記事中に載っていた「ビジネススクールでは学べない世界最先端の経営学」という本を読んでその内容を共有してくれました。

良書みたいです。

「トランザクティブ・メモリー以外に◯◯という内容もとても参考になりました!」と教えてくれたのだけど、肝心のキーワードを忘れてしまいました。まあ、その人が知ってるのでその人に聞けばいいんですけどね。

AirMac Extreme には VPN サーバ機能が内蔵されてない

Apple 純正ルータこと AirMac Extreme には VPN サーバ機能が内蔵されていないのです。

VPN パススルーはサポートされているので、LAN 側の PC で VPN サーバを立ち上て、適切なポートマッピングをしてやければ外部から VPN 接続することは可能です。

Airmac Extreme

Airmac Extreme

インターネットの根幹の部分にルータを設置して VPN パススルーさせて、後ろ側で VPN サーバを立ち上げる方針がいいんじゃないかなと思ってます。

NURO Biz の ONU はルータ機能を搭載してない

オフィス移転に伴い NTT フレッツ光 から NURO Biz へ契約を切り替えました。

今まで NTT からレンタルしていた ONU はルータ機能が付いていたので、その流れで NURO Biz の ONU にもルータ機能が付いてると思っていたのですが間違いでした。

NURO Biz ONU

NURO Biz ONU

NURO Biz ONU は Huawei-EchoLife HG8040H です。これにはルータ機能が付いてないので NURO Biz を導入する規模でしたらそれなりのルータを導入されるとは思いますが、念の為、頭の片隅に留めておくといいかもしれません。

AirMac Extreme‎ の初期化 (リセット) 方法

オフィスの AirMac Extreme‎ をたまに工場出荷状態まで初期化することがあるので、リセット方法をメモ。

AirMac Extreme のリセットボタン

AirMac Extreme のリセットボタンは、AC 電源インレットの右横にあります。

AirMac Extreme リセットボタン

AirMac Extreme リセットボタン

AirMac Extreme‎ の初期化方法

AirMac Extreme‎ を初期化する方法は「ソフトリセット」、「工場出荷時のデフォルトリセット」の2通りあります。

ソフトリセット

  1. 「アプリケーション」>「ユーティリティ」と選択し、AirMac ユーティリティを開きます。
  2. 「AirMac ユーティリティ」>「アップデートを確認」と選択します。
  3. お使いの Mac で利用可能な最新バージョンのファームウェアと AirMac ユーティリティをインストールします。
  4. ベースステーションを電源に接続します。
  5. ペン先、鉛筆の芯、または伸ばした紙クリップを使って、10 秒間、リセットボタンを押し続けます。
  6. ボタンを放すと、ベースステーションがソフトリセットされます。

工場出荷時のデフォルトリセット

  1. ベースステーションを電源から取り外します。
  2. ペン先、鉛筆の芯、または伸ばした紙クリップを使ってリセットボタンを押しながら、ベースステーションを電源に接続します。3 つの LED ランプが高速で点灯するまで、5 秒程度、ボタンを押し続けます。
  3. ボタンを放すと、ベースステーションが工場出荷時の状態にリセットされます。

以上です。

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)

以上です。