第5回Rails勉強会@関西

久しぶりのRubyの話題です。Rails勉強会は初めてです。というか自分のPCにもRailsインストールしてなかったりします。積読もぜんぜん減ってないし…
とりあえず自分用のメモを残します。素人なんでよくない記述が多そうです。
アジャイルにデータモデリング by 渡辺幸三さん

  • 業務システム。幅広い。ソフトウェアだけじゃない。そのまわりも。1.財務システム。2.人事・給与システム。3.(広い意味の)営業管理システム(販売管理システム、生産管理システム、契約管理システム)。1と2はオーソドックス。普通はパッケージを使っている。3が重要。これを上手く作りたい。3を上手く作れば事業の足を引っぱらない(無駄を抑える)。
  • 業務システムって他のソフトウェア(ゲーム、組込みとか)と何が違うの? DBが中心。社会的な広がり。まわりに人がいっぱい絡んでいる。
  • この分野のスキルを身に付けるには? 簿記。DB(モデリング)。個々の業務知識(ここは毎回変わる)。簿記は3級が必要。2級はいらない。
  • モデリングされるべきもの。3つある。データベース、アプリケーション、ユーザ(組織体制)。
  • XEAD。無料でダウンロードできる。コンセプトウェア/財務管理。基本ソフトウェア設計で業務マニュアルは必要。テーブルもプログラムも多い。
  • モデリング。実装/(論理要件, 物理制約)。データ実装/データモデル、機能実装/機能モデル、業務実装/業務モデル。真ん中にデータモデル、そのまわりに機能モデル、一番外に業務モデルが配置される。
  • アジャイルにデータモデル。ユーザとの対話から絵を書いて作っていく。そんなのは十中八九間違い。どんどん直す。さんざん直したものがその日の成果物。ドラフトレベルの手書きからモデリングツールに入力する。モデリングツールではモデリングしない。入力するだけ。もちろん、その次の打合せではモデリングツールでモデルを示しながらやる。そうしないと生産性が悪すぎる。
  • データモデリングの文法。
  • 関数従属性。会員No → 会員名。会員Noが決まれば会員名が決まる。DBの基本。一番重要。
  • バブルチャート。f(a) = b。a → b。bはaに関数従属する。a : 識別子。b : 従属子。
  • 世の中を観察すると、いろんな関数従属性がある。例えば、a → b、a → c、a → d、d → eの場合。テーブルにすると、[テーブルA] (a), b, c, d。[テーブルB] (b), e。テーブル間でも従属性がある。[テーブルA] …→ [テーブルB]。参照関係。IE記法。
  • テーブルは横書き。値(レコードの具体例)を下に書き込める。
  • 親子関係。識別子になっているものが識別子の一部になっている。
  • 派生関係。スーパークラス、サブクラス。
  • ActiveRecordでは、1対1、N対Nが鬼門? この辺がでてきたら注意する。
  • 練習問題。バブルチャートを機械的にテーブルに直してみる。
  • モデリングの本。ハブさんの本?が素晴らしい。

Rails Chatの仕組みを読み解く by moriq さん

  • ちょっと歴史。2006/07/17 Flash Socket Plugin From: のりおさん [rails:1365]
  • 2006/07/20 Juggernaut by Alexくん Flash Socket pluginから改名。
  • 2006/08/16 Tigerbaumkuchen by artonさん Juggernautを改良。
  • Juggernaut(ジャガーノート) by Alexくん 16歳(英国)。Flash XMLSocketを用いたリアルタイム通信。プッシュ技術。Rails pluginとして配布。Flash Player 7必須!
  • FlashからJavaScriptを呼ぶ方法。1. getURL("javascript:...")。残念! 制限があるIEでは500何バイト以上使えない。2. fscommand。良い。ただしversion7以降。→ そういうわけでJuggernautもversion7以降。
  • Tigerbaumkuchen(タイガーバームクーヘン) by artonさん。次を改良。ping/pong:自動切断対策。クライアント単位の送信用スレッド:安定性を向上。メッセージの追い抜きを防止。
  • Rails Chatの開発...
  • コードが貼り付けられる。Rubyのコードは色が付けられる。ダウンロードのリンクもある。
  • mtascで生成できる。オープンソース。全てをコマンドラインで用意できる。
  • Juggernautの構成。Rails pluginとして配布。インストール方法。jsonが必要。
  • Tigerbaumkuchenの構成。基本的にはJuggernautと同じ。Macromedia Flash JavaScript Integration Kitを同梱。その内使いそうということで。
  • Ralias Chatの動作原理。サーバ側(Rails、PushServer)。クライアント側(FlashJavaScript)。ロード時にFlashはPushServerと接続(XMLSocket)。完了したらFlashJavaScriptを呼ぶ。JavaScriptAjaxRailsに「新しいユーザ」を通知。RailsはPushServerに通知(TCPSocket)。PushServerはメッセージを繋いでいるユーザに一斉配信。
  • ソースを読む。

Rails 初心者レッスン第 2 回 − ActiveRecord 入門 by かずひこさん・あゆさん

  • あゆさん、UNIX Magazineの記事書いてた(女子大生の放課後?)。僕も読んだような記憶があります。
  • 絶賛加速中。
  • ActiveRecord命名規約。データベースのテーブル名は複数形(people)。プライマリキーはid。外部キーは「相手のテーブルの単数形_id」。created_atとupdated_atという特別な意味を持つフィールド名。規約を守らないといけない? 守らないと絶対ダメなわけではないけどタイプ量が減る。フレームワーク→郷に入れば…
  • Railsのリファレンスマニュアル。gem_serverを起動すれば見られる。http://localhost:8808/
  • app → あぷぷ。
  • CRUP。Create(INSERT)、Read(SELECT)、Update(UPDATE)、Delete(DELETE)。
  • update_attributeとupdate_attributesの違い。validatoinのある/なしも違う。メソッド名がよくない。トラップ。
  • Person.find(:first, :condition => ["name = '#{input}'"])は危険。

懇親会

10年くらいUNIX Magazineは愛読していた(過去形)なので、あゆさんがUNIX Magazineのあの記事のあゆさんだということがわかってビックリでした。なんか雲の上の人というかフィクションの人が実在した気分。あー、この間10年分のUNIX Magazineを処分してしまったのが悔まれます。もっかい読みたいなー。