Affamative Way

前向きにグダグダいいながらコード書く

PHP設計勉強会に参加してきました

主催のid:shimookaさん ありがとうございました。
設計勉強会

はてなダイアリー[1]にも書きましたが、PHPフレームワークを使った実際のプロジェクトでどういう風に設計し、その結果、どこが良かったか/いまいちだったかを皆で持ち寄って議論できればと思います。

対象はsymfonyに限らず、フレームワークより外側をどうつくるか?
に焦点を置いたものであれば構いません。

現在想定している内容については、[2]を参照してください。

[1]http://d.hatena.ne.jp/shimooka/20080901/1220245667
[2]http://d.hatena.ne.jp/shimooka/20080829/1220019598

Symfony要素高めかと思ったら、意外とそんなこともなく
cakePHP,Ethna,symfonyの各部分でのコード設計をあれこれと議論といった雰囲気でした。

リスクを避けるWEBアプリケーション設計

PHPerの言う設計は主に詳細設計中心だろうということで、その辺りを中心の発表でした。

  • 設計で避けるべきリスク
    • 仕様理解のズレの補正
    • 想定される処理量、処理方式の確認
    • コーディング後に修正が難しい問題の対処
      • 命名規約・グルーピング(symfonyでいうとmoduleの分割)
  • 未来の為に
    • リスクを避ける事に固執しすぎると降着状態へ
    • 時にはコストを払って新しい技術を導入すべき
      • Unitテスト,ORマッパ,APC,Smartyを避けるとか....etc

議論ではSmartyを避けるという辺りで議論になっていました。

  • デザイナーとの分業という点
    • (過去の経験から)分業がうまくいった。はやはり解りづらいという印象
    • htmlをエンジニアが組み込むのでSmartyである必要はとくに感じない
  • 技術面から見た点
    • 導入しただけで単純に重くなる
    • E_STRICTエラー出まくり
      • これはPHP5 のSmartyライブラリでdwooというのがあるらしいのでこれで対処できるんじゃ?
    • 結局のところは、素のPHPをテンプレートとして扱うフレームワーク(cakeとかsymfonyとか)が普及してきたということもあるんじゃない?
      • Smarty使うとhelper使えない。helperだとvalidation時の処理とか便利
      • helperはcssレイアウトになってくると非常に有益
    • 素のPHPもendifとかendforeachで書けばそんなに可読性は落ちないんじゃね
<?php if( $foo): ?>
  <div>$fooがある場合に表示</div>
<?php endif; ?>

<ul>
<?php foreach( $list as $value): ?>
  <li><?php echo $value ?></li>
<?php endforeach; ?>
</ul>

APCの凄さは月曜日のPHP勉強会で発表されるそうです。
また、CakePHPConが開催されるそうなのでBakerな人は要チェックかと。

Ethna的な設計思想

  • ライトウェイトなMVC フレームワーク
  • 構造
    • Action
      • AppManager
    • View
    • Controller
  • 処理の順番
    • Action
      • authecicate -> prepare -> perform
    • View
      • preforward -> forward -> template
  • 決まり事
    • prepare
      • 値のバリデーション/フォームの準備(含む参照系DBアクセス)
    • perform
      • DBの更新処理(を呼ぶもの)
    • preforward
      • 表示にかかわることを記述(含む参照系DBアクセス)

view側で表示処理を行うのでバリデーションで、引っかかった場合の入力再現処理の記述が要らないのでcakeやsymfonyに比べると条件分岐が減るというメリットになるほどなーと、会場は反応してました。

Open PEAR Server というCPANのような登録すればライブラリを公開できるPEARライブラリを作っているそうなので、期待してます。

MVCとは何か?

  • 発表した人:halt さん

mojavi3,Ethna,cakePHPと比較してそもそもviewクラスっていらなくね?という話でした。

自分も気持ち悪い部分だったので、激しく同意!
EthnaでViewを使うメリットもあるけど気持ち悪いなぁと思いながら使ってて「あーこれが気持ち悪かったんだ」というのがよくわかりました。

感想やら

フレームワークとの上手い付き合い方を計っていく機会としてすごく有意義な時間でした。
ただ、もう少し上流と絡んだ設計の辺りも聞きたかったなーと。
実際どんな成果物だったり、設計資料を作ってるのか聞きたかった。*1

うーむ、今回聞けなかった。テスト周りの話が聞きたいなぁと思うので、oscでDocTestの話を予習してから聞きに行こうかなぁ。。

9/28 追記

Ethnaで参照周りをViewを書くってというのでエラー起きた時、そのままだと気持ち悪いんだよなーと思いつつ、めっきりEthnaを使っていないのでどうしたかをすっかり忘れていたが、過去のブログに書いてあった。

ViewからViewへのフォワードって結構便利だったのでお披露目しておきます。

*1:単純にオフレコなんだろうけども

もくもくしてきた。

本日はもくもく会@ディノですよ

  • そこでそれぞれの人が各自もくもくと自習する。
  • 途中の時間にふらっときてもよし。最後までいなくて、途中で帰るもよし。
  • 終わったあとの飲み会とかはなし。

ちょいと遅れて8時半頃から合流したんですが
すばらしいもくもくっぷりでキーボードの打音が響くのみ。
今日はlingrにも誰も来ないほどもくもくとしてました。
序盤はTDD話もあったりしたらしいんですが、聞き逃して少し残念。。


本当に静かな環境ですので
集中せざるを得ない環境に自分を追い込みたい人にはぴったりかと(含む自分)


やる気さえあれば、参加できるもくもく会。
たまーに、もぐもぐしたりごくごくしたりもできるもくもく会。

テーブルは6名分しかありませんが、気軽に参加してみるといいと思います。
来週は振り替えで24日(水)開催予定だそうですので、休み明けに一緒にもくもくしましょう〜。

遅ればせながら転職のご報告

すっかり、更新が滞ってしまってすみませんでしたm(_ _)m

新たな環境に慣れてからと思っていましたが、順応に時間がかかってしまい。*1すっかりご報告が遅れてしまいました。


予定済みのニート期間を終了しまして、8/20より株式会社ディノにて働くことになりました。TKビルの名に恥じぬようこれからよりいっそう精進したいと思っております。


まだPHP界隈やらオープンな活動では、発表もせずにイベントごとに参加するだけの人になってしまっていますが、これからは空気も読みつつ、いろいろと挑戦していきたいと思っておりますのでどうぞよろしくお願いします。

まずはSymfonyに慣れないとなと思いつつ、MacやらEmacsやら覚えることがたくさんで*2しばらくは鈍行にて進む予定ですが、ちょくちょくとフィードバックを上げれたらなと思っております。*3


今までとてもいい経験をして育って来たと思っているので*4生かして、精一杯の貢献を多方面にしていきたいと思ってます。


まずは、会社の戦力になられば。。。。
ということで、更新頻度もソーシャル的な意味での活動はよりいっそう落ちますが、純度と濃度は上げて行くつもりですので、これからもご贔屓にお願いします!!

駄文

LL出て以来、Prosessingが気になってしょうがなく、Prosessing.jsなんて知ってしまったので、最近はそっち方面に興味が沸いてきてしまいもしかしたら、脱線するかも知れませんがw


エンジニアって、やっぱり面白いなとすげー実感してます。

*1:開発環境的な意味で。。今までWinだったからMacに慣れるので手一杯だったり。。orz

*2:全部、始めてまだ1ヶ月ちょい(汗

*3:ビビリなもんで、中途半端には自信がなくてできないもんで。。。

*4:もちろんすごくいい意味で

MacBookのメモリを増設したよ

最初から2Gあるのに4Gに変えると「そんなに使わないだろー」とか「何やんの?」とか言われるんですけど、何やるにもものすごーく速くなりますぜw

2008年2月発売のFB404J/AをAppleの整備済み商品で買ったので、それで浮いたお金と考えてもおつりが来るくらいの金額で買えました。

バルク品はギャンブルになるので、信頼できるメーカーかつ安いところで、人柱使ってる人が多かったコレにしました。


トランセンド・ジャパン JETRAM DDR2 667 SO-DIMM KIT 4GB (2GB×2) JM667QSU-4GK


トランセンド・ジャパン JETRAM DDR2 667 SO-DIMM KIT 4GB (2GB×2) JM667QSU-4GK



  • トランセンド・ジャパン (2008-03-01)

  • エレクトロニクス (ASIN: B0017LURGI)





いやー本当に安くなった。
もっとも、最安店を調べるともっと安かったりするんだけどね。

僕としては、会員登録とかめんどくさい個人情報とか分散させたくないし、そこまで大きい価格差じゃなかったので、Amazonで買っちゃいましたけど

取り付け方は公式が一番わかりやすかったのでこれを参考にしました。
MacBook:メモリの取り外し方法と取り付け方法

思ったより全然簡単で、10分くらいで作業完了しました。


起動して「この Mac について」で確認して、無事に動作してることを確認。


簡単、安い、快適で大満足です。

追記

トランセンドは永久保証があるけども、購入後30日以内に以下URLから登録の必要がある。
http://www.transcend.co.jp/registration

購入した製品を登録する際に、メモリ本体に張ってあるシールのシリアルを登録する必要があるので、メモリをセットする前に登録して置いたほうがいい

お陰でいったん取り外すことになってしまった。。。orz

Carbon Emacsの設定メモ


入門 GNU Emacs 第3版

入門 GNU Emacs 第3版

大体、読んだので使い込むために取りあえずほぼ標準で使ってたけども、改めてちゃんと設定することにしたときのメモ

;; utf8
(set-language-environment "Japanese")
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)

;;color
(set-foreground-color "white")
(set-background-color "black")
(set-cursor-color "light blue")
(set-frame-parameter nil 'alpha 90 )

;; base setting
(global-font-lock-mode t)  ;;文字の色つけ
(display-time)             ;;時計を表示
(setq line-number-mode t)  ;;カーソルのある行番号を表示
(auto-compression-mode t)  ;;日本語infoの文字化け防止
(setq inhibit-startup-message t) ;;起動時のメッセージは消す
(tool-bar-mode nil) ;;ツールバーは表示しない
(setq-default tab-width 4) ;;tabは4文字分
(setq make-backup-files nil) ;; backup file setting
(setq visible-bell t) ;; 警告音を消す

;; full screen setting
(defun my-mac-toggle-max-window ()
  (interactive)
  (if (frame-parameter nil 'fullscreen)
      (set-frame-parameter nil 'fullscreen nil)
    (set-frame-parameter nil 'fullscreen 'fullboth)))
(global-set-key "\C-cm" 'my-mac-toggle-max-window)

;; encording for file name
(require 'utf-8m)
(set-file-name-coding-system 'utf-8m)

;; growl messages at file saved
(defun growlnotify-after-save-hook ()
  (shell-command
   (format "growlnotify -t \"Emacs\" -m \"saved : %s \""
		   (buffer-name (current-buffer)))))
(add-hook 'after-save-hook 'growlnotify-after-save-hook)

;; user mail-address
(setq user-full-name "hoge hoge")
(setq user-mail-address "mail@address")

参考にしたページ


あとはPHPやらプログラムを組むのに楽な設定を加えたいところだけども、まずはこの設定で使ってみることにする。


そういえば、Macのカーソル移動のショートカットがEmacsと一緒だからEmacs慣れたら便利なのね。
Mac OS XのちょっとマニアックなTips – Tender Surrender