SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
CodeIgniterによるPhwittr
                                         日本CodeIgniterユーザ会
                                            Kenji Suzuki

                                                 2008/10/08
CodeIgniter and its logo are property of EllisLab Inc         CodeIgniter Users Group in Japan
Phwittrとは?


         Tritterクローン
            ➔ミニブログ
            ➔「ひとこと」を投稿するサイト
         「PHP Framework Fight!」という企画もの




CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
Phwittrとは?




CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
PHP Framework Fight!とは?


         開催概要
            ➔ PHPで色々あるフレームワークで、同じ仕様のア
              プリを実装し、ベンチマークを取り競争する。
            ➔ 処理速度だけでなく、開発工数(ジェネレータが
              吐いた以外のコード量)などでも比較したい。
            ➔ 数あるPHPフレームワークの頂点に立つのはど
              のれか、今ここにPHPフレームワークの熱いバト
              ルが始まる!
         まとめサイト
            ➔ http://labs.strk.jp/code-fight/wiki/


CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
PHP Framework Fight!とは?


         経過
            ➔ 4/22告知、5月末までに実装の予定
            ➔ 仕様がなかなか出てこない
            ➔ 出てきたが、細かいところまではない
            ➔ 企画自体、ポシャった?

                 • PHP界隈では、この話題はタブーに
            ➔ 8/18に突然、締切日が9月末に設定される
            ➔ 実装しはじめると、HTMLテンプレートすら足りない
            ➔ Twitterや先に動いていたSabelを参考に
              テキトーに作る

CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
PHP Framework Fight!とは?


         現状
            ➔ エントリー

                 •     14フレームワーク

                 • 17エントリ(バージョン違いなど)
            ➔ 一応できてるもの

                 •     Sabel

                 • CodeIgniter
                 • 素のPHP(独自フレームワーク)

                 • Piece

CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
ビューの実装




CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
ビューの実装

     layoutビュー(system/applications/views/layout.php)
     ...略...
     <body id="yourDomainName" class="indexBody">
     <div id="page">
         <div id="header"><?=$header?></div>
         <div id="contents">
             <div id="wrapper">
                 <div id="main"><?=$main?></div>
             </div>
             <div id="sub"><?=$sub?></div>
         </div>
         <div id="footer">...略...</div>
     </div>
     </body>
     ...略...
CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
ビューの実装

homeコントローラ(system/applications/controllers/home.php)
...略...
$data->header = $this->load->view('home/header', '', TRUE);
$data->main = $this->load->view('home/main', $data, TRUE);
$data->sub   = $this->load->view('home/side', $data, TRUE);
$this->load->view('layout', $data);
...略...




 CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
認証の実装


         Redux Auth 1.4a
            ➔GPL or MIT License
            ➔ http://code.google.com/p/reduxauth/

         (参考)Neo base
            ➔http://neo-navi.net/top/neo_base
            ➔デモ http://neo-navi.net/neo_base/




CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
JavaScriptの出力


         JavaScriptファイルを出力するコントローラ
            ➔viewファイルにJavaScriptを書けば、
             CIのヘルパーなどが使える
            ➔ブラウザにキャッシュされるように
             ヘッダ出力
         <script>タグを生成するヘルパー
            ➔ファイルが更新されたときのために
             「?YYYYMMDDHHSS」を付加



CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
JavaScriptの出力


         viewとして処理したい場合
            ➔ <?=js('default')?>
                 •     <script type="text/javascript"
                       src="http://example.jp/phwittr/js/default.js?
                       200810021129"></script>

         ファイルをそのまま出力したい場合
            ➔ <?=js('jquery-1.2.6.min.js', FALSE)?>
                 •     <script type="text/javascript"
                       src="http://example.jp/phwittr/js/jquery-1.2.6.min.j
                       s"></script>




CodeIgniter and its logo are property of EllisLab Inc        CodeIgniter Users Group in Japan
JavaScriptの出力


         URIルーティング
            ➔ application/config/routes.php
                 •     $route['js/(S+)'] = "js/index/$1";




CodeIgniter and its logo are property of EllisLab Inc        CodeIgniter Users Group in Japan
Ajaxの実装


         「つぶやき」の投稿
            ➔jQueryを使用
            ➔$.post()メソッドでPOST
                 •     $.post(URL, データ, コールバック関数, データタイプ);

            ➔受信用コントローラstatus/update()

                 •     データを受信して検証し、保存

                 • 結果をjsonで返す
            ➔ページを部分的に更新

CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
Ajaxの実装

viewファイル(system/applications/views/home/main.php)
<form action="#" name="whatdoing">
<div id="post">
<span class="whatdoing">イマナニシテル?</span>
<span class="textCount" id="js_textcount">140</span>
<textarea id="message" class="message"></textarea>
<p class="btn btnSpace">
<input type="button" name="twitter" id="twitter"
 class="formBtn" value=" つぶやく " />
<input type="hidden" id="ticket" value="<?=$ticket?>" />
<input type="hidden" id="page_" value="<?=PAGE_OTHER?>" />
</p>
</div>
</form>



CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
Ajaxの実装

      JavaScriptファイル(system/applications/views/js/default.php)
      /* つぶやきの投稿 */
      $(function(){
          $('#twitter').click(function(){
               comment = $('#message').val();
               $.post('<?=site_url('status/update')?>',
                        {msg: comment,
                        ticket: $('#ticket').val(),
                        p: $('#page_').val()},
                        addComment, 'json');
               $('#message').val('').focus();
               $("#js_textcount").text(140);
          });
      });



CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
Ajaxの実装

   controllerファイル(system/applications/controllers/status.php)
   // Ajax つぶやき投稿の受信(一部省略されていますので、このままでは動作しません)
   function update()
   {
          header('Content-Type: application/json; charset=UTF-8');
          $ticket = $this->session->flashdata('ticket');
          if ( ! $this->input->post('ticket') || $this->input->post('ticket') !== $ticket) {
                  echo json_encode(array('status' => 'ng', 'html' => 'チケットが異なります'));
                  exit;
          }

             $comment = $this->input->post('msg');
             $page = $this->input->post('p');

             if ($this->redux_auth->logged_in()) {
                    $this->load->model('Status_model', '', TRUE);
                    list($id, $reply_username) = $this->Status_model->
                            add_comment($user_id, $reply_username, $comment);
                    $html = $this->load->view('status/comment', $data, TRUE);
                    echo json_encode(array('status' => 'ok', 'html' => $html));
             }
             else {
                    echo json_encode(array('status' => 'ng',
                                                'html' => 'ログインしていません'));
             }
   }

CodeIgniter and its logo are property of EllisLab Inc                  CodeIgniter Users Group in Japan
Ajaxの実装

JavaScriptファイル(system/applications/views/js/default.php)
function addComment(data){
    if (data.status == 'ok') {
         $('tbody:first').prepend(data.html);
         $('p#last_comment').text(comment);
         count = parseInt($('#side_count_post').text()) + 1;
         $('#side_count_post').text(count);
    }
    else {
         alert(data.html);
    }
}




 CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
140文字カウントの実装

    JavaScriptファイル(system/applications/views/js/default.php)
    /* エラーメッセージ */
    $("#message").before('<p class="errorMsg">140字を超えました!</p>');
    $(".errorMsg").css({display:"none"});

    $("#message").bind("keyup blur submit",
    function(){
           if( $("#message").val().length > 140){
                   $("#js_textcount").text(140 - $("#message").val().length).css(
                   "color", "#FF0000");
                   $(".errorMsg").css({display: "block"});
                   $("#twitter").attr("disabled","disabed");
           }
           else {
                   $("#js_textcount").text(140 - $("#message").val().length ).css(
                   "color", "#CCCCCC");
                   if($("#message").val().length >= 1 && $("#message").val().length != ''){
                          $("#twitter").attr("disabled","");
                   }
                   else {
                          $("#twitter").attr("disabled","disabled");
                   }
                   $(".errorMsg").css({display:"none"});
           }
    }
    );


CodeIgniter and its logo are property of EllisLab Inc                 CodeIgniter Users Group in Japan
ヘルパーの作成


         pagerヘルパー
            ➔offset()、pager()
         アイコン画像表示のHTML生成
            ➔picture()、my_pict()
         投稿日時表示
            ➔posted_time()
         HTMLエスケープ
            ➔h()

CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
Pagerヘルパー


         なにもの?
            ➔ページを移動する
            ➔home?page=2
            ➔「前へ」「後へ」移動
         CIにはPaginationクラスがあるのに
            ➔Paginationクラスより低機能
            ➔GETを使っている



CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
Pagerヘルパー


         GETの使い方
            ➔ $config['uri_protocol']をPATH_INFOに設定する
            ➔ 必要な時にQUERY_STRINGをパース
            ➔ むろん、CIでは推奨されない方法!!

                 •     セキュリティに自信のある人だけ使ってください

 $this->load->helper('pager');

 parse_str($_SERVER['QUERY_STRING'], $_GET);
 $page = intval($this->input->get('page'));
 $per_page = 20;
 $offset = offset($page, $per_page);

 $data->pager = pager($page, $per_page, $count, 'home');
CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
参考URL

         Phwittrソースコード
            ➔ CodeRepos
                 •     http://coderepos.org/share/browser/events/phpfra
                       mework/codeigniter/trunk

                 •     http://svn.coderepos.org/share/events/phpframew
                       ork/codeigniter/trunk

         テストサイト
            ➔ http://club.h14m.org:8000/kenji/phwittr/

         Framework Fightまとめサイト
            ➔ http://labs.strk.jp/code-fight/wiki/



CodeIgniter and its logo are property of EllisLab Inc     CodeIgniter Users Group in Japan
日本CodeIgniterユーザ会


         http://codeigniter.jp/

         CodeIgniter日本語言語パック/
          日本語ユーザガイド作成中

         メンバー募集中




CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
書籍のお知らせ


                                             日本初のCodeIgniter解説本
                                              『CodeIgniter徹底入門』

                                             2008年6月9日、
                                              翔泳社より発売されました

                                             http://codeigniter.jp/tettei/



                             Amazon.co.jpより             ご静聴
                                                        ありがとうございました
CodeIgniter and its logo are property of EllisLab Inc         CodeIgniter Users Group in Japan

Más contenido relacionado

La actualidad más candente

⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2Nishida Kansuke
 
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMagento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMiho Nakano
 
WordCamp Tokyo2012 Session
WordCamp Tokyo2012 SessionWordCamp Tokyo2012 Session
WordCamp Tokyo2012 Sessionregret raym
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義ria1201
 
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014Takashi Yahata
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5Nishida Kansuke
 
はじめよう JavaFX 2.x
はじめよう JavaFX 2.xはじめよう JavaFX 2.x
はじめよう JavaFX 2.xa know
 
20111031 MobileWeb at TDC
20111031 MobileWeb at TDC20111031 MobileWeb at TDC
20111031 MobileWeb at TDCNobuhiro Sue
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方kwatch
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Tomohito Adachi
 
Robot_framework_introduction-ja
Robot_framework_introduction-jaRobot_framework_introduction-ja
Robot_framework_introduction-jaKazumasa EBATA
 
WordPress widget api
WordPress widget apiWordPress widget api
WordPress widget apiTakami Kazuya
 

La actualidad más candente (13)

⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
 
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMagento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for Design
 
WordCamp Tokyo2012 Session
WordCamp Tokyo2012 SessionWordCamp Tokyo2012 Session
WordCamp Tokyo2012 Session
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
 
はじめよう JavaFX 2.x
はじめよう JavaFX 2.xはじめよう JavaFX 2.x
はじめよう JavaFX 2.x
 
20111031 MobileWeb at TDC
20111031 MobileWeb at TDC20111031 MobileWeb at TDC
20111031 MobileWeb at TDC
 
20120118 titanium
20120118 titanium20120118 titanium
20120118 titanium
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
 
Robot_framework_introduction-ja
Robot_framework_introduction-jaRobot_framework_introduction-ja
Robot_framework_introduction-ja
 
WordPress widget api
WordPress widget apiWordPress widget api
WordPress widget api
 

Destacado

Как стать резидентом КРИТБИ? критби
Как стать резидентом КРИТБИ? критбиКак стать резидентом КРИТБИ? критби
Как стать резидентом КРИТБИ? критбиAlexander Verhozin
 
Fresh Business Thinking - Social Media Event - Jemima presentation
Fresh Business Thinking - Social Media Event - Jemima presentationFresh Business Thinking - Social Media Event - Jemima presentation
Fresh Business Thinking - Social Media Event - Jemima presentationfbtslides
 
Seguridad: sembrando confianza en el cloud
Seguridad: sembrando confianza en el cloudSeguridad: sembrando confianza en el cloud
Seguridad: sembrando confianza en el cloudNextel S.A.
 
Jak przygotowac startup do fazy inwestycyjnej
Jak przygotowac startup do fazy inwestycyjnejJak przygotowac startup do fazy inwestycyjnej
Jak przygotowac startup do fazy inwestycyjnejpcmp
 
Kaal flex property
Kaal flex propertyKaal flex property
Kaal flex propertykaalflex
 
Is Ukraine on the road towards EU?
Is Ukraine on the road towards EU?Is Ukraine on the road towards EU?
Is Ukraine on the road towards EU?Morten Munk
 
Human Rights and Exploring Global Citizenship
Human Rights and Exploring Global CitizenshipHuman Rights and Exploring Global Citizenship
Human Rights and Exploring Global Citizenshipyouth_upf
 
Microsoft Project workshop in Pune 6th & 7th August
Microsoft Project workshop in Pune 6th & 7th AugustMicrosoft Project workshop in Pune 6th & 7th August
Microsoft Project workshop in Pune 6th & 7th Augustvrushalis
 
Caso catenaria aprendiendo a innovar en la organizacion
Caso catenaria aprendiendo a innovar en la organizacionCaso catenaria aprendiendo a innovar en la organizacion
Caso catenaria aprendiendo a innovar en la organizacionInnovacionSistematica
 
Linkedin presentation-red-1225231144081339-8
Linkedin presentation-red-1225231144081339-8Linkedin presentation-red-1225231144081339-8
Linkedin presentation-red-1225231144081339-8nizetanaiz
 
Youth nited for juan healthy nation
Youth nited for juan healthy nationYouth nited for juan healthy nation
Youth nited for juan healthy nationBernard Cielo
 
Resum Curs 2011 - 2012. Tercera Part
Resum Curs 2011 - 2012. Tercera PartResum Curs 2011 - 2012. Tercera Part
Resum Curs 2011 - 2012. Tercera PartOliverasqv
 
はじめてのMercurial/Bitbucket その2
 はじめてのMercurial/Bitbucket その2 はじめてのMercurial/Bitbucket その2
はじめてのMercurial/Bitbucket その2kenjis
 
Linguagem sql
Linguagem sqlLinguagem sql
Linguagem sqlTic Eslc
 
Fresh Business Thinking Social Media Event - Julie Hall
Fresh Business Thinking Social Media Event - Julie Hall Fresh Business Thinking Social Media Event - Julie Hall
Fresh Business Thinking Social Media Event - Julie Hall fbtslides
 
Spectrum deck v5.3
Spectrum deck v5.3Spectrum deck v5.3
Spectrum deck v5.3SLaM Iam
 
Ukraine - Business unplugged!
Ukraine - Business unplugged!Ukraine - Business unplugged!
Ukraine - Business unplugged!Morten Munk
 
Presentacion motivafit startup live alicante
Presentacion motivafit startup live alicantePresentacion motivafit startup live alicante
Presentacion motivafit startup live alicanteNadia Calatayud
 
Resum Curs 2011 - 2012. Segona Part
Resum Curs 2011 - 2012. Segona PartResum Curs 2011 - 2012. Segona Part
Resum Curs 2011 - 2012. Segona PartOliverasqv
 

Destacado (20)

Как стать резидентом КРИТБИ? критби
Как стать резидентом КРИТБИ? критбиКак стать резидентом КРИТБИ? критби
Как стать резидентом КРИТБИ? критби
 
Fresh Business Thinking - Social Media Event - Jemima presentation
Fresh Business Thinking - Social Media Event - Jemima presentationFresh Business Thinking - Social Media Event - Jemima presentation
Fresh Business Thinking - Social Media Event - Jemima presentation
 
Seguridad: sembrando confianza en el cloud
Seguridad: sembrando confianza en el cloudSeguridad: sembrando confianza en el cloud
Seguridad: sembrando confianza en el cloud
 
Jak przygotowac startup do fazy inwestycyjnej
Jak przygotowac startup do fazy inwestycyjnejJak przygotowac startup do fazy inwestycyjnej
Jak przygotowac startup do fazy inwestycyjnej
 
Kaal flex property
Kaal flex propertyKaal flex property
Kaal flex property
 
Is Ukraine on the road towards EU?
Is Ukraine on the road towards EU?Is Ukraine on the road towards EU?
Is Ukraine on the road towards EU?
 
Human Rights and Exploring Global Citizenship
Human Rights and Exploring Global CitizenshipHuman Rights and Exploring Global Citizenship
Human Rights and Exploring Global Citizenship
 
ballorig
ballorigballorig
ballorig
 
Microsoft Project workshop in Pune 6th & 7th August
Microsoft Project workshop in Pune 6th & 7th AugustMicrosoft Project workshop in Pune 6th & 7th August
Microsoft Project workshop in Pune 6th & 7th August
 
Caso catenaria aprendiendo a innovar en la organizacion
Caso catenaria aprendiendo a innovar en la organizacionCaso catenaria aprendiendo a innovar en la organizacion
Caso catenaria aprendiendo a innovar en la organizacion
 
Linkedin presentation-red-1225231144081339-8
Linkedin presentation-red-1225231144081339-8Linkedin presentation-red-1225231144081339-8
Linkedin presentation-red-1225231144081339-8
 
Youth nited for juan healthy nation
Youth nited for juan healthy nationYouth nited for juan healthy nation
Youth nited for juan healthy nation
 
Resum Curs 2011 - 2012. Tercera Part
Resum Curs 2011 - 2012. Tercera PartResum Curs 2011 - 2012. Tercera Part
Resum Curs 2011 - 2012. Tercera Part
 
はじめてのMercurial/Bitbucket その2
 はじめてのMercurial/Bitbucket その2 はじめてのMercurial/Bitbucket その2
はじめてのMercurial/Bitbucket その2
 
Linguagem sql
Linguagem sqlLinguagem sql
Linguagem sql
 
Fresh Business Thinking Social Media Event - Julie Hall
Fresh Business Thinking Social Media Event - Julie Hall Fresh Business Thinking Social Media Event - Julie Hall
Fresh Business Thinking Social Media Event - Julie Hall
 
Spectrum deck v5.3
Spectrum deck v5.3Spectrum deck v5.3
Spectrum deck v5.3
 
Ukraine - Business unplugged!
Ukraine - Business unplugged!Ukraine - Business unplugged!
Ukraine - Business unplugged!
 
Presentacion motivafit startup live alicante
Presentacion motivafit startup live alicantePresentacion motivafit startup live alicante
Presentacion motivafit startup live alicante
 
Resum Curs 2011 - 2012. Segona Part
Resum Curs 2011 - 2012. Segona PartResum Curs 2011 - 2012. Segona Part
Resum Curs 2011 - 2012. Segona Part
 

Similar a CodeIgniterによるPhwittr

CodeIgniter 〜 2008年大躍進のPHPフレームワーク
CodeIgniter 〜 2008年大躍進のPHPフレームワークCodeIgniter 〜 2008年大躍進のPHPフレームワーク
CodeIgniter 〜 2008年大躍進のPHPフレームワークkenjis
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)Hiroaki KOBAYASHI
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るKiyoshi SATOH
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略takezoe
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniterYuya Matsushima
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Kazunari Hara
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼうyouku
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Yuji Takayama
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック良太 増子
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!Shinpei Ohtani
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣Yuji Takayama
 

Similar a CodeIgniterによるPhwittr (20)

CodeIgniter 〜 2008年大躍進のPHPフレームワーク
CodeIgniter 〜 2008年大躍進のPHPフレームワークCodeIgniter 〜 2008年大躍進のPHPフレームワーク
CodeIgniter 〜 2008年大躍進のPHPフレームワーク
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
 
Visualforce + jQuery
Visualforce + jQueryVisualforce + jQuery
Visualforce + jQuery
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
 

Más de kenjis

AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワークAspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワークkenjis
 
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイントkenjis
 
10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoya10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoyakenjis
 
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
 
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoyakenjis
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12kenjis
 
フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成kenjis
 
達人出版会からPHPの本を出版しよう
達人出版会からPHPの本を出版しよう達人出版会からPHPの本を出版しよう
達人出版会からPHPの本を出版しようkenjis
 
FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード kenjis
 
CodeIgniter 最新情報 2011 (増補版)
CodeIgniter 最新情報 2011 (増補版)CodeIgniter 最新情報 2011 (増補版)
CodeIgniter 最新情報 2011 (増補版)kenjis
 
CodeIgniterユーザガイドの翻訳に参加しよう!
CodeIgniterユーザガイドの翻訳に参加しよう!CodeIgniterユーザガイドの翻訳に参加しよう!
CodeIgniterユーザガイドの翻訳に参加しよう!kenjis
 
はじめてのMercurial/Bitbucket
はじめてのMercurial/BitbucketはじめてのMercurial/Bitbucket
はじめてのMercurial/Bitbucketkenjis
 
CodeIgniter 最新情報 2010
CodeIgniter 最新情報 2010CodeIgniter 最新情報 2010
CodeIgniter 最新情報 2010kenjis
 
『PHP逆引きレシピ』とセキュリティのこと
『PHP逆引きレシピ』とセキュリティのこと『PHP逆引きレシピ』とセキュリティのこと
『PHP逆引きレシピ』とセキュリティのことkenjis
 
CodeIgniter 貴方はどのフレームワークを使うべきか?
CodeIgniter 貴方はどのフレームワークを使うべきか?CodeIgniter 貴方はどのフレームワークを使うべきか?
CodeIgniter 貴方はどのフレームワークを使うべきか?kenjis
 

Más de kenjis (15)

AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワークAspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワーク
 
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
 
10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoya10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoya
 
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
 
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
 
フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成
 
達人出版会からPHPの本を出版しよう
達人出版会からPHPの本を出版しよう達人出版会からPHPの本を出版しよう
達人出版会からPHPの本を出版しよう
 
FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード
 
CodeIgniter 最新情報 2011 (増補版)
CodeIgniter 最新情報 2011 (増補版)CodeIgniter 最新情報 2011 (増補版)
CodeIgniter 最新情報 2011 (増補版)
 
CodeIgniterユーザガイドの翻訳に参加しよう!
CodeIgniterユーザガイドの翻訳に参加しよう!CodeIgniterユーザガイドの翻訳に参加しよう!
CodeIgniterユーザガイドの翻訳に参加しよう!
 
はじめてのMercurial/Bitbucket
はじめてのMercurial/BitbucketはじめてのMercurial/Bitbucket
はじめてのMercurial/Bitbucket
 
CodeIgniter 最新情報 2010
CodeIgniter 最新情報 2010CodeIgniter 最新情報 2010
CodeIgniter 最新情報 2010
 
『PHP逆引きレシピ』とセキュリティのこと
『PHP逆引きレシピ』とセキュリティのこと『PHP逆引きレシピ』とセキュリティのこと
『PHP逆引きレシピ』とセキュリティのこと
 
CodeIgniter 貴方はどのフレームワークを使うべきか?
CodeIgniter 貴方はどのフレームワークを使うべきか?CodeIgniter 貴方はどのフレームワークを使うべきか?
CodeIgniter 貴方はどのフレームワークを使うべきか?
 

Último

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 

Último (12)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

CodeIgniterによるPhwittr

  • 1. CodeIgniterによるPhwittr 日本CodeIgniterユーザ会 Kenji Suzuki 2008/10/08 CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 2. Phwittrとは?  Tritterクローン ➔ミニブログ ➔「ひとこと」を投稿するサイト  「PHP Framework Fight!」という企画もの CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 3. Phwittrとは? CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 4. PHP Framework Fight!とは?  開催概要 ➔ PHPで色々あるフレームワークで、同じ仕様のア プリを実装し、ベンチマークを取り競争する。 ➔ 処理速度だけでなく、開発工数(ジェネレータが 吐いた以外のコード量)などでも比較したい。 ➔ 数あるPHPフレームワークの頂点に立つのはど のれか、今ここにPHPフレームワークの熱いバト ルが始まる!  まとめサイト ➔ http://labs.strk.jp/code-fight/wiki/ CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 5. PHP Framework Fight!とは?  経過 ➔ 4/22告知、5月末までに実装の予定 ➔ 仕様がなかなか出てこない ➔ 出てきたが、細かいところまではない ➔ 企画自体、ポシャった? • PHP界隈では、この話題はタブーに ➔ 8/18に突然、締切日が9月末に設定される ➔ 実装しはじめると、HTMLテンプレートすら足りない ➔ Twitterや先に動いていたSabelを参考に テキトーに作る CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 6. PHP Framework Fight!とは?  現状 ➔ エントリー • 14フレームワーク • 17エントリ(バージョン違いなど) ➔ 一応できてるもの • Sabel • CodeIgniter • 素のPHP(独自フレームワーク) • Piece CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 7. ビューの実装 CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 8. ビューの実装 layoutビュー(system/applications/views/layout.php) ...略... <body id="yourDomainName" class="indexBody"> <div id="page"> <div id="header"><?=$header?></div> <div id="contents"> <div id="wrapper"> <div id="main"><?=$main?></div> </div> <div id="sub"><?=$sub?></div> </div> <div id="footer">...略...</div> </div> </body> ...略... CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 9. ビューの実装 homeコントローラ(system/applications/controllers/home.php) ...略... $data->header = $this->load->view('home/header', '', TRUE); $data->main = $this->load->view('home/main', $data, TRUE); $data->sub = $this->load->view('home/side', $data, TRUE); $this->load->view('layout', $data); ...略... CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 10. 認証の実装  Redux Auth 1.4a ➔GPL or MIT License ➔ http://code.google.com/p/reduxauth/  (参考)Neo base ➔http://neo-navi.net/top/neo_base ➔デモ http://neo-navi.net/neo_base/ CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 11. JavaScriptの出力  JavaScriptファイルを出力するコントローラ ➔viewファイルにJavaScriptを書けば、 CIのヘルパーなどが使える ➔ブラウザにキャッシュされるように ヘッダ出力  <script>タグを生成するヘルパー ➔ファイルが更新されたときのために 「?YYYYMMDDHHSS」を付加 CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 12. JavaScriptの出力  viewとして処理したい場合 ➔ <?=js('default')?> • <script type="text/javascript" src="http://example.jp/phwittr/js/default.js? 200810021129"></script>  ファイルをそのまま出力したい場合 ➔ <?=js('jquery-1.2.6.min.js', FALSE)?> • <script type="text/javascript" src="http://example.jp/phwittr/js/jquery-1.2.6.min.j s"></script> CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 13. JavaScriptの出力  URIルーティング ➔ application/config/routes.php • $route['js/(S+)'] = "js/index/$1"; CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 14. Ajaxの実装  「つぶやき」の投稿 ➔jQueryを使用 ➔$.post()メソッドでPOST • $.post(URL, データ, コールバック関数, データタイプ); ➔受信用コントローラstatus/update() • データを受信して検証し、保存 • 結果をjsonで返す ➔ページを部分的に更新 CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 15. Ajaxの実装 viewファイル(system/applications/views/home/main.php) <form action="#" name="whatdoing"> <div id="post"> <span class="whatdoing">イマナニシテル?</span> <span class="textCount" id="js_textcount">140</span> <textarea id="message" class="message"></textarea> <p class="btn btnSpace"> <input type="button" name="twitter" id="twitter" class="formBtn" value=" つぶやく " /> <input type="hidden" id="ticket" value="<?=$ticket?>" /> <input type="hidden" id="page_" value="<?=PAGE_OTHER?>" /> </p> </div> </form> CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 16. Ajaxの実装 JavaScriptファイル(system/applications/views/js/default.php) /* つぶやきの投稿 */ $(function(){ $('#twitter').click(function(){ comment = $('#message').val(); $.post('<?=site_url('status/update')?>', {msg: comment, ticket: $('#ticket').val(), p: $('#page_').val()}, addComment, 'json'); $('#message').val('').focus(); $("#js_textcount").text(140); }); }); CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 17. Ajaxの実装 controllerファイル(system/applications/controllers/status.php) // Ajax つぶやき投稿の受信(一部省略されていますので、このままでは動作しません) function update() { header('Content-Type: application/json; charset=UTF-8'); $ticket = $this->session->flashdata('ticket'); if ( ! $this->input->post('ticket') || $this->input->post('ticket') !== $ticket) { echo json_encode(array('status' => 'ng', 'html' => 'チケットが異なります')); exit; } $comment = $this->input->post('msg'); $page = $this->input->post('p'); if ($this->redux_auth->logged_in()) { $this->load->model('Status_model', '', TRUE); list($id, $reply_username) = $this->Status_model-> add_comment($user_id, $reply_username, $comment); $html = $this->load->view('status/comment', $data, TRUE); echo json_encode(array('status' => 'ok', 'html' => $html)); } else { echo json_encode(array('status' => 'ng', 'html' => 'ログインしていません')); } } CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 18. Ajaxの実装 JavaScriptファイル(system/applications/views/js/default.php) function addComment(data){ if (data.status == 'ok') { $('tbody:first').prepend(data.html); $('p#last_comment').text(comment); count = parseInt($('#side_count_post').text()) + 1; $('#side_count_post').text(count); } else { alert(data.html); } } CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 19. 140文字カウントの実装 JavaScriptファイル(system/applications/views/js/default.php) /* エラーメッセージ */ $("#message").before('<p class="errorMsg">140字を超えました!</p>'); $(".errorMsg").css({display:"none"}); $("#message").bind("keyup blur submit", function(){ if( $("#message").val().length > 140){ $("#js_textcount").text(140 - $("#message").val().length).css( "color", "#FF0000"); $(".errorMsg").css({display: "block"}); $("#twitter").attr("disabled","disabed"); } else { $("#js_textcount").text(140 - $("#message").val().length ).css( "color", "#CCCCCC"); if($("#message").val().length >= 1 && $("#message").val().length != ''){ $("#twitter").attr("disabled",""); } else { $("#twitter").attr("disabled","disabled"); } $(".errorMsg").css({display:"none"}); } } ); CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 20. ヘルパーの作成  pagerヘルパー ➔offset()、pager()  アイコン画像表示のHTML生成 ➔picture()、my_pict()  投稿日時表示 ➔posted_time()  HTMLエスケープ ➔h() CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 21. Pagerヘルパー  なにもの? ➔ページを移動する ➔home?page=2 ➔「前へ」「後へ」移動  CIにはPaginationクラスがあるのに ➔Paginationクラスより低機能 ➔GETを使っている CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 22. Pagerヘルパー  GETの使い方 ➔ $config['uri_protocol']をPATH_INFOに設定する ➔ 必要な時にQUERY_STRINGをパース ➔ むろん、CIでは推奨されない方法!! • セキュリティに自信のある人だけ使ってください $this->load->helper('pager'); parse_str($_SERVER['QUERY_STRING'], $_GET); $page = intval($this->input->get('page')); $per_page = 20; $offset = offset($page, $per_page); $data->pager = pager($page, $per_page, $count, 'home'); CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 23. 参考URL  Phwittrソースコード ➔ CodeRepos • http://coderepos.org/share/browser/events/phpfra mework/codeigniter/trunk • http://svn.coderepos.org/share/events/phpframew ork/codeigniter/trunk  テストサイト ➔ http://club.h14m.org:8000/kenji/phwittr/  Framework Fightまとめサイト ➔ http://labs.strk.jp/code-fight/wiki/ CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 24. 日本CodeIgniterユーザ会  http://codeigniter.jp/  CodeIgniter日本語言語パック/ 日本語ユーザガイド作成中  メンバー募集中 CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 25. 書籍のお知らせ  日本初のCodeIgniter解説本 『CodeIgniter徹底入門』  2008年6月9日、 翔泳社より発売されました  http://codeigniter.jp/tettei/ Amazon.co.jpより ご静聴 ありがとうございました CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan