Movatterモバイル変換


[0]ホーム

URL:


SlideShare a Scribd company logo

第21回Creators MeetUp

1 like2,399 views
Kenichi Mukai
Kenichi Mukai

Session04「なぜフレームワークを使うのか」プログラミング言語 (PHPなど) の文法は理解したが、Web アプリケーションフレームワークを使った事がない方を対象に、べた書き(モノリシック)なプログラムを、Web アプリケーションフレームワーク を使い修正し、何が違うのかを比較します。

1 of 59
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
なぜフレームワークを 使うのか 第21回Creators MeetUp 2014/10/18 向井賢一
会場のスタッフの皆様 株式会社LIG 様 ありがとうございます!
自己紹介 • 向井賢一 • PHPカンファレンスのスタッフ • https://twitter.com/mukaken • https://www.facebook.com/mukaken
先日(10/11)開催されたPHPカンファレンス2014の 4F置いていたドリンクマシーンは 本日の主催者の小島さんにセットしてもらいました。 ありがとうございました!!
運営しているサイト • laravel.jp • FuelPHP 日本語ニュース (facebook) • Laravel 日本語ニュース (facebook) • FuelPHP 英語コミュニティ (facebook) • FuelPHP 日本語コミュニティ (facebook) • Laravel jp 日本語コミュニティ (facebook)
注意!
Web フレームワークは プログラム が分からないと 使えません! $factorial = function($n) use (&$factorial) { if ($n <= 1) return 1; else return $n * $factorial($n - 1); }; var_dump($factorial(6));
Web アプリケーションフレームワーク の事を フレームワーク と略しています
セッションの内容 • 何かしらのプログラミング言語 は一通り理解し たが、 Web アプリケーションフレームワーク を使った事がない方を対象にべた書き(モノリシッ ク)な プログラムを、Web アプリケーション フレームワーク を使い修正し、何が違うのかを 比較をします
セッションの目次 • フレームワークの説明でよく使われる用語の解説 • なぜフレームワークを使うのか ? • 実際に PHP を使って説明 • 参考サイト と 参考文献 • まとめ
フレームワークの説明で よく使われる用語の解説
MVC モデル • 現在の フレームワーク で主流のアーキテクチャ • MVCはモデル、ビュー、コントローラの略で、 この3つの部品に分けて実装する • Web で使われているフレームワークは、正確に は元祖 MVC ではなく MVC 2
DRY 原則 • DRY は Don’t Repeat Yourself (繰り返しをさ けること)の略 • プログラムを作る際にコピー&ペーストをする と、修正するときに大変な事になりますよ、と の教訓 『達人プログラマー』の P.27 より
リファクタリング • コードの記述のやり直し、再作業、再設計 • リファクタリングを行う場面は、二重化、直交 してない設計、時代遅れの知識、パフォーマン スに問題がある場合 『達人プログラマー』の P.188 より
コーディング規約 • プログラミング言語 はいろいろな記述ができる が、記述の統一性をもたせること • 主には、命名規則、コーディングスタイル、禁 止事項の事 • 例 : インデントをハードタブかソフトタブかの どちらかに統一する
設定より規約 (CoC) • 一定のルールに従ってファイルやクラスの名前を 決めていれば設定不要で動作する機構 • Ruby on Rails が取り入れた設計思想で話題に なった • 逆の設計思想で「規約より設定」を採用したフ レームワークも多数ある
フレームワークの イメージ ベテランのエンジニアに聞くと!
本棚に例えると • 何も考えずに本を本棚にしまうと、どこに何の 本があるか分からない • フレームワークを使うと図書館のように整理整 頓された本棚になり、どこに何があるかは一目 瞭然
なぜフレームワークを 使うのか ? 現代のソフトウェア開発の問題・要求
いままでの開発で、 こんな事に困った事ありませんか? • チームで開発するさいに、それぞれの開発スタイル がバラバラで、コミュニケーションに時間がかかる • チームで開発するさいに、新たにチームに加わって もらう開発者に説明するのに時間がかかりすぎる • 過去に自分で開発したソースを読み返すと、どこに 何の記述がしてあるか分からなくて、解読するのに 時間がかかる
近年のビジネス速度 • 1990年代までのソフトウェアは業務の効率化を 目的として作られ、一度作ったら長期間変更し ないまま使い続ける • 現在のソフトウェアはビジネスの変化に合わせ て、その都度変更していく • 現在ではソフトウェアのリリースサイクルが劇的 に短くなってきている
現在のビジネスでは ソフトウェアは 常に作り替えなければならない Amazon は1時間に1,000回以上 デプロイしているそうです
実際に PHP を使って 説明 前田さんの発表資料から引用・抜粋させて いただきました。 『フラットなPHPからフレームワークへ』から抜粋 http://www.slideshare.net/brtriver/php-14295877
モノリシックなPHPを リファクタリングによって フレームワークに 書き換える
モノリシックなPHP View部分の分離 アプリケーション(ドメイン)部分の分離 フレームワーク
DBからデータ取得し 取得したデータを HTMLで表示する
<?php $pdo = new PDO( 'mysql:host=localhost;dbname=blog_db;charset=utf8', 'myuser', 'mypassword', array(PDO::ATTR_EMULATE_PREPARES => false) ); $stmt = $pdo->query('SELECT id, title FROM post'); ?> <html> <head> DBからデータ取得 <title>投稿の一覧</title> </head> <body> <h1>投稿の一覧</h1> <ul> list.php <?php while ($row = $stmt->fetch(PDO::FETCH_ASSOC)): ?> <li> <a href="show.php?id=<?php echo htmlspecialchars($row['id'], ENT_QUOTES, 'utf-8') ?>"> 取得したデータを表示 <?php echo htmlspecialchars($row['title'], ENT_QUOTES, 'utf-8') ?> </a> </li> <?php endwhile; ?> </ul> </body> </html>
クライアントサーバー Browser PHP + HTML list.php リクエスト レスポンス
悪い点 アプリケーションの拡張性が無い 体系化されていない 再利用性がない
View部分の分離
<?php $pdo = new PDO( 'mysql:host=localhost;dbname=blog_db;charset=utf8', 'myuser', 'mypassword', array(PDO::ATTR_EMULATE_PREPARES => false) ); $stmt = $pdo->query('SELECT id, title FROM post'); ?> <html> <head> <title>投稿の一覧</title> </head> <body> <h1>投稿の一覧</h1> <ul> show.php ロジック部分 View(HTML)部分 <?php while ($row = $stmt->fetch(PDO::FETCH_ASSOC)): ?> <li> <a href="show.php?id=<?php echo htmlspecialchars($row['id'], ENT_QUOTES, 'utf-8') ?>"> <?php echo htmlspecialchars($row['title'], ENT_QUOTES, 'utf-8') ?> </a> </li> <?php endwhile; ?> </ul> </body> </html>
show.php <?php $pdo = new PDO( 'mysql:host=localhost;dbname=blog_db:charset=utf8', 'myuser', 'mypassword', ロジック部分 array(PDO::ATTR_EMULATE_PREPARES => false) ); $stmt = $pdo->query('SELECT id, title FROM post'); // HTML部分のコードを読み込む require 'templates/list.php'; 別ファイルに分離
クライアントサーバー controller Browser PHP list.php リクエスト レスポンス view HTML template/list.php
クライアントサーバー controller Browser PHP list.php リクエスト view json template/list-json.php レスポンス
良い点 View部分の分離 テンプレートの変更に強い
アプリケーション(ドメイン) 部分の分離
index.php <?php $pdo = new PDO( 'mysql:host=localhost;dbname=blog_db:charset=utf8', 'myuser', 'mypassword', データベースへ接続する array(PDO::ATTR_EMULATE_PREPARES => false) ); $stmt = $pdo->query('SELECT id, title FROM post'); 全てのポストを取得する
ドメイン データベースへ接続する 全てのポストを取得する model.php に分離
<?php // model.php function get_database_connection() { $pdo = new PDO( 'mysql:host=localhost;dbname=blog_db;charset=utf8', 'myuser', 'mypassword', array(PDO::ATTR_EMULATE_PREPARES => false) ); return $pdo; } function get_all_posts() { $pdo = get_database_connection(); $stmt = $pdo->query('SELECT id, title FROM post'); $posts = array(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { get_database_connection $posts[] = $row; } get_all_posts return $posts; } model.php
リファクタリング後のlist.php <?php require 'model.php'; $posts = get_all_posts(); require 'templates/list.php'; ロジック読込 全ポストを取得 ビュー読込 コントローラーは制御するだけ
良い点 アプリケーション(ドメイン)部分の分離 コントローラが本来のコントローラーに シンプルなMVC
controller Browser PHP list.php クライアントサーバー リクエスト レスポンス HTML view model template/list.php Logic model.php get_all_posts $POSTS
フレームワークを 使っても失敗する例フレームワークを使っても 意味がない例
よくある失敗例 • フレームワークの約束(設計思想)に沿って作って ない (例 : フレームワークが用意した設定ファイ ルがあるのに、違う箇所に設定を書いてしまう) • 通称ファット・コントローラとよばれている、 動くからといって何の処理も1カ所に記述してし まう
フレームワークの種類 プログラミング言語は、いろいろな用途のものがあるが、 フレームワークにも用途別に別れている。
PHPは歯ブラシである PHPは歯ブラシくらい興奮に値する。 シンプルで、毎日使う便利な道具。 PHPの発案者 : Rasmus Lerdorf http://j.ktamura.com/archives/1390
プログラミング言語の分類 高級品Haskell OCaml F# Scala Ruby Python C Java C# 日用品PHP 小規模大規模 ※高級品は使うのに覚悟がいる、日用品は手軽に使える、という意味です
PHP フレームワークの分類 高級品BEAR.Sunday Symfony CakePHP Zend Framework 2 日用品Laravel CodeIgniter Yii 小規模大規模
他言語でイメージ 言語大規模重量高速軽量 PHP Symfony Laravel CodeIgniter Ruby Ruby on Rails Sinatra Python Django Flask Haskell Yesod Snap
参考サイト・文献
参考サイト • フラットなPHPからフレームワークへ • http://www.slideshare.net/brtriver/php-14295877
PHP でアーキテクチャを 学ぶならこの本 効率的なWebアプリケーションの作り方 ~PHPによるモダン開発入門 パーフェクトPHP
アーキテクチャー集で 有名な本 2000.12.04発売 未だに、いろいろな文献から よく引用されている ソフトウェアアーキテクチャ ソフトウェア開発のためのパターン体系 http://www.kindaikagaku.co.jp/information/kd0283.htm
プログラマーの心得的な本 達人プログラマー システム開発の職人から名匠への道
その他1 Chef実践入門 CakePHP2 実践入門 ~コードによるインフラ構成の自動化
その他2 Webアプリケーション設計・実装のための フレームワーク活用の技術 Software Design (ソフトウェアデザイン) 2014年4月号 なぜMVCモデルは誤解されるのか?
ウンチクを語りたい人に おすすめの本 Smalltalk という言語で MVC について語られています SMALLTALKで学ぶ オブジェクト指向プログラミングの本質
まとめ フレームワークを使う理由 • チーム開発のさいの共通認識になる • 整理整頓された見渡しの良いプログラムになり 変更が容易になる • 近年のビジネス速度の変化に柔軟に対応できる アーキテクチャの構築ができる
ご清聴 ありがとうございました
Ad

Recommended

PDF
Pyramid入門
Atsushi Odagiri
 
PDF
Flask勉強会その1
Masato Kawamura
 
PDF
今、最もイケてるPHPフレームワークLaravel4
アシアル株式会社
 
PDF
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
 
KEY
FuelPHPをさわってみて
Sotaro Omura
 
PDF
FuelPHPで3種のprofilerを使ってみた
Katsuhiro Miura
 
PDF
10分でわかるFuelPHP @ 2011/12
kenjis
 
KEY
最近、僕がハマったFuelPHPの紹介
Naoto Mawatari
 
PDF
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
 
PDF
はじめての FuelPHP
Sho A
 
PDF
実"戦"CakePHP Plugin
Kenichirou Oyama
 
PPT
今、最もイケてるPHPフレームワークLaravel4
leverages_event
 
PDF
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
 
PPTX
今、最も勢いのあるWebフレームワーク「fuel php」
Soudai Sone
 
PDF
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
kenjis
 
PPTX
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
Mika Kane
 
PDF
CodeIgniter入門
Sho A
 
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
 
PDF
Osc2014
Soudai Sone
 
PPT
Puppet Best Practices? at COOKPAD
Gosuke Miyashita
 
PDF
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
Rui Hirokawa
 
PPTX
Open Source System Administration Framework - Func
Gosuke Miyashita
 
PDF
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
 
PDF
NetBeansではじめる FuelPHP
Junichi Yamamoto
 
PPTX
Fuelphp1.8を始めたい
運営 sollastudio
 
PDF
Djangoによるスマホアプリバックエンドの実装
Nakazawa Yuichi
 
PDF
Fuel php osc tokyo2012
Fumito Mizuno
 
PDF
PHPの今とこれから2021
Rui Hirokawa
 
PDF
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
 
PPTX
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
 

More Related Content

What's hot(20)

PDF
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
 
PDF
はじめての FuelPHP
Sho A
 
PDF
実"戦"CakePHP Plugin
Kenichirou Oyama
 
PPT
今、最もイケてるPHPフレームワークLaravel4
leverages_event
 
PDF
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
 
PPTX
今、最も勢いのあるWebフレームワーク「fuel php」
Soudai Sone
 
PDF
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
kenjis
 
PPTX
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
Mika Kane
 
PDF
CodeIgniter入門
Sho A
 
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
 
PDF
Osc2014
Soudai Sone
 
PPT
Puppet Best Practices? at COOKPAD
Gosuke Miyashita
 
PDF
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
Rui Hirokawa
 
PPTX
Open Source System Administration Framework - Func
Gosuke Miyashita
 
PDF
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
 
PDF
NetBeansではじめる FuelPHP
Junichi Yamamoto
 
PPTX
Fuelphp1.8を始めたい
運営 sollastudio
 
PDF
Djangoによるスマホアプリバックエンドの実装
Nakazawa Yuichi
 
PDF
Fuel php osc tokyo2012
Fumito Mizuno
 
PDF
PHPの今とこれから2021
Rui Hirokawa
 
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
 
はじめての FuelPHP
Sho A
 
実"戦"CakePHP Plugin
Kenichirou Oyama
 
今、最もイケてるPHPフレームワークLaravel4
leverages_event
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
 
今、最も勢いのあるWebフレームワーク「fuel php」
Soudai Sone
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
kenjis
 
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
Mika Kane
 
CodeIgniter入門
Sho A
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
 
Osc2014
Soudai Sone
 
Puppet Best Practices? at COOKPAD
Gosuke Miyashita
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
Rui Hirokawa
 
Open Source System Administration Framework - Func
Gosuke Miyashita
 
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
 
NetBeansではじめる FuelPHP
Junichi Yamamoto
 
Fuelphp1.8を始めたい
運営 sollastudio
 
Djangoによるスマホアプリバックエンドの実装
Nakazawa Yuichi
 
Fuel php osc tokyo2012
Fumito Mizuno
 
PHPの今とこれから2021
Rui Hirokawa
 

Similar to 第21回Creators MeetUp(20)

PDF
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
 
PPTX
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
 
PDF
Web技術勉強会 20100925
龍一 田中
 
PDF
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
 
KEY
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
 
PPT
Php+Word Press
Hideo Kashioka
 
PDF
PHPの今とこれから2025 (PHP Conference Japan 2025)
Rui Hirokawa
 
PDF
20091030cakephphandson 01
Yusuke Ando
 
PDF
FukuokaPHP 3
ichikaway
 
PPTX
PHPCON_TOKYO_2022_Bigginer.pptx
Hideo Kashioka
 
PDF
PHPの今とこれから2019
Rui Hirokawa
 
PDF
フレームワークを使うべき 3 つの理由
Kenichi Mukai
 
PDF
Phpcon tokyo 20120_bigginer
Hideo Kashioka
 
PDF
Silex入門
Takuya Sato
 
PDF
PHPの今とこれから2024 at PHP Conference Japan 2024
Rui Hirokawa
 
PPTX
php in ruby
do_aki
 
PPTX
PHP と SAPI と ZendEngine3 と
do_aki
 
PDF
退職PDFメーカーの作り方
Yo Ya
 
PDF
WebAPIではじめるphp入門
Hiroaki Murayama
 
PDF
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Kite Koga
 
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
 
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
 
Web技術勉強会 20100925
龍一 田中
 
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
 
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
 
Php+Word Press
Hideo Kashioka
 
PHPの今とこれから2025 (PHP Conference Japan 2025)
Rui Hirokawa
 
20091030cakephphandson 01
Yusuke Ando
 
FukuokaPHP 3
ichikaway
 
PHPCON_TOKYO_2022_Bigginer.pptx
Hideo Kashioka
 
PHPの今とこれから2019
Rui Hirokawa
 
フレームワークを使うべき 3 つの理由
Kenichi Mukai
 
Phpcon tokyo 20120_bigginer
Hideo Kashioka
 
Silex入門
Takuya Sato
 
PHPの今とこれから2024 at PHP Conference Japan 2024
Rui Hirokawa
 
php in ruby
do_aki
 
PHP と SAPI と ZendEngine3 と
do_aki
 
退職PDFメーカーの作り方
Yo Ya
 
WebAPIではじめるphp入門
Hiroaki Murayama
 
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Kite Koga
 
Ad

More from Kenichi Mukai(10)

PDF
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
Kenichi Mukai
 
PDF
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
Kenichi Mukai
 
PDF
Laravel Meetup Tokyo Vol.3 告知 LT
Kenichi Mukai
 
PDF
魔法少女 Laravel 2014
Kenichi Mukai
 
PDF
Creators meetup5
Kenichi Mukai
 
PDF
php-study69
Kenichi Mukai
 
PDF
魔法少女 Laravel
Kenichi Mukai
 
KEY
PHPカンファレンス 2012 フレームワークアップデート FuelPHP
Kenichi Mukai
 
PDF
Osc2012 fall fuel_php
Kenichi Mukai
 
PDF
Ospn fuel php
Kenichi Mukai
 
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
Kenichi Mukai
 
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
Kenichi Mukai
 
Laravel Meetup Tokyo Vol.3 告知 LT
Kenichi Mukai
 
魔法少女 Laravel 2014
Kenichi Mukai
 
Creators meetup5
Kenichi Mukai
 
php-study69
Kenichi Mukai
 
魔法少女 Laravel
Kenichi Mukai
 
PHPカンファレンス 2012 フレームワークアップデート FuelPHP
Kenichi Mukai
 
Osc2012 fall fuel_php
Kenichi Mukai
 
Ospn fuel php
Kenichi Mukai
 
Ad

第21回Creators MeetUp


[8]ページ先頭

©2009-2025 Movatter.jp