「 2011年は、Rails3を使おう!〜masuidriveに学ぶ」に参加してきました。
- @masuidriveこと増井さんが講演されると言うことだったので、2011年は、Rails3を使おう!〜masuidriveに学ぶに参加してきました。
- 備忘録がてらメモをあげておきます。
第1部 Rails3情報源の歩き方 〜公式サイトの歩き方から定番サイト、必見コンテンツまで一挙ご紹介(西村賢氏)
- @knsmrこと西村賢さん
- Ruby on Rails は英語情報が豊富
- Rails Document の Rails Guidsがオススメ
- Ruby, Railsにはテスト文化があり、すばらしい
- いいプラグインが知りたかったら、Asakusa.rbに参加するとよい
- ジャンル別ならRuby Tool Boxを見るといい
- Rails3で動くか確認するには、RailsPlugins.orgで互換性を確認するといいよ
- screencastsが豊富
- カンファレンス
- RubyConf, RailsConf, RubyKaigi, EuRuKo, Regional RubyConf, RubyWorldConference, RailsDevCon
- 日本語情報はRailsHubを見てね!
第2部 Rails3を使おう! 〜Railsの設計思想の変化とRails2からの移行(増井雄一郎氏)
- Ruby on Railsの歴史をさらっと
- 2004/07 〜 2005/12 1.0, 2007/12 2.0, 2010/08 3.0, 2010/11 3.0.3
- Rails 1.0
- Rails 2.0
- Rails2 リリース後
- Sinatra, Merb + DataMapper
- Sinatra
- Simple
- Merb+DataMapper
- RailsがMerb から得た物
- Passenger
- Heroku
- Heroku, Engine Yard App Cloud like, New Relic アプリ管理サービスあり, Rails周辺のビジネスが成り立っている
- Rails3で何が変わったのか
- Sexy になった(出るとこは出て引っ込むところは引っ込んでいる)
- routes.rb hash => method 可読性が上がった
- Rails 3
- Full stack, but Modulable, ActiveRecordの新クエリエンジン(Arel), 新しいRouting engine, Plugin API, Bundler
- Rails2 => Rails3 Upgrade
- Rails3の安定度
- no clash, no change API, performance
- Performance
- モジュール構造になると、メソッド呼び出しが増え、どうしても遅くなる, 特にRails 3.0.0のActiveRecordが遅かった, 3.0.2で大きく改善している
- コードの書き換えをするなら
- コードの書き換え
- config/*, config/routes.rb, app/models/* あたり
- Peepcode
- screencast, Rails 3 Upgrade Handbookが参考になるよ
- 結論
- 新規アプリはRails3で
- テスト書いてないならUpgradeはあきらめる
- PluginのRails3対応度次第
- ActiveRecordは後方互換を生かしつつ
- Routingを書き換えるのはそれほど問題ではない
- Rails3の特徴
- ActiveRecord 3
- Hash > Method
- Bundler
- 依存するGemのインストール, バージョン管理, Gemfile
- And more..
- Erb, ActionMailr, etc.
- ActiveRecord 3
- Rails3に期待すること
- Plugin APIにより、Pluginの互換問題がすくなるなる, module化によってパフォーマンスの最適化が行いやすくなるといいな
寒い日が続きますね
それはともかくMacBook Air 11インチ欲しい!
The Agile Samuraiの目次を訳してみた
The Agile Samurai
- 「Samurai」て、海外では「達人」みたいなイメージでしょうか。
- ご購入はこちらから
- 楽しい紹介動画はこちらから
訳してみました
- Part 1. Introducing Agile: アジャイルの導入
- Part 2. Agile Project Inception: アジャイルプロジェクトを始めよう
- Chapter 3. How to get everyone on the bus: チーム全員で取り組もう
- Chapter 4. Seeing the big picture: 全体像を把握しよう
- Chapter 5. Making it real: 現実にしよう
- Part 3. Planning Agile Projects: アジャイルプロジェクトを計画しよう
- Part 4. Executing Agile Projects: アジャイルプロジェクトを実行しよう
- Part 5. Creating Agile Software: アジャイルなソフトウェアを創ろう
- Chapter 12. Unit testing – knowing it works: 「ユニットテスト」ソフトウェアが常に動くことを担保しよう
- Chapter 13. Refactoring – paying down your technical debt: 「リファクタリング」技術的負債を返済しよう
- Chapter 14. Test-Driven Development: テスト駆動開発しよう
- Chapter 15. Continuous integration – making it production ready: 「継続的インテグレーション」常にプロダクトをリリースできる状態にしておこう
全部訳すの大変なので
日本語版の発売を心待ちにしています!
PHPMatsuriに参加してきました。そいやっ
こんにちは
新ライダーオーズが安定した面白さで毎週日曜が楽しみなMochi2ですタトバ
先日ハッカソンイベントPHPMatsuriに参加させていただいたのですが、
これがとてもよい経験になったので、感想を投稿させていただきたいと思います。
PHPMatsuriに参加してきました
2010/10/02〜2010/10/03に晴海グランドホテルにて開催されたハッカソンイベントPHPMatsuriに参加してきました。
海外から、CakePHP、symfony、Lithiumのコア&リードデベロッパを招待しての、たいへん贅沢なイベントす。
詳細は公式ページから確認いただければと思いますが、土曜の朝から日曜の夕方まで(人によっては徹夜で)もくもくと開発したり技術講演を聞いたりワークショップしたり、(一般の方から見ると)非常にクレイジーな催しでした。
祭りの詳細は、参加者の皆様がとてもすばらしいまとめを書いてらっしゃるので、こちらをご覧ください。
感想ブログ、写真 » PHP Matsuri
この投稿では個人的なKPTや感想なんかをつらつらあげさせていただきます。
普段symfonyで開発しているので、symfony成分多めです。
チャレンジ&KPT
チャレンジ
- 新しい技術(Lithium or Symfony2)にチャレンジする
- 海外の開発者に英語で話しかける
- 普段勉強させて頂いている開発者に話しかける(そしてお礼を言う)
- 成果物を発表する
Keep:良かったこと
Problem:改善したいこと
- 英語で話しかけると言っても「Thank you」「OK」程度だった
- Symfony2の中身が変わりすぎてて大混乱。たいした機能を実装できなかった
- 発表内容がネタ9割で、技術的に特筆するべきポイントがなかった
- 他の開発者さんの発表に対して質問が出来なかった
- プレゼンの内容が日本語のみで、海外の開発者さんがポカーンだった
Try:次回挑戦したいこと
- 技術に根ざした価値を持つ発表をする
- 他の開発者さんの発表に対して、自分にとっても他の参加者にとっても有益な質問をする
- 海外の開発者さんに、普段技術的に疑問に思っていることを質問し、回答をいただく程度の会話をする
成果物
- 発表したネタアプリを見たいと仰ってくださった方がいたので、さくらのVPSを利用して公開してみました。
- 孤独のグルメネタアプリはこちら
- 私の好きなシーンをランダムでただただ表示し続けるネタアプリです
- 本番環境ではdebug toolbarすら表示されないのでSymfony2で作られていることがわかる要素が皆無です。
- Symfony2でのアプリの作り方やさくらのVPSでの公開の流れなんかは別記事としてアップしたいとおもいます。気が向けば
感謝の気持ち
運営の皆様に感謝
参加者の皆様に感謝
- すばらしい講演、ワークショップの講師をしてくださった開発者の皆様
- 個性的な成果を発表してくださった発表者の皆様
- すばらしい情熱と開発の楽しさを体現してくださった参加者の皆様
- 本当に、ありがとうございました。
その他お礼
- とくにsymfonyでのアジャイル開発の事例紹介とTDDワークショップで講師をしてくださったIKEMEN JIREI KNIGHTの[twitter:@HIROCAST]さん、ありがとうございました。
- [twitter:@nateabele]さんに話しかける際に助けてくださった[twitter:@remore]さん、ありがとうございました。
- 同室になって私の下らないお話を聞いてくださった[twitter:@tsutsuoto]さん、ありがとうございました。
- 発表する勇気がなかった私に、「何かコミットメントしないと」と背中を押してくださった、[twitter:@tejima]さん、ありがとうございました。
- 20代前半という若さにも関わらずSymfony2についてのすばらしい情報をプレゼンしてくださった[twitter:@ooharabucyou]さん、[twitter:@co3k]さん、ありがとうございました。非常によい刺激をいただきました。
あと、日本語symfony情報が欲しい方は日本symfonyユーザー会へ行ってみるといいと思います
- お祭りに参加した印象として、CakePHP、Lithiumがとても人気で、symfony人口は比較的少なめなのかなと感じました。
- 日本語のsymfony情報は、日本symfonyユーザー会さんが、活発に&よい情報を発信してくださっています。未見の方はぜひ。
気がついたら邦楽ラップもかくやという感謝率、あやうく産んでくれた母親に感謝までいくところでした。
ちょっと気持ち悪いことになってきたのでこの辺にしておきます。
もうちょっと技術的に突っ込んだ記事を書けるようにならないといかんなと反省しつつ、今日はおやすみなさい
第一回OpenPNE3で学ぶsymfony勉強会に参加
OpenPNEで有名な株式会社手嶋屋さんで開催された勉強会に参加させていただきました。
- 株式会社手嶋屋さん
- 会場
- 株式会社手嶋屋 新宿事務所
- アクセス|SNS構築の手嶋屋
- 講師
OpenPNE3で学ぶSymfonyのタスク機能
- 講師
- 手嶋守さん
- 概要
- OpenPNEについて
OpenPNEとsymfonyについて
OpenPNEについて
- もともとMojaviベースの内製フレームワークで構築
- version3からsymfonyを採用
- 各フレームワークを検証した結果、なぜsymfonyを採用したのか
- Zend Frameworkはまだライブラリの域を出ていない感
- CakePHPは計量で良いが、機能要件をみたせていなかった
OpenPNEにsymfonyを採用することの利点
- symfonyの公式ドキュメント、開発Tipsが生かせる
OpenPNE3において、symfonyタスク機能をどのように活用しているか
OpenPNEタスクを使ってみましょう
- opGenerateでプラグイン生成
- ソースはgithubにあります
- 入門編:コンソール画面に文字出力するタスク
- 応用編:フレンドリンク強制的に生成するタスク
- opMinnatomodachiPlugin
- tejima's opMinnatomodachiPlugin at master - GitHub
- 応用編:イベントを自動的に作成するタスク
- opLunchRandomizerPlugin
- tejima's opLunchRandomizerPlugin at master - GitHub
- 手順
- OpenPNE3のプラグイン生成の詳しい情報はこちらにあるみたい
環境・前提
- PHP-5.2をインストール済み
- OpenPNE3をインストール済み
プラグインひな形作成
mochiz% ./symfony opGenerate:plugin opTestTwoPlugin
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/apps
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/lib
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/bootstrap
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/bootstrap/database.php
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/bootstrap/functional.php
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/bootstrap/unit.php
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/fixtures
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/fixtures/test_data.yml
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/functional
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/functional/mobile_frontend
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/functional/mobile_frontend/skeletonActionsTest.php
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/functional/pc_frontend
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/functional/pc_frontend/skeletonActionsTest.php
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/unit
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/unit/model
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/unit/model/SkeletonTest.php
>> chmod 777 /Users/mochiz/Sites/OpenPNE3/cache
>> chmod 777 /Users/mochiz/Sites/OpenPNE3/log
>> chmod 777 /Users/mochiz/Sites/OpenPNE3/symfony
>> chmod 666 /Users/mochiz/Sites/OpenPNE3/log/.gitignore
>> dir+ /Users/mochiz/Sites/OpenPNE3/web/cache
>> chmod 777 /Users/mochiz/Sites/OpenPNE3/web/cache
Permissions on some files could not be fixed.
You may fix this problem for accessing "/pc_backend.php/sns/cache" via your web browser.
If you want to get more information, please execute "./symfony openpne:permission --env=dev".
タスククラス作成
- lib/taskにタスククラスを設置しましょう
- 時間短縮のために、今回は既存ファイルをコピーしてタスククラスを作成します
cd plugins
mkdir opTestTwoPlugin/lib/task
git clone git clone http://github.com/tejima/opMinnatomodachiPlugin.git
cp opMinnatomodachiPlugin/lib/task/opMinnatomodachiTask.class.php opTestTwoPlugin/lib/task/opTestTask.class.php
- クラスメイトファイル名に齟齬がないよう編集します
- namespace、nameを編集し、タスク名を決定しましょう
- namespace=opTest
- name=two
class opTestTask extends sfBaseTask
{
protected function configure()
{
$this->namespace = 'opTest';
$this->name = 'two';
} protected function execute($arguments = array(), $options = array())
{
var_dump('Test');
}
}
タスクを実行する
- 作成したタスクを実行します
./symfony opTest:two
string(4) "Test"
symfony1.4タスクの作り方まとめ
- 拡張するときにはpluginを作成しましょう
- lib/taskへタスクを設置しましょう
手嶋屋謹製タスクプラグインのご紹介
タスクプラグインの紹介:みんな友達プラグイン
- ソースはgithubに
- opMinnatomodachiPlugin
- tejima's opMinnatomodachiPlugin at master - GitHub
- なにやってるのかざっくり紹介
- DB接続
- Doctorineフレンドリンクテーブルを削除
- すべてのフレンドリンクを再作成
- select結果をまとめてインサート。5000人分くらいまではストレス無く実行できるはず
- 以上のような処理が5行くらいでできちゃいます
- 新入社員が入った場合に自動的に結びつけができるので便利
タスクプラグインの紹介:ランチイベントランダム作成プラグイン
- ソースはgithubに
- opLunchRandomizerPlugin
- tejima's opLunchRandomizerPlugin at master - GitHub
- 社内SNSで使っているとのこと
- ランチイベントを自動で作ってくれるプラグイン
質疑応答
- OpenPNEを、OAuthライブラリなど、zendライブラリなど入っている前提で使って良いですか?
- 基本的にはそのままで使っていただけるはず
- zendライブラリも同梱していますが、ライセンス的には問題ない(はず)
- メール受信後の動作などもタスクで実装されていたりするのか?
- 携帯メールをdumpしてサイトへ反映するタスクなどもあります
- openpne
実例で見るsymfonyの我流修正方法
- 講師
- 河合さん
- Crossover21というサイトを構築しています
- 官民一体の政策議論、情報交換、勉強会のネットワークSNS
- OpenPNE3で実装されています
- コミュニティ、アクティビティを主軸に拡張
- レイアウト、文言を見やすく
- 友達機能、日記機能は使わない
- 管理者毎に機能制限をかける
- 使い勝手をよくしたら、好評でした。とのこと
どうやって実装したのかをざっくりと
- 文言修正方法
- 機能修正
質疑応答
- ※あとで書く
感想
- ※あとで書く
Try WiMAXでわいまっくすさんを試してみました
最近(今更ですが)先輩の影響で伊集院光の深夜の馬鹿力を毎週の楽しみにしているのですが
先日、伊集院光氏がWiMAXを試してみたー、みたいなことをTwitter&ラジオで仰っておりました。
さらにその前日に、
こんなに便利だったなんて…試してわかったWiMAXの本当の魅力:らばQ
という記事を見て、WiMAXに興味を持っていたので
「ワイも試してみたいんやで」とばかりに、
通信機器をお試しレンタルしてくれる、「Try WiMAX」を利用してみました。
申込から返却までどんな感じだったか、レポートさせていただきます。
申し込みは、UQ WiMAXのサイトトップの「Try WiMAXのお申し込み」ボタンから。
Try WiMAX│超速モバイルネット WifiサービスはUQ WiMAX
ちょいちょいちょいと個人情報を登録して申し込み実施。
だいたい二日程で届きました。
箱を開けたらこんな感じ。
くぱぁ。端末が奥に転げてしまってます。
装着してみました。
通信を行うために、専用アプリをインストールします
ScreenShadeで輝度を下げていたので…画像が暗い
付属のディスクを開くとOS毎のインストーラが
ちょいちょいとインストール完了
アイコンが表示され、
新しいネットワーク接続が認識されます。
通信アプリが立ち上がり、接続しようとしますが、接続と切断を繰り返す感じ
隅田川にほど近い、台東区住まいなのですが、どうやら自宅では接続できないようでした。
残念です。
後日、秋葉原のリナカフェへ
(秋葉原はよく行きますが、リナカフェはまだ一度も入ったことがありませんでした。)
リナカフェなうと呟きたくて入ったものの、
場所が悪かったのか、ここでも接続と切断を繰り返す感じ
結局iphoneでリナカフェなうを呟きました。
残念です。
少しばかり落胆しつつ、
御徒町の蒙古タンメン中本の北極ラーメン定食付きを食した後、
休憩スペースで接続を試みたところ、
ついにネットへビュンすることができました
通信速度を測ってみましたが、
5MB前後出ているようでした。
十分な速度です。
帰宅後、玄関先でドアを開いて通信してみたところ、今度はサクッと接続できました。
が、ドアを閉めると切断されてしまいました。
残念です。
もうちょっといろんなところで試してみたかったのですが、
機会がなかったので、さくっと返却させていただきました。
返却時も、ゆうパックの着払いでOKとのことだったので、
レンタル料金は一切かかりませんでした。
ありがたいです。
通信速度はなかなかよいし
料金プランも一日のみのプランもあったりと、
勉強会やカンファレンス参加時に使いたい私には、とても魅力的な通信端末でしたが
本契約はもう少し様子見かしら、といった印象でした
伊集院さんも仰ってましたが、
路地一本入るととたんにおとなしくなっちゃう、逆内弁慶みたいな子でした
猫が、ズザーしたり衣装ケースに入ったりするテレビCMが好感触なので
前向きに検討という感じです。
高速通信の導入を検討している方は、お試ししてはいかがでしょうか
「ワイからもよろしく頼むわ」と、わいまっくすさんも仰っております。
社内プレゼン会で発表してきました
今日は社内の有志によるプレゼン会でした。
デブサミ2010と仮面ライダー勉強会で受けた刺激をぶつけるように、
プレゼンテーションzen片手に夜なべしてプレゼン資料を作成しました。
内容は、Firefox-addonの「vimperator」の紹介です
見た目は完全に…仮面ライダー勉強会やマスタージェダイ角谷さんのスライドのパク…ゲフ、ゲフン。所謂リスペクトです。オマージュです。
だいぶ空回りしてる感じですが、
奮発して購入したkehynoteがとても使いやすくて、
楽しく資料作成することが出来ました。
プレゼン発表はずいぶん久しぶりでしたが、とても楽しかったです。
ついでに興味があったslideshareも使い始めてみました。
よかったら見てやってください。
2010/03/02 追記
コメント欄でご指摘いただきました箇所を修正させていただきました。
operatorimperator
otsuneさん、ありがとうございました。