2016年12月31日土曜日

アップルの哲学を読み解く

アップルのコンセプトビデオから哲学を読み解いてみましょう。

「Think Different.」はあまりにも有名なアップルの広告コピーです。そのまま訳せば「ものの見方を変える」ですが、この言葉には「誰かと違う自分だけの考えを持とう。そのための助けをするのがアップルなのだ」という彼らの強い共有価値観が込められています。



1997年のThnik Diffarent.から20年弱の時間が経ち、近年のアップルが持つ製品哲学や共有価値観はさらに深みを増しています。

その深みはアップルが新製品のために作るコンセプトビデオに凝縮されています。「iPad Air」のコンセプトビデオ「What Will Your Verse Be?」を見ていきましょう。



注目したいのはタイトルにある「Your Verse(ユア・バース)」という言葉です。公式には「あなたの物語は何ですか?」と訳されてていますが、この言葉に複雑なニュアンスを与えて、とても余韻のある終わり方をしています。これはどんな問いかけを意味するのでしょうか。

このコンセプトビデオを通して、アップルは私たちに「人類は『ヴァース』をつくる情熱を持っているのだ」という共有価値観を伝えているのです。

英語の「verse」に「単一の」という接頭辞の「uni-」を付けると、「宇宙」などを意味する「universe」という言葉になります。これをふまえると、「verse」は人類という一つの宇宙を形づくる一人ひとりの「あなただけの小宇宙」とも言えるかもしれません。

「Think Diffarent.」以降にアップルがたどり着いた哲学。それが「Your Verse」という言葉に込められているのです。

「Thnik Diffarent.」という言葉を思い返せば、かつてのアップルは他人と違う人間になるツールを提供する会社に過ぎず、その先には「では、他人と違うあなたは一体何を考えているのか」という問いがあったはずです。アップルは「私たちはあなたの情熱を拾い上げて、あなただけの『verse』を生きられるよに手助けをします」と背中を強く押します。「iPad」はそうしたアップルの共有価値観を込めてつくられた、表現のためのデバイスだったのです。



アップルの「Your Verse」という哲学は、2015年4月に発売された「Apple Watch」のコンセプトビデオのなかでも探求されています。

まずビデオの冒頭で「make it accessible, relevant, and ultimately personal(世界中の情報がお前に紐づくから、もう世界はお前の一部になるんだし、お前らしくなれるんだぜ)」という言葉が登場します。アップルらしい共有価値観がよく出ています。

特に重要なのはビデオの中盤から終盤あたりで、「ニュアンス・コミュニケーション(Nuance communications)」(≒日本語の「微妙なニュアンス」)という言葉が登場します。この言葉と一緒に「Apple Watch」の相手に自分の鼓動を送れる機能を紹介しています。つまり、身体が躍動するデータをそのまま時計を通じて相手に届けることで、言語を用いない微妙なニュアンスのコミュニケーションが可能になると提案しているのです。





尾原和啓氏の洞察力に感服しました。
ザ・プラットフォーム―IT企業はなぜ世界を変えるのか? (NHK出版新書 463)
オススメです。






2016年12月30日金曜日

グーグルとルイ・アームストロングの意外な関係

二十世紀を代表するジャズミュージシャンのルイ・アームストロングの『この素晴らしき世界(What a Wonderful World)』。この曲の歌詞は、ベトナム戦争から帰ってきた兵士が、自分の家のなんでもない庭や青空を眺めて、幸せを噛みしめる姿を描いたものだと言われています。

I see trees of green,
red roses too.
I see them bloom,
for me and you.
And I think to myself,
what a wonderful world.

I see skies of blue,
And clouds of white.
The bright blessed day,
The dark sacred night.
And I think to myself,
What a wonderful world.

Google創業者ラリー・ページの言葉。
俺はセルゲイ・ブリンと未来についてのバカ話をするのが大好きなんだ。だからこれから行く先の渋滞情報が自動で届けば、余計なことに気をめぐらせずにバカな話を、少しでも長く続けられるじゃないか

この2つの共通点わかりますか?


ページにとって「バカ話」というのはコンピュータが自動化してくれたから生まれた、人間らしい日常だという認識なのです。


これがグーグルの商品に隠されたコンセプト「マインドフルネス」なのです。



グーグルの「マインドフルネス」を理解するために、グーグル・グラスのコンセプトビデオを見てみましょう。



これを見て、視界に通知が出てきて煩わしいデバイス。気にいるのはギークだけ。と批判しているだけでも大切なものを見落としてしまいます。


朝起きて、コーヒーを入れながら壁の時計を見ると、今日の予定が目の前に(グラスに)映し出されます。続けて窓から空を眺めると、天気予報が表示されます。

このシーンはグーグル・グラスの持ち主のインテンション(意図)を先回りしたことを示しています。ユーザーのインテンションや欲求を現実世界の動作・仕草や行動から予測して、ユーザーが必要としている情報を先回りして提示することをグーグルは目指しているのです。


ビデオはまだ続きます。ハムエッグを食べながら、音声入力でメールの返信をします。家を出て地下鉄に向かうところで地下鉄は止まっていると知らされます。するとグラスは徒歩による迂回ルートの地図を表示して道案内を開始します。歩いている途中に犬を撫でるシーンが出てきます。

この何気ないシーンに重要な意味が隠されています。
普段使うことのないルートを歩くときのことを想像してみてください。地図と現在地を確認するのにかなりの手間をかけ、注意力を必要とするのではないでしょうか。

この持ち主は、グラスがインテンションを先回りして次の行動を示してくれるおかげで、周りに注意を払う余裕が生まれ、犬との触れ合いが生まれたのです。音声入力でさっとメールを返信できれば、食事をゆっくり楽しむことができます。

続くシーンでは、近くに友人がいることを教えられて、その友人に会います。短い時間ですが街中で一緒におやつを買って過ごします。終盤には、夕方、ガールフレンドと視界を共有して、グラスの導きで購入したウクレレを弾いて和やかな時間を共に過ごします。


こうして見てみて、何を感じますか。


これがグーグルの隠された哲学「マインドフルネス」です。何気ない日常を味わい深いものにする。余計な雑事はグラスが自動的に処理してれ、生活にゆとりと発見と出会いをもたらし、より人間らしい生活を楽しむことができるのです。




尾原和啓氏の洞察力に感服しました。
ザ・プラットフォーム―IT企業はなぜ世界を変えるのか? (NHK出版新書 463)
オススメです。






2016年12月24日土曜日

『7つのデータベース 7つの世界』Eric Redmond (著), Jim R. Wilson (著), 角 征典 (翻訳)



これはスゴイ本だ。

ずっとこんな本を求めていた。本書の「はじめに」には「本書の対象者は、現代のデーターベースの展望を理解したいと考えている経験豊富な開発者だ。」とある。展望を理解する、そう、いま注目のデータベースを俯瞰的に眺めて、長所と短所が比較にもとづいて明確に説明されている。しっかりとした調査と経験にもとづくこういう説明を受けられることは皆無だ。この本の形式は定番になってほしい。

そもそも本書は、著者が『7つの言語 7つの世界 』(Bruce A. Tate (著), まつもとゆきひろ (監訳), 田和 勝 (翻訳))の書き方を素晴らしいと感動したことことから書かれている。

この形式の本は2冊目ということだ。ぜひ定番になってほしい。そして時代とともに更新されるようになってほしいものだ。

著者がオープンソース界の重鎮エリック・レイモンド(『伽藍とバザール』の著者)なのだから、当然内容は薄っぺらなものではない。1つ1つのデータベースの説明内容は駆け足で特徴を抑えることに重点を置いているとはいえ、本質を突く深い内容だ。すべてのサンプルコードが動作するものというのも興味深い。

例えば僕のような現場を離れて久しいマネジメント層や、開発現場ではなく発注側のエンジニアでも、本書を読めば、それぞれのデータベースの専門家と対等に話ができるだろうし、どのデータベースを選ぶべきかの議論に価値ある助言をできるようになるだろう

OpenStack入門:OpenStack勉強用環境をAWS上に構築する

RDOは、CentOS、Fedora、およびRed Hat Enterprise Linuxを使用してOpenStackを構築する人々のためのコミュニティです。


RDOに All-In-One Quickstart というガイドがあるので、これを参考に手軽に環境構築をしましょう。

All-In-Oneとは、すべてのコンポーネントを1つのサーバ上で構築することを意味します。OpenStackにはたくさんのコンポーネントがあり、本番環境を構築・運用するにはコンポーネントごとにサーバーを分ける必要がありますし、冗長構成についても考える必要があります。しかしそれは非常に難しいので、まずOpenStackを勉強したいという人には高い高いハードルとなります。All-In-One Quickstartは、わずらわしい環境構築をすべてすっ飛ばして、とりあえず動作する環境を作るためのです。

ハマリポイント

  • 6GBのメモリが必要なので、AWSのインスタンスは t2.large で作ること
  • sshログインユーザはcentos
  • OpenStackインストール後、apacheのバーチャルホストの設定を修正する(後述)



AWSのインスタンスを作成


AWSのアカウントを作成しておいてください。クレジットカードが必要です。
AWSコンソールからEC2を開きます。

[インスタンスの作成]をクリック。
[AWS Marketplace]をクリック。
「CentOS」で検索。CentOS 7 (x86_64) - with Updates HVMを使うので[選択]ボタンをクリック。
ここがハマリポイント。必ず t2.large(以上)を選択すること。[確認と作成]ボタンをクリック。
6G(以上)のメモリがないとインストールの途中でメモリ不足でエラーとなる。ドキュメントでは4GB以上となっているが僕の経験では4Gでもダメだった。
[ステップ7: インスタンス作成の確認]ではt2.largeを選択しているので無料枠ではないという警告が出る。1時間0.1ドル程度のものなのでOpenStackの勉強の為に支払えるかは各自判断しよう。

画面を下にスクロールして[セキュリティグループ]の編集をする。
[ルールの追加]をクリック。
タイプに[HTTP]を選択し、[確認と作成]をクリック。
AWSへ接続するための鍵を作ります(既にある方はそれを選択すれば良いです)。
キーペアに自身にとって分かりやすい名前をつけて、[キーペアのダウンロード]をクリック。[キーペア名].pmというファイルがダウンロードされます。これはとても大切なファイルなので無くさないように、また他人に盗まれないように保管しましょう。
[インスタンスの作成]をクリク。
作成ステータス画面を下にスクロールして[インスタンスの表示]ボタンをクリック。
インスタンスが稼働(running)してるが、まだ初期化中ということがわかる。
この間に名前をつけておこう。Nameをクリックして「OpenStack All-In-One」など分かりやすい名前をつけておく。
「2/2のチェックに合格しました」となればOK。
仮想サーバーが起動したのでsshで接続します。
インスタンスを選択した状態で[アクション]ボタンをクリック。[接続]をクリック。

sshの接続のコマンド例が記載されているので、これをコマンドラインにコピペして接続しよう。
このコマンドに含まれるサーバーの名前(パブリックDNS)は、インスタンスの停止・起動を行うと変化するので注意。毎回この手順で確認すること。

この時、先ほど作成・ダウンロードしたキーペアのファイルが必要になる。sshコマンドを実行するカレントディレクトリに置いておこう。
$ cp  Downloads/aws-grgrjnjn.pem   ./
使用したイメージはsshからrootのログインは許可していないので、コピペしたコマンドのrootをcentosに修正してから実行する。
Are you sure you want to continue connecting (yes/no)? と聞かれたら yes を入力。
$ ssh -i "aws-grgrjnjn.pem" centos@ec2-52-198-51-3.ap-northeast-1.compute.amazonaws.com
The authenticity of host 'ec2-52-198-51-3.ap-northeast-1.compute.amazonaws.com (52.198.51.3)' can't be established.
ECDSA key fingerprint is SHA256:gFIkSijmJVDHwoEY0ZUWGjb/qWEeDV23E+rXf/b4708.
Are you sure you want to continue connecting (yes/no)? yes
ログインできたらプロンプトが変わっていることが確認できる。
hostnameも確認しておこう。ホスト名はそれぞれの環境で異なる。
$ ssh -i "aws-grgrjnjn.pem" centos@ec2-52-198-51-3.ap-northeast-1.compute.amazonaws.com
[centos@ip-172-31-15-175 ~]$ hostname
ip-172-31-15-175



トラブルシューティング


次のようなワーニングが出たらキーペアのファイル(.pem)のパーミッションに問題がある。
Warning: Permanently added 'ec2-52-198-51-3.ap-northeast-1.compute.amazonaws.com,52.198.51.3' (ECDSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'aws-grgrjnjn.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "aws-grgrjnjn.pem": bad permissions
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
パーミッションを変更しよう。
$ chmod 600 aws-grgrjnjn.pem
 ls -l *.pem
-rw-------@ 1 tokushima  staff  1696 12 23 22:46 aws-grgrjnjn.pem


次のようなメッセージが出てAWS上の仮想サーバーに接続できない時は、コマンドのrootをcentosに修正して再実行しよう。
$ ssh -i "aws-grgrjnjn.pem" root@ec2-52-198-51-3.ap-northeast-1.compute.amazonaws.com
Please login as the user "centos" rather than the user "root".

Connection to ec2-52-198-51-3.ap-northeast-1.compute.amazonaws.com closed.





OpenStackオールインワンのインストール


仮想サーバーの準備が整ったのでOpenStackのインストールに移ろう。


Step 0: 事前準備


SELinuxの停止。悪しき習慣とわかっていてもやめられないSELinuxの停止をまずは実施。
$ sudo vi /etc/selinux/config
赤字の1箇所を修正。
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
設定を反映するためにサーバーを再起動する。
$ sudo shutdown -r now


Step 1: Yumリポジトリの設定


RHELを使っている場合はリポジトリが異なるのでAll-in-one quickstartを参照しよう。
$ sudo yum install -y centos-release-openstack-newton


Step 2: Yumアップデート


すべて最新の状態にしておく。
$ sudo yum update -y


Step 3: OpenStackインストーラーをインストールする


RDOが提供するOpenStackのインストーラーであるPackstackをインストールする。
$ sudo yum install -y openstack-packstack


Step 4: OpenStackインストーラーを実行


Packstackを実行。
$ sudo packstack --allinone



インストール後のバーチャルホストの設定


ハマリポイント。ダッシュボードと呼ばれる管理画面コンポーネントHorizonをインターネット越しに使うためのAWS特有の設定。 これを書くためにこの記事を書いたと言っても過言ではない。やっときました。ここまで長かった...。

まず、インスタンスのパブリックDNSを確認する。この値はインスタンスの起動のたびに変わるので注意

Horizonのバーチャルホスト設定ファイル 15-horizon_vhost.conf を修正する。
$ sudo vi /etc/httpd/conf.d/15-horizon_vhost.conf
赤字の1行を挿入する。
  ## Server aliases
  ServerAlias ec2-52-198-51-3.ap-northeast-1.compute.amazonaws.com
  ServerAlias 172.31.24.209
  ServerAlias ip-172-31-24-209.ap-northeast-1.compute.internal
  ServerAlias localhost
  WSGIDaemonProcess apache group=apache processes=3 threads=10 user=apache
  WSGIProcessGroup apache
  WSGIScriptAlias /dashboard "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi"
設定変更を反映するためにApacheを再起動する。
$ sudo  systemctl  restart  httpd


ではログイン画面が表示されるかアクセスしてみよう。
http://(パブリックDNS)/dashboard/
ログイン画面が表示されれば成功だ。
ログインしてみよう。 管理者のIDは admin だ。パスワードは keystonerc_admin ファイルの中に記載されている。keystonerc_admin ファイルは Packstackを実行したディレクトリにあるはずだ。

$ sudo  cat  /root/keystonerc_admin
unset OS_SERVICE_TOKEN
    export OS_USERNAME=admin
    export OS_PASSWORD=c70188d9723c4122
    export OS_AUTH_URL=http://172.31.24.209:5000/v2.0
    export PS1='[\u@\h \W(keystone_admin)]\$ '
    
export OS_TENANT_NAME=admin
export OS_REGION_NAME=RegionOne


ログインが成功すれば次のような画面となる。



デモユーザでログインしたいならこちら。

$ sudo  cat  /root/keystonerc_demo
unset OS_SERVICE_TOKEN
export OS_USERNAME=demo
export OS_PASSWORD=27fb074855a74b81
export PS1='[\u@\h \W(keystone_demo)]\$ '
export OS_AUTH_URL=http://172.31.15.45:5000/v2.0
    
export OS_TENANT_NAME=demo
export OS_IDENTITY_API_VERSION=2.0

トラブルシューティング


ダッシュボードへのアクセスが 404 Not Found. になる場合は、前述のバーチャルホストの設定がされていないためだろう。インスタンスの起動のたびにパブリックDNSの値は変更されることに注意しながら確認してみよう。



今日はここまで。OpenStackの使い方はまた別の機会に。