2013-04-30

Google Now for iOS リリース!

Google Now の iOS 版がリリースされた。

Google Now は Google 検索アプリの一部の機能として提供される。

Google Now はライフログと Google の検索機能を組み合わせた「コンシュルジュ」の様な機能。位置情報・時間・検索履歴などの個人情報と、天気情報・ローカル情報・その他公開されている情報から組み合わせて、ユーザーにとってニーズのありそうな情報を「勝手に」提供する。

Google Now

スクリーンショットは、現在、香川県に帰省しているぼくの iPhone に現れた Google Now のカード。この帰省中に出掛ける場所を Google がお勧めしてくれた。

Google Now

スクロールすると、今日の天気 (現在地と自宅) が見つかった。いやー、13 度とかナイわー。木曜日の最低気温は 8 度? ゴールデンウィークじゃないよ。

Google Now の魅力

Google Now を初めて見たのは Android 4.2 (Jelly Bean) が搭載された Nexus 7 だった。当時の Google Now が提供する情報は少なかった。

Google Now は大雑把にまず「カード」という情報の固まりを用意している。ユーザーはカードをオン・オフすることで、不要な情報を Google Now に表示させなくすることが可能。ぼくの場合、「スポーツ」は高校野球とゴルフの四大タイトルくらいしか興味を持っていないのでオフにしてある。

更にオンにした「カード」に対して細かな設定が可能。例えば先のスクリーンショットに出した天気情報を例に取ると、まずカードを Google Now に表示する頻度が設定できる (「常に」「朝」「夜」の三種)。加えて、提供する天気情報の場所も設定可能 (「自宅」「職場」「現在地」の三種: Google Calendar と連携して旅行先の天気情報も分かるともっと嬉しい)。最後に温度表示を「摂氏」か「華氏」かで選択できる。

Google Now

スクリーンショットに見る通り、カードの数は多い (一部の機能は日本国内では使えない)。このカードの数は、Google Now が進化するたびに増えてきた。カードが増えたり、カードの中の設定項目が増えたりすると、ちょっと楽しくなる。

Nexus 7 では一足先に Google Now の体験をすることができたものの、不満点もあった。それは、自分の GPS 情報がリアル・タイムで Google に送れないこと。基本、自宅の Wi-Fi 環境でしか Nexus 7 は起動していなかった。これじゃあ、せっかくの機能も活かせない。

普段持ちする iPhone に Google Now が来たことで、本当の Google Now 体験が出来るんじゃないかと期待している。

特に映画情報。Nexus 7 で一度も出たことなかったからね!! 面白い映画のお勧めを期待してる。

Skype の隠し絵文字

最近、Skype を使うようになって絵文字を入力する機会が増えた。文字は正確なニュアンスを伝えるけれど、絵文字は感情のニュアンスを伝える。

隠された絵文字

Skype が用意している絵文字は 72 種。この他に実は隠し絵文字があると教えてもらった。

隠し絵文字はパレットから選ぶのではなく、直接文字入力して表示させる (普通の絵文字でも可能)。

実際、使いそうだな〜と思ったものをメモしておく。

  • (wtf) なんてこった
  • (call) 電話
  • (brokenheart) ハートブレイク
  • (skype) スカイプのロゴ
  • (o) 時計
  • (phone) 電話
  • (m) メール
  • (movie) 動画
  • (wfh) 在宅勤務
  • (bug) バグ
  • (flag:jp) 日本の国旗

最後の国旗に関しては flag の後に国別コードを入力することで各国の国旗を表示可能。

面白いものを教えてもらった。

なお、Linux の Skype は絵文字が動かない。Mac だと動くので、ちょっと寂しい。

2013-04-29

「LINE なぜ若者たちは無料通話&メールに飛びついたのか?」感想

LINE なぜ若者たちは無料通話&メールに飛びついたのか? (マイナビ新書)
コグレマサト まつもとあつし
B00B99BLVI

読み終えたので、感想をつらつらと。

本書は、コグレマサトさんとまつもとあつしさんの二人の共著。内容は LINE のインストール、利用方法、利用事例の紹介。文体が落ちついていることを除けば、内容自体に他の LINE 本との大きな違いはない。

本書が面白いのは、アーリー・アダプターの目から見た LINE の姿。

LINE の競合とされる twitter, Facebook, skype を当たり前の様に使っている人間が共通して抱く感情。何故、いまさら LINE を始めなければいけないのか? 何故、LINE が (沢山の競合を退けて) 普及が進んでいるのか? この疑問に答えている。

コグレさんらの答えは、LINE のマーケティング戦略の違いが大きな差になっているという。

普通、IT 系サービスを展開する場合、自分達のサービスがいきなり一般ウケするなどとは考えない。一部のアーリー・アダプターが飛びついて、面白さを周りの人間に知らせている間に、サービスの完成度を上げてゆく。Twitter も Facebook も、一部の人間の興味をひき、何度かのブレイクを経て現在の磐石体制を作り上げた。他の IT 系サービスの多くもその例にならっている。

ところが LINE は違うという。

LINE の開発陣は徹底してアーリー・アダプターを無視した。とにかくシンプルに。とにかく分かり易く。とにかく楽しく。IT に疎い人間を想定して、どうやったら彼らに受け入れられるかを考えた。

少数のアーリー・アダプターからユーザーの輪を広げてゆくのではなく、多数の「一般人」を相手に利用を勧める。そんなことが出来れば苦労はない。IT 業界の常識を破り、未知のマーケティング手法に舵を切り、推敲を繰り返して生まれたのが LINE だった。

だから、Twitter や Facebook に棲息している人間には、異次元からやって来た様なアプリに映る。開発の流れを知り、マーケティング手法の異質さを知って初めて LINE が理解できる。本書は、そんな「不思議」さを扱っている点が面白い。

あとがき

LINE には色々と問題が指摘されている。例えばアドレス帳の内容を全てアップロードする機能 (これはアップロードしないこともできる)。本書を読んで、LINE を使い始めるか? と言われれば 3 割くらいの人が使い始めるかも。というのが正直な心。

それでも本書に読む価値があると思うのは、LINE の取った戦略が異質で、特に IT サービスを作っている人間への教養として優れていると思うから。

chef で Homebrew をインストール

Mac に chef で Homebrew をインストールした? 一応、メモ。

Homebrew のレシピは、Opscode が提供しているので、それを使わせてもらう。

これを /var/chef-solo/cookbooks に入れる。

$ cd /var/chef-solo/cookbooks
$ git clone git://github.com/opscode-cookbooks/homebrew.git

/etc/chef に移ってコマンド実行。

$ sudo env PATH=$PATH bundle exec chef-solo -o homebrew

以上。

あとがき

Homebrew のインストールには手を焼いてほとほと困った。特に困ったのが erubis gem が見つからないというエラー。このエラーが出続けるおかげで、homebrew のインストールが止まり、解決策も見つからなかった。

諦めて homebrew は chef なしでインストールした。

本エントリーは、何故 homebrew のインストールに失敗したのかを記録する目的で書き始めた... んだけど、気がついたら成功してた。まさか、homebrew を手でインストールしたのが良かったのかな? すごく中途半端な気分。

2013-04-28

ruby-2.0.0-p0 で chef 11.4.4 をインストールする

ruby-2.0.0-p0 で chef をインストールすると、chef 実行時にこんなエラーが出た。

/Users/ataka/project/chef/vendor/bundle/ruby/2.0.0/gems/chef-11.4.4/lib/chef/provider/package/rubygems.rb:34:in `require': cannot load such file -- rubygems/format (LoadError)

この件に関しては、過去記事でダミーの format gem を作ることで解決した。

けれど、このやり方は自分で gem を作らねばならず面倒。少しでも簡便にインストールできる様にしようと、rubygems-format-dummy を GitHub に置いた。

これで、Gemfile を次の様に書けばよくなる。

source 'https://rubygems.org'
gem 'chef'
gem 'rubygems-format-dummy', :git => 'git://github.com/ataka/rubygems-format-dummy.git'

bundle install

一応、インストール・ログを残しておく。Mac の OS X 10.8.2。rbenv + ruby-2.0.0-p0。bundle コマンドでローカルにインストール。

$ bundle install --path vendor/bundle
Fetching git://github.com/ataka/rubygems-format-dummy.git
remote: Counting objects: 21, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 21 (delta 4), reused 21 (delta 4)
Receiving objects: 100% (21/21), done.
Resolving deltas: 100% (4/4), done.
Fetching gem metadata from https://rubygems.org/........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Installing erubis (2.7.0)
Installing highline (1.6.18)
Using json (1.7.7)
Installing mixlib-log (1.6.0)
Installing mixlib-authentication (1.3.0)
Installing mixlib-cli (1.3.0)
Installing mixlib-config (1.1.2)
Installing mixlib-shellout (1.1.0)
Installing net-ssh (2.6.7)
Installing net-ssh-gateway (1.2.0)
Installing net-ssh-multi (1.1)
Installing ipaddress (0.8.0)
Installing systemu (2.5.2)
Installing yajl-ruby (1.1.0)
Installing ohai (6.16.0)
Installing mime-types (1.23)
Installing rest-client (1.6.7)
Installing chef (11.4.4)
Using rubygems-format-dummy (0.0.1) from git://github.com/ataka/rubygems-format-dummy.git (at master)
Using bundler (1.3.5)
Your bundle is complete!
It was installed into ./vendor/bundle
$ rbenv rehash
$ bundle exec chef-solo -v
Chef: 11.4.4

あとがき

これは ruby-2.0.0 のバグなのかなぁ? それとも仕様なのかなァ? chef 側が fix すべきなのか、ruby 側が fix すべきなのか... さてさて困った。

cheero Power Plus 利用レビュー —— モバイル・バッテリーの肝は安心

去年、自身初のモバイル・バッテリー cheero Power Plus を買った。利用レビューを書く。

「安心」がキーワード

モバイル・バッテリー。この手のガジェットは初めて買う。購入前は小さな不安。

「自分はモバイル・バッテリー」を使うのか?

使う機会は意外と早く訪れた。実家へ帰省した正月のこと。Kindle Paperwhite にダウンロードした本を読もうとしたら、Kindle Paperwhite にほとんどバッテリーが残ってなかった。

Kindle Paperwhite
Kindle Paperwhite

考えてみたら、Kindle Paperwhite の発売日は 2012-11-19。Kindle Paperwhite が到着した時にバッテリーをフルにして、色々と使い回して以来バッテリーを充電してなかった。それで年末。1 か月と少しが経っている。Kindle はバッテリーが 8 週間持つと聞いていたけど、最初にいじりまわっていた分が大きかったらしい。まあ、それはいい。電子ガジェットならバッテリー切れの問題は常につきまとう。問題は、Kindle Paperwhite ならバッテリー長持ちと油断して、充電機器を持って帰らなかった迂闊さよ。

そこで、使ったのが cheero Power Plus。

Kindle Paperwhite のバッテリー充電の口は micro USB。cheero Power Plus には最初から micro USB 用のプラグが用意されている。Kindle Paperwhite を cheero Power Plus に繋いで充電。無事バッテリーは満タンに。Kindle Paperwhite で本を読むことができた。

決定的にバッテリー切れで困ったのは、その一回しか (まだ) ない。けれど、WiFi ルーターとか kobo とか、利用頻度が低くて気がついたらバッテリーが少なくなってるガジェットがある。こういう物を気づいた時にこまめにバッテリー充電している。

モバイル・バッテリーを持って得たものは、「バッテリー切れ対策」ではなく「バッテリー切れになっても大丈夫」という安心感だった。

事前に充電できる安心感

2013 年のゴールデン・ウィーク。長野から香川まで車で帰省した。iPhone 5 は、写真撮影・Foursquare・SnapDish・Google Latitude・Twitter に Facebook。そしてテザリングにと大活躍。道中半ばでバッテリーが 50% を切った。

今までなら、そこで iPhone の利用を控えていた。けれど、今回はモバイル・バッテリーがある。車の中で充電開始。iPhone のバッテリー切れを心配することなく旅を終えた。スマートフォンをバリバリ活用して、バッテリー切れを心配しなかったのは初めて。

総括とあとがき

モバイル・バッテリー。購入前は利用機会に疑問を持っていたけれど、今は十分納得している。電子ガジェットに「安心」を与えてくれるガジェット。少くともぼくは利用価値を見出した。良い製品を買った。

現在、cheero Power Plus は販売終了。後継機の cheero Power Plus 2 が出ている。値段は 3,280 円。

マルチデバイス対応 cheero Power Plus 2 10400mAh (シルバー) 大容量モバイルバッテリー
マルチデバイス対応 cheero Power Plus 2 10400mAh (シルバー) 大容量モバイルバッテリー

2013-04-27

ブログ clmemo@aka、8 周年!!

本日、2013-04-27 (土)、当ブログ clmemo@aka が 8 歳になった。

思い返せば 2005-04-27 に最初の記事を書いた。当時は大学院生だった。その後、2007 年にケンウッドに入社し、2011 年に JVC Kenwood を退職した (在職中にケンウッドと日本ビクターが合併)。1 年以上の無職時代を経て 2013 年にアクトインディに入社した。

ブログの記事数を見ると、ケンウッド入社前の 2006 年が一番多くて 659 記事。年間 200 記事以上を平均的に書いていたけれど、2010 年と 2011 年だけは 200 記事を下回った。

記事の内容も変わってきている。当初はウェブ・サービスのレビューが多かった。世界には Google、日本でははてなをチェックしていれば、面白いサービスのほとんどはカバーできた。2005 年はそういう時代だった。

2 年もしないうちに新興サービスが増えてくる。それも、無視できない面白いサービス。その数は増えて、一人ではカバーしきれなくなってゆく。呼応する様にガジェットも増えた。iPhone の登場は衝撃だった。

また、TechCrunch、Gizmode といった情報源が日本語化された。

新しい趣味も増えた。ケンウッドに入社したことで同期から勧められたオーディオ。

サービスの多様化、競合する大手サイトの日本進出、新しい趣味。

このブログも最初の頃と比べて変わった。

一つ変わらないのは、ブログがぼくの表現の場であり続けること。これからも、どうぞよろしく。

いこーよ —— 子供と一緒に行ける場所やイベントを探せるポータル・サイト

いこーよは地図検索サービスの一つ。予め書いておくと、「いこーよ」を運営しているアクトインディ株式会社に、ぼくは所属している。過去記事「会社とこのブログの立ち位置について」に書いた通り、会社とは離れ個人ブロガーの視点で当サービスをレビューする。もし、この記事の意見が偏っているように感じたなら、ぼくのブロガーとしての実力不足による。

「いこーよ」

地図検索サービスには二種類ある。一つは Google マップの様な総括的な地図検索サービス。もう一つはぐるなび (食事)、HOME'S (賃貸)、ATND (勉強会) など目的を限定した地図検索サービス。映画.com の様に「映画」のポータル・サイトながら「映画館」の見つけられるサイトも、目的限定型の地図検索サービスの一つとして数えて良いかもしれない。

「いこーよ」は後者の目的限定型地図検索サービス。その限定条件は、「子供と出かけられる場所」(及びイベント) を検索するというもの。「いこーよ」で見つかる場所は、Google マップでも見つけられる。けれど、Google マップはその場所が子供 (幼児・小学生) 向きかどうかまでは教えてくれない。「いこーよ」は逆に、子供を連れて出かけられる場所やイベントを調べることができる。

iko-yo-01

検索方法

「いこーよ」は主に 2 つの検索方法を持っている。一つはメニューを使う方法。メニューには次の項目が並んでいる。

  • スポットを探す
  • イベントを探す
  • 自宅周辺で探す
  • クーポンのある施設

メニューはある程度、目的が定まった時に使う。

もう一つは、「いこーよ」トップページの特集を眺めること。例えば、今日 (4/27) なら「ゴールデンウィーク特集」がトップに出ている。続いて、アスレチック特集やテーマパーク特集など... 特に目的意識はなく、おススメ・スポットを何気なく探すのに向いている。

検索結果

どんな感じの検索結果になるのか、試してみる。

今年のゴールデン・ウィークには香川に里帰りする予定なので、メニューから「スポットを探す」>「中国・四国」を選択。中国 5 県・四国 4 県の情報が表示されたので、「香川県」を指定。現在、香川県は 72 件の「スポット」があるらしい。

香川県のスポットを表示させてみると、トップに「国営讃岐まんのう公園」、二番手に「満農池森林公園」。う〜ん、行ったことない。三番手、「栗林公園」。四番手、「プレイパーク ゴールドタワー」。ようやく、知ってるスポットが出て来た。

iko-yo-03

栗林公園は高松生まれのぼくには定番の場所。昔は入園無料だったんだよね〜。戦前だけど。家に帰れば、歩けるようになったばかりのぼくが栗林公園で歩いてるアルバムがあるはず。

ゴールドタワーは最近のスポット。タワーが出来て数年経った頃に行ったけど、「世界のトイレ展」とかやってたなぁ。20 年くらい前。

詳細情報

iko-yo-02

詳細ページには、説明アイコン・対象年齢・写真・説明・口コミ (ユーザーのレビュー) が出る。スクリーンショットは、うちの近所の清新公民館 図書館。公民館の中に図書館があって重宝している。子供向けの読み聞かせ会も毎週開いている。お世話になっているので自分でスポット登録してみた。

詳細ページに表示される全ての情報を列挙する:

  • 説明アイコン
  • 対象年齢
  • 写真
  • 説明
  • ロコミ
  • 名称
  • 住所
  • 電話番号
  • 営業時間
  • 定休日
  • 子供の料金
  • 大人の料金
  • 交通情報・アクセス
  • 駐車場料金
  • ジャンル
  • タグ
  • オフィシャルサイト
  • 地図
  • 近くのスポット

会員登録すると、「いったよ」「こんどいく」などの情報を保存することができる。

あとがき

検索サイトは、最近、大手が不動な地位を築いていて、新サービスが入り込む余地がない。その代わり、隙間を抜ける様に、一部に特化したサービスが増えてきた。「いこーよ」もその一つ。場所を検索するサイトは多いけれど、子供がいることを前提にした検索というのは競合がほとんどない。利用者の年齢を限定する分、一般の検索に比べて利用者が減ると思うけどこういうサービスは増えて欲しいもの。

2013-04-25

fcopy.el (in github) を chef-solo で Mac にインストールした

MacBook Air に自作 EmacsLisp スクリプト fcopy.el を chef-solo を使ってインストールした。fcopy.el は git で管理してて、GitHub にホスティングしてる。つまり、今回は Mac に chef-solo で git 管理されてるツールをインストールする話。chef-solo のインストールについては過去記事を参照のこと。

recipe の作成

fcopy 用の cookbook を作る。

$ cd /etc/chef
$ bundle exec knife cookbook create fcopy

fcopy 用の recipe は /var/chef-solo/cookbooks/fcopy/recipes/default.rb を編集。install リソースを使わず、git リソースと bash リソースを使ってる。

git "/tmp/fcopy" do
  repository "git://github.com/ataka/fcopy.git"
  reference  "master"
  action :checkout
end

bash "install-fcopy" do
  install_dir='/usr/local/share/emacs/site-lisp'
  not_if {
    File.exists?("#{install_dir}/fcopy.el")
  }
  code <<-EOC
    install -m 664 /tmp/fcopy/fcopy.el #{install_dir}/
  EOC
end

chef-solo 実行

chef-solo を実行して fcopy.el をインストールする。レシピを指定してインストールする場合:

$ cd /etc/chef
$ sudo env PATH=$PATH bundle exec chef-solo -o fcopy

node.json を指定するなら、次の様に node.json を書く。

{
  "screen": {
    "users": [ "ataka", "ataka_work" ]
  },
  "run_list": [
                "recipe[screen]",
                "recipe[fcopy]"
              ]
}

chef-solo の実行では -j オプションを使う。

$ sudo env PATH=$PATH bundle exec chef-solo -j node.json

蛇足

今回の recipe では .emacs の編集までは行なわない。使う人は、~/.emacs.d/init.el に次の二行を追加。

(autoload 'fcopy-mode "fcopy" "copy lines or region without editing." t)
(define-key mode-specific-map "k" 'fcopy-mode) ; C-c k

あとがき

git リポジトリーからコードを clone して、bash を使ってインストールするレシピを書いた。今回の recipe には、更新 (update) が入っていない。どういう recipe を書くのが良いのかな? まだまだ勉強することが多い。分からないことも多い。

chef-solo を Monuntain Lion で試す

MacBook Air の環境構築を chef-solo を使ってやってみる。

ruby-2.0.0 のインストールまで

ターミナル・アプリを起動して ruby の存在を確認。ruby-1.8.7 がインストールされていることを確かめた。最初の状態では Xcode も X も git もインストールされていない。以下のパッケージをまずインストールした:

Google Chrome は愛用のブラウザーなので、いの一番にインストール。昔は Xcode をインストールすると X やらコマンド・ラインで使える gcc が入ったものだけど、Mountain Lion では X は別アプリ、コマンド・ライン用のコマンドも Command Line Tools に分離されている。

Command Line Tools をインストールすると git-1.7.12.4 もインストールされる。昔は MacPorts を使って git をインストールしていたので、この配慮はありがたい。

ruby のバージョンが古いので、rbenv 経由で 2.0.0p0 をインストールする (ruby-1.8.7 でも大丈夫という気もするけど念のため)。

$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv

.profile を作成。

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

ruby-build をインストール:

$ git clone git://github.com/sstephenson/ruby-build.git
$ cd ruby-build
$ sudo ./install.sh

ruby-2.0.0-p0 をコンパイル & インストール:

$ rbenv install 2.0.0-p0
$ rbenv global 2.0.0-p0
$ rbenv rehash

最後に bundler gem をインストールしておく:

$ gem install bundler
$ rbenv rehash

chef-solo の準備

ruby-2.0.0 のための準備

ruby-2.0.0 では、chef-solo コマンド実行時に gemfiles/format がないというエラーが出る。その対策を先にしておく。ruby 1.9 を使っている人はスキップされたし。

$ mkdir prog
$ cd prog
$ bundle gem rubygems-format-dummy
$ cd rubygems-format-dummy
$ touch lib/rubygems/format.rb
$ git add lib/rubygems/format.rb
$ git commit -m 'initial commit'
$ emacs -nw -q rubygems-format-dummy.gemspec
 (TODO とあるところを適当に書き換える)
$ rake build
chef-solo のインストール

まず /etc/chef を作り chef-solo を /etc/chef 以下にインストールする。

$ sudo mkdir /etc/chef
$ sudo chgrp staff /etc/chef
$ sudo chmod 775 /etc/chef
$ cd /etc/chef
$ rbenv local 2.0.0-p0
$ cat <<'EOF' > Gemfile
source 'https://rubygems.org'
gem 'chef'
gem 'rubygems-format-dummy', :path => '/Users/you/prog/rubygems-format-dummy'
EOF
$ bundle install --path vendor/bundle
$ rbenv rehash
$ bundle exec chef-solo -v
Chef: 11.4.0
設定ファイル

まず knife configure コマンドの実行。デフォールトから変えた点のみ記載。

$ bundle exec knife configure -i
Where should I put the config file? [Users/you/.chef/knife.rb] /etc/chef/.chef/knife.rb
Please enter the path to a chef repository (or leave blank): /var/chef-solo

続いて solo.rb と node.json の作成。ここでは、レシピを screen にしておく。

$ cd /etc/chef
$ cat <<'EOF' > solo.rb
file_cache_path "/var/chef-solo"
cookbook_path ["/var/chef-solo/cookbooks"]
$ cat <<'EOF' > node.json
{
  "run_list": [ "recipe[screen]" ]
}
EOF

cookbook を置く場所も用意しておく。sudo するのも面倒なので一般ユーザーも cookbook を書けるようにしちゃった。

$ cd /var
$ sudo mkdir chef-solo
$ sudo chgrp staff chef-solo
$ sudo chmod 775 chef-solo

せっかくなので git で管理してみる。

$ cd chef-solo
$ touch .gitignore
$ git init
$ git add .gitignore
$ git commit -m 'initial commit'

Recipe を書く

screen の設定ファイル .screenrc をインストールする recipe を書いてみる。というのも、Mac での install ってどうなってるのか分からなかったので (^^;)。

まずは screen のための cookbook を作る。

$ cd /etc/chef
$ bundle exec knife cookbook create screen

template を作成する。/var/chef-solo/cookbooks/screen/templates/default/.screenrc.erb に普段使っている .screenrc の内容をコピペ (see also. clmemo@aka: GNU Screen の設定 (.screenrc) をさらしてみる)

escape ^Tt
markkeys h=^B:l=^F:$=^E:^U=^Z:^D=^V

続いてテンプレートをインストールする recipe を作成する。レシピの置き場所は /var/chef-solo/cookbooks/screen/recipes/default.rb。中身は次の通り:

users = node['screen']['users']

users.each do |user|
  template "Users/#{user}/.screenrc" do
    owner user
    group "staff"
    mode 0664
  end
end

Mac のホーム・ディレクトリーに .screenrc をインストールしようと試みている。

ユーザー名は /var/chef-solo/cookbooks/screen/attributes/default.rb に書く。ここではダミーとして guest とした。

default['screen']['users'] = [ 'guest' ]

以上で recipe の作成は終了。

chef-solo の実行

recipe が出来たので、chef-solo を実行する。

$ cd /etc/chef
$ bundle exec chef-solo -j node.json

と、これでは guest ユーザーに .screenrc がインストールされる。recipe の中にユーザーを書かなかったのは、自分の Mac にいるユーザー・アカウントを知られたくなかったのと、環境ごとにユーザー名が徴妙に変わったりするため。ユーザー・アカウントの違いは node.json の中で吸収する。ユーザー foo と bar がいる場合の node.json。

{
  "screen": {
    "users": [ "foo", "bar" ]
  },
  "run_list": [
                "recipe[screen]"
              ]
}

改めて chef-solo を実行。

$ bundle exec chef-solo -j node.json

今回はユーザー権限でも実行できるけど、ほとんどの場合はルート権限が必要と思う。その場合は、次の様にコマンドを打つ。

$ sudo env PATH=$PATH bundle exec chef-solo -j node.json

node.json でユーザー名を指定しないのなら、recipe を直接指定するのもあり。

$ sudo env PATH=$PATH bundle exec chef-solo -o screen

Mac での chef-solo 事始めは、これでおしまい。

あとがき

Mac で install を実行する場合、MacPorts とか Homebrew を使うのかな? どうやって使うのかな? Linux と同じ様な書き方でいいのかな? それは Linux の recipe と共存できるのかな?

今回、ユーザー・アカウントを recipe の中に含めたくなかったから node.json を使った。このやり方は chef 本流の書き方なのかしらん。もっとスマートなやり方がある様な気がする。

/var/chef-solo を git で管理してみたものの... 他人の cookbook を github から clone する時に git 管理下に git 管理下のリポジトリーを置くことになる。それは、なんか奇麗じゃない。

chef-solo に触ったばかりでまだまだ分からないことだらけ。本エントリーを読んで、多少なりとも Mac 使いが chef-solo を身近に感じとってもらえるなら嬉しい。