Upload
kazuhiro-hara
View
5.187
Download
0
Embed Size (px)
DESCRIPTION
デザイナー向けCakePHP勉強会で発表したスライドです。
Citation preview
MVCのVを極めしWebデザイナーになる
デザイナー向けCakePHP勉強会
twitter tag : #cakephp4d
グレーティブ代表 原 一浩 @kara_d
twitter id : @kara_d tag : #cakephp4d
➡昨日LionとMacBook Air発売‣ 生き急ぐ人のためにブックマークレットリリース
twitter id : @kara_d tag : #cakephp4d
➡トレンド 、統計、デザイン、システム持続可能な自動化されたデザインシステムの追求をテーマに活動をはじめました
何してる人?
twitter id : @kara_d tag : #cakephp4d
twitter id : @kara_d tag : #cakephp4d
➡本日のお話‣ CMSベースのWebサイトと、Webアプリケーションとの考えの違い
‣ Webアプリケーションのデザインのワークフローについて考えてみる
‣ Webデザイナーは、どこまで担当するとより良いものが生み出せるか?
‣ そのためにWebプログラマー、Webデザイナーができること
‣ CakePHPアプリケーションでの学習のステップとツール
twitter id : @kara_d tag : #cakephp4d
➡CakePHPの個人的事例‣ 某省庁向けリポジトリCMS‣ 某社向けビジネスマッチングサービス‣ ファッションブランドのコンテストサイト‣ 某携帯キャリアのスマートフォン向けキャンペーンサイト
‣ 出版社向けキャプチャ機能つき許諾管理システム‣ etc...
twitter id : @kara_d tag : #cakephp4d
➡WebサイトとWebアプリ?
twitter id : @kara_d tag : #cakephp4d
➡Webサイト‣ ここではいわゆるコーポレートサイト狭義の定義としています
‣ 比較的小規模なサイトを仮定‣ CMSで構築‣ 慣れているCMSであれば、デザインからテンプレートの作成まで行なえる
‣ システムはあらかじめ用意されたものを使用。拡張は主にプラグイン
‣ 主な目的は情報提供
twitter id : @kara_d tag : #cakephp4d
➡Webアプリケーション‣ 同じく比較的小規模と仮定‣ データベースの使用が前提‣ 複数の画面遷移を含んでおり、情報よりも機能が価値を生むもの
‣ ページごとに独立した存在ではなく、全体で1つのサービスとして提供される- もちろん現実ではWebサイトの中にWebアプリケーションがあるなど構成は複雑
‣ 主な目的はサービスの利用‣ Ajaxなど動的な要素も多い
twitter id : @kara_d tag : #cakephp4d
➡情報構造設計が主体なサイトと、インタラクションやUXが主体のアプリケーション‣ もちろん、相互ともそれぞれの要素が入る‣ 設計してみただけではわからないことがある
‣ FlashをはじめRIA界隈では、トライ&エラーが頻繁に行なわれている
アジャイルなアプリケーションのデザイン
twitter id : @kara_d tag : #cakephp4d
➡制作におけるタスク
twitter id : @kara_d tag : #cakephp4d
➡ディレクションのタスク‣ IA、要件定義、要求仕様のまとめ、進行管理
➡フロントエンドのタスク‣ グラフィック・UIデザイン‣ コーディング(HTML/CSS)‣ スクリプティング
➡バックエンドのタスク‣ テンプレート化‣ システム構築‣ データベース構築
twitter id : @kara_d tag : #cakephp4d
➡ディレクションのタスク‣ IA、要件定義、要求仕様のまとめ、進行管理
➡フロントエンドのタスク‣ グラフィック・UIデザイン‣ コーディング(HTML/CSS)‣ スクリプティング
➡バックエンドのタスク‣ テンプレート化‣ システム構築‣ データベース構築
CMSベースのWebサイト制作
twitter id : @kara_d tag : #cakephp4d
➡ディレクションのタスク‣ IA、要件定義、要求仕様のまとめ、進行管理
➡フロントエンドのタスク‣ グラフィック・UIデザイン‣ コーディング(HTML/CSS)‣ スクリプティング
➡バックエンドのタスク‣ テンプレート化‣ システム構築‣ データベース構築
Webアプリケーションの構築
twitter id : @kara_d tag : #cakephp4d
➡ディレクションのタスク‣ IA、要件定義、要求仕様のまとめ、進行管理
➡フロントエンドのタスク‣ グラフィック・UIデザイン‣ コーディング(HTML/CSS)‣ スクリプティング
➡バックエンドのタスク‣ テンプレート化‣ システム構築‣ データベース構築
Webアプリケーションの構築
ここに踏み込むのがむつかしい
twitter id : @kara_d tag : #cakephp4d
➡システム側からタスクを分解
twitter id : @kara_d tag : #cakephp4d
➡MVCの設計を振り返ってみる
モデル部分 コントローラー ビュー
モデル コントローラー ビュー
フォーム PC向け
携帯向けデータベース
twitter id : @kara_d tag : #cakephp4d
➡CakePHP上での構成
twitter id : @kara_d tag : #cakephp4d
➡CakePHPの基本構造‣ モデルとビヘイビア‣ コントローラーとコンポーネント‣ ビューとヘルパー
- エレメント- テンプレート- レイアウト- ヘルパー
専門用語が満載...
twitter id : @kara_d tag : #cakephp4d
➡CakePHPの基本構造‣ モデルとビヘイビア‣ コントローラーとコンポーネント‣ ビューとヘルパー
- エレメント- テンプレート- レイアウト- ヘルパー
ここを把握しよう!!
twitter id : @kara_d tag : #cakephp4d
➡CakePHPの基本構造‣ モデルとビヘイビア‣ コントローラーとコンポーネント‣ ビューとヘルパー
- エレメント- テンプレート- レイアウト- ヘルパー
ここを把握しよう!!
特にここ
twitter id : @kara_d tag : #cakephp4d
➡ビューは3つでだいたい出来てるページ全体レイアウト
共通の部品エレメント
共通の部品エレメント
コンテンツテンプレート
twitter id : @kara_d tag : #cakephp4d
➡何故デザイナーがビューをまるっと担当できると良いのか?‣ インタラクションのデザインで試行錯誤‣ 修正対応の切り分け‣ モデルおよびコントローラーのことを踏まえていながら、ユーザー寄りからの提案
‣ 作業の同時進行による工期の短縮‣ ウォーターフォール型以外の進め方が可能
twitter id : @kara_d tag : #cakephp4d
➡学習ステップ:その0‣ CakePHPの知識を学習しないという選択肢‣ CakePHPに組み込みやすいコーディング
- ブロックでコメント- 繰り返し要素でコメント- idとclass、命名規則をプログラマーサイドで統一
‣ Dreamweaverで確認できる方法とは?- なんかいい方法はないだろうか?- 絶対パスを相対パスで書き出すヘルパーなど作ってみたものの...
twitter id : @kara_d tag : #cakephp4d
➡学習ステップ:その1‣ まず、CakePHPをダウンロード
‣ ダウンロードしたものを解凍
‣ CakePHPのディレクトリ構造を見て把握
twitter id : @kara_d tag : #cakephp4d
➡学習ステップ:その2‣ webroot内だけでページを作ってみる‣ パスは絶対パス(/img/hoge.png)で
index.html
twitter id : @kara_d tag : #cakephp4d
➡学習ステップ:その3‣ pages内でページを作ってみる‣ レイアウト、pages内
default.ctp
hoge.ctp
http://インストールした場所/pages/hoge/
レイアウト
コンテンツ
twitter id : @kara_d tag : #cakephp4d
➡学習ステップ:その4‣ pages内で作ったページを、エレメント、ヘルパーを使ったものに置き換えてみる
ここまで来ればほぼビューの基本はマスター
twitter id : @kara_d tag : #cakephp4d
➡CakePHPは様々な方法でViewを書く事ができる‣ Smarty
- PHPで有名なテンプレート形式- {$blogTitle}みたいに書く
‣ PHPTAL‣ MTCake
- MovableTypeと同様の記法‣ PHP
- 素のPHP
twitter id : @kara_d tag : #cakephp4d
➡MTCake‣ @junnama さんによるプラグイン
- http://powercms.alfasado.net/blog/2011/06/cakephpviewmtmtcake.html
‣ こんな風に書ける
<h1><mt:var name="page_title" escape="html"></h1> <mt:cake:loop model="Post"> <mt:ignore> HOGE </mt:ignore> <mt:if name="__first__"> <table> <tr>
twitter id : @kara_d tag : #cakephp4d
➡それぞれが出来ること
twitter id : @kara_d tag : #cakephp4d
➡プログラマーに出来ること‣ 命名規則の設定 ‣ 基本的にビューが持っている情報をまとめる‣ 画面ごとの使用可能タグ(変数)をまとめる‣ テンプレートシステムの組み込み‣ ファンクショナルタグ(制御機能付きタグの発行)- 使いやすいヘルパーの用意 - 制御構文のひながた
‣ テンプレートの配置ディレクトリの仕様
twitter id : @kara_d tag : #cakephp4d
➡デザイナーも出来る事‣ フレームワークの概念、世界観を把握する‣ バージョン管理システムを扱えるようになる
- Git(ぎっと)など‣ バグ管理システムに参加する
- Redmine(れっどまいん)など‣ テンプレートの記述スタイルを学ぶ
twitter id : @kara_d tag : #cakephp4d
➡ソースの管理とドキュメントの管理‣ ソースもドキュメントもバージョン管理システムを使う
‣ ドキュメントは、ワイヤーフレーム、サイトマップ、仕様書、データベース設計など
‣ テンプレート化する前のHTMLファイルはドキュメントとみなす
‣ ソースとドキュメントを分けることで、バージョン管理でミスが起きない
Git勉強会 for デザイナーやりましょう!
twitter id : @kara_d tag : #cakephp4d
➡共同で、タグ辞典を作ろう‣ WordPressでは、こんな風に用意されている‣ 共同で作ることで、設計力も身に付く
twitter id : @kara_d tag : #cakephp4d
➡ありがとうございました‣ ご質問などありましたら是非!!
‣ mail : [email protected]
CSS Nite in Ginza, Vol.582011年8月18日(木)18:30-20:00アップルストア銀座 3Fシアター