福岡でUber使ってみた!【みんなのUber】
福岡でUber使ってきました!
2月5日の10時からなんと「福岡市」でライドシェアの検証プログラムが始まりました!
この検証プログラムは日本で初めての試みみたいです!
詳しくは以下のブログを確認してください!
Japan | Latest News & Stories | Uber Blog
自分自身は東京では使用したことなく、今回が初めてのUberの利用でした。
まず、以下のリンクからアプリをダウンロードしました。
開くと登録が求められますが、Facebookとの連携も可能で簡単でした。
次にクレジットカードの登録を求められました。(今回の検証プログラムということもあり、お金を取られることはないみたいです)
すると以下のような画面が!
ほぼリアルタイムで動いていました!見ているだけで面白い笑
「乗車場所を設定する」を選択と目的地の設定をして、「みんなのUberを依頼する」を選択すると、配車完了!
あとは画面を見ながら待つだけ!
キタキター!笑
みんなのUberでは、東京で行われているサービスと異なり、ドライバーが自家用車を使っているので、どれか戸惑いました。
ドライバーさんは自分の名前を確認するとドアを開けてくれ、テンションMAXで乗車!
ドライバーさんの自家用車なので中は普通な感じでした。
安全運転で目的地まで到着!
便利!笑
しかも楽しい!
乗車後にはドライバーさんに対するレビューや評価を行えました。
【ドライバーさん側は?】
ドライバーさんにいろいろ伺ったのですが、まとめると以下のような感じでした。
・賃金が高め
タクシー免許不要で、普通のバイトより稼げると興奮気味でした。
・簡単に使える
お客さんが配車を依頼した時点でスマホ画面上のマップに位置が表示され、ナビゲーションに従って目的地まで運転するだけでとてもシンプルと言っていました。
・暇なときに出来る
ドライバーさんは他の職業をしているのですが、時間があるときにアプリを起動すればドライバーを務められるそうです!(これは海外版と同じみたいですね)
【乗る側は?】
・アプリのクオリティーが高い
ユーザビリティが高く、初めて利用する自分も簡単に操作できました。
乗る前から乗った後まで、良いUXを提供していると思いました。
(ただ、自分のプロモコードを表示させるのがわかりにくかった部分はありました)
・料金
タクシーより安ければ乗るかなーといった印象でした。今回は無料なので良かったのですが、実際にどうなるかはわからないです。米国のUberでは課金制はアルゴリズムを使い、祝日などのかき入れ時やラッシュアワー、悪天候時は、料金がどんどん割増になる制度を取っているみたいです。
・リスク
事故は日本での規定はわからないですが、サンフランシスコUberの規定では、自前の車を使用している運転手が事故に遭った場合、その運転手に過失がなければ、乗客に賠償金は支払われないとのことで、もしものことを考えると少し怖いかなと思いました。
・楽しい
個人的にマップ上に複数の車が表示されて動いているのを見るだけで楽しかったです。特に配車を依頼して車が自分のいる位置まで来るときはたまらなかったです笑
以上が、福岡でUberを使ってみた感想になります!福岡市に住んでる人はぜひ一度利用してみてください!
CakePHPのForm Helperの使い方
簡単にまとめてみました.
<?php echo $this->Form->input('name_last', array( 'label' => false, → 生成されるinputタグをlabelで囲むかどうかを指定 'type' => 'text', → フォームに入力される値のタイプ(ex text, checkbox, file, etc...) 'class' => 'form-control form-name', → inputタブにつけるクラスの指定 'div' => array( → 生成されるinputタグを囲むdiv要素へのクラスを指定 'class' => 'input input-name', ), 'placeholder' => '姓', → フォーム内に表示される文字列の指定 )); ?>
モデル上での他のモデルを呼び出す【cakephp2.X】
CakePHPを使用していて,あるモデル上で他のモデルを使用したいということがあったのでメモ
以下の2つモデルがあり,
・FirstModel.php
・SecondModel.php
一つ目のモデル内で,二つ目のモデルを使用するとする.
この場合,以下のようにしたらできるとのこと.
<?php App::uses('AppModel', 'Model'); class FirstModel extends AppModel { public function test() { // SecondModelの呼び出し App::import('Model', 'SecondModel'); $secondModel = new SecondModel(); // 適当にfindを使ってみる $data = $secondModel->find('first');
以上がcakephpにおいて,あるモデル内で他のモデルを呼び出す方法でした.
POSTされるデータ構造【CakePHP2.x】
適当なメモです.
postされるデータのフォームによる違いに関してです.
以下の様なテーブルがあるケース
テーブル名:tests
カラム:
・id
・name
ビューの実装
echo $this->Form->create('test', array( 'type' => 'post', )); /* ケース1 */ echo $this->Form->input('name', array( 'type' => 'text', )); /* ここまで */ /* ケース2 */ echo $this->Form->input('name', array( 'type' => 'text', 'name' => 'hoge', )); /* ここまで */ $options = array( 'label' => 'submit', ); echo $this->Form->end($options);
ケース1の出力
ケース2の出力
nameを指定することで,inputタグのnameの部分が両ケースで異なります.
実際にpostしてみたときのデータ構造は以下のようになります.
ケース1でpostされたデータの構造
Array ( [Test] => Array ( [name] => hoge ) )
ケース2でpostされたデータの構造
Array ( [hoge] => hoge )
簡単なメモでした.
HTML5のvalidateとCakePHP
モデルにて$validateを定義すると,viewに実装したformにてバリデーションが行われるわけですが,ちょっと面倒な部分があったのでメモ.
例えば以下のようなバリデーションルールを作成し,
public $validate = array( 'name' => array( 'notEmpty' => array( 'rule' => 'notEmpty', 'message' => 'hoge', ), ), );
ビューに以下のようなフォームを実装した場合,
<?php echo $this->Form->create(); echo $this->Form->input('name', array( 'type' => 'text', )); $options = array( 'label' => 'submit', ); echo $this->Form->end($options); ?>
このように入力する前からフォームが赤い枠で囲われてしまいます.
実際に出力された要素を見てみると以下のようになっていました.
required属性(入力必須であることをブラウザに知らせる)が指定されていて,これが初期状態から赤い枠で囲われてしまう原因となっています.
required属性を出力させないようにするにはどうしたらいいかと言うと,モデルにて定義したバリデーションルールに'allowEmpty' => trueにすれば解決します.
実際のコードは以下のようになります.
public $validate = array( 'name' => array( 'notEmpty' => array( 'rule' => 'notEmpty', 'message' => 'hoge', 'allowEmpty' => true, ), ), );
これで赤枠が取り除かれます.
ただ,'allowEmpty' => trueにすると,フォームが空の状態でもsubmit出来てしまいます.
どうすればいいんでしょ...
バリデーション【CakePHP2.5】
CakePHPのバリデーションに関するメモ
コントローラにてvalidateを行いたい場合の実装方法です.
Userというモデルがあると仮定しています.
テーブル名:Users
カラム
・name(名前)
・tel(電話番号)
(メモであるため、簡略的に作っています)
使い方
1)ビュー側の実装
フォームを作成します.
test.ctp
// 入力フォームの作成 <?php echo $this->Form->create('User', array( 'type' => 'post', 'url' => 'test', 'novalidate' => true, // HTML5でのバリデーション機能の無効 )); ?> <?php echo $this->Form->input('name', array( 'label' => 'name', 'type' => 'text', )); ?> <?php echo $this->Form->input('tel', array( 'label' => false, // falseにするとlabelが作成されません 'type' => 'tel', )); ?> <?php $options = array( 'label' => 'next', ); echo $this->Form->end($options); ?>
2)コントローラ側の実装
だいぶ適当です.
ビューのtest.ctpにてsubmitボタンが押された場合,このコントローラにて処理が行われるようにしています.
<?php App::users('AppController', 'Controller'); class UsersController extends AppController { public function test() { if ($this->request->is('post')) { // モデルにpostされたデータをセット $this->User->set($this->request->data); if ($this->User->validates()) { // バリデートが成功した場合 } else { // 失敗した場合 } } } }
コントローラでバリデートを行う際に使用するのは,「validates()」です.
ちなみに「validate()」を使用すると,モデルにて設定しているバリデーションの条件の配列が返されます.
3)モデル側の実装
<?php App::uses('AppModel', 'Model'); class User extends AppModel { public $validate = array( // 2つの条件を設ける場合 'name' => array( 'notEmpty' => array( 'rule' => 'notEmpty', 'message' => 'required' ), 'between' => array( 'rule' => array('between', 1, 20), 'message' => '20文字以内で入力してください', ), ), // 条件1つのみの場合 'tel' => array( 'rule' => 'numeric', 'message' => '数字を入力してください', ), ); }
ここでnameやtelで指定しているのですが,これはviewのinputで指定している名前になります.
よくわからないですが,以下のようにviewのinputに別のnameを与えてもvalidateを行えます.
<?php echo $this->Form->input('name', array( 'label' => 'name', 'type' => 'text', 'name' => 'hoge', )); ?>
また他のモデルを使用するために,以下のようにドット記法を使用してもvalidateが行えるようでした.
<?php echo $this->Form->input('Post.name', array( 'label' => 'name', 'type' => 'text', 'name' => 'hoge', )); ?>
以上が簡単なメモになります.
Webサイトのアクセス制限【CakePHP 2.x .htaccess】
サイトの開発段階では関係者以外のアクセスを制限します.
その方法を簡単にメモしました.
- Apache Configファイル設定
# vi /etc/httpd/conf/httpd.conf
.htaccessを有効にします.
AllowOverride None
↓
AllowOverride All
AllowOverrideをNoneにしてあると、今からアクセス制限を行う.htaccessファイルが完全に無視されてしまいます.
これはCakePHPの初期設定でAllにされているかと思います.
その後、設定ファイルを再ロードにより有効化します.
# /etc/rc.d/init.d/httpd reload
- ログインユーザ設定
ログインユーザの登録
# htpasswd -b -c /etc/httpd.conf/.htpasswd [ユーザ名] [パスワード]
ここでは、
ユーザ名:hoge
パスワード:hogehoge
とします.
オプション
- c:新しいパスワードファイルの作成
- b:パスワードを、対話式入力ではなくて、コマンドライン引数として指定
ユーザ名が登録されているかを確認します
# cat /etc/httpd/conf/.htpasswd
- パスワード制限設定
ここでは、/var/www/html/cakeディレクトリ以下のファイルに制限を加えていく場合を考えます.
/var/www/html/cakeディレクトリ内の.htaccessファイルを書き換えます.
変更前
<IfModule mod_rewirte.c> RewirteEngine on RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule>
変更後
AuthuserFile /etc/httpd/conf/.htpasswd AuthGroupFile /dev/null AuthName “secret page” AuthType Basic require user hoge (先ほど登録したユーザ名) <IfModule mod_rewirte.c> RewirteEngine on RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule>
以上になります.