Webinar

Web関連情報のウェブセミナー

UBERでスマホからハイヤーを呼んで乗ってみました

UBERサービス

UBER(ウーバー)という、スマホアプリからハイヤーやタクシーを呼んで乗車できるサービスがあります。

以下がアプリを起動した画面です。オシャレです。

 

サービスエリアとしては、乗車ができるのは東京23区の内、中央区、千代田区、新宿区、渋谷区、港区、目黒区といったところ。山手線の南半分をもう一回り広くしたくらいのイメージです。

乗車地点が上記であれば、行き先はどこでも大丈夫なようです。

f:id:t-webber:20150309220545p:plain

 

UBERでの配車

実際に配車を依頼するときは以下の画面を使います。

地図上にピンを置いて、来てほしい場所をUBER側に伝えます。

UBERのハイヤーが今どこにいるかが地図上にマッピングされていて、今ピンのある場所ならどれくらい待てばいいかも同時に表示してくれています。

f:id:t-webber:20150309220602p:plain

 

配車位置の指定は、かなりピンポイントで可能です。道のこちら側かあちら側なんてこともきちんと指定できるので、待つ場所に迷う必要はありません。

ピンを置く位置が決まったら実際に配車を依頼します。画面の「>」ボタンを押すのですが、ハイヤーの場合は事前に見積りをすることもできて安心です。

(もちろん混み具合や通る道によって実際の金額は前後しますが)

タクシー、プレミアムタクシーの場合は残念ながら見積りはできません。

f:id:t-webber:20150309220556p:plain

 

待ち時間

あとはハイヤーが来るのを待つだけ。私が呼んだときは表示されていた時間とほぼ間違いなく来てくれました。

待ってる間も、地図上で担当のハイヤーが徐々に自分の方に向かってくるのが確認できてそれを見ているだけでもちょっと楽しいです。

 

到着

到着したら、運転手さんが降りてきて挨拶をしてくれてドアを開けてくれるので乗車します。配車時に目的地も伝えてあるので特に何も言わなくても目的地まで行ってくれます。また、サービス利用開始時にクレジットカードを登録する必要があり、決済はそのカード経由でなされるため、目的地に着いたらその場で支払いをする必要がなく、とてもお手軽です。

目的地について、車を降りてしばらくするとメールで明細書が送られてきます。とにかく利用が簡単な仕組みになっています。

 

最後に

ぜひ使ってみたいという方は、アプリ内で私のプロモーションコード(9JN1S)を入力すると、2,000円がチャージされお得ですよ。

タクシーよりは少し高いくらいの値段で、手間なく便利にハイヤーを呼んで、リッチな気分で(私のときはトヨタのクラウンロイヤル(内装は革張り!)という車でした)移動ができるこのサービス、オススメです!

ゼロからはじめるHTTP/2サーバ(nghttp2)環境構築

f:id:t-webber:20150311222200p:plain

※本記事は2015年3月8日時点の情報を元に記述しています。古い情報が含まれている可能性がありますのでお気をつけください。

 

GoogleのSPDYをベースに2012年11月から検討を開始し、長い期間を経てようやくRFC化直前までこぎつけたHTTP/2

 

今回はそのHTTP/2対応のサーバ環境の構築手順を紹介します。

 

初心者でもとりあえずの環境構築まではできるように、というのが本記事の目標です。

最低限の構築手順であり、セキュリティ的な配慮や性能面でのチューニングはできてないので気をつけてください。

 

利用するサーバソフトは、nghttp2。日本人のtatsuhiro-tさんが開発した、現時点でのHTTP/2の事実上のリファレンス実装と言っても過言ではないサーバソフトです。

 

Google Compute Engine(GCE)環境の準備

初心者でも・・・と言いつつココはいきなり省略します。Google Compute Engineでググって、Googleアカウントを登録し、無料体験版を申し込み、プロジェクトを作成し、インスタンスを立ち上げます。

今回の手順で必要な設定は以下。

  • インバンドのhttp/httpsトラフィックを許可する。
  • インバンドのポート8080/TCPトラフィックを許可する。
    (「ネットワーク」の「default」に8080の許可を追加)
  • ゾーン:asia-east1-a(どこでもいいとは思いますが)
  • マシンタイプ:f1-micro
  • イメージ(OS):ubuntu-1404-trusty-v20150128

ここまでやった上で、My Consoleのインスタンスリストの右はじののSSHボタンをクリックすると、別ページでブラウザ上から作成したインスタンスSSH接続できるので接続してください。

 

必要パッケージのインストール

 nghttp2の依存パッケージやgit、gcc4.9環境をインストール。(上記の通り、以降OSはubuntu前提です)

sudo apt-get update

sudo apt-get install make binutils autoconf automake autotools-dev libtool pkg-config zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev libjemalloc-dev cython python3.4-dev
sudo apt-get update

sudo apt-get install git

sudo apt-get install -y python-software-properties
sudo apt-get update

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update

sudo apt-get install -y gcc-4.9 g++-4.7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
sudo update-alternatives --list gcc

 

nghttp2のビルド

GitHubからnghttp2のソース一式をダウンロードし、ビルド。

git clone https://github.com/tatsuhiro-t/nghttp2.git
sudo apt-get update
cd nghttp2

autoreconf -i
automake
autoconf
./configure
make

cd src

 makeで数分かかります。

ここまで実行すると、srcディレクトリ内にnghttpdが作成されます。

 

サーバ証明書秘密鍵の生成

nghttp2では、httpsだけでなくhttpもサポートしているのですが、現時点でhttp/2に対応しているブラウザ(※1)はhttpsのみを前提にしているので、SSL環境の構築が必要です。

openssl genrsa -des3 -passout pass:x -out server.pass.key 2048
openssl rsa -passin pass:x -in server.pass.key -out server.key
rm server.pass.key
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 

秘密鍵サーバ証明書を作成しています。

環境構築後のアクセス時にエラーを出さないようにするためにはブラウザに証明書をインポートしてください。

※1 2015/3/8時点での対応ブラウザ:Firefox最新版、Chrome最新版(chrome://flags/でSPDY/4オプションのONが必要)

 

コンテンツ作成、nghttpd起動

Webページを作成し、nghttpdを起動します。

vi index.html

 viでindex.htmlを編集。

<html>
<body>Hello, World!</body>
</html> 

PATH=$PATH:/home/○○(GCEインスタンスのユーザ名)/nghttp2/src

export PATH

nghttpd -v 8080 server.key server.crt

nghttp2は、nghttpdが置いてあるディレクトリと同じディレクトリを公開します。

viの操作方法は省略しますが、「Hello, World!」のみが表示されるWebページを作成しています。

パスを通し、8080ポートでの起動と先ほど作成した秘密鍵、証明書を指定し、-vオプションをつけて起動します。-vオプションはHTTP/2フレームのやり取りを表示するためのオプションです。

 

対応ブラウザからのアクセス

あとは対応ブラウザから、以下のアドレスにアクセスし、「Hello, World!」が表示されたらOK。

https://[サーバIPアドレス or サーバURL]:8080/index.html