スイーツ(笑)がハモってみた - メモあり

73
スーツ(笑)が ハモってみた 2009/02/27 株式会社Fusic 平田 哲 Copyright © Fusic Co., Ltd. All rights reserved.

Transcript of スイーツ(笑)がハモってみた - メモあり

Page 1: スイーツ(笑)がハモってみた - メモあり

スーツ(笑)がハモってみた

2009/02/27株式会社Fusic 平田 哲

Copyright © Fusic Co., Ltd. All rights reserved.

Page 2: スイーツ(笑)がハモってみた - メモあり

スーツ(笑)がハモってみた合奏してみた

2009/02/27株式会社Fusic 平田 哲

Copyright © Fusic Co., Ltd. All rights reserved.

Page 3: スイーツ(笑)がハモってみた - メモあり

0. 自己紹介

3Copyright © Fusic Co., Ltd. All rights reserved.

Page 4: スイーツ(笑)がハモってみた - メモあり

初めてのPiFでいきなり喋ります。緊張しまくりです。><

0. 自己紹介

4Copyright © Fusic Co., Ltd. All rights reserved.

Page 5: スイーツ(笑)がハモってみた - メモあり

* ** + うそです

n ∧_∧ n

+ (ヨ(* ´∀`)E)Y Y *

0. 自己紹介

5Copyright © Fusic Co., Ltd. All rights reserved.

だって大半の人知ってますもん。

Page 6: スイーツ(笑)がハモってみた - メモあり

平田 哲 (id:debility)・プログラマ

主な開発言語- PHP- Java- Perl- AIR- lingo (Adobe director)- Visual C++

0. 自己紹介

6Copyright © Fusic Co., Ltd. All rights reserved.

Page 7: スイーツ(笑)がハモってみた - メモあり

平田 哲 (id:debility)・プログラマ

DBも当然使います- PostgreSQL- MySQL- Oracle- Firebird- Access

0. 自己紹介

7Copyright © Fusic Co., Ltd. All rights reserved.

Page 8: スイーツ(笑)がハモってみた - メモあり

平田 哲 (id:debility)・プログラマ

会社での(多分)主担当- サーバ周りあれこれ- ネットワーク周りあれこれ-

・・・何屋さんなのかと。

0. 自己紹介

8Copyright © Fusic Co., Ltd. All rights reserved.

Page 9: スイーツ(笑)がハモってみた - メモあり

平田 哲 (id:debility)・プログラマ

ここ最近の喋ったヒストリ- Fukuoka.pm- AIR Business Community- PHP in Fukuoka

・・・節操がない。

0. 自己紹介

9Copyright © Fusic Co., Ltd. All rights reserved.

Page 10: スイーツ(笑)がハモってみた - メモあり

あんまし気にせずズンドコ喋ります。

0. 自己紹介

10Copyright © Fusic Co., Ltd. All rights reserved.

Page 11: スイーツ(笑)がハモってみた - メモあり

1. フレームワークの話

11Copyright © Fusic Co., Ltd. All rights reserved.

Page 12: スイーツ(笑)がハモってみた - メモあり

そもそも。なぜフレームワークを使うのか。

=楽したいからに決まってます。苦労ばかりなら使いません。

1. フレームワークの話

12Copyright © Fusic Co., Ltd. All rights reserved.

Page 13: スイーツ(笑)がハモってみた - メモあり

個人的使う理由あれこれ- システム設計が固めやすい- 特にO/Rマッパが楽- 車輪の再発明があんましいらない- 話が通じやすい(内外とも)- などなど

1. フレームワークの話

13Copyright © Fusic Co., Ltd. All rights reserved.

Page 14: スイーツ(笑)がハモってみた - メモあり

特にRails以降大きく変わった気がします。昔はもうちょい長期的な観点で得するよ的だった気もするんですが。最近だとちょっとしたところでもさっくりフレームワーク使って楽してます。

コストが下がって質が上がる→使ったほうが何かと便利。

1. フレームワークの話

14Copyright © Fusic Co., Ltd. All rights reserved.

Page 15: スイーツ(笑)がハモってみた - メモあり

でも、何使えばいいのかしら。- Zend Frameworkとか- CakePHPとか- symfonyとか- AlkeosとかCodeIgniterとか- QcodoとかSolarとか

そりゃもうたくさんあります。

1. フレームワークの話

15Copyright © Fusic Co., Ltd. All rights reserved.

Page 16: スイーツ(笑)がハモってみた - メモあり

今日は

- CakePHP- symfony

についてざっくり喋ります。

1. フレームワークの話

16Copyright © Fusic Co., Ltd. All rights reserved.

Page 17: スイーツ(笑)がハモってみた - メモあり

特に

- symfony

を掘り下げます。

1. フレームワークの話

17Copyright © Fusic Co., Ltd. All rights reserved.

Page 18: スイーツ(笑)がハモってみた - メモあり

2.ざっくりCakePHP

18Copyright © Fusic Co., Ltd. All rights reserved.

Page 19: スイーツ(笑)がハモってみた - メモあり

CakePHP- 高速開発フレームワーク- MVC- O/Rマッピング- 「設定より規約優先」- Railsラクらしい

2. ざっくりCakePHP

19Copyright © Fusic Co., Ltd. All rights reserved.

Page 20: スイーツ(笑)がハモってみた - メモあり

CakePHP- 特に小規模向けらしい- PHP4でも動く- デゖレクトリ単位で配布

2. ざっくりCakePHP

20Copyright © Fusic Co., Ltd. All rights reserved.

Page 21: スイーツ(笑)がハモってみた - メモあり

3. ざっくりsymfony

21Copyright © Fusic Co., Ltd. All rights reserved.

Page 22: スイーツ(笑)がハモってみた - メモあり

symfony- 開発パターンの自動化- MVC- O/Rマッピング- これもRailsラクらしい

3. ざっくりsymfony

22Copyright © Fusic Co., Ltd. All rights reserved.

Page 23: スイーツ(笑)がハモってみた - メモあり

3. ざっくりsymfony

23Copyright © Fusic Co., Ltd. All rights reserved.

symfony- 特に中~大規模向けらしい- PHP5(最新版だと5.2以降)- PEARでンストール

- sandboxもある

Page 24: スイーツ(笑)がハモってみた - メモあり

4. ざっくり両者比較

24Copyright © Fusic Co., Ltd. All rights reserved.

Page 25: スイーツ(笑)がハモってみた - メモあり

4. ざっくり両者比較

25Copyright © Fusic Co., Ltd. All rights reserved.

フゔル構成

app

cake

apps

config

lib

CakePHP symfony

plugins

test

web

Page 26: スイーツ(笑)がハモってみた - メモあり

4. ざっくり両者比較

26Copyright © Fusic Co., Ltd. All rights reserved.

CakePHPの構成掘り下げ

app config

controllers

models

plugins

tests

views

webroot

Page 27: スイーツ(笑)がハモってみた - メモあり

4. ざっくり両者比較

27Copyright © Fusic Co., Ltd. All rights reserved.

symfonyの構成掘り下げ①

apps frontend

backend

・・・

Page 28: スイーツ(笑)がハモってみた - メモあり

4. ざっくり両者比較

28Copyright © Fusic Co., Ltd. All rights reserved.

symfonyの構成掘り下げ②

frontend config

lib

modules

templates actions

config

templates

Page 29: スイーツ(笑)がハモってみた - メモあり

4. ざっくり両者比較

29Copyright © Fusic Co., Ltd. All rights reserved.

symfonyの構成掘り下げ③

lib form

model

symfony

Page 30: スイーツ(笑)がハモってみた - メモあり

4. ざっくり両者比較

30Copyright © Fusic Co., Ltd. All rights reserved.

構成を並べるとこんな感じ

システム

Cake本体

CakePHP symfony

M/V/C/など

PHP DB

Model/Form

Symfony本体

frontend backend

PHP DB

V/C/など V/C/など

Page 31: スイーツ(笑)がハモってみた - メモあり

4. ざっくり両者比較

31Copyright © Fusic Co., Ltd. All rights reserved.

開発の流れ

DB設計/構築

(bake)

作り込み

設計する

YAML書く

自動生成

作り込み

CakePHP symfony

Page 32: スイーツ(笑)がハモってみた - メモあり

4. ざっくり両者比較

32Copyright © Fusic Co., Ltd. All rights reserved.

中身の違い

そこそこオブジェクト指向

baker

配列

かなりオブジェクト指向

コマンド

YAML

CakePHP symfony

Page 33: スイーツ(笑)がハモってみた - メモあり

4. ざっくり両者比較

33Copyright © Fusic Co., Ltd. All rights reserved.

CakePHPの中身掘り下げ

そこそこオブジェクト指向

baker

配列

Page 34: スイーツ(笑)がハモってみた - メモあり

4. ざっくり両者比較

34Copyright © Fusic Co., Ltd. All rights reserved.

symfonyの中身掘り下げ

かなりオブジェクト指向

コマンド

YAML

Page 35: スイーツ(笑)がハモってみた - メモあり

ちょっと休憩。

35Copyright © Fusic Co., Ltd. All rights reserved.

Page 36: スイーツ(笑)がハモってみた - メモあり

5. symfony事始め

36Copyright © Fusic Co., Ltd. All rights reserved.

Page 37: スイーツ(笑)がハモってみた - メモあり

5. symfony事始め

37Copyright © Fusic Co., Ltd. All rights reserved.

いくつか注意事項・symfony1.1の話です(最新は1.2)・作法に沿っていない部分もあります・cakePHPとの比較目線で実際に使ってみた感想を元に喋っているので、本に書いてあるようなこととは若干論点がずれたりしています。

Page 38: スイーツ(笑)がハモってみた - メモあり

5. symfony事始め

38Copyright © Fusic Co., Ltd. All rights reserved.

登場するもの- symfony CLI- YAML- モデル

- Peer- Base/BasePeer

- フォーム- バリデータ

- ゕプリケーション

Page 39: スイーツ(笑)がハモってみた - メモあり

5. symfony事始め

39Copyright © Fusic Co., Ltd. All rights reserved.

登場するもの- モジュール

- ゕクション- コンポーネント- テンプレート

- ヘルパー- パーシャル- スロット- コンポーネントスロット

Page 40: スイーツ(笑)がハモってみた - メモあり

5. symfony事始め

40Copyright © Fusic Co., Ltd. All rights reserved.

登場するもの- プロペル

- クラテリゕ- オートローダ---

Page 41: スイーツ(笑)がハモってみた - メモあり

Copyright © Fusic Co., Ltd. All rights reserved. 41

多い!

5. symfony事始め

Page 42: スイーツ(笑)がハモってみた - メモあり

5. symfony事始め

42Copyright © Fusic Co., Ltd. All rights reserved.

登場するもの(重要なところだけ)- symfony CLI

- YAML

- モデル- Peer- Base/BasePeer

Page 43: スイーツ(笑)がハモってみた - メモあり

5. symfony事始め

43Copyright © Fusic Co., Ltd. All rights reserved.

登場するもの(重要なところだけ)- モジュール

- ゕクション- コンポーネント

- テンプレート

- パーシャル

Page 44: スイーツ(笑)がハモってみた - メモあり

5. symfony事始め

44Copyright © Fusic Co., Ltd. All rights reserved.

登場するもの(重要なところだけ)- プロペル

- クラテリゕ

Page 45: スイーツ(笑)がハモってみた - メモあり

5. symfony事始め

45Copyright © Fusic Co., Ltd. All rights reserved.

とりあえず使ってみる- PEARでンストールか- sandbox落としてきて置くか

いずれにせよまずはinit-project

Page 46: スイーツ(笑)がハモってみた - メモあり

5. symfony事始め

46Copyright © Fusic Co., Ltd. All rights reserved.

DB設計- YAML書く- YAMLからSQL生成する- テーブル作る- Model作る

Page 47: スイーツ(笑)がハモってみた - メモあり

5. symfony事始め

47Copyright © Fusic Co., Ltd. All rights reserved.

ゕプリ開発- init-app

- init-module- Formオブジェクト生成- YAML書く- 細かい動きは自分で書く

- の繰り返し(だいたい)

Page 48: スイーツ(笑)がハモってみた - メモあり

6. 使ってみた話

48Copyright © Fusic Co., Ltd. All rights reserved.

Page 49: スイーツ(笑)がハモってみた - メモあり

6. 使ってみた話

49Copyright © Fusic Co., Ltd. All rights reserved.

前提- 既存の二次開発- 入力I/F大体決まってる- DB構成も大体決まってる- symfonyに寄せきれない

→ とりあえずORMだけでも活かせれば

Page 50: スイーツ(笑)がハモってみた - メモあり

6. 使ってみた話

50Copyright © Fusic Co., Ltd. All rights reserved.

ログン- module作る- settings.ymlをちょっと書く- 動いた- ( ´∀`)

Page 51: スイーツ(笑)がハモってみた - メモあり

6. 使ってみた話

51Copyright © Fusic Co., Ltd. All rights reserved.

メニュー- layout.php書く- _menu.phpを書く- include_partial(‘global/menu’);- 動いた- ( ´∀`)

Page 52: スイーツ(笑)がハモってみた - メモあり

6. 使ってみた話

52Copyright © Fusic Co., Ltd. All rights reserved.

検索作る- 既存のSQL見る- Criteriaで置き換える- 置き換える- 置き換える- 置き換えた- ちゃんと取れた- ( ´∀`)

Page 53: スイーツ(笑)がハモってみた - メモあり

6. 使ってみた話

53Copyright © Fusic Co., Ltd. All rights reserved.

登録作る- Formオブジェクト作る- バリデーション書く- $paramに放り込む- bindする- isValidののちsaveする- 入った- ( ´∀`)

Page 54: スイーツ(笑)がハモってみた - メモあり

6. 使ってみた話

54Copyright © Fusic Co., Ltd. All rights reserved.

更新作る- $paramに放り込む- bindする- isValidののちsaveする- 更新された- ( ´∀`)

Page 55: スイーツ(笑)がハモってみた - メモあり

6. 使ってみた話

55Copyright © Fusic Co., Ltd. All rights reserved.

削除作る- retrieveByPKでデータ拾う- delete呼ぶ- 削除された- ( ´∀`)

Page 56: スイーツ(笑)がハモってみた - メモあり

6. 使ってみた話

56Copyright © Fusic Co., Ltd. All rights reserved.

論理削除- sfPropelParanoidBehaviorPlugin- 突っ込む- schema.yml書き換える- symfony propel:build-model- でけた- ( ´∀`)

Page 57: スイーツ(笑)がハモってみた - メモあり

7. 使ってみた話(裏)

57Copyright © Fusic Co., Ltd. All rights reserved.

Page 58: スイーツ(笑)がハモってみた - メモあり

7. 使ってみた話(裏)

58Copyright © Fusic Co., Ltd. All rights reserved.

ログン(裏)- module作る- settings.ymlをちょっと書く- 動いた- ( ´∀`)- timeoutがうまく効かない- (; ´ Д`) ??- autoload.ymlに書くのが正解

Page 59: スイーツ(笑)がハモってみた - メモあり

59Copyright © Fusic Co., Ltd. All rights reserved.

メニュー(裏)- layout.php書く- _menu.phpを書く- include_partial(‘global/menu’);- 動かない- (; ´ Д`) ??- jQueryがとにかく怒られる- Prototypeと競合してた- noConflictで解決

7. 使ってみた話(裏)

Page 60: スイーツ(笑)がハモってみた - メモあり

60Copyright © Fusic Co., Ltd. All rights reserved.

検索作る(裏)- 既存のSQL見る- Criteriaで置き換える- 置き換える- 置き換える- 置き換えた- ちゃんと取れない- (; ´ Д`) ??

7. 使ってみた話(裏)

Page 61: スイーツ(笑)がハモってみた - メモあり

61Copyright © Fusic Co., Ltd. All rights reserved.

検索作る(裏)- YAMLが記述足りかった- 書く- 挙動がもっとおかしくなった- (; ´ Д`) ????- symfony cc- まだ動かない

7. 使ってみた話(裏)

Page 62: スイーツ(笑)がハモってみた - メモあり

62Copyright © Fusic Co., Ltd. All rights reserved.

検索作る(裏)- timestampで怒られる- ソース掘りさげる- 既存のデータが過去すぎる- 少し修正- やっと動いた

7. 使ってみた話(裏)

Page 63: スイーツ(笑)がハモってみた - メモあり

63Copyright © Fusic Co., Ltd. All rights reserved.

更新作る(裏)- $paramに放り込む- bindする- isValidののちsaveする- 入らない- (; ´ Д`) ??- 全部のパラメータをきちんとセット- 動いた- ちょっと面倒(方法ありそう)

7. 使ってみた話(裏)

Page 64: スイーツ(笑)がハモってみた - メモあり

64Copyright © Fusic Co., Ltd. All rights reserved.

論理削除(裏)- sfPropelParanoidBehaviorPlugin- 突っ込む- schema.yml書き換える- symfony propel:build-model- 怒られる- (; ´ Д`) ??

7. 使ってみた話(裏)

Page 65: スイーツ(笑)がハモってみた - メモあり

65Copyright © Fusic Co., Ltd. All rights reserved.

論理削除(裏)- 削除フラグは用意してた- デフォルトの削除判定はtimestamp- 動かない- pluginちょびっと修正- 動いた

7. 使ってみた話(裏)

Page 66: スイーツ(笑)がハモってみた - メモあり

8. symfony雑感

66Copyright © Fusic Co., Ltd. All rights reserved.

Page 67: スイーツ(笑)がハモってみた - メモあり

67Copyright © Fusic Co., Ltd. All rights reserved.

ステキなところ- 開発の自動化- YAMLでかなりの部分記述できる- ORMの吐くSQLがきれい- きちんとオブジェクト指向- コントロールパネルが便利

- ↓こんなのが右上に出せる

8. symfony雑感

Page 68: スイーツ(笑)がハモってみた - メモあり

68Copyright © Fusic Co., Ltd. All rights reserved.

ステキなところ- 既存DBの活用が楽

- Criteria/schema.yml- pluginを活用したらもっと楽- NetBeansが正式サポート

8. symfony雑感

Page 69: スイーツ(笑)がハモってみた - メモあり

69Copyright © Fusic Co., Ltd. All rights reserved.

微妙なところ- 学習コストが高い

- 登場人物が多すぎる- 公式リフゔレンスが使いにくい- 小技のドキュメント/記事が少ない

とかあったらいいのに。

8. symfony雑感

Page 70: スイーツ(笑)がハモってみた - メモあり

9. ざっくりまとめ

70Copyright © Fusic Co., Ltd. All rights reserved.

Page 71: スイーツ(笑)がハモってみた - メモあり

・Railsラク ≠ Rails・symfonyは巧く乗りこなすと楽できる→ 乗りこなすまでは結構大変

とりあえず小さいものからちょこちょこ作ってみるといいと思います。いくつかシステムを作っていくうちにクセとかが身に付くので。

9. ざっくりまとめ

71Copyright © Fusic Co., Ltd. All rights reserved.

Page 72: スイーツ(笑)がハモってみた - メモあり

あと、今からsymfony始めるなら。NetBeansはかなり強力な助けになってくれるはずです。ぜひ導入検討をしてみてください。

・・・フレームワークの話してたつもりが最後はIDE紹介になってしまいました。

決して の陰謀ではありませんよ。

9. ざっくりまとめ

72Copyright © Fusic Co., Ltd. All rights reserved.

Page 73: スイーツ(笑)がハモってみた - メモあり

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

73Copyright © Fusic Co., Ltd. All rights reserved.