日本語

【KtaiLibrary】Ktai Library勉強会楽しかった!

昨晩、「Ktai Library勉強会@関東」がE2さんにて行われました。
まずはお集まりいただいた皆様&スタッフの皆様どうもお疲れ様&ありがとうございました!
CakePHP関連のイベントは色々ありましたが、1冊の本がベースで、しかもそれに準じて開発していく形式のイベントは今回初めてだったため、大変におもしろかったです。なんというか、従来のカンファレンス形式は「聞くだけ」なのに対し、自分で手を動かす「ワークショップ」形式は達成感のようなものが得られる点、そして本をベースにすることにより、解説を聞くことで作業が中断してしまうことが無く自分主導で進捗が得られる点にメリットがあるかなーと感じました。逆に、開催中は大変に静かになるため、個人的には全く落ち着かないのですが(笑)。
誤植関係が良く見つかってまあお恥ずかしい限りですが、それとは別に、また例によって環境依存系のトラブルが多発しまして、進捗がなかなか得られなかった方もいらっしゃいました。そのトラブルとは、「Firefox3.6 & FireMobileSimulator1.1.10でdocomo・au表示の際にバイナリ絵文字が表示されない」というもので、Windows, Mac関係なしに出ていました。バイナリではなくて数値表現にすると出てくるため、ブラウザ内で表示トラブルだと思うのですが…
まあ2時間では限界があり、結局セットアップで終わってしまった方が多かったのではないかと思いますが、とりあえず皆さん絵文字が表示できていたみたいなのでホッと胸をなで下ろした感じです。

求人情報 : PHP技術者

知り合いから頼まれたので一時的にここで求人情報を掲載します。そのうちこの記事を消すつもりです。
セキュリティ関係の会社ですが、Webアプリケーションエンジニアがいなくて、設計から色々と手伝ってくれる方を希望しているそうです。
質問があれば、聞いてみますので、お気軽に。

  • セキュリティ関係の会社
  • 雇用
    • 契約社員もしくはアルバイト
  • 必要なスキルセット
    • PHPでの開発経験、1人で一通りできるレベル、経験3年以上は必須
    • 既存のテンプレートエンジン(Smarty等)を利用し、MVCモデルによる開発経験を有すること
    • 言語はPHPですが、言語スキルより、重視するのはウェブアプリケーション全体の設計スキル
  • 契約期間
    • 4月1日からがベター
    • とりあえず9末まで、延長については、別途検討
  • 作業場所は原則、オフィス(神楽坂)

セキュリティの知識としては、Webアプリケーションのセキュリティを理解していれば良いそうなので、普段からセキュリティに気を使って実装していれば問題ないかと思います。Webアプリ系ではないですが、凄腕の技術者がいる会社ですので、絶対面白いと思います。
興味のある方は、下記にメールか、Twitterとかここのコメント欄などでご連絡ください。

[cakePHP][勉強会][イベント] OSC tokyo 2010 springでMongoDBの話をしました

2/27にOSC tokyo 2010 springにて、MongoDBの発表をしてきました。
「ドキュメント指向DB 大集合!!」

のセッションの中での5分程度の発表です。CouchDBやRedis, Lotusなどの発表もありました。
各人の発表資料は僕のを含めて下記にあります。
http://groups.google.com/group/couchdb-jp/web/couchdb?pli=1

今回は時間も少なかったし、他のドキュメント指向DBとの合同セッションだったので、
MongoDBの特徴である、パフォーマンスと各言語から簡単に利用可能というポイントに絞って話しました。

最後はCouchDB-JPな人たちとの飲み会に参加し、楽しい時間がすごせました。
今後も、こういったイベントには積極的に参加していきたいです。

[cakePHP][勉強会][イベント] 3月はイベント満載!

3月になって最初はCakePHP1.3RC1のリリース!思った以上にリリース速度が速いですね。夏ぐらいまでにはRCがとれるんじゃないかな。

3月はイベントが多いです。
まずは、3/8(月)にKtai Library for cakephp 勉強会@関東が開催されます。
Ktai Libraryの作者Masa-Pさんを招いての勉強会で、携帯実装に関する議論がここでできるかと思います。参加条件がいくつかありますので、ご注意を。ぼくも主催側で参加します。

3/13(土)にSlywalkerさん主催のCakePHPWorkshop関西が開催されます。これからCakephpを始めたいという方、ちょっとCake入門したけどまだまだだなぁという方に最適なイベントとなってます。講師、ヘルパーの方も豪華なのでオススメです。

3/20(土)に東海アンカンファレンスがあります。これはCakeとは直接関係ないですが、発表当日に発表枠を参加者がうめていくので、Cakeの発表があるかも。僕も参加します。

【CakePHP】使用しない方が良い・できないメソッド等の一覧

CakePHP1.3もRC1となり、いよいよ1.2からの移行を本気で考えた方が良い時期に差し掛かってきました。
さて、1.2から1.3になることで、いくつかの新機能が搭載されていく(つまりメソッドが増える)のですが、反対に無くなっていくものもあるので注意が必要です。
たまたまTwitterでこれに関連する話題があったので、ついでなので調べてみました。
1.2.6のソースコードに書かれている「推奨しない」機能は次の通りです。

■cache() (basics.php)
「Cache::write()」を使用します。
■&Set::get() (set.php)
Setは静的に使うことが推奨されています。
このためget()で設定値を入手しようとするとワーニングが出ます。
■Xml::compose() (xml.php)
Xml::toString()のラッピングです。
■Email::_lineLength (email.php)
「Email::lineLength」の方を使用します。
■Model::getDisplayField() (model.php)
「Model::displayField」を直接参照します。
■Model::findAll() (model.php)
「Model::find(‘all’)」を使用します。

【KtaiLibrary】「Ktai Library勉強会」が開催されます!

当方で執筆しました「PHPで作る携帯サイト デベロッパーズガイド」をお手本にCakePHPで携帯サイトを制作するための勉強会が、来週月曜日(3/8)の19:30から開催されます!
▼Ktai Library for cakephp 勉強会@関東やります
http://yashio.wordpress.com/2010/03/02/ktai-library-for-cakephp-%E5%8B%89%E5%BC%B7%E4%BC%9A%E9%96%A2%E6%9D%B1%E3%82%84%E3%82%8A%E3%81%BE%E3%81%99/
▼Ktai Library for cakephp 勉強会@関東(申し込みはこちら)
http://atnd.org/events/3413
私の方からは、今後のKtai Libraryについて少ししゃべらせていただきます。
また進行にかかわらず、もし本書もしくはKtai Library、その他全般で分からない点等がありましたらご質問いただいて構いません。

【WordPress/CakePHP】福岡遠征Day2

福岡2日目です。
本日はWordCampFUKUOKA2010ということで、WordPressイベント初参戦なのですが、大変にためになったイベントでした!
まずは運営スタッフ様、スピーカーの皆様、それから参加された皆様、お疲れ様でした!
おそらく参加された方にとって、かなり場違い感たっぷりのレポートかもしれませんが、こういった視点もあるということでご了承いただけますと幸いです(^^;;;
さて、全体的な感想としては、福岡の皆さんは熱いな-みたいな(笑)。ノリ違いますね。盛り上がりかたがだいぶ違うというか。1日目の飲みでも感じたのですが、見ていて楽しいというか、こういう雰囲気大好きです。
イベントそのものの雰囲気もだいぶ違うというか、CakePHPのイベントはいかにもプログラマーチックな方がたくさん集まるのに対して、デザイナーチックな方が断然多そう。内容もかなり操作系の説明が多かったというか、ソースコードはあまりでないイベントでした。まあこれが普通なのかな(^^;。
会場は「西南大学」という大学の一角にあるコミュニティ施設の1Fをまるまる借りてやったという感じで、大学でやるのはなかなか良いなと思いました。でかいホールがあって、その中がメイン会場。周りにある多目的室2部屋で別セッションが行われていて、そのほか「ジーニアスバー」を「茶室」でやっていたらしいです。

【CakePHP】福岡遠征Day 1

ただいま福岡に滞在しています(笑)。
こちらで告知通り、BaserCMSの開発者である@ryuring さんとお会いしつつ、福岡組と飲み会をするということで、本日プチCakePHPOFF会in福岡を行いました。参加者は@ecworks_masap, @konsan, @ryuring, @nojimage, @kaburk, @k1Low(と同じ会社のSさん。twitter id聞くの忘れた!) の7名で行いました。
結論から言いまして、大変にためになったOFF会でした。
そして福岡は良いところだ!!(^o^)

[cakePHP] Cakephpで任意のコントローラにBASIC認証をApache側でかける

Cakephp1.2.6
別にCakephp以外でも同じようにmod_rewriteでindex.phpとかを呼び出してるようなフレームワークならこの方法はいけると思います。

Basic認証はCake標準の機能で持ってますが、ちょっと使いにくい。一度間違えると次からブラウザ落とすまで再入力させてくれない(画面真っ白のまま)などの問題がありますので。PHPがCGIモードで動いてる場合でも今回の方法でいけると思います(mod_rewriteは必須)
ということで、Apache側の設定でBasic認証をかけるTips。こっちのほうが慣れてるし再入力させてくれるので良いです。

例えば、/members/indexとか/members/addみたいなurlがあった場合、/members/以下の全てにBasic認証をかけるには(静的な/members/top.htmlみたいなファイルも含めて)、
1. ドキュメントルートにmembersディレクトリを作成
2. その中にBASIC認証とmod_rewriteを含めた.htaccessファイルを作成

[cakePHP][View][ライブラリ] フォーム入力画面と確認画面で共通で使えるXformHelper

Cakephp1.2.6

入力項目が多くなると、確認画面を作るのも時間がかかりますよね、面倒ですし。今までは、確認画面で別途 $form->value使うとか、Postの値をそのまま表示するようにしてたのですが、デザインが入力画面とほぼ同じなのに別に実装するのがなんだかなと思ってました。それに嫌気がさして、フォーム入力画面でも確認画面でも同じメソッドで、フォームタグと値の表示を切り替えるXformHelperを開発しました。
機能は色々つけてあります。大体のメソッドはカバーできてるんじゃないかと思いますが、不具合があれば教えてください。

機能一覧

【CakePHP/WordPress】2/26~28福岡遠征します!

WordCamp FUKUOKA 2010」が開催されるのと、以前からBaserCMSの制作者である@ryuringさんとお会いしたかったので、ちょうど良い機会ということで、2/26~28の3日間、福岡に遠征することにしました。一緒に@konsanさんが同行されます。
実はCakePHP関連以外のイベントにがっつり参加したことがなく、しかもいきなり福岡なのですが、大変に楽しみにしております。
で、26日(金曜日)の夜、上記3名(私含む)に加え、@nojimageさんと一緒にどこかで飲もうという話をしています。もし福岡周辺のBakerの方、あるいはWordCampに参加される方でIT話で盛り上がりたい方がいらっしゃいましたら、是非いかがでしょうか?
いや、単なる飲みのお誘いなんですけど(笑)。
興味ある方がいらっしゃいましたらよろしくご検討ください。
コメント欄で参加表明していただくか、@ecworks_masapまでご連絡ください。

【CakePHP】フレームワークにおける「秩序」とは何なのだろう?

Twitterで少し議論になって、これってちょっと大事だよなと思ったことがあったので、言葉足らずだった部分についてもちょっと補足したりして記事として残しておこうと思います。
なお、これはあくまでも私の一個人としての「考え」であって、正解というわけではないと思います。ただ「こういった考え方もある」という点だけ伝わったら嬉しいです。
で、まあよくあるフレームワークにおける「MVC」の話なんですが、例えば「コントローラやモデルの中でヘルパーとか使ってもいいんじゃないか?」という点について。つまり、MVCで役割を分割しているのに、その領域を乗り越えて機能を実現することについてどうなのか、ということです。
CakePHPでも、ヘルパーの機能で汎用的に使いたい(そして実際に使える)機能があったり、逆にヘルパー内からモデルとかを呼び出して情報を取り出したりすることが出来るっちゃー出来ます。実際にコアヘルパーでもそのようなことをしている部分もあったりします。
正直言いまして、Cakeはかなり自由度が高く、やろうと思えば何でもできると思います。ちょっと不自由な点があっても、最悪コアコードをちょろっとextendsして置き換えるか書き換えるだけで、大抵のことは出来る。PHPなので、PHP的な書き方をすればそのような期待したことは出来ちゃうんですよね。たぶんPHPフレームワークで出来ちゃう方の部類。言い換えれば「ゆるい」です(笑)。ClassRegistoryの仕組みが出来てからは特に!(笑)

[cakePHP][controller][コンポーネント] AuthComponentでUsers Table以外を使う時

小ネタ。 Cake1.2.6
HogeConpornentがHogeモデルを使ってる場合、認証画面をそのままHoge::login()って作るとうまく行かない。デフォルトで、Userモデルを見てしまうから。アクセスしても/users/loginに飛ばされるし。
beforeFileterなどで、下記の設定が必要

$this->Auth->userModel = $this->modelClass;

モデル名を直接指定したければ、modelClassを固定の文字列にすればOK

ということで、よく設定する内容はこんな感じ。

//認証エラーメッセージ
$this->Auth->loginError = 'ログインエラー。IDもしくはパスワードが違います。';

//アクセス権がない場合のエラーメッセージ 非表示
$this->Auth->authError = ' ';

//認証するフィールド名
$this->Auth->fields = array(
'username' => 'loginid',
'password' => 'password'
);

//アクセス制限しないアクション
$this->Auth->allow('');

//ログイン後の遷移先を固定
$this->Auth->loginRedirect = array('controller' => 'adminpanels', 'action' => 'top');

//Authで利用するモデルをUser以外に指定
$this->Auth->userModel = $this->modelClass;

さらに、ログイン後の遷移を完全固定するため、リファラー情報をloginアクション内で消してます。

[cakePHP][controller] リダイレクトにアクション名だけを指定してたら、うまくURLを作ってくれなかった

ショーンホワイトの金メダルライディングをみて癒されました。次元が違う、一番好きだったのは540のグラブで足を突き上げてるやつ。高く飛んで、ゆっくり余裕で回転してるほうが、くるくる回ってるより好きです。素晴らしいルーティーン、そして悲しいルーティング。。。今日はroutesとの格闘が続いております。
Cake1.2.6
リダイレクトで、ルーティングを色々と設定してる時に、そのルーティング通りのURLにならなかったので、その対応。
routes.phpはこうなってて、

Router::connect('/mobile/users/:action',
array('controller' => 'user_mobiles', ));

/mobile/users/hogeの画面から、リダイレクトで/mobile/users/hoge2に遷移させようとしたとき、user_mobilesコントローラで

$this->redirect('hoge2');

としたら、/user_mobiles/hoge2にリダイレクトされてしまった。。。
結局、下記のようにリダイレクトを修正して対応。

$this->redirect(array('action' => 'hoge2'));

リダイレクト内で、Router::url()を呼び出してるので、それで問題が起こらない形に持っていくのが良いみたい。他のコントローラへのリダイレクトなら、

$this->redirect(array('controller' => 'others', 'action' => 'fuga'));

こんな感じで指定。

参考

[cakePHP][View] edit画面でうまくURLが作れなかった

Cake1.2.6
携帯画面で、addはうまくいくのに、edit時だけform::createのurlオプションでうまくurlが作れなかった。
routes.phpはこうなってて、

Router::connect('/mobile/users/:action/*',
array('controller' => 'user_mobiles', ));

edit時は勝手にurlの中に/mobile/users/edit/3みたいに最後にidの数字が入ってしまう。これどこからくるの?使わないからいらないんだけど。。。
調査は後回しにして、editとaddの違いはそこだった。それで、form画面で、

<?php echo $form->create('User',
array('url' => array('controller' => 'user_mobiles', 'action' => 'edit' )));?>

にしてたら、Postのactionに入るurlが
/user_mobiles/edit/6
みたいになってしまって、urlがうまく作れなかった。
下記のようにして解決

<?php echo $form->create('User', array('url' =>
array('controller' => 'user_mobiles', 'action' => 'edit', 'id' => null )));?>

idがいらなかったから、nullにしたけど、いる場合はどうすんだろ? 知ってる人教えてください。

解決

[cakePHP] 郵便番号から住所を自動で補完するajaxzip2をID対応させた

いつも郵便番号から住所を自動で補完するajaxzip2を利用させてもらってます。便利で助かる。
このツール、name属性を使うことが前提となっているので、Cakephpで利用しようとすると、nameがdata[Model][zip]みたいになって、モデル単位でnameの値が変わってしまうので、ちょっと使いにくい。ということで、ID属性で使えるようにちょっとだけ修正した。
CakeのViewファイルは、formヘルパーで下記のように、各inputフォームにidを指定します。あとは、Javascript読み込んで、下記のようなボタンを郵便番号入力欄の横に付けておく

[cakePHP][controller] コントローラ単位でSSL必須なページはSSLへリダイレクト

cakephp 1.2.6で開発してます。
コントローラ単位に、SSLが必須であれば強制リダイレクトさせる機能。

[cakePHP][mobile] Ktaiライブラリ入門

cakephp 1.2.6で開発してます。
Ktaiライブラリを使ってみました。そのメモ
お手軽に携帯の対応ができるのでオススメです。ライブラリの公開感謝です!
画面出力はSJIS-winで、Cake側は全てViewファイルも含めてUTF-8です。モバイル用のコントローラは独立させてます。
画面出力の文字コード変換は、ヘルパー側でやるようなので、絵文字使わなくてもヘルパーの設置は必須です。vendorsは/app/vendorsじゃなくて、appと同じ位置にあるvendorsディレクトリなので注意が必要です。
1. ktai libraryをダウンロードして設置
ここからダウンロード。
下記のように設置
/app/app_controller.php ← 既存ファイルがある場合は、redirect()の内容だけをコピー
/app/controller/component/ktai.php
/app/config/ktai_session.php
/app/views/helpers/ktai.php
/vendrs/ecw/ ←ecwフォルダごとコピー

2.コントローラを設定

[cakePHP][controller] 利用可能なコントローラを設定ファイルで制限する方法

cakephp 1.2.6で開発してます。
利用可能なコントローラを設定ファイルで制限する方法。ファイルベースで扱うために、bootstrapに利用可能なサービスのコントローラ名を記載。

【CakePHP温泉部】第一回活動報告デス!

2/6~7の2日間、「CakePHP温泉部」第一回の活動が箱根で行われました。
途中現地に到着するまでにハプニングがいくつかありましたが、活動そのものは大変有意義なものでした。
2日間の活動内容について報告させていただきます。
【日程】
2010年2月6日/7日(1泊2日)
【場所】
ホテル箱根アカデミー(箱根・湖尻)

Syndicate content