SlideShare a Scribd company logo
1 of 44
C   o   d    e   I g   n   i t e   r で   開   発   

            2011.05.14
CodeIgniter東京勉強会




        ネコネットデザイン事務所 宮川 貴子(NEKOGET)
自己紹介
Self-introduction

   NAME
   宮川 貴子 (みやがわ たかこ)

   Twitter/Blog
   NEKOGET
   http://pneskin2.nekoget.com/press/

   WORK
   ネコネットデザイン事務所
   WEBのお仕事10年目。
   イラスト、デザイン、HTML、Javascript、PHP
   フロントエンドなお仕事をしています。
今日の話題
Table of contents

   1.開発の流れ
   2.役立つ外部ライブラリ
   3.Form_validationの拡張
   4.まとめ
開発の流れ
Workflow

  1.設計
  2.デザイン
+
HTML作成
  3.実装
  4.総合テスト
受け入れテスト
  5.完成
→
運用開始(リリース)
開発の流れ
Workflow




実際にブログっぽいものを
作ってみたので、それを元に話を
したいと思います。
開発の流れ
Workflow

  サ イ ト の 目 的 と 欲 し い   機   能   
  
     ● 現在運営しているブログの引っ越し先にしたい。

     ● 日本語の記事とそれを英語にしたページが欲しい。
開発の流れ
Workflow

  設計
    ● 画面の流れを考える
    ● 表示する内容を決める
    ● 必要な機能を把握する
開発の流れ
Workflow

  設計 : 目に見える資料にする。
    ● 画面の流れ→画面遷移図
    ● 表示する内容→画面構成図
    ● 機能一覧→機能一覧表
開発の流れ
Workflow

  設計 : 画面遷移図
    作 成 ツ ー ル : A d o b e F ir e w o r k s C S 5
    Fireworksでデータを作成すると、    データはpngファイルで保存さ
    れます。 ファイルそのものは画像データとして扱えます。
    redmineやwiki等に生データをUPしただけで画像として、
    プラウザからデータを見ることができます。
    またそれをダウンロードしたものをそのまま編集する事も出来て、
    とても便利です。
    (ただの画像データに比べるとデータサイズは大きめ)


     ★私の周囲のエンジニアから聞いたところ、エクセルで作ると答えて
     くれた人が多いようです。
開発の流れ
Workflow

  設計 : 画面遷移図
開発の流れ
Workflow

  設計 : 画面遷移図から画面一覧
         画面に名前と住所を決める
    作 成 ツ ー ル   : エ ク セ ル (表 計 算 ソ フ ト )

    ( 1 ) 作 成 し た 画 面 遷 移 図 上 の 画 面 に 、番 号 を 書 く 。

    ( 2 ) 番 号 と 画 面 の 名 前 を 拾 い だ し 、一 覧 に す る

    (3 ) 一 覧 に し た そ れ の U R L を 考 え る 。
        URLが決まると、Contrller名メソッド名が決まります。
開発の流れ
Workflow

  設計 : 画面遷移図から画面一覧
         画面に名前とURLを決める




  URLが決まると、
  クラス名、メソッド名が自然と決まります。
開発の流れ
Workflow

  設計 : 画面構成図
     作 成 ツ ー ル : A d o b e F ir e w o r k s C S 5
     画面に表示をする項目と、    その設置場所を図に起こします。
     デザインを起こしやすくするため、      画面幅、   フォントサイズについては
     デザインと同じぐらいのサイズで作成しています。


     ツールを使わずに手書きで済ましてしまう場合も
     ありますが、その場合は、大体のサイズを
     画面に書き込むようにしています。
開発の流れ
Workflow

  設計 : 画面構成図からデータ一覧
       データの設計をする
    表 示 す る 情 報 の 項 目 を 拾 い だ し 、

    項 目 を 表 示 す る 為 に 必 要 な 情 報 を ま と め て 、

    一 覧 表 に し ま す 。→ D B 設 計 

    

    使 用 ツ ー ル 
:
p h p M y A d m in 
    定義書は、 phpMyAdminのデータ辞書をプラウザからpdfにしています。   
    MySQLWorkbench挑戦中ですが、      まだ使いこなせていません。
開発の流れ
Workflow

  設計 : 画面構成図からデータ一覧
       データの設計をする
開発の流れ
Workflow

  設計 : 機能一覧を作る
    全体像を把握。
開発の流れ
Workflow

  デザイン + HTML作成
    (1)画面構成図を元に、   デザインデータを作成
    (2)デザインデータと画面構成図を元に
     
HTML設計(マークアップ作業)  
    (3)
HTML
+
CSSの作成
開発の流れ
Workflow

  デ ザ イン + H TM L作 成 :
     (1) 画面構成図を元に、デザインデータを作成

    使 用 ツ ー ル : A d o b e F ir e w o r k s C S 5
    Photoshop,illustratorを使用するデザイナーさんが大多数です。
    Fireworksはおそらく小数派
開発の流れ
Workflow

  デ ザ イン + H TM L作 成 :
    (2)デザインデータと画面構成図を元に
     HTML設計(マークアップ作業)

    使 用 ツ ー ル : 紙と 4色 ボ ー ル ペ ン
    私は紙とボールペンで手書きです。
    いきなり Adobe Dreamweaverで(3)HTMLを書き始めるのと、
    紙に手書きで設計メモを作るのとでは、     メモを作る方が作業が早く、
    品質が高いです。  設計ができていると、   後々の変更や追加も楽です。
開発の流れ
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割ぐらい開発スピードは早いと私は思ってます。
開発の流れ
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
開発の流れ
Workflow

  テ ス ト と バ グ            の   修   正    


  
   (1 )
動 作 テ ス ト 
+ 
動 作 結 果 を 記 録 

  
   ( 2 ) 
 動 作 不 良( バ グ )の 修 正 

  
   (3 )
動 作 不 良 の 解 消 を 確 認 


  使 用 ツ ー ル :R e d m in e 
  redmineやtrac等のバグ管理ツールで管理。   
  バグは、  URL、画面キャプチャ、   発生した条件をチケットに登録するように
  しています。  総合テスト、  受け入れテスト等詳しい情報は
  以下のサイトが参考になると思います。        
  
※アプリケーションテストについての参考URL
   http://www.jacic.or.jp/feature/program/018test/e_test_1.htm
開発の流れ
Workflow

  運   用   開   始( リ リ ー ス   )

  マ ニ ュ ア ル 等 の 作 成 を し て 、運 用 サ ー バ へ 設 置 。

  ブ ロ グ 公 開 。
役立つ外部ライブラリ
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で送信するように実装しています。
Form_validationの拡張
Expand the library

   作業の流れ
   (1)
どういう結果が欲しいか決める
   (2)
拡張前の本体のコードを調べる
   (3)
実現方法を検討する
   (4)
実装する
   (5)
Unit
Testする
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
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 ’;
   表 示 を 英 語 に 切 り 替 え た 場 合 に 、
   バ リ デ ー シ ョ ン エ ラ ー が 日 本 語 が 表 示 さ れ る 。
   

   希   望   す る 動       作   
   英 語 の 表 示 に 切り 替 え た 場 合 は 
   バ リ デ ー シ ョ ン エ ラ ー も 英 語 で 表 示 さ れ る べ き 。
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クラスの中で、           言語が設定できさせすれば、                国際化対応が
   できる。
Form_validationの拡張
Expand the library

   ネ イ テ ィ ブ ラ イ ブ ラ リ の 拡 張 (継 承 )
   http://codeigniter.jp/user_guide_ja/general/creating_libraries.html
   
   ユーザガイドより抜粋:
   既存の関数に何かの機能を追加する

   -
おそらく一つか二つのメソッド追加

   -
だけでよいのであれば、              ライブラリの全部をユーザバージョンに置き換えて
   しまうのはやり過ぎです。               
   このようなケースでは、              クラスを単に拡張(継承)するのが適しています。                     
   クラスの拡張はクラスの置き換えと次の2点を除いてよく似ています:
   
   



*
クラス宣言では親クラスを継承する必要があります。                              
   



*
新しいクラスの名前とファイル名には、                     MY_
というプリフィックス
   
 (この項目は変更できます。                 このページの下の方をご覧ください)を付ける
   
 必要があります。
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 で 設 定 さ れ て い る 言 語 で 設 定 を す る 
   
      }
   
   
      ......
中略
   }
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”);
   
   
     }
   
   }
   
   .....中略.....
   }
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用言語ファイルの読み込み時に、
   言語を指定するよう変更
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 で 取 り 出 せ る 。
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を利用しているため、
   私はテスト用にモジュールを用意することにしています。
   テストの結果もブラウザ上から確認しています。
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 変更前と変わらない挙動を確認”
       );
   ---中略---
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

   結果の表示
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” //メモ
       );
   ---中略---
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

   結果の表示
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を書いてしまうまでが
   が拡張ですよね?
まとめ
Important thing

   ★ コードを書き始める前に準備をきちんとしておく
    と、迷いが少なく綺麗に作れる気がします。
   ★ 画面にURL(住所)を決めてあげると、
    Controllerを書くところが自然に決まります。
   ★ テストを書くまでが拡張です   !
   ★ ライブラリもヘルパーも、   テストを書いておくと、
     後で動作確認が楽です。
     その拡張ファイル、使うの今回だけじゃないよね?
まとめ
Important thing

   CodeIgniter大好きです♥
おわり
Ending




    ご清聴ありがとうございました。
おしらせ
Infomation



    C o d e Ig n it e r日 本 ユ ー ザ 会 に は 
    メ ー リ ン グ リ ス ト が あ りま す よ !
    http://codeigniter.jp/mailinglist
参考資料
Reference materials
■ CodeIgniter                   ■ Adobe Dreamweaver
http://codeigniter.com/         http://www.adobe.com/jp/products/dreamweaver.html
■ CodeIgniter日本ユーザー会            ■ Adobe Fireworks
http://codeigniter.jp/          http://www.adobe.com/jp/products/fireworks.html
■ NEKOGET’ Report               ■ gihyo.jp:和田卓人のTDD講座
http://press.nekoget.com/       http://gihyo.jp/dev/serial/01/tdd
■ Redmine
http://redmine.jp/
http://www.redmine.org/
■ Mercurial
http://ja.wikipedia.org/wiki/Mercurial
http://mercurial.selenic.com/
■ MacHg
http://jasonfharris.com/machg/mweaver.html
■ Modular Extensions - HMVC
https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home

More Related Content

Similar to CodeIgniter東京勉強会 2011.05.14

Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Takako Miyagawa
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12kenjis
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniterYuya Matsushima
 
PHP基礎勉強会
PHP基礎勉強会PHP基礎勉強会
PHP基礎勉強会Yuji Otani
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1kenjis
 
テンプレートエンジンって何?
テンプレートエンジンって何?テンプレートエンジンって何?
テンプレートエンジンって何?Shoichi Takahashi
 
Recording and Replay on HoloLens [dotNET 600]
Recording and Replay on HoloLens [dotNET 600]Recording and Replay on HoloLens [dotNET 600]
Recording and Replay on HoloLens [dotNET 600]Tomoki Hayashi
 
pi-1. プログラミング入門
pi-1. プログラミング入門pi-1. プログラミング入門
pi-1. プログラミング入門kunihikokaneko1
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoyakenjis
 
Build 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansaiBuild 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansaiTomohiro Kumagai
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールAtsuo Ishimoto
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみたMori Shingo
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門Yuji Nojima
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法Naruto TAKAHASHI
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日nukaemon
 
WordPress 新マニュアル「HelpHub」の言語リンク用プラグイン作成顛末 - Making of HelpHub Language Select...
WordPress 新マニュアル「HelpHub」の言語リンク用プラグイン作成顛末 - Making of HelpHub Language Select...WordPress 新マニュアル「HelpHub」の言語リンク用プラグイン作成顛末 - Making of HelpHub Language Select...
WordPress 新マニュアル「HelpHub」の言語リンク用プラグイン作成顛末 - Making of HelpHub Language Select...Akira Tachibana
 

Similar to CodeIgniter東京勉強会 2011.05.14 (20)

Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
PHP基礎勉強会
PHP基礎勉強会PHP基礎勉強会
PHP基礎勉強会
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
C#勉強会
C#勉強会C#勉強会
C#勉強会
 
20120118 titanium
20120118 titanium20120118 titanium
20120118 titanium
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 
テンプレートエンジンって何?
テンプレートエンジンって何?テンプレートエンジンって何?
テンプレートエンジンって何?
 
Recording and Replay on HoloLens [dotNET 600]
Recording and Replay on HoloLens [dotNET 600]Recording and Replay on HoloLens [dotNET 600]
Recording and Replay on HoloLens [dotNET 600]
 
pi-1. プログラミング入門
pi-1. プログラミング入門pi-1. プログラミング入門
pi-1. プログラミング入門
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 
Build 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansaiBuild 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansai
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみた
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
 
WordPress 新マニュアル「HelpHub」の言語リンク用プラグイン作成顛末 - Making of HelpHub Language Select...
WordPress 新マニュアル「HelpHub」の言語リンク用プラグイン作成顛末 - Making of HelpHub Language Select...WordPress 新マニュアル「HelpHub」の言語リンク用プラグイン作成顛末 - Making of HelpHub Language Select...
WordPress 新マニュアル「HelpHub」の言語リンク用プラグイン作成顛末 - Making of HelpHub Language Select...
 

More from Takako Miyagawa

OmegaTでドキュメント翻訳
OmegaTでドキュメント翻訳OmegaTでドキュメント翻訳
OmegaTでドキュメント翻訳Takako Miyagawa
 
CodeIgniter4 PHPCon 2016
CodeIgniter4  PHPCon 2016CodeIgniter4  PHPCon 2016
CodeIgniter4 PHPCon 2016Takako Miyagawa
 
Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料Takako Miyagawa
 
CodeIgniter4 (PHPカンファレンス関西2016 懇親会LT)
CodeIgniter4 (PHPカンファレンス関西2016 懇親会LT)CodeIgniter4 (PHPカンファレンス関西2016 懇親会LT)
CodeIgniter4 (PHPカンファレンス関西2016 懇親会LT)Takako Miyagawa
 
Idcfクラウド 初心者の事始め
Idcfクラウド 初心者の事始めIdcfクラウド 初心者の事始め
Idcfクラウド 初心者の事始めTakako Miyagawa
 
もっとドキュメントが日本語になりますように
もっとドキュメントが日本語になりますようにもっとドキュメントが日本語になりますように
もっとドキュメントが日本語になりますようにTakako Miyagawa
 
Fuelphp & codeigniterユーザの集い
Fuelphp & codeigniterユーザの集いFuelphp & codeigniterユーザの集い
Fuelphp & codeigniterユーザの集いTakako Miyagawa
 
PHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter updatePHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter updateTakako Miyagawa
 
Net commons3 開発環境
Net commons3 開発環境Net commons3 開発環境
Net commons3 開発環境Takako Miyagawa
 
最近のCodeIgniter 2014.06.19
最近のCodeIgniter 2014.06.19最近のCodeIgniter 2014.06.19
最近のCodeIgniter 2014.06.19Takako Miyagawa
 
Net commons3 研究会 2014 0616
Net commons3 研究会 2014 0616Net commons3 研究会 2014 0616
Net commons3 研究会 2014 0616Takako Miyagawa
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたTakako Miyagawa
 
PHPUnitでリファクタリング
PHPUnitでリファクタリングPHPUnitでリファクタリング
PHPUnitでリファクタリングTakako Miyagawa
 
CodeIgniterのライセンスについて
CodeIgniterのライセンスについてCodeIgniterのライセンスについて
CodeIgniterのライセンスについてTakako Miyagawa
 
Bear.sunday meetup #2 自己紹介LT
Bear.sunday meetup #2 自己紹介LTBear.sunday meetup #2 自己紹介LT
Bear.sunday meetup #2 自己紹介LTTakako Miyagawa
 
phpmatsuri2013 LT大会 資料
phpmatsuri2013 LT大会 資料phpmatsuri2013 LT大会 資料
phpmatsuri2013 LT大会 資料Takako Miyagawa
 
2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LTTakako Miyagawa
 
PHPカンファレンス関西 2011
PHPカンファレンス関西 2011PHPカンファレンス関西 2011
PHPカンファレンス関西 2011Takako Miyagawa
 

More from Takako Miyagawa (20)

OmegaTでドキュメント翻訳
OmegaTでドキュメント翻訳OmegaTでドキュメント翻訳
OmegaTでドキュメント翻訳
 
CodeIgniter4 PHPCon 2016
CodeIgniter4  PHPCon 2016CodeIgniter4  PHPCon 2016
CodeIgniter4 PHPCon 2016
 
Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料
 
CodeIgniter4 (PHPカンファレンス関西2016 懇親会LT)
CodeIgniter4 (PHPカンファレンス関西2016 懇親会LT)CodeIgniter4 (PHPカンファレンス関西2016 懇親会LT)
CodeIgniter4 (PHPカンファレンス関西2016 懇親会LT)
 
Idcfクラウド 初心者の事始め
Idcfクラウド 初心者の事始めIdcfクラウド 初心者の事始め
Idcfクラウド 初心者の事始め
 
もっとドキュメントが日本語になりますように
もっとドキュメントが日本語になりますようにもっとドキュメントが日本語になりますように
もっとドキュメントが日本語になりますように
 
Fuelphp & codeigniterユーザの集い
Fuelphp & codeigniterユーザの集いFuelphp & codeigniterユーザの集い
Fuelphp & codeigniterユーザの集い
 
PHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter updatePHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter update
 
Net commons3 開発環境
Net commons3 開発環境Net commons3 開発環境
Net commons3 開発環境
 
最近のCodeIgniter 2014.06.19
最近のCodeIgniter 2014.06.19最近のCodeIgniter 2014.06.19
最近のCodeIgniter 2014.06.19
 
Net commons3 研究会 2014 0616
Net commons3 研究会 2014 0616Net commons3 研究会 2014 0616
Net commons3 研究会 2014 0616
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
 
PHPUnitでリファクタリング
PHPUnitでリファクタリングPHPUnitでリファクタリング
PHPUnitでリファクタリング
 
CodeIgniterのライセンスについて
CodeIgniterのライセンスについてCodeIgniterのライセンスについて
CodeIgniterのライセンスについて
 
Bear.sunday meetup #2 自己紹介LT
Bear.sunday meetup #2 自己紹介LTBear.sunday meetup #2 自己紹介LT
Bear.sunday meetup #2 自己紹介LT
 
phpmatsuri2013 LT大会 資料
phpmatsuri2013 LT大会 資料phpmatsuri2013 LT大会 資料
phpmatsuri2013 LT大会 資料
 
Code ignitertalk 01
Code ignitertalk 01Code ignitertalk 01
Code ignitertalk 01
 
PHPMATSURI2011 LT大会
PHPMATSURI2011 LT大会PHPMATSURI2011 LT大会
PHPMATSURI2011 LT大会
 
2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT
 
PHPカンファレンス関西 2011
PHPカンファレンス関西 2011PHPカンファレンス関西 2011
PHPカンファレンス関西 2011
 

CodeIgniter東京勉強会 2011.05.14

  • 1. C o d e I g n i t e r で 開 発 2011.05.14 CodeIgniter東京勉強会 ネコネットデザイン事務所 宮川 貴子(NEKOGET)
  • 2. 自己紹介 Self-introduction NAME 宮川 貴子 (みやがわ たかこ) Twitter/Blog NEKOGET http://pneskin2.nekoget.com/press/ WORK ネコネットデザイン事務所 WEBのお仕事10年目。 イラスト、デザイン、HTML、Javascript、PHP フロントエンドなお仕事をしています。
  • 3. 今日の話題 Table of contents 1.開発の流れ 2.役立つ外部ライブラリ 3.Form_validationの拡張 4.まとめ
  • 4. 開発の流れ Workflow 1.設計 2.デザイン + HTML作成 3.実装 4.総合テスト 受け入れテスト 5.完成 → 運用開始(リリース)
  • 6. 開発の流れ Workflow サ イ ト の 目 的 と 欲 し い 機 能 ● 現在運営しているブログの引っ越し先にしたい。 ● 日本語の記事とそれを英語にしたページが欲しい。
  • 7. 開発の流れ Workflow 設計 ● 画面の流れを考える ● 表示する内容を決める ● 必要な機能を把握する
  • 8. 開発の流れ Workflow 設計 : 目に見える資料にする。 ● 画面の流れ→画面遷移図 ● 表示する内容→画面構成図 ● 機能一覧→機能一覧表
  • 9. 開発の流れ Workflow 設計 : 画面遷移図 作 成 ツ ー ル : A d o b e F ir e w o r k s C S 5 Fireworksでデータを作成すると、 データはpngファイルで保存さ れます。 ファイルそのものは画像データとして扱えます。 redmineやwiki等に生データをUPしただけで画像として、 プラウザからデータを見ることができます。 またそれをダウンロードしたものをそのまま編集する事も出来て、 とても便利です。 (ただの画像データに比べるとデータサイズは大きめ) ★私の周囲のエンジニアから聞いたところ、エクセルで作ると答えて くれた人が多いようです。
  • 10. 開発の流れ Workflow 設計 : 画面遷移図
  • 11. 開発の流れ Workflow 設計 : 画面遷移図から画面一覧    画面に名前と住所を決める 作 成 ツ ー ル : エ ク セ ル (表 計 算 ソ フ ト ) ( 1 ) 作 成 し た 画 面 遷 移 図 上 の 画 面 に 、番 号 を 書 く 。 ( 2 ) 番 号 と 画 面 の 名 前 を 拾 い だ し 、一 覧 に す る (3 ) 一 覧 に し た そ れ の U R L を 考 え る 。 URLが決まると、Contrller名メソッド名が決まります。
  • 12. 開発の流れ Workflow 設計 : 画面遷移図から画面一覧    画面に名前とURLを決める URLが決まると、 クラス名、メソッド名が自然と決まります。
  • 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挑戦中ですが、 まだ使いこなせていません。
  • 15. 開発の流れ Workflow 設計 : 画面構成図からデータ一覧     データの設計をする
  • 16. 開発の流れ Workflow 設計 : 機能一覧を作る 全体像を把握。
  • 17. 開発の流れ Workflow デザイン + HTML作成 (1)画面構成図を元に、 デザインデータを作成 (2)デザインデータと画面構成図を元に   HTML設計(マークアップ作業) (3) HTML + CSSの作成
  • 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はおそらく小数派
  • 19. 開発の流れ Workflow デ ザ イン + H TM L作 成 : (2)デザインデータと画面構成図を元に    HTML設計(マークアップ作業) 使 用 ツ ー ル : 紙と 4色 ボ ー ル ペ ン 私は紙とボールペンで手書きです。 いきなり Adobe Dreamweaverで(3)HTMLを書き始めるのと、 紙に手書きで設計メモを作るのとでは、 メモを作る方が作業が早く、 品質が高いです。 設計ができていると、 後々の変更や追加も楽です。
  • 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
  • 22. 開発の流れ Workflow テ ス ト と バ グ の 修 正 (1 ) 動 作 テ ス ト + 動 作 結 果 を 記 録 ( 2 ) 動 作 不 良( バ グ )の 修 正 (3 ) 動 作 不 良 の 解 消 を 確 認 使 用 ツ ー ル :R e d m in e redmineやtrac等のバグ管理ツールで管理。 バグは、 URL、画面キャプチャ、 発生した条件をチケットに登録するように しています。 総合テスト、 受け入れテスト等詳しい情報は 以下のサイトが参考になると思います。 ※アプリケーションテストについての参考URL  http://www.jacic.or.jp/feature/program/018test/e_test_1.htm
  • 23. 開発の流れ Workflow 運 用 開 始( リ リ ー ス ) マ ニ ュ ア ル 等 の 作 成 を し て 、運 用 サ ー バ へ 設 置 。 ブ ロ グ 公 開 。
  • 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で送信するように実装しています。
  • 25. Form_validationの拡張 Expand the library 作業の流れ (1) どういう結果が欲しいか決める (2) 拡張前の本体のコードを調べる (3) 実現方法を検討する (4) 実装する (5) Unit Testする
  • 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クラスの中で、 言語が設定できさせすれば、 国際化対応が できる。
  • 29. Form_validationの拡張 Expand the library ネ イ テ ィ ブ ラ イ ブ ラ リ の 拡 張 (継 承 ) http://codeigniter.jp/user_guide_ja/general/creating_libraries.html ユーザガイドより抜粋: 既存の関数に何かの機能を追加する - おそらく一つか二つのメソッド追加 - だけでよいのであれば、 ライブラリの全部をユーザバージョンに置き換えて しまうのはやり過ぎです。 このようなケースでは、 クラスを単に拡張(継承)するのが適しています。 クラスの拡張はクラスの置き換えと次の2点を除いてよく似ています: * クラス宣言では親クラスを継承する必要があります。 * 新しいクラスの名前とファイル名には、 MY_ というプリフィックス (この項目は変更できます。 このページの下の方をご覧ください)を付ける 必要があります。
  • 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を書いてしまうまでが が拡張ですよね?
  • 40. まとめ Important thing ★ コードを書き始める前に準備をきちんとしておく  と、迷いが少なく綺麗に作れる気がします。 ★ 画面にURL(住所)を決めてあげると、  Controllerを書くところが自然に決まります。 ★ テストを書くまでが拡張です ! ★ ライブラリもヘルパーも、 テストを書いておくと、   後で動作確認が楽です。   その拡張ファイル、使うの今回だけじゃないよね?
  • 41. まとめ Important thing CodeIgniter大好きです♥
  • 42. おわり Ending ご清聴ありがとうございました。
  • 43. おしらせ Infomation C o d e Ig n it e r日 本 ユ ー ザ 会 に は メ ー リ ン グ リ ス ト が あ りま す よ ! http://codeigniter.jp/mailinglist
  • 44. 参考資料 Reference materials ■ CodeIgniter ■ Adobe Dreamweaver http://codeigniter.com/ http://www.adobe.com/jp/products/dreamweaver.html ■ CodeIgniter日本ユーザー会 ■ Adobe Fireworks http://codeigniter.jp/ http://www.adobe.com/jp/products/fireworks.html ■ NEKOGET’ Report ■ gihyo.jp:和田卓人のTDD講座 http://press.nekoget.com/ http://gihyo.jp/dev/serial/01/tdd ■ Redmine http://redmine.jp/ http://www.redmine.org/ ■ Mercurial http://ja.wikipedia.org/wiki/Mercurial http://mercurial.selenic.com/ ■ MacHg http://jasonfharris.com/machg/mweaver.html ■ Modular Extensions - HMVC https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home