SlideShare a Scribd company logo
1 of 44
Download to read offline
再びのPHPでオブジェクト指向プログラミング

   技術勉強会
WEB技術勉強会
RYUICHI TANAKA
2年前を振り返ってみる
PHPでオブジェクト指向

2年ほど前に挑戦している
 http://www.slideshare.net/mapserver2007/web5sli
 de-share
 http://www.slideshare.net/mapserver2007/web11-
 presentation
今見るとさすがにいろいろ足らないとこ
ろがある…。
OOPを導入した自作ブログ

2008年10月くらいから開発開始
 現在は開発終了して稼働中
 http://summer-lights.jp/diarysys4
主要機能はすべてクラス化
自作のテンプレート機構
MVCを意識
ディレクトリ構造(一部抜粋)

/
    css/
    php/
     func/ ... 関数群
     class/ … クラスファイル群
     load.php … 通常の受信処理を一括処理
     ajax.php … Ajaxの受信処理を一括処理
    tmpl/
    index.php
1.   index.php(View)はController(load.php)に表示処理を依頼する
2.   load.phpはリクエストパラメータから判断して処理を開始する
3.   func/xxx.phpはModel(php/class)に処理を依頼する
4.   Modelは処理結果をControllerに返す
5.   Controllerは処理結果を加工してViewに返す
6.   Viewは処理結果を表示する
問題点(MVC)

 Contorollerが肥大化
  すべての処理をload.php, ajax.phpで一手に引き
  受けている=保守性低下
 Modelも肥大化
  個人的にはもう一層挟んだほうがスリム化す
  ると思う
問題点(構造)

ディレクトリ構造
 MVCではなく言語単位になっているので美し
 くない
Controllerがクラス化されていない
汎用クラスとdiarysys4専用Modelが混在
 分けたほうが再利用性アップ
ルールが弱い
 必ず実装すべきメソッド定義がない
反省点を踏まえて
  再挑戦
改善(MVC)

 Modelよりコアな層を追加
  Library層を追加。ModelはLibraryに対して
  (ControllerがModelへ送るように)メッセージを
  送信する
 Libraryは原則的に汎用性を高くする
  システム専用になる場合もあり
 Libraryの用途は3つ
  DB処理
  外部サービス処理
  その他汎用的処理
改善(MVC)

 Libraryはシステムのコアを操作するので
 テストをきっちり行う
  Libraryにバグがなければそれを利用するだけ
  のModelのバグもなくなる(はず)
  Modelを利用するだけのContorollerのバグもな
  くなる(はず)
改善(MVC)

 役割分担を明確に
  Controller
    ロジックはかかない(分岐処理はOK)
    Modelを呼ぶかViewを描画するのどちらか
  Model
    システム専用のロジック(SQLなど)を書く
    Libraryを呼ぶかControllerに値を返すのどちらか
  View
    Controllerからの描画命令に従って描画するだけ
  Library
    DB接続などコアな処理または外部リソースにアクセ
    スする。汎用性を高めている。
改善(構造)

ディレクトリ構造を見直し
Railsを参考にContoroller、Model、View、
Libraryディレクトリを作成
静的ファイルはすべてView扱い
処理はひとつのファイル(load.php)で一手
に引き受けない
必要な処理ごとにContorollerをコールする
ディレクトリ構造

/
    controllers/
      ApplicationController.php … (抽象クラス)
      (各種処理ごとのController)
    models/
      (各種処理ごとのModel)
      (       Model)
    views/
      images/
      js/
    lib/
      DB.php
      DAO.php
      etc.
基本的な処理の流れ

init.phpでContorollerをインスタンス化
各画面個別のContorollerをコール
ContorollerはModelをコール
Modelは必要ならLibraryをコール
Libraryはメインの処理を実行し結果を返
す
Contorollerはlib/Template.phpをコールして
結果を指定したテンプレートを表示する
Web技術勉強会 20100925
デザインパターン
   を適用
Singletonパターン

 Singletonパターンとは
  インスタンスが必ず1つしか生成されないこと
  を保証する。
  複数のインスタンスを作る必要がない場合は
  メモリの節約のために適用することがある
 今回適用したクラス
  DB.php データベース接続クラス
DB.php
private $manager = null;
private function __construct() {}
protected function getManager($dbname) {
    // ここでDB接続処理(PDO)
    $manager = new PDO();
    return $manager;
}

ポイント:
・コンストラクタはprivateで宣言
・DB.phpは継承して使うのでインスタンスを返却するメソッド
 (getManager)はprotectedで宣言
DAO.php
class DAO extends DB {
    private static $dbaccessor = null;
    private function __construct() {}
    private function init() {} // 初期処理


    public function getInstance() {
        if (!is_object(DAO::$dbaccessor)) {
            DAO::$dbaccessor = new DAO();
        }
        DAO::$dbaccessor->init();
        return DAO::$dbaccessor;
    }


    // CRUDを処理するメソッドを以下に定義
}
DAO.php

 使い方の例
$db = DAO::getInstance(); // (1)
$sql = “INSERT INTO …”;
$bind = array(“name” => “hirasawa_yui”);
$db->insert($sql, $bind);


$db2 = DAO::getInstance(); // (1)と同じObj
// $db3 = new DAO(); // エラー
// $db4 = new DB(); // エラー
TemplateMethodパターン

 TemplateMethodパターンとは
  スーパークラスで処理の大枠を定義しておき、
  サブクラスで具体的実装を行う。
 似たような処理だけど、微妙に違う複数
 のクラスをまとめて処理したい場合に有
 効
  今回の場合、外部サービス(Twitter、Blog、は
  てブなど)を一気に処理したかった
ServiceAbstract.php

 外部サービスを処理するためのメソッド
 を定義。
 クラスはAbstract(抽象)クラスで定義
 必須メソッドはabstractメソッドで定義
 具体実装をしてしまう場合(サブクラスで
 共通な処理)はprotectedで定義
 インスタンスから呼び出すメソッドは
 publicで定義
ServiceAbstract.php
abstract class ServiceAbstract {
  function __construct($params = array()) {
      $this->prepare($params)
           ->fetch()
           ->process();
  }
  final public function get() {
      return $this->_data;
  }


  abstract protected function prepare($params);
  abstract protected function fetch();
  abstract protected function process();
ServiceBookmark.php
class ServiceBookmark extends ServiceAbstract {
 function __construct($params = array()) {
     $this->_params = $params;
     parent::__construct();
 }
 public function prepare($params) {
     // ブクマデータ取得前処理
     return $this;
 }
 public function fetch() {
     // ブクマデータ取得処理
     return $this;
 }
 public function process() {
     // ブクマデータ加工
     $this->_data = ...
 }
Web技術勉強会 20100925
使い方の例
$hatebu = new ServiceBookmark();
$data = $hatebu->get();

$twitter = new
  ServiceTwitter($param);
$data2 = $twitter->get();

ポイント:
・異なる外部サービスの処理を同じにできる。
まとめて処理する

リフレクションを使う
 リフレクションはクラスの内部情報が取得で
 きたり、内部構造を書き換えたりすることが
 できる。
 通常のクラスへのアクセス方法では不可能な
 ことが可能(インスタンスからprivateメソッド
 を操作したり、定数を書き換えたり)
具体例

$services = array("Twitter", "Blog");
 foreach ($services as $service_name) {
   $refClass = new ReflectionClass($service_name);
   $service = $refClass->newInstance();
   register($service->get());
 }



ポイント:
・文字列からインスタンスが生成可能
・手続き方法が同じならループで一気に処理可能
今回こだわった点
こだわったところ

Contorollerは必ずApplicationControllerを継
承する
 ApplicationController#render、
 ApplicationController#error はabstractで定義
 し、サブクラスで必ず実装させる
 renderは画面描画、errorはエラー画面描画。
 これらはどんな画面でも必要なのでabstractに
 した
 命名規則はRailsと同じ
こだわったところ

リクエスト、セッションはModelで扱う
 $_GET, $_SESSIONのようにグローバルを直接
 触れてしまうが、規則として直接触らないよ
 うにした。
 ApplicationControllerでリクエスト、セッショ
 ンオブジェクトを生成し、サブクラス
 Controllerで利用する。Modelに渡したい場合
 はController経由でインスタンスを渡す。
 直接触ると値のValidationができないため
 原則グローバル変数は使用禁止
こだわったところ

DB処理
 DB.phpで接続処理,DAO.phpでCRUDの実行
 どちらもSingletonで実装
 DB.phpはインスタンスすら取得できない
 インスタンスが欲しければ必ずDAO.phpにア
 クセスしなければならない=DB接続を外部か
 らさせない
 DAO.phpを定義することでPDOを抽象化
こだわったところ

require処理
 phpのrequire/includeは実行中のファイルから
 の相対パス。厄介なのはInclude元のファイル
 からの相対パスになる点。
 例:/index.phpで/class/Ajax.phpをIncludeしてい
 て、Ajax.phpでrequrieするとき、開始位置は
 「/」になる(本当は/classになってほしい)
こだわったところ

require処理
 どのファイルからrequire/includeをコールして
 もかならずプロジェクトルートからの相対パ
 スになるようにした=現在のディレクトリパ
 スを考慮する必要がない
 例:/ でも /class からでも

      Common::import(“class/Ajax”)

    でrequireされる。
こだわったところ

Libraryのテストコードを作成
 SimpleTest(http://www.simpletest.org/)を使用
 symfonyなども利用しているテスティングフ
 レームワーク
 Eclipse拡張あり(非常に良い)
 インストールが楽(requireするだけ。Eclipseで
 使う場合はそれすら不要)
  PHPUnitは非常に面倒+PHP4、PHP5で互換性な
  し
こだわったところ

CSRF対策
 ワンタイムトークン方式で自前実装
  アクセスするたびにトークンが変化
  間違ったトークンを渡すと更新できない
 管理画面での内容更新で適用
こだわったところ

  異なる外部サービスを同じ手続きで処理する
  設計
$services = array("Twitter", "Blog");
foreach ($services as $service_name) {
  $refClass = new ReflectionClass($service_name);
  $service = $refClass->newInstance();
  register($service->get());
}
  外から見ると同じ手続き(メソッド名)だが内
  部処理がすべて異なる処理を等価的に処理
  条件分岐(if, switch)未使用
LifeStream

 目的
  自分の活動内容を一挙に集約すること
 機能
  作成したシステムへのゲートウェイ・リンク
  自分が行ったPOSTを管理
   Blog、Twitter、ブックマーク、その他サービス
  システム監視(外部非公開)
   ログ一括監視
   障害監視、障害通知
トップページ(Portal)
プロジェクトページ(Project) :
・過去に作ったシステムの説明とリンク
ログインページ(Login) :
・はてな認証API+独自認証
・デザインはあえてシンプルに
管理ページ(Management) :
・プロジェクトページで表示する内容を制御・編集
開発してて思ったこと

他の言語の文化を学ぶことで得られるものが
ある
 PHPにない流儀がJavaやRubyにある
 PHPだけやってても気付けないことがある
 PHPはある意味気軽にできる(環境構築が楽)
使用できる言語をむやみに増やす必要はない
 かえって混乱する、深さが足らなくなる
 適材適所
テストがやりやすい言語を選ぶ
 結果的にPHPはやりにくい
 プログラムを書き続けるとここに行くつく

More Related Content

What's hot

Customization of DBIC::Schema::Loader
Customization of DBIC::Schema::LoaderCustomization of DBIC::Schema::Loader
Customization of DBIC::Schema::LoaderToru Yamaguchi
 
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)ひとし あまの
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~leverages_event
 
WordPress のキャッシュ機構
WordPress のキャッシュ機構WordPress のキャッシュ機構
WordPress のキャッシュ機構katanyan
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )hiro345
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUpKenichi Mukai
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみたYuki Takei
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12kenjis
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクトYuki Okamoto
 
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクトアシアル株式会社
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜Sotaro Omura
 
WordPress関数の処理コストを考えよう
WordPress関数の処理コストを考えようWordPress関数の処理コストを考えよう
WordPress関数の処理コストを考えようNaoki Matsuda
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
20091030cakephphandson 02
20091030cakephphandson 0220091030cakephphandson 02
20091030cakephphandson 02Yusuke Ando
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)Rui Hirokawa
 
Rails Controller Fundamentals
Rails Controller FundamentalsRails Controller Fundamentals
Rails Controller FundamentalsTakashi SAKAGUCHI
 

What's hot (20)

Customization of DBIC::Schema::Loader
Customization of DBIC::Schema::LoaderCustomization of DBIC::Schema::Loader
Customization of DBIC::Schema::Loader
 
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
 
WordPress のキャッシュ機構
WordPress のキャッシュ機構WordPress のキャッシュ機構
WordPress のキャッシュ機構
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUp
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
 
Flask勉強会その1
Flask勉強会その1Flask勉強会その1
Flask勉強会その1
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
 
test
testtest
test
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
 
Pyramid入門
Pyramid入門Pyramid入門
Pyramid入門
 
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
 
WordPress関数の処理コストを考えよう
WordPress関数の処理コストを考えようWordPress関数の処理コストを考えよう
WordPress関数の処理コストを考えよう
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
20091030cakephphandson 02
20091030cakephphandson 0220091030cakephphandson 02
20091030cakephphandson 02
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
Rails Controller Fundamentals
Rails Controller FundamentalsRails Controller Fundamentals
Rails Controller Fundamentals
 

Viewers also liked

Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回龍一 田中
 
Web技術勉強会12回目
Web技術勉強会12回目Web技術勉強会12回目
Web技術勉強会12回目龍一 田中
 
Web技術勉強会 20110514
Web技術勉強会 20110514Web技術勉強会 20110514
Web技術勉強会 20110514龍一 田中
 
Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)龍一 田中
 
Web技術勉強会 第28回
Web技術勉強会 第28回Web技術勉強会 第28回
Web技術勉強会 第28回龍一 田中
 
Web技術勉強会9回目2(Slideshare用)
Web技術勉強会9回目2(Slideshare用)Web技術勉強会9回目2(Slideshare用)
Web技術勉強会9回目2(Slideshare用)龍一 田中
 
Web技術勉強会 第26回
Web技術勉強会 第26回Web技術勉強会 第26回
Web技術勉強会 第26回龍一 田中
 
Web技術勉強会 第19回
Web技術勉強会 第19回Web技術勉強会 第19回
Web技術勉強会 第19回龍一 田中
 
Web技術勉強会 第29回
Web技術勉強会 第29回Web技術勉強会 第29回
Web技術勉強会 第29回龍一 田中
 
Web技術勉強会6回目
Web技術勉強会6回目Web技術勉強会6回目
Web技術勉強会6回目龍一 田中
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424龍一 田中
 
Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)龍一 田中
 
Test Driven Development and Quality Improvement
Test Driven Development and Quality ImprovementTest Driven Development and Quality Improvement
Test Driven Development and Quality ImprovementCarlos Solís
 
Web技術勉強会6回目
Web技術勉強会6回目Web技術勉強会6回目
Web技術勉強会6回目龍一 田中
 
Web技術勉強会 20110723
Web技術勉強会 20110723Web技術勉強会 20110723
Web技術勉強会 20110723龍一 田中
 
Web技術勉強会 第34回
Web技術勉強会 第34回Web技術勉強会 第34回
Web技術勉強会 第34回龍一 田中
 
WebSocketでリアルタイム処理をする
WebSocketでリアルタイム処理をするWebSocketでリアルタイム処理をする
WebSocketでリアルタイム処理をする龍一 田中
 

Viewers also liked (17)

Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回
 
Web技術勉強会12回目
Web技術勉強会12回目Web技術勉強会12回目
Web技術勉強会12回目
 
Web技術勉強会 20110514
Web技術勉強会 20110514Web技術勉強会 20110514
Web技術勉強会 20110514
 
Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)
 
Web技術勉強会 第28回
Web技術勉強会 第28回Web技術勉強会 第28回
Web技術勉強会 第28回
 
Web技術勉強会9回目2(Slideshare用)
Web技術勉強会9回目2(Slideshare用)Web技術勉強会9回目2(Slideshare用)
Web技術勉強会9回目2(Slideshare用)
 
Web技術勉強会 第26回
Web技術勉強会 第26回Web技術勉強会 第26回
Web技術勉強会 第26回
 
Web技術勉強会 第19回
Web技術勉強会 第19回Web技術勉強会 第19回
Web技術勉強会 第19回
 
Web技術勉強会 第29回
Web技術勉強会 第29回Web技術勉強会 第29回
Web技術勉強会 第29回
 
Web技術勉強会6回目
Web技術勉強会6回目Web技術勉強会6回目
Web技術勉強会6回目
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424
 
Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)
 
Test Driven Development and Quality Improvement
Test Driven Development and Quality ImprovementTest Driven Development and Quality Improvement
Test Driven Development and Quality Improvement
 
Web技術勉強会6回目
Web技術勉強会6回目Web技術勉強会6回目
Web技術勉強会6回目
 
Web技術勉強会 20110723
Web技術勉強会 20110723Web技術勉強会 20110723
Web技術勉強会 20110723
 
Web技術勉強会 第34回
Web技術勉強会 第34回Web技術勉強会 第34回
Web技術勉強会 第34回
 
WebSocketでリアルタイム処理をする
WebSocketでリアルタイム処理をするWebSocketでリアルタイム処理をする
WebSocketでリアルタイム処理をする
 

Similar to Web技術勉強会 20100925

WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
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
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01Yusuke Ando
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugY Watanabe
 
8分で分かる最近のCakePHP
8分で分かる最近のCakePHP8分で分かる最近のCakePHP
8分で分かる最近のCakePHPMasashi Shinbara
 
Php5 4勉強会
Php5 4勉強会Php5 4勉強会
Php5 4勉強会Yuji Otani
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義ria1201
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるjamadam
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (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
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>LaravelハンズオンセミナーTatsuyoshi Mashiko
 
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかSecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかHiroshi Tokumaru
 
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニックWordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニックTakashi Uemura
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話infinite_loop
 
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング純生 野田
 

Similar to Web技術勉強会 20100925 (20)

WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
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
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
 
8分で分かる最近のCakePHP
8分で分かる最近のCakePHP8分で分かる最近のCakePHP
8分で分かる最近のCakePHP
 
Php5 4勉強会
Php5 4勉強会Php5 4勉強会
Php5 4勉強会
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
 
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかSecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
 
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニックWordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
Silex入門
Silex入門Silex入門
Silex入門
 
dm-thin-internal-ja
dm-thin-internal-jadm-thin-internal-ja
dm-thin-internal-ja
 
traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話
 
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
 

More from 龍一 田中

Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門龍一 田中
 
Web技術勉強会 20120728
Web技術勉強会 20120728Web技術勉強会 20120728
Web技術勉強会 20120728龍一 田中
 
Web技術勉強会 20120609
Web技術勉強会 20120609Web技術勉強会 20120609
Web技術勉強会 20120609龍一 田中
 
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドするWeb技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする龍一 田中
 
Web技術勉強会 20111112
Web技術勉強会 20111112Web技術勉強会 20111112
Web技術勉強会 20111112龍一 田中
 
Web技術勉強会 20110611
Web技術勉強会 20110611Web技術勉強会 20110611
Web技術勉強会 20110611龍一 田中
 
Web技術勉強会 20110528
Web技術勉強会 20110528Web技術勉強会 20110528
Web技術勉強会 20110528龍一 田中
 
Web技術勉強会 第38回
Web技術勉強会 第38回Web技術勉強会 第38回
Web技術勉強会 第38回龍一 田中
 
Web技術勉強会 第37回
Web技術勉強会 第37回Web技術勉強会 第37回
Web技術勉強会 第37回龍一 田中
 
Web技術勉強会 第31回
Web技術勉強会 第31回Web技術勉強会 第31回
Web技術勉強会 第31回龍一 田中
 
Web技術勉強会 第30回
Web技術勉強会 第30回Web技術勉強会 第30回
Web技術勉強会 第30回龍一 田中
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目龍一 田中
 
Web技術勉強会 第18回
Web技術勉強会 第18回Web技術勉強会 第18回
Web技術勉強会 第18回龍一 田中
 
Web技術勉強会11回目
Web技術勉強会11回目Web技術勉強会11回目
Web技術勉強会11回目龍一 田中
 

More from 龍一 田中 (14)

Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門
 
Web技術勉強会 20120728
Web技術勉強会 20120728Web技術勉強会 20120728
Web技術勉強会 20120728
 
Web技術勉強会 20120609
Web技術勉強会 20120609Web技術勉強会 20120609
Web技術勉強会 20120609
 
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドするWeb技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
 
Web技術勉強会 20111112
Web技術勉強会 20111112Web技術勉強会 20111112
Web技術勉強会 20111112
 
Web技術勉強会 20110611
Web技術勉強会 20110611Web技術勉強会 20110611
Web技術勉強会 20110611
 
Web技術勉強会 20110528
Web技術勉強会 20110528Web技術勉強会 20110528
Web技術勉強会 20110528
 
Web技術勉強会 第38回
Web技術勉強会 第38回Web技術勉強会 第38回
Web技術勉強会 第38回
 
Web技術勉強会 第37回
Web技術勉強会 第37回Web技術勉強会 第37回
Web技術勉強会 第37回
 
Web技術勉強会 第31回
Web技術勉強会 第31回Web技術勉強会 第31回
Web技術勉強会 第31回
 
Web技術勉強会 第30回
Web技術勉強会 第30回Web技術勉強会 第30回
Web技術勉強会 第30回
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目
 
Web技術勉強会 第18回
Web技術勉強会 第18回Web技術勉強会 第18回
Web技術勉強会 第18回
 
Web技術勉強会11回目
Web技術勉強会11回目Web技術勉強会11回目
Web技術勉強会11回目
 

Web技術勉強会 20100925