「 2011年は、Rails3を使おう!〜masuidriveに学ぶ」に参加してきました。

第1部 Rails3情報源の歩き方 〜公式サイトの歩き方から定番サイト、必見コンテンツまで一挙ご紹介(西村賢氏)

第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
    • good: CoC 'Convention over Configuration', DRY, MVC, Full stack, Generator / Scaffold, For "Write less code"
    • bad: 不安定, 遅い/メモリ食い過ぎ, 実行環境少ない, 実績少ない, Rubyプログラマが少ない
  • Rails2 リリース後
  • Sinatra
    • Simple
  • Merb+DataMapper
  • RailsがMerb から得た物
    • モジュール構造, Plugin API, MazRuby以外の環境(JRubyなど)で動作する
  • Passenger
    • どうやってRailsをProduction環境で動かせばいいかの回答として, Apacheに組み込めるモジュール, 一つのサーバで複数のRails appの管理が容易
  • 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
    • Why?, Stable?, Rewrite?
    • 最新のRailsが最高のRails, プラグインは最新版に向けてリリースされることが多い, バージョンを飛ばしてUpgradeするのは大変
    • 2.3 => 3.0は互換あり、2.3=>3.1は互換なし
  • Rails3の安定度
    • no clash, no change API, performance
  • Performance
    • モジュール構造になると、メソッド呼び出しが増え、どうしても遅くなる, 特にRails 3.0.0のActiveRecordが遅かった, 3.0.2で大きく改善している
  • コードの書き換えをするなら
    • テストが書かれていないならあきらめる, まずはRails 2.3.8にアップしてだめならあきらめる, 使っているプラグインがRails3に対応しているか確認する
  • コードの書き換え
    • config/*, config/routes.rb, app/models/* あたり
  • Peepcode
  • 結論
    • 新規アプリはRails3で
    • テスト書いてないならUpgradeはあきらめる
    • PluginのRails3対応度次第
    • ActiveRecord後方互換を生かしつつ
    • Routingを書き換えるのはそれほど問題ではない
  • Rails3の特徴
    • ActiveRecord 3
      • Hash > Method
    • Bundler
      • 依存するGemのインストール, バージョン管理, Gemfile
    • And more..
      • Erb, ActionMailr, etc.
  • Rails3に期待すること
    • Plugin APIにより、Pluginの互換問題がすくなるなる, module化によってパフォーマンスの最適化が行いやすくなるといいな

The Agile Samuraiの目次を訳してみた


はじめに

  • スクラム道.03でパッションを充填していただいたので、アジャイル&英語の勉強がてら訳してみました。
  • でも、わたくし英語全然できません。
  • 赤ペン先生に添削いただければ幸いです。

The Agile Samurai

訳してみました

  • Part 1. Introducing Agile: アジャイルの導入
    • Chapter 1. Agile in a nutshell: アジャイルを一言で言うと
    • Chapter 2. Meet your agile team: アジャイルチームにどんなメンバーがいるのか(役割があるのか)を知ろう
  • 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: アジャイルプロジェクトを計画しよう
    • Chapter 6. Gathering user stories: ユーザーストーリーを収集しよう
    • Chapter 7. Estimation – the fine art of guessing: 「見積もり」それは芸術的に推測をすること
    • Chapter 8. Agile planning – dealing with reality: 「アジャイル計画」それは現実に対処すること
  • Part 4. Executing Agile Projects: アジャイルプロジェクトを実行しよう
    • Chapter 9. Iteration management – making it happen: 「イテレーションマネジメント」目標を成し遂げよう
    • Chapter 10. Creating an agile communication plan: アジャイルなコミュニケーション計画を作ろう
    • Chapter 11. Creating a visible workspace: やるべき作業を見える化しよう
  • Part 5. Creating Agile Software: アジャイルなソフトウェアを創ろう

全部訳すの大変なので

日本語版の発売を心待ちにしています!

PHPMatsuriに参加してきました。そいやっ

こんにちは
新ライダーオーズが安定した面白さで毎週日曜が楽しみなMochi2ですタトバ
先日ハッカソンイベントPHPMatsuriに参加させていただいたのですが、
これがとてもよい経験になったので、感想を投稿させていただきたいと思います。


PHPMatsuriに参加してきました

2010/10/02〜2010/10/03に晴海グランドホテルにて開催されたハッカソンイベントPHPMatsuriに参加してきました。
海外から、CakePHPsymfonyLithiumのコア&リードデベロッパを招待しての、たいへん贅沢なイベントす。
詳細は公式ページから確認いただければと思いますが、土曜の朝から日曜の夕方まで(人によっては徹夜で)もくもくと開発したり技術講演を聞いたりワークショップしたり、(一般の方から見ると)非常にクレイジーな催しでした。

祭りの詳細は、参加者の皆様がとてもすばらしいまとめを書いてらっしゃるので、こちらをご覧ください。
感想ブログ、写真 » PHP Matsuri
この投稿では個人的なKPTや感想なんかをつらつらあげさせていただきます。
普段symfonyで開発しているので、symfony成分多めです。


会場ではPHPフレームワークのロゴを模したケーキがふるまわれました。うまい!

チャレンジ&KPT

チャレンジ
  • 新しい技術(Lithium or Symfony2)にチャレンジする
  • 海外の開発者に英語で話しかける
  • 普段勉強させて頂いている開発者に話しかける(そしてお礼を言う)
  • 成果物を発表する
Keep:良かったこと
  • 新しい技術にチャレンジ
    • PHP 5.3.3環境を構築することが出来ました
    • Symfony2 について開発者本人の言葉として知ることが出来ました
    • Symfony2 で簡単なアプリを作成することができました
  • 海外の開発者に英語で話しかける
    • ランチで偶然同席した、[twitter:@nateabele]さんに英語で話しかけることが出来ました
    • [twitter:@kriswallsmith]さんに話しかけて一緒に写真を撮ってもらえました
  • 開発者に話しかける
    • ウノウ(現ZyngaJapan)の開発者さんからsymfony 1.4でのアジャイル開発事例と、functionalテストにおける問題点や解決アプローチを聞くことが出来ました
    • OpenPNE@手嶋屋の開発者さんとお話しさせていただき、よい刺激をいただきました
  • 成果を発表
    • 作成したネタアプリを発表することができました
    • 発表についてSymfony賞をいただけました
Problem:改善したいこと
  • 英語で話しかけると言っても「Thank you」「OK」程度だった
  • Symfony2の中身が変わりすぎてて大混乱。たいした機能を実装できなかった
  • 発表内容がネタ9割で、技術的に特筆するべきポイントがなかった
  • 他の開発者さんの発表に対して質問が出来なかった
  • プレゼンの内容が日本語のみで、海外の開発者さんがポカーンだった
Try:次回挑戦したいこと
  • 技術に根ざした価値を持つ発表をする
  • 他の開発者さんの発表に対して、自分にとっても他の参加者にとっても有益な質問をする
  • 海外の開発者さんに、普段技術的に疑問に思っていることを質問し、回答をいただく程度の会話をする

成果物

  • 発表したネタアプリを見たいと仰ってくださった方がいたので、さくらのVPSを利用して公開してみました。
    • 孤独のグルメネタアプリはこちら
    • 私の好きなシーンをランダムでただただ表示し続けるネタアプリです
    • 本番環境ではdebug toolbarすら表示されないのでSymfony2で作られていることがわかる要素が皆無です。
  • Symfony2でのアプリの作り方やさくらのVPSでの公開の流れなんかは別記事としてアップしたいとおもいます。気が向けば

感謝の気持ち

運営の皆様に感謝
  • イベントを開催してくださった[twitter:@yando]さん、とてもよい経験をさせていただきました。ありがとうございました
  • イベントを運営してくださったスタッフの皆様。お疲れさまでした&ありがとうございました
  • お祭りへの参加を促してくださった[twitter:@cakephper]さん。ありがとうございました
参加者の皆様に感謝
  • すばらしい講演、ワークショップの講師をしてくださった開発者の皆様
  • 個性的な成果を発表してくださった発表者の皆様
  • すばらしい情熱と開発の楽しさを体現してくださった参加者の皆様
  • 本当に、ありがとうございました。

その他お礼

  • とくにsymfonyでのアジャイル開発の事例紹介とTDDワークショップで講師をしてくださったIKEMEN JIREI KNIGHTの[twitter:@HIROCAST]さん、ありがとうございました。
  • [twitter:@nateabele]さんに話しかける際に助けてくださった[twitter:@remore]さん、ありがとうございました。
  • 同室になって私の下らないお話を聞いてくださった[twitter:@tsutsuoto]さん、ありがとうございました。
  • 発表する勇気がなかった私に、「何かコミットメントしないと」と背中を押してくださった、[twitter:@tejima]さん、ありがとうございました。
  • 20代前半という若さにも関わらずSymfony2についてのすばらしい情報をプレゼンしてくださった[twitter:@ooharabucyou]さん、[twitter:@co3k]さん、ありがとうございました。非常によい刺激をいただきました。

あと、日本語symfony情報が欲しい方は日本symfonyユーザー会へ行ってみるといいと思います

  • お祭りに参加した印象として、CakePHPLithiumがとても人気で、symfony人口は比較的少なめなのかなと感じました。
  • 日本語のsymfony情報は、日本symfonyユーザー会さんが、活発に&よい情報を発信してくださっています。未見の方はぜひ。
    • いつもすばらしい情報を発信してくださっているユーザー会の[twitter:@brtriver]さん、[twitter:@hidenorigoto]さん、ありがとうございます。この場を借りて
    • ユーザー会がmottomotto盛り上がるとよいなーと祈っております。

気がついたら邦楽ラップもかくやという感謝率、あやうく産んでくれた母親に感謝までいくところでした。
ちょっと気持ち悪いことになってきたのでこの辺にしておきます。


いただいたもの

もうちょっと技術的に突っ込んだ記事を書けるようにならないといかんなと反省しつつ、今日はおやすみなさい

第一回OpenPNE3で学ぶsymfony勉強会に参加

OpenPNEで有名な株式会社手嶋屋さんで開催された勉強会に参加させていただきました。

OpenPNE3で学ぶSymfonyのタスク機能

  • 講師

    • 手嶋守さん
  • 概要

OpenPNEsymfonyについて

OpenPNEについて

OpenPNEsymfonyを採用することの利点

  • symfonyの公式ドキュメント、開発Tipsが生かせる

    • 独自フレームワークだと、サポートにリソースをさかれてしまうので難があった
    • ソーシャルプラットフォームの表現に開発を注力することができるようになった
    • symfonyノウハウを利用することでOpenPNEの拡張が出来るところがversion3以降の強み
    • プラグイン機構で柔軟な機能追加ができる

OpenPNE3において、symfonyタスク機能をどのように活用しているか

  • symfonyタスクとは

    • symfonyコマンドで様々な処理を実行できる機能

      • キャッシュクリア、ジェネレート、デプロイ、データインポートエクスポートなど
      • HTTPアクセスを介さない、バッチ処理の様なイメージ
  • どのような用途で利用しているのか

  • どうやって実行しているのか

OpenPNEタスクを使ってみましょう

環境・前提

プラグインひな形作成

  • plugin生成コマンドを実行します


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

  • なにやってるのかざっくり紹介

    • DB接続
    • Doctorineフレンドリンクテーブルを削除
    • すべてのフレンドリンクを再作成

      • select結果をまとめてインサート。5000人分くらいまではストレス無く実行できるはず
    • 以上のような処理が5行くらいでできちゃいます
  • 新入社員が入った場合に自動的に結びつけができるので便利

タスクプラグインの紹介:ランチイベントランダム作成プラグイン

質疑応答

  • OpenPNEを、OAuthライブラリなど、zendライブラリなど入っている前提で使って良いですか?

    • 基本的にはそのままで使っていただけるはず
    • zendライブラリも同梱していますが、ライセンス的には問題ない(はず)
  • メール受信後の動作などもタスクで実装されていたりするのか?

    • 携帯メールをdumpしてサイトへ反映するタスクなどもあります
    • openpne

実例で見るsymfonyの我流修正方法

  • 講師

    • 河合さん
  • Crossover21というサイトを構築しています

    • 官民一体の政策議論、情報交換、勉強会のネットワークSNS
    • OpenPNE3で実装されています

      • コミュニティ、アクティビティを主軸に拡張
      • レイアウト、文言を見やすく
      • 友達機能、日記機能は使わない
      • 管理者毎に機能制限をかける
      • 使い勝手をよくしたら、好評でした。とのこと

どうやって実装したのかをざっくりと

  • 文言修正方法

    • i18n機能で文言を変更させています

      • 「コミュニティ」を「グループ」に変更
      • 国際化だけでなく、日本語を別の文言に変更することができるようになります。
    • スタイルシート変更

      • プラグインCSSを切り替えできます
      • Skinとつけるといいらしい
      • plugins/opSkin*を参照
  • 機能修正

    • アクティビティ(mixiエコーみたいな?)

      • 一般的に、オープンソーシャル上で行動したログをアクティビティと呼びます。
      • OpenPNEでは、つぶやきのみがログに残される行動になるので、つぶやき=アクティビティなイメージらしい
      • 全員に公開するアクティビティを作りたかった
      • 「友達に限定して公開する制限」を加えている処理をコメントアウト(笑)
      • 「友達に限定して公開する制限」を選択するフォーム部分をコメントアウト(笑)
    • スタッフ管理者のメニュー制限

      • なんかいろいろカスタマイズできるみたいです

質疑応答

  • ※あとで書く

感想

  • ※あとで書く

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さん、ありがとうございました。