SlideShare una empresa de Scribd logo
1 de 52
Descargar para leer sin conexión
O/R Mapping の話をするよ。
特に ActiveRecord の話をしたかった。
2013-10-05 第2回中国地方DB勉強会
自己紹介
•火村 智彦
•Twitter eielh
•GitHub eiel
•Facebook 本名プレイ
hiroshima.rb 会場準備係
ベストツイート
対象者
•O/RM 使っている
対象者
•O/RM 使っている
けど使ってないと主張する人
今日伝えたいこと
•O/RM 便利 手早く作るにはよい。
•使いこなしたいなら ソース読め
•データベースも勉強したほうがいい
•ActiveRecord は
•SQL を意識して書きやすくなってる
アジェンダ
• O/RM について
• 復習的な感じに
• ActiveRecord について
• 基本
• その他の機能(ざっくりと)
注意事項
•気軽にマサカリ投げましょう
•たぶん会場の偉い人が教えてくれる
•それで盛り上げてください(遠い目)
注意事項
•気軽にマサカリ投げましょう
•たぶん会場の偉い人が教えてくれる
•それで盛り上げてください(遠い目)俺がそんなにRDBに詳しいわけがない
O/RM について
7,8年前のイメージ
• 気がついたら Web業界は データベースに
データ保存するのが当たり前になっていた
• 理由とかよくわからない
• データが消えにくい
• メモリが節約できる
O/RM 以前
•SQL を文字列で構築して
•カーソル (PL/SQLとか)
•全部取得(PHPとか)
•連想配列的なものとか配列に入って返っ
てくる
O/RM 以前
•SQL を文字列で構築して
•カーソル (PL/SQLとか)
•全部取得(PHPとか)
•連想配列的なものとか配列に入って返っ
てくる
意外とめんどくさい
こんな人はいますか?
• SELECT, UPDATE は書けるけど
• INSERT は書けない
もっと楽に書きたい
だいたいデータが保存したいだけ
取り出しはみんな得意?
Object Relation Mapping
(O/RM)
O/RM
• DBに取り出した時点で
• オブジェクトになってる
• メソッド定義していけば良い
• 保存は保存メソッド呼ぶだけ
• オブジェクトを作成すれば、DBへ挿入される
トレードオフ
•DBの力を引き出しづらい
•効率の良いSQLが書きづらい
•本来データベースでできることをプロ
グラムする必要が生まれる
•関係データベースじゃなくてもよくね?
なんとなくのイメージ
PostgreSQL MySQL
なんとなくのイメージ
PostgreSQL MySQL
O/RM
なんとなくのイメージ
PostgreSQL MySQL
O/RM
NoSQL
そういえば
•WebObjects & CoreData
•すごいって聞いたけどどうなんだろう
戯言
• 関係データベースとプログラミング
• SQLは宣言的 <-> プログラミングは手続き
• SQLでも手続きは書ける (これは悪?)
• 純粋関数型言語…(宣言的)
• テーブルは集合(順番はない)
• 行は要素 -> カーソルで取得するとレコード
まとめ
•O/RM 使うと楽
•DBの力を引き出しにくい
ActiveRecordについて
基本的な話もしますが
せっかくなので
使ってておもったことを書きます
基本的な話もしますが
せっかくなので
使ってておもったことを書きます
初心者向けの話にならないかもしれない
基本
• ルールを作ることで
• デフォルト設定ならほとんど何もいらない
• クラス名の複数形がテーブル名
• 自動的にセッタ、ゲッタが用意される
必要条件
•テーブルがある
•ActiveRecord::Base を継承したクラス
がある
•クラス名の複数形がテーブル名である
基本 例
CREATE TABLE users (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(64)
);
class User < ActiveRecord::Base
end
基本
# hoge という名前のユーザを探す。なかったら作る。
user = User.where(name: 'hoge').first_or_create
# 名前を goro に変更
user.name = 'goro'
# 変更を保存
user.save
O/RM がなかったら
# 疑似コードです。
query = "SELECT id, name FROM users WHERE name = 'hoge'"
result = SQL.execute!(query)
if result.empty?
create_query = "INSERT INTO users VALUES ('hoge')"
SQL.execute!(create_query)
result = SQL.execute!(query)
end
update_query = "UPDATE users SET name = 'goro' where id = ?"
user = result[0]
SQL.execute!(update_query, user[:id])
フォームとカラム
• テーブル設計について
• 必要なものだけ作るのが楽
• リファクタリングでカバー
• テストコードがあればどうにでもなる
• トレードオフ
• マイグレーションをがんばる
フォームとカラム
• カラムはフォームの項目に1対1に対応させると楽
• 画面をつくって入力したい項目を考えればよい
• 補佐的なカラムが必要なら追加すればいい
• 最適化が必要になったら
• その時がんばればいい
• テストコードないとつらい…
DB設計
•しっかり設計したい場合
•ActiveRecordを使わない選択
•Rail への乗り方を熟知しておく選択
phpMyAdmin病
•phpMyAdmin を使いたがる 病
•状態をみたい
•テストするのに値を書き換えたい
•rails console を生かせ
rails console を使う
• 状態をみたい
• 簡単に見えようにメソッドを用意しよう
• テストするデータつくりたい
• ファクトリメソッドを用意しよう
• テストコードかけ
rails console を使う
• 状態をみたい
• 簡単に見えようにメソッドを用意しよう
• テストするデータつくりたい
• ファクトリメソッドを用意しよう
• テストコードかけ
他の人が同じことをする時ために
手順をわかりやすくしておこう
くりかえし実行しやすくしよう
ソース読め
• 実は意外と難しくない
• ActiveRecord::Base は mixin してるだけ
• lib/active_record/base.rb
• モジュール間はほとんど直交してる
ソース読め read.rb
# 自動で定義されるゲッタの中身
# lib/active_record/attribute_methods/read.rb
# `#define_method_attribute` より
read_attribute(AttrNames::ATTR_#{safe_name}) { |n|
missing_attribute(n, caller)
}
ソース読め read.rb
• read_attribute(attr_name) で値が取れそう
• 値がなかったらなんかするっぽい
• read_attribute を見ると…
• @attributes ってところに値があるっぽい
ソース読め read.rb
• read_attribute(attr_name) で値が取れそう
• 値がなかったらなんかするっぽい
• read_attribute を見ると…
• @attributes ってところに値があるっぽい
ごめん! そんなに簡単じゃなかった!!
以下、時間が余れば
制約
• なるべく設定したい
• データの整合性が楽に保てる
• しかし
• エラーが起きたときのコードが別途必要
• エラーがSQLがわからないとわかりにくい
特に NOT NULL 制約
•基本的に自分で付ける必要がある
•できるだけかきたい
•その NULLは本当に必要なNULL?
•プログラム的には扱いにくくなる
特に外部キー制約
•複雑なシステムほどあるといい
•しかし
•テストコード書くのは大変になる
•特に実行に時間がかかる
クエリビルダ
• SQLを構築するメソッドを呼ぶと
• ActiveRecord::Relation というオブジェク
トが返ります
• これはSQLの構築の途中の状態
• to_a などを呼ぶことで SQL が実行される
クエリビルダ 例
class User < ActiveRecord::Base
scope :admin, -> { where(type: 'admin') }
scope :rank_max, -> { where(rank: 5) }
end
User.where(type: 'admin')
.to_sql # => where type = 'admin'
User.admin.to_sql # => where type = 'admin'
User.admin.rank_max.to_sql # => where type = 'admin'
# and where ranke = 5
クエリビルダ
•クエリに名前をつけて
•クエリ同士を合成できる
クエリビルダ発展
•サブクエリとしても使える
•他のテーブルの条件も使いたい
•merge メソッドで合成
その他
•もっとクエリビルダ
•リレーション
•arel
•大小比較ができない!
•squeel 使うといいよ
ご清聴ありがとうございました。

Más contenido relacionado

La actualidad más candente

120901fp key
120901fp key120901fp key
120901fp keyksknac
 
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界Y Watanabe
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメYoji Kanno
 
Lispとは何なのか - 同図像性がもたらす力とその利用法
Lispとは何なのか - 同図像性がもたらす力とその利用法Lispとは何なのか - 同図像性がもたらす力とその利用法
Lispとは何なのか - 同図像性がもたらす力とその利用法Naoya Yamashita
 
C#を始めたばかりの人へのLINQ to Objects
C#を始めたばかりの人へのLINQ to ObjectsC#を始めたばかりの人へのLINQ to Objects
C#を始めたばかりの人へのLINQ to ObjectsFumitaka Yamada
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理DADA246
 
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)AtCoder Inc.
 
Webアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいかWebアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいかHiroshi Tokumaru
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
研修成果プレゼン資料
研修成果プレゼン資料研修成果プレゼン資料
研修成果プレゼン資料Wataru Yamaura
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
2023フライウィール会社紹介_導入事例集.pdf
2023フライウィール会社紹介_導入事例集.pdf2023フライウィール会社紹介_導入事例集.pdf
2023フライウィール会社紹介_導入事例集.pdfFLYWHEEL Inc.
 
The only one big thing every programmer should know
The only one big thing every programmer should knowThe only one big thing every programmer should know
The only one big thing every programmer should knowTakuto Wada
 
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Satoshi Kubo
 
実践・最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)AtCoder Inc.
 
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計するドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する増田 亨
 
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐりKazuyuki TAKASE
 
大学でC++03を教わった私が、便利そうだと思ったC++11の新機能
大学でC++03を教わった私が、便利そうだと思ったC++11の新機能大学でC++03を教わった私が、便利そうだと思ったC++11の新機能
大学でC++03を教わった私が、便利そうだと思ったC++11の新機能tSURooT
 
実務視点のデザイン経営
実務視点のデザイン経営実務視点のデザイン経営
実務視点のデザイン経営Concent, Inc.
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめpospome
 

La actualidad más candente (20)

120901fp key
120901fp key120901fp key
120901fp key
 
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
Lispとは何なのか - 同図像性がもたらす力とその利用法
Lispとは何なのか - 同図像性がもたらす力とその利用法Lispとは何なのか - 同図像性がもたらす力とその利用法
Lispとは何なのか - 同図像性がもたらす力とその利用法
 
C#を始めたばかりの人へのLINQ to Objects
C#を始めたばかりの人へのLINQ to ObjectsC#を始めたばかりの人へのLINQ to Objects
C#を始めたばかりの人へのLINQ to Objects
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
 
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
 
Webアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいかWebアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいか
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
研修成果プレゼン資料
研修成果プレゼン資料研修成果プレゼン資料
研修成果プレゼン資料
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
2023フライウィール会社紹介_導入事例集.pdf
2023フライウィール会社紹介_導入事例集.pdf2023フライウィール会社紹介_導入事例集.pdf
2023フライウィール会社紹介_導入事例集.pdf
 
The only one big thing every programmer should know
The only one big thing every programmer should knowThe only one big thing every programmer should know
The only one big thing every programmer should know
 
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門
 
実践・最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第三回講義資料(ワークスアプリケーションズ & AtCoder)
 
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計するドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
 
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり
 
大学でC++03を教わった私が、便利そうだと思ったC++11の新機能
大学でC++03を教わった私が、便利そうだと思ったC++11の新機能大学でC++03を教わった私が、便利そうだと思ったC++11の新機能
大学でC++03を教わった私が、便利そうだと思ったC++11の新機能
 
実務視点のデザイン経営
実務視点のデザイン経営実務視点のデザイン経営
実務視点のデザイン経営
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 

Similar a O/R Mapping の話をするよ。ActiveRecord の話をしたかった。

RubySeminar16_Analyze
RubySeminar16_AnalyzeRubySeminar16_Analyze
RubySeminar16_Analyzesady_nitro
 
SunspotではじめるSolr入門
SunspotではじめるSolr入門SunspotではじめるSolr入門
SunspotではじめるSolr入門Takao Baba
 
Reproducebility 100倍 Dockerマン
Reproducebility 100倍 DockerマンReproducebility 100倍 Dockerマン
Reproducebility 100倍 DockerマンNagi Teramo
 
趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方Koichi Ota
 
JRubyで作るapiサーバー
JRubyで作るapiサーバーJRubyで作るapiサーバー
JRubyで作るapiサーバーYamamoto Kazuhisa
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方Yusuke Wada
 
GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04Shinobu Okano
 
メモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なことメモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なことMasaya TARUI
 
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyPerlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyazuma satoshi
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話Yuki Ishikawa
 
OSC2013 HIROSHIMA ライトニングトーク すごい広島
OSC2013 HIROSHIMA ライトニングトーク すごい広島OSC2013 HIROSHIMA ライトニングトーク すごい広島
OSC2013 HIROSHIMA ライトニングトーク すごい広島Tomohiko Himura
 
Emscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョンEmscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョン兎 伊藤
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm鉄次 尾形
 
Javaから見たRubyの世界
Javaから見たRubyの世界Javaから見たRubyの世界
Javaから見たRubyの世界Takafumi Yoshida
 
My開発環境の話
My開発環境の話My開発環境の話
My開発環境の話Yuta Ohashi
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話Naoto Koshikawa
 
プログラミングNet framework3のお題
プログラミングNet framework3のお題プログラミングNet framework3のお題
プログラミングNet framework3のお題Kazushi Kamegawa
 

Similar a O/R Mapping の話をするよ。ActiveRecord の話をしたかった。 (17)

RubySeminar16_Analyze
RubySeminar16_AnalyzeRubySeminar16_Analyze
RubySeminar16_Analyze
 
SunspotではじめるSolr入門
SunspotではじめるSolr入門SunspotではじめるSolr入門
SunspotではじめるSolr入門
 
Reproducebility 100倍 Dockerマン
Reproducebility 100倍 DockerマンReproducebility 100倍 Dockerマン
Reproducebility 100倍 Dockerマン
 
趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方
 
JRubyで作るapiサーバー
JRubyで作るapiサーバーJRubyで作るapiサーバー
JRubyで作るapiサーバー
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04GarumとMeteoriteと私 3nd Edition ver0.04
GarumとMeteoriteと私 3nd Edition ver0.04
 
メモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なことメモリアロケーションからみた拡張ライブラリに大切なこと
メモリアロケーションからみた拡張ライブラリに大切なこと
 
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyPerlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話
 
OSC2013 HIROSHIMA ライトニングトーク すごい広島
OSC2013 HIROSHIMA ライトニングトーク すごい広島OSC2013 HIROSHIMA ライトニングトーク すごい広島
OSC2013 HIROSHIMA ライトニングトーク すごい広島
 
Emscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョンEmscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョン
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
 
Javaから見たRubyの世界
Javaから見たRubyの世界Javaから見たRubyの世界
Javaから見たRubyの世界
 
My開発環境の話
My開発環境の話My開発環境の話
My開発環境の話
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
プログラミングNet framework3のお題
プログラミングNet framework3のお題プログラミングNet framework3のお題
プログラミングNet framework3のお題
 

Más de Tomohiko Himura

つながりをゆるふわにしよう Active supprt notifications
つながりをゆるふわにしよう Active supprt notificationsつながりをゆるふわにしよう Active supprt notifications
つながりをゆるふわにしよう Active supprt notificationsTomohiko Himura
 
コンピュータをもっと使おう
コンピュータをもっと使おうコンピュータをもっと使おう
コンピュータをもっと使おうTomohiko Himura
 
広島で Ruby が流行らないのはどう考えても俺たちが悪い
広島で Ruby が流行らないのはどう考えても俺たちが悪い広島で Ruby が流行らないのはどう考えても俺たちが悪い
広島で Ruby が流行らないのはどう考えても俺たちが悪いTomohiko Himura
 
Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術Tomohiko Himura
 
Rails プロジェクトでスタートダッシュを決める
Rails プロジェクトでスタートダッシュを決めるRails プロジェクトでスタートダッシュを決める
Rails プロジェクトでスタートダッシュを決めるTomohiko Himura
 
すごい cron ? - Jenkins 試した
すごい cron ? - Jenkins 試したすごい cron ? - Jenkins 試した
すごい cron ? - Jenkins 試したTomohiko Himura
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門Tomohiko Himura
 
すごい Hiroshima で楽しく学ぼう
すごい Hiroshima で楽しく学ぼうすごい Hiroshima で楽しく学ぼう
すごい Hiroshima で楽しく学ぼうTomohiko Himura
 
黒い画面入門 + パッケージ管理紹介 + Macの使い方とか
黒い画面入門 + パッケージ管理紹介 + Macの使い方とか黒い画面入門 + パッケージ管理紹介 + Macの使い方とか
黒い画面入門 + パッケージ管理紹介 + Macの使い方とかTomohiko Himura
 
Mac OS X のパッケージ管理紹介/比較
Mac OS X のパッケージ管理紹介/比較Mac OS X のパッケージ管理紹介/比較
Mac OS X のパッケージ管理紹介/比較Tomohiko Himura
 
軽量マークアップ言語で気楽にマークアップ
軽量マークアップ言語で気楽にマークアップ軽量マークアップ言語で気楽にマークアップ
軽量マークアップ言語で気楽にマークアップTomohiko Himura
 
Hakyllで遊んでみた。
Hakyllで遊んでみた。Hakyllで遊んでみた。
Hakyllで遊んでみた。Tomohiko Himura
 
Rails Guide 翻訳しようぜ。
Rails Guide 翻訳しようぜ。Rails Guide 翻訳しようぜ。
Rails Guide 翻訳しようぜ。Tomohiko Himura
 

Más de Tomohiko Himura (20)

つながりをゆるふわにしよう Active supprt notifications
つながりをゆるふわにしよう Active supprt notificationsつながりをゆるふわにしよう Active supprt notifications
つながりをゆるふわにしよう Active supprt notifications
 
Hiroshimarbについて
HiroshimarbについてHiroshimarbについて
Hiroshimarbについて
 
コンピュータをもっと使おう
コンピュータをもっと使おうコンピュータをもっと使おう
コンピュータをもっと使おう
 
広島で Ruby が流行らないのはどう考えても俺たちが悪い
広島で Ruby が流行らないのはどう考えても俺たちが悪い広島で Ruby が流行らないのはどう考えても俺たちが悪い
広島で Ruby が流行らないのはどう考えても俺たちが悪い
 
Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術
 
Rails プロジェクトでスタートダッシュを決める
Rails プロジェクトでスタートダッシュを決めるRails プロジェクトでスタートダッシュを決める
Rails プロジェクトでスタートダッシュを決める
 
すごい cron ? - Jenkins 試した
すごい cron ? - Jenkins 試したすごい cron ? - Jenkins 試した
すごい cron ? - Jenkins 試した
 
すごい広島
すごい広島すごい広島
すごい広島
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門
 
すごい Hiroshima で楽しく学ぼう
すごい Hiroshima で楽しく学ぼうすごい Hiroshima で楽しく学ぼう
すごい Hiroshima で楽しく学ぼう
 
黒い画面入門 + パッケージ管理紹介 + Macの使い方とか
黒い画面入門 + パッケージ管理紹介 + Macの使い方とか黒い画面入門 + パッケージ管理紹介 + Macの使い方とか
黒い画面入門 + パッケージ管理紹介 + Macの使い方とか
 
Mac OS X のパッケージ管理紹介/比較
Mac OS X のパッケージ管理紹介/比較Mac OS X のパッケージ管理紹介/比較
Mac OS X のパッケージ管理紹介/比較
 
軽量マークアップ言語で気楽にマークアップ
軽量マークアップ言語で気楽にマークアップ軽量マークアップ言語で気楽にマークアップ
軽量マークアップ言語で気楽にマークアップ
 
Hakyllで遊んでみた。
Hakyllで遊んでみた。Hakyllで遊んでみた。
Hakyllで遊んでみた。
 
Liquid の紹介
Liquid の紹介Liquid の紹介
Liquid の紹介
 
Git 仕組み 入門
Git 仕組み 入門Git 仕組み 入門
Git 仕組み 入門
 
Rails Guide 翻訳しようぜ。
Rails Guide 翻訳しようぜ。Rails Guide 翻訳しようぜ。
Rails Guide 翻訳しようぜ。
 
Hiroshimarb 027-fiber
Hiroshimarb 027-fiberHiroshimarb 027-fiber
Hiroshimarb 027-fiber
 
Hiroshimarb 027-fiber
Hiroshimarb 027-fiberHiroshimarb 027-fiber
Hiroshimarb 027-fiber
 
OSC 2012 HIROSHIMA
OSC 2012 HIROSHIMAOSC 2012 HIROSHIMA
OSC 2012 HIROSHIMA
 

O/R Mapping の話をするよ。ActiveRecord の話をしたかった。