9. 開発の流れ
Workflow
設計 : 画面遷移図
作 成 ツ ー ル : A d o b e F ir e w o r k s C S 5
Fireworksでデータを作成すると、 データはpngファイルで保存さ
れます。 ファイルそのものは画像データとして扱えます。
redmineやwiki等に生データをUPしただけで画像として、
プラウザからデータを見ることができます。
またそれをダウンロードしたものをそのまま編集する事も出来て、
とても便利です。
(ただの画像データに比べるとデータサイズは大きめ)
★私の周囲のエンジニアから聞いたところ、エクセルで作ると答えて
くれた人が多いようです。
13. 開発の流れ
Workflow
設計 : 画面構成図
作 成 ツ ー ル : A d o b e F ir e w o r k s C S 5
画面に表示をする項目と、 その設置場所を図に起こします。
デザインを起こしやすくするため、 画面幅、 フォントサイズについては
デザインと同じぐらいのサイズで作成しています。
ツールを使わずに手書きで済ましてしまう場合も
ありますが、その場合は、大体のサイズを
画面に書き込むようにしています。
14. 開発の流れ
Workflow
設計 : 画面構成図からデータ一覧
データの設計をする
表 示 す る 情 報 の 項 目 を 拾 い だ し 、
項 目 を 表 示 す る 為 に 必 要 な 情 報 を ま と め て 、
一 覧 表 に し ま す 。→ D B 設 計
使 用 ツ ー ル
:
p h p M y A d m in
定義書は、 phpMyAdminのデータ辞書をプラウザからpdfにしています。
MySQLWorkbench挑戦中ですが、 まだ使いこなせていません。
18. 開発の流れ
Workflow
デ ザ イン + H TM L作 成 :
(1) 画面構成図を元に、デザインデータを作成
使 用 ツ ー ル : A d o b e F ir e w o r k s C S 5
Photoshop,illustratorを使用するデザイナーさんが大多数です。
Fireworksはおそらく小数派
20. 開発の流れ
Workflow
デ ザ イン + H TM L作 成 :
(3) HTML + CSSの作成
使 用 ツ ー ル : A d o b e D re a m w e a v e r C S 5
PHPでプログラムを書く前にHTML+ CSSを作ります。
今年のPHPカンファレンス関西でLT発表させていただいた時に
会場の方へ質問をさせていただいた結果、 約8割以上が同時並行で
PHPノコーディングとHTMLのコーディングを行っていると答えました。
びっくりしました。
きちんと設計ができている、 HTML + CSSを先に書いてしまったほうが、
書かない場合に比べて、 3割ぐらい開発スピードは早いと私は思ってます。
21. 開発の流れ
Workflow
実 装 :
C o d e I g n it e r 2 .0 で 実 装 を し ま し た 。
作業中使用した外部ライブラリや拡張については後ほど.....
使 用 ツ ー ル :
PHPエディタ: Adobe Dreamweaver CS5
MySQL管理 : phpMyAdmin
タスク管理 : Redmine
ソースコード管理 : Mercurial (gitやsubversion等)
Mercuralクライアント : MacHg
ローカルでの動作環境: MAMP
24. 役立つ外部ライブラリ
A favorite library Class
M o d u l a r E x t e n s i o n s - H M V C
https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home
C o d e Ig n it e r の M V C の 構 造 を 階 層 化 M V C 構 造 に し て く れ る ラ イ ブ ラ リ
Q d m a i l
http://hal456.net/qdmail/
Q d m a ilと は 、P H P の マ ル チ バ イ ト 環 境 特 に 日 本 語 ) て 、 文 字 化 け し な い 」
( に 「
「 簡 単 に ” デ コメ デ コメ ー ル ) や H T M Lメ ー ル 等 の 電 子 メ ー ル を 送 信 す る こ と
( ”
が で き る 」メ ー ル ク ラ ス ラ イ ブ ラ リ で す 。
文 字 化 け 完 全 制 覇 を目 指 し て い ま す 。
CodeIgniter2.0本体のEmailクラスを、2.0正式リリース前に試しました。 コードを書き換えてみたり
しましたが、 一部メールクライアントでタイトルの文字化けの解消ができなかった為、 本体のEmailクラス
は使用しませんでした。 今回作成したアプリではqdmailを、 helperとして設置し、使用しています。
必要ないかもとは思いましたが、 英語のリプライメールはUTF8で送信するように実装しています。
26. Form_validationの拡張
Expand the library
( 5 ) U n i t T e s t す る
( 4 ) 実 装 す る
T D D の 場 合 は 、 先 に ( 4 ) テ ス ト 。
後 で 何 度 も き ち ん と 動 い て い る か を 確 認 す る に 違 い な い!
確 認 作 業 は U R L を 叩 く だ け に し て お くと 、作 業 時 間 短 縮 に な り ま す ♪
参考資料 gihyo.jp:和田卓人のTDD講座
http://gihyo.jp/dev/serial/01/tdd
27. Form_validationの拡張
Expand the library
拡 張 前 の 問 題 点
c o n f ig / c o n f ig .p h p で 設 定 し た 言 語
$ c o n f ig [ ’la n g u a g e ’]
=
‘j a p a n e s e ’;
表 示 を 英 語 に 切 り 替 え た 場 合 に 、
バ リ デ ー シ ョ ン エ ラ ー が 日 本 語 が 表 示 さ れ る 。
希 望 す る 動 作
英 語 の 表 示 に 切り 替 え た 場 合 は
バ リ デ ー シ ョ ン エ ラ ー も 英 語 で 表 示 さ れ る べ き 。
28. Form_validationの拡張
Expand the library
本 体 コ ー ド を 調 べ て み た 結 果
$this->form_validation->run();の中で
言語ファイルが呼び出されている部分
form_validation.php
320行目付近
//
Load
the
language
file
containing
error
messages
$th is-> C I-> la n g -> lo a d (’fo rm _v a lid a tio n ’);
ファイルは指定されているが、 言語の指定が省略されている。
$th is-> C I-> la n g -> lo a d (’fo rm _v a lid a tio n ’,’言 語 の 指 定 ’);
言語の指定さえここでされていれば、 言語が切り替えられる。
form_validationクラスの中で、 言語が設定できさせすれば、 国際化対応が
できる。
30. Form_validationの拡張
Expand the library
M Y _ f o r m _ v a l i d a t i o n . p h p
c la s s
M Y _ F o r m _ v a lid a t io n
e x t e n d s
C I _ F o r m _ v a lid a t io n
{
v a r
$ la n g _ id
=
“ ” ;
/ / 言 語 を 保 存 す る と こ ろ を 用 意
f u n c t io n
_ _ c o n s t r u c t ( )
{
$ t h is - > C I
= &
g e t _ in s t a n c e ( ) ;
$ t h is - > s e t _ la n g ( ) ;
/ / c o n f ig で 設 定 さ れ て い る 言 語 で 設 定 を す る
}
......
中略
}
31. Form_validationの拡張
Expand the library
M Y _ f o r m _ v a l i d a t i o n . p h p
class
MY_Form_validation
extends
CI_Form_validation
{
.....中略.....
/*
*
文字コードの設定
文字コードが
*/
指定されていない場合は
function
set_lang($lang_id=””)
{
config.phpで設定されている言語
if($lang_id)
を設定する。
{
$this->lang_id
=
$lang_id;
}
else
{
$this->lang_id
=
$this->CI->config->item(”language”);
}
}
.....中略.....
}
32. Form_validationの拡張
Expand the library
M Y _ f o r m _ v a l i d a t i o n . p h p
class
MY_Form_validation
extends
CI_Form_validation
{
.....中略.....
function
run($group
=
‘’)
{
.....中略.....
//
Load
the
language
file
containing
error
messages
$this->CI->lang->load(’form_validation’
,
$this->lang_id);
.....中略.....
}
.....中略.....
}
82行目付近、form_validation用言語ファイルの読み込み時に、
言語を指定するよう変更
33. Form_validationの拡張
Expand the library
U n i t _ t e s t C l a s s を 使 っ て 単 体 テ ス ト
http://codeigniter.jp/user_guide_ja/libraries/unit_testing.html
テ ス ト し た い 内 容 。
$ t h is -> f o r m _ v a lid a t io n -> s e t _ la n g (” 言 語 ” );
を 実 行 し た と き の 動 作
(1 )$ t h is -> f o r m _ v a lid a t io n -> la n g _ id の 値 が 、
上 記 で 指 定し た 言 語 に な ること ;
(2 )$ t h is -> f o r m _ v a lid a t io n -> r u n ();を 実 行 し バ リ デ ー シ ョ ン エ ラ ー
が 発 生 し た 場 合 、指 定 し た 言 語 で エ ラ ー 文 を h e lp e r で 取 り 出 せ る 。
34. Form_validationの拡張
Expand the library
U n it _ t e s t C la s s を 使 っ て 単 体 テ ス ト
http://codeigniter.jp/user_guide_ja/libraries/unit_testing.html
● テ ストを 書く場 所 に つ い て
(1)Modular Extensions - HMVC を利用している場合は、 テスト用の
モジュールを用意し、 本体コードとテストコードを分離する。
(2)上記を利用していない場合は、 テスト用のControllerクラスを用意し、
本体コードとテストコードを分離する。
1.7系からModular Extensions - HMVCを利用しているため、
私はテスト用にモジュールを用意することにしています。
テストの結果もブラウザ上から確認しています。
35. Form_validationの拡張
Expand the library
U n it _ t e s t C la s s を 使 っ て 単 体 テ ス ト
http://codeigniter.jp/user_guide_ja/libraries/unit_testing.html
---中略---
$this->load->library(”form_validation”);
$ck = $this->form_validation->lang_id;
$ans = $this->config->item(”language”);
echo $this->unit->run(
$ck,
$ans,
“言語に初期設定の言語がはいっている”,
“configの設定は japanese 変更前と変わらない挙動を確認”
);
---中略---
36. Form_validationの拡張
Expand the library
U n it _ t e s t C la s sを 使 っ て 単 体 テ ス ト
ht :/ cdigit r / sr gid_ / r r suit t sin.hm
tp / oe n e.jpue_ u ejalibaie/ n _et g t l
結果の表示
37. Form_validationの拡張
Expand the library
U n it _ t e s t C la s s を 使 っ て 単 体 テ ス ト
http://codeigniter.jp/user_guide_ja/libraries/unit_testing.html
---中略---
$this->load->library(”form_validation”);
$this->form_validation->set_lang(”english”);
$ck = $this->form_validation->lang_id;
$ans = “english”;
echo $this->unit->run(
$ck,
$ans,
“言語設定は、 englishにかわる。 //テストのタイトル
”,
“configの設定は japanese。 設定した値はenglish” //メモ
);
---中略---
38. Form_validationの拡張
Expand the library
U n it _ t e s t C la s sを 使 っ て 単 体 テ ス ト
ht :/ cdigit r / sr gid_ / r r suit t sin.hm
tp / oe n e.jpue_ u ejalibaie/ n _et g t l
結果の表示
39. Form_validationの拡張
Expand the library
U n it _ t e s t C la s sを 使 っ て 単 体 テ ス ト
ht :/ cdigit r / sr gid_ / r r suit t sin.hm
tp / oe n e.jpue_ u ejalibaie/ n _et g t l
テストモジュールで
の結果表示
メモもかねているので、
だらだらと出力結果は長いです...
ライブラリの拡張は、
unit
testを書いてしまうまでが
が拡張ですよね?