codeigniter - vreffendi.files.wordpress.com · codeigniter and its logo are property of ellislab...

30
CodeIgniter Users Group in Japan CodeIgniter and its logo are property of EllisLab Inc CodeIgniter 2008年大躍進のPHPフレームワーク 日本CodeIgniterユーザ会 Kenichi Ando & Kenji Suzuki 2008/07/21

Upload: others

Post on 30-Aug-2019

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniter 2008年大躍進のPHPフレームワーク

日本CodeIgniterユーザ会Kenichi Ando & Kenji Suzuki

2008/07/21

Page 2: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterとは?

アメリカEllisLab社が開発配布しているオープンソースのPHPフレームワーク

2006年2月リリース

http://codeigniter.com/

Page 3: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterとは?

世界第4位のPHPフレームワーク

Google Trendsによる検索数

Page 4: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterの利用例

http://www.opensourcefood.com/

Page 5: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterの利用例

http://www.2kurabe.com/

Page 6: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

フレームワークとは?

Webアプリケーションフレームワークとは?

➔Webアプリケーションの「枠組み」

➔機能としては

•過去のプログラミングの経験則の規約化

•頻繁に使う機能を抽象化(モジュール化、ライブラリ化)

➔Webアプリケーション全体を見通しよく開発できるようにするもの

Page 7: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterの10利点(1/2)

1. 少ないメモリとディスクで動く

2. 高いパフォーマンス

3. PHP4/5 対応 (Web ホスティングとの幅広い互換性)

4. 設定ファイルをほとんど触わることなく動く

5. コマンドラインによる操作を必要としない

Page 8: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterの10利点(2/2)

6. コーディング規約を硬く守ることを強要しない

7. PEAR のような大規模で一枚岩な構造のライブラリを必要としない

8. テンプレート言語の学習が必要ない

9. シンプルな機能構成

10. 明確で完全なドキュメント(仕様書)

Page 9: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterを使うメリット

速い

➔軽量で動作が高速

易い

➔習得し易い(低い学習コスト)

うまい

➔過去の習慣(コンベンション)、優れた実践(グッドプラクティス)、およびノウハウなどが、ぐっと濃縮されてつまったもの

Page 10: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterの構造

index.php

➔フロントコントローラ

application

➔アプリケーション固有

system

➔システム全体

Page 11: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

URLの構造

URIセグメントベース・アプローチhttp://example.jp/controller_class/method/arg

class Shop extends Controller {

...

function search($id){

$this­>load­>database();...

}}

http://example.jp/shop/search/123

Page 12: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

MVCモデルとは?

Controller(コントローラ)は、入力データに従って適切なデータを呼び出し、ModelやViewの連携など、アプリケーション全体の制御を行う

Model(モデル)は、データベースへのアクセスやデータの修正/加工などの処理を行う

View(ビュー)は、処理結果の表示など、画面表示を担当する

Page 13: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

Controller

class Time_message extends Controller {function index(){

// タイトル$data['title'] = '時刻メッセージ';// 現在の時刻$data['now_time'] = date("H時i分s秒");

// テンプレートに変数を代入$this­>load­>view('time_message_view', $data);

}}

system/application/controllers/time_message.php

Controllerクラスを継承

index()メソッドはデフォルトメソッド

➔http://example.jp/time_message/

Page 14: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

View

<html><head><title><?php echo $title; ?></title></head><body><?php echo $now_time; ?></body></html>

system/application/views/time_message_view.php

標準のビューファイルは、単なるPHPファイル

Page 15: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

View

<html><head><title>{title}</title></head><body>{now_time}</body></html>

system/application/views/time_message_view.php

(オプション)Smartyライクなテンプレートパーサクラス

※Controllerの記述が標準のビューファイル の場合とは、多少変わります

Page 16: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

Model

オプション(使わないことも可能)

データベース・アクセスの方法

➔標準的な問い合わせ

➔Active Record

Page 17: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

標準的な問い合わせ

// SQLクエリの実行$query = $this­>db­>query('SELECT id, name, email FROM bbs');

// 表示処理foreach ($query­>result() as $row){

echo $row­>id    . ' ';echo $row­>name  . ' ';echo $row­>email . '<br />';

}

echo 'レコード数: ' . $query­>num_rows();

Page 18: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

Active Record

$this­>db­>select('id, name, email');$query = $this­>db­>get('bbs');

foreach ($query­>result() as $row){

echo $row­>id    . ' ';echo $row­>name  . ' ';echo $row­>email . '<br />';

}

echo 'レコード数: ' . $query­>num_rows();

Page 19: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

Model

class Shop_model extends Model {

function Shop_model(){

parent::Model();$this­>load­>database();

}

function get_category_list(){

$this­>db­>order_by('id');$query = $this­>db­>get('category');return $query­>result();

}

}

Modelクラスを継承

system/application/models/shop_model.php

Page 20: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

Modelの使い方

ロードする

➔ $this­>load­>model('Shop_model');

メソッドを呼び出す

➔ $this­>Shop_model­>get_category_list();

Page 21: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

ヘルパー

主にビューで使う役に立つ関数群

オブジェクト指向でなく手続き型

どんなものがあるか?

➔日付ヘルパー(日付の生成や変換)

➔Formヘルパー(Form部品の生成)

➔セキュリティヘルパー(セキュリティ処理)

➔URLヘルパー(URLに関するもの)

➔その他もろもろ

Page 22: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

ヘルパーの使い方

ロードする

➔$this­>load­>helper('url');

使用する

➔anchor('search', '検索');

<a href=”.../search”>検索</a>

Page 23: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

ライブラリ(クラス)

オブジェクト指向

どんなものがあるか?

➔コアシステムクラス

•システムで自動的にロード

•例、ベンチマーク、入力、出力

➔データベース関連のクラス

➔その他のクラス

•例、セッション、Email、ページネーション

Page 24: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

ライブラリ(クラス)の使い方

ロードする

➔$this­>load­>library('table');

メソッドを呼び出す

$tmpl = array ('table_open' => '<table border="1" cellpadding="4" cellspacing="0">');

$this­>table­>set_template($tmpl);

$data = array(array('名前', '色', 'Size'),array('フレッド', 'ブルー', 'Small'),array('マリー', '赤', 'Large'),array('ジョン', '緑', 'Medium')

);echo $this­>table­>generate($data);

Page 25: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterのセキュリティ

フールプルーフではない!

内部セキュリティ機能

➔URIセキュリティ

•URIで使用できる文字を厳しく制限

➔GET、POST、クッキーデータ

•GETデータはクリア

➔register_globals

•強制的にoffに

Page 26: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterのセキュリティ

セキュリティ支援機能

➔XSSフィルタリング

•セキュリティヘルパーと入力クラス

➔バリデーション(検証)クラス

•POSTされたデータの検証・整形

➔クエリのエスケープ処理

•$this->db->escape()メソッド

•バインディング(例、WHERE id=?)

•Active Recordでは自動的にエスケープ処理

Page 27: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterの拡張

高い拡張性

➔ヘルパー

•作成・置き換え・継承

➔ライブラリ

•作成・置き換え・継承

•コアシステムクラスの拡張や置き換えも可能

➔フックによる拡張

•フックポイントにコードを追加

Page 28: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

日本CodeIgniterユーザ会

http://codeigniter.jp/

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

メンバー募集中

Page 29: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

新刊のお知らせ

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

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

http://codeigniter.jp/tettei/

Amazon.co.jpより

Page 30: CodeIgniter - vreffendi.files.wordpress.com · CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan CodeIgniterの10利点(2/2) 6. コーディング規約を硬く守ることを

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

終わり

ご静聴ありがとうございました。