- 2010年8月26日 11:00 AM
- CakePHP

CakePHPのフォーラムで知ったのですが、Jose Diaz-Gonzalezさんがプラグインのまとめを書いてくれています。
CakePHPに限らずフレームワークの良いところ、それはやはりソースコードを再利用できることです。
そしてそのフレームワークの利用者が多ければ多いほど、再利用できるソースコードが増えていきます。
CakePHPにはビヘイビアやコンポートネント、ヘルパーから始まり、そして様々なものを統合して活用できるプラグインといったコードを再利用する仕組みが採用されています。
今回は先ほど紹介したブログの記事を日本語訳し、自分なりにまとめて、紹介します。
[注意] 初めてまともに訳すので、かなり意訳してます。ここはおかしい、変だ、という点があればご指摘ください。
認証と承認
- Debuggable’s Authsome: AuthComponentを置き換えるのは悪いことじゃない。このコンポーネントは君のアプリ側でリダイレクトを操作できないからだ。その一方で、こいつは
Authsome::get('fieldName')というメソッドを持っていて、どこでも簡単にユーザデータを扱うことが出来るんだ。 - Jose Gonzalez’s Sanction: 何か私が作るとき、AuthSomeとシンプルな設定ファイルでアプリケーションのパーミションを制御する。これはHtmlHelperの置き換えとして使うことができ、さらに君の設定ファイルをハックできるよ。
- Nick Baker’s Facebook: Facebookをと連携するプラグインだ。AuthComponentと連携して使うことが出来る – 恐らく、Authsomeとも。Facebook認証部分のフル機能を作れるね。いつかはこれを使ってみたい。デモサイトはここ。
- Nick Baker’s Gigya: これはカスタマイズしたソーシャルネットワークプラグインのようだね。これを使うと君のアプリで1つのAPIを他のAPIと統合できるみたいだ。まだ成熟していないけど、確かに良いアイディアだ。
- Jedt’s Spark Plug: AuthsomeとシンプルなACLで実装したとても便利なユーザ管理と管理者機能。私はまだ試してないけど、恐らくこれはパーミションのフィルタリングのために私の作ったコンポーネントを使ってるね。すぐにスクリーンショットを欲しいな。
- Valerij Bancer’s PoundCake Control Panel: プラグインの説明から: “動的にデータベースからユーザとグループにパーミションを割り当てるためのACLメニューを自動生成する、ユーザとグループ管理のためのパネル”、良いね。
- Travis Rowland’s SuperAuth: もし君のサイトでローレベルなACLを実装したいなら、これはお勧めしない。こいつは本当に高機能で – テストは不足しているものの、本当に機能が充実している。テストが充実してたなら、本当にお勧めするよ。
- Mark Story’s ACL Extras: とても扱いにくいACL。いつもACLを使えって?このシェルを使ったなら、君のACLライフを簡単にしてくれるよ。
- Mark Story’s Menu Component: ACLベースのメニューを作成してくれる。とてもクールじゃない?
- Matt Curry’s Static User: このコード
Authsome::get('fieldName')を使うには、君はAuthComponentのコードを使いすぎてるよね?AuthComponentと同じことをするための簡単な方法だよ。ただし、User::get('fieldName')のような形だけど。とてもシンプルに実装できるから試してみて。
“Auth for people who hate the Auth component”(AuthComponentが嫌いな人のための認証)というタイトルでgithubに公開していますね。
AuthComponentはその構造上、カスタマイズが非常にしにくいです。
AuthComponentとは違い、認証に関連する様々な設定を独自に定義出来る認証コンポーネントのようです。
これを使うと、コンポーネントのオプションにアクセス許可するメソッドを指定出来るようです(AuthComponentはまだオプション指定出来ませんよね?)。
さらに、ヘルパーが付属していて、これを使うと”認証が必要なページへのリンク“を自動的に非表示にする機能も備えているようです。
かなり便利そうですね。
AuthComponentや独自の認証システムと連携してfacebookの認証システムを構築出来る、とありますね。
次のような機能を実装出来るようです。
– Share (サイトをシェアする機能)
– Like (良いね!機能)
– Login/Logout (登録不要でfacebookユーザを認証する機能)
– Activity (あなたのアプリケーションと友達のアクティビティを公開する機能)
– Friend Pile (あなたのアプリケーションの友達を表示する機能)
– Recommendations (現在のページのレコメンドを表示する機能)
– Fan Boxes (あなたのアプリケーションのファンにする機能)
– Profile Pictures (ユーザのプロフィール画像を表示する機能)
– Live Streams (facebookを通して動的なライブストリーミングイベントを作り、あなたのサイト通してアクセスする機能)
– Comments (facebookのコメントをあなたのサイトの好きな部分で利用する機能)
– Status (ユーザのステータスを表示する機能)
facebookの機能がわからないので微妙ですが、なんだか色々なことが出来そうです。
これも使ってみたいものリスト入り。
何が出来るかはここを見るとわかりやすいですね。
Gigyaというサービスを介してSNSをまとめてしまおうという試みのようです。
Gigyaに対して”シェア”すれば、取りまとめたSNS全てに反映される、ということでしょうか?
逆に自分で作ったサイトからGigyaに対して認証すれば、ユーザが持っているどれかのSNSで自動的に認証してくれると?
これは、そのGigyaと連携するためのプラグインのようです。
これも面白そうなサービスですね。
READMEに詳しく載っていないので詳細は不明ですが、サンプルのconfig.phpを覗くと、かなりわかりやすくACLの設定が出来るようです。
私はACL自体、あまり使ったことがないので微妙ですが、これも使いやすそうなプラグインです。
これもREADMEが詳しく載っていないので、詳細は不明ですが、こんなスクリーンショットが置いてありました。
これを自動で作れるならかなり素敵ですね。
“自動ログイン“の機能も備えているようです。
パーミションのキャッシュ機能、クエリと一緒にパーミションを取得する機能、マルチグループ対応等々、本当に色々な機能を備えているようです。
その一方、CakePHP 1.2でのテストやマルチグループのテストを行っていないと書いてあり、確かにテスト不足のようです。
先ほど述べた通りACLを使ったことがないので、コメント出来ないのですが…ACLの面倒な設定をCLIで出来るのかな?
ACLに基づいたメニューをコントローラをスキャンすることで自動で作ってくれるようです。
メニューは配列としてビューにセットされるので、開発者はそれを表示するだけ、という訳です。
きっちり構造化してあればかなり便利ですね。
認証系の処理をオーバーライドしてくれるイメージのようです。
しかも、認証したユーザの情報をどこでも(ModelだろうがViewだろうが)取り出せるようにしてくれるんですね。
うまく使わないと、コードがややこしくなりそうですが、これも便利そうです。
なかなか独特な表現を使っていて訳すのは難しいですね。
私の英語のレベルが低いからだとは思いますが…。
次はSearching and Paginationを訳しますね。
[連載記事一覧]
- 検索とページネーション/ファイルアップロード編
- CakePHPの使いにくいページネーションを使いやすくするプラグイン、Yahoo! BOSSのプラグインが紹介されています。ファイルアップロードはTransloaditというサービスに対応させるプラグインから、メジャーなメディアプラグインまで。
- 最適化/デバッグ編
- CakePHP 2に取り込まれるであろうプラグイン、そしてContainableBehaviorをさらに高機能にしたようなプラグインが紹介されています。DebugKitの使い勝手を向上するものもありますよ!
- ヘルパー編
- ブログを作るなら使いたいGravatarやGoogle APIをCakePHPのために取りまとめたプラグインが紹介されています。Google APIにCakePHPを対応させるプラグインは必見です。使った人がいたら、ぜひコメントください。
ちょっと一言
昨日、ある人とお話してきたのですが、意外なところで意外なスキルが役立ちました。それに昔ビジネス書をたくさん読んでいたことも。
今やっていることはいつかどこかで、役に立つんですね。


