SlideShare a Scribd company logo
1 of 27
Next-L Enju 開発ワークショップ #4
          「資料の統計」

      2012年5月19日
         田辺浩介
前回からの主な進捗
Next-L Enju Leaf 1.0.5.rc3リリース
Windows上で動くことを確認
  RailsInstallerを使用
  手間はLinux/Macとあまり変わらない気がする
図書館の統計情報の取得
図書館に必要な統計
貸出回数
 資料ごと
 利用者ごと
予約回数
 資料ごと
 利用者ごと
図書館に必要な統計
蔵書数
 館ごと
 資料区分ごと
 除籍冊数
利用者数
 登録者数
図書館に必要な統計
ほかにもなにが必要か考えてみよう!
統計に関係するモデル
書誌 (Manifestation), 所蔵 (Item)
利用者 (User)
貸出 (Checkout), 予約 (Reserve)
図書館 (Library), 書架 (Shelf)
件名 (Subject)
ほかにもあるかも?
決めること
統計に必要なデータの管理はどのモデルの
 役割か
たとえば、「館ごとの蔵書数」
 所蔵情報 (Item)
 図書館 (Library)
 書棚 (Shelf)
   所蔵は書棚に属し、書棚は図書館に属するため
組み立て戦略
必要なモデルを選ぶ
選んだモデル間の関連を追う
集計に必要な属性がどのモデルに存在するかを
 把握する
モデル間の関連
モデル間の関連
1対1
 belongs_to / has_one
1対多
 belongs_to / has_many
 has_one through
多対多
 has_many through
1対1
貸出1件に対する返却は1件
返却1件に対する貸出は1件


以下のファイルを見てみよう
 app/models/checkout.rb
 app/models/checkin.rb
1対1
貸出1件に対する返却は1件
返却1件に対する貸出は1件


以下のファイルを見てみよう
 app/models/checkout.rb
 app/models/checkin.rb
1対多(1)
1件の所蔵に対する貸出は複数存在
1件の貸出に対する所蔵は1件


以下のファイルを見てみよう
 app/models/item.rb
 app/models/checkout.rb
1対多(2)
1人の利用者に対する権限は1件
1件の権限に対する利用者は複数


以下のファイルを見てみよう
 app/models/user.rb
 app/models/user_has_role.rb
 app/models/role.rb
多対多
1件の書誌に対する出版者は複数存在
1人の出版者に対する書誌は複数存在


以下のファイルを見てみよう
 app/models/patron.rb
 app/models/produce.rb
 app/models/manifestation.rb
Railsでの関係の定義
モデルとモデルの所属関係を決める
所属される側のモデルに以下のカラムを追加
 所属するモデルのモデル名を
 単数形にし、さらに末尾に” _id”をつける
 データ型はinteger
関連の定義例(1)
BlogモデルとPostモデルが存在
各モデルは以下のように作成されている
 $ rails g scaffold Blog title:string
 $ rails g scaffold Post body:text


 $ rake db:migrate を忘れないこと
関連の定義例(2)
BlogモデルとPostモデルが存在
ひとつのBlogには複数のPostが存在


Blog has_many Posts
Post belongs_to Blog
関連の定義例(3)
app/models/blog.rbに以下を追加
 has_many :posts


app/models/post.rbに以下を追加
 belongs_to :blog
関連の定義例(4)
Postモデルにblog_idカラムを追加
 rails g migration AddBlogIdToPost blog_id:integer
関連の定義例(5)
データを用意する
 rails c
 >> blog = Blog.create(:title => '田辺のブログ')
   >> post = Post.create(:body => 'Enju開発ワーク
   ショップに行ったよ')
関連の定義例(6)
関連を確認し設定する
 >> blog.posts # blogにひも付いているpostを取得
   => []
   >> blog.posts << post # postを追加
   => [#<Post id: 1, body: "Enju開発ワークショップ
   に行ってきた", created_at: "2012-05-18 18:28:18",
   updated_at: "2012-05-18 18:29:35", blog_id: 1>]
   >> blog.posts # もう一度取得してみる
Blogから見たPostは複数あるため、
  メソッドが“ blog.posts”と複数形になってい
関連の定義例(7)
関連づけを逆方向から確認する
 >> post.blog
   => #<Blog id: 1, title: "田辺のブログ", created_at:
   "2012-05-18 18:28:04", updated_at: "2012-05-18
   18:28:04">
Postから見たBlogはひとつのため、
 メソッドが“ post.blog”と単数形になっている
実習(1)
以下のように作成されたUserモデルがあります
 $ rails g model User email:string


ひとりのUserはひとつだけBlogを作れるとしま
 す
どのように関連を設定すればよいでしょうか
実習(2)
各自で図書館に必要な統計を考えてください
その集計に必要なモデルを選び、関連を調べて
 ください
関連をもとに、クエリを設定してください
実習(2)
図書館に必要な統計を考えよう
その集計に必要なモデルがどれかを選ぶ

More Related Content

Viewers also liked

Brand Building in a Digital World
Brand Building in a Digital WorldBrand Building in a Digital World
Brand Building in a Digital WorldBloom Partners GmbH
 
Are You Ready For A Digital-First Future?
Are You Ready For A Digital-First Future?Are You Ready For A Digital-First Future?
Are You Ready For A Digital-First Future?Bloom Partners GmbH
 
Next Level Digital - Growing consumer brands in a digital-first future
Next Level Digital - Growing consumer brands in a digital-first futureNext Level Digital - Growing consumer brands in a digital-first future
Next Level Digital - Growing consumer brands in a digital-first futureBloom Partners GmbH
 

Viewers also liked (6)

Brand Building in a Digital World
Brand Building in a Digital WorldBrand Building in a Digital World
Brand Building in a Digital World
 
Decoding Demand Opportunities
Decoding Demand OpportunitiesDecoding Demand Opportunities
Decoding Demand Opportunities
 
Agilität schlägt Strategie
Agilität schlägt StrategieAgilität schlägt Strategie
Agilität schlägt Strategie
 
Are You Ready For A Digital-First Future?
Are You Ready For A Digital-First Future?Are You Ready For A Digital-First Future?
Are You Ready For A Digital-First Future?
 
Next Level Digital - Growing consumer brands in a digital-first future
Next Level Digital - Growing consumer brands in a digital-first futureNext Level Digital - Growing consumer brands in a digital-first future
Next Level Digital - Growing consumer brands in a digital-first future
 
Food Trends in a Digital World
Food Trends in a Digital WorldFood Trends in a Digital World
Food Trends in a Digital World
 

Similar to Next-L Enju 開発ワークショップ #4

10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010Nobuaki Oshiro
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905Nobuaki Oshiro
 
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflowTomoyuki Obi
 
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIJavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIHajime Fujimoto
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計Tadayoshi Sato
 
Big data解析ビジネス
Big data解析ビジネスBig data解析ビジネス
Big data解析ビジネスMie Mori
 
.NET の今と今後に思うこと
.NET の今と今後に思うこと.NET の今と今後に思うこと
.NET の今と今後に思うことAkira Inoue
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Kazumi IWANAGA
 
スマートニュースの世界展開を支えるログ解析基盤
スマートニュースの世界展開を支えるログ解析基盤スマートニュースの世界展開を支えるログ解析基盤
スマートニュースの世界展開を支えるログ解析基盤Takumi Sakamoto
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会Takayuki Shimizukawa
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤Yu Otsubo
 
Tokyo r25 hiro_macchan
Tokyo r25 hiro_macchanTokyo r25 hiro_macchan
Tokyo r25 hiro_macchanHiroki Matsui
 
.NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.).NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.)Akira Inoue
 
モデルベースソフトウェア開発
モデルベースソフトウェア開発モデルベースソフトウェア開発
モデルベースソフトウェア開発Akira Tanaka
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用Nobuaki Oshiro
 
EPUB3以降とReadium
EPUB3以降とReadiumEPUB3以降とReadium
EPUB3以降とReadiumMakoto Murata
 
OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化Nobuyori Takahashi
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】Tomoharu ASAMI
 
GeneratingWikipedia_ICLR18_論文紹介
GeneratingWikipedia_ICLR18_論文紹介GeneratingWikipedia_ICLR18_論文紹介
GeneratingWikipedia_ICLR18_論文紹介Masayoshi Kondo
 
9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay (日本語版)
9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay (日本語版) 9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay (日本語版)
9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay (日本語版) Takashi Ishio
 

Similar to Next-L Enju 開発ワークショップ #4 (20)

10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
 
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
 
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIJavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData API
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
 
Big data解析ビジネス
Big data解析ビジネスBig data解析ビジネス
Big data解析ビジネス
 
.NET の今と今後に思うこと
.NET の今と今後に思うこと.NET の今と今後に思うこと
.NET の今と今後に思うこと
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
 
スマートニュースの世界展開を支えるログ解析基盤
スマートニュースの世界展開を支えるログ解析基盤スマートニュースの世界展開を支えるログ解析基盤
スマートニュースの世界展開を支えるログ解析基盤
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤
 
Tokyo r25 hiro_macchan
Tokyo r25 hiro_macchanTokyo r25 hiro_macchan
Tokyo r25 hiro_macchan
 
.NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.).NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.)
 
モデルベースソフトウェア開発
モデルベースソフトウェア開発モデルベースソフトウェア開発
モデルベースソフトウェア開発
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
 
EPUB3以降とReadium
EPUB3以降とReadiumEPUB3以降とReadium
EPUB3以降とReadium
 
OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
 
GeneratingWikipedia_ICLR18_論文紹介
GeneratingWikipedia_ICLR18_論文紹介GeneratingWikipedia_ICLR18_論文紹介
GeneratingWikipedia_ICLR18_論文紹介
 
9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay (日本語版)
9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay (日本語版) 9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay (日本語版)
9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay (日本語版)
 

More from Kosuke Tanabe

Next-L Enju ワークショップ #91
Next-L Enju ワークショップ #91Next-L Enju ワークショップ #91
Next-L Enju ワークショップ #91Kosuke Tanabe
 
Next-L Enju ワークショップ #90
Next-L Enju ワークショップ #90Next-L Enju ワークショップ #90
Next-L Enju ワークショップ #90Kosuke Tanabe
 
Next-L Enju ワークショップ #89
Next-L Enju ワークショップ #89Next-L Enju ワークショップ #89
Next-L Enju ワークショップ #89Kosuke Tanabe
 
Next-L Enju ワークショップ #88
Next-L Enju ワークショップ #88Next-L Enju ワークショップ #88
Next-L Enju ワークショップ #88Kosuke Tanabe
 
Next-L Enju ワークショップ #86
Next-L Enju ワークショップ #86Next-L Enju ワークショップ #86
Next-L Enju ワークショップ #86Kosuke Tanabe
 
Next-L Enju ワークショップ #78
Next-L Enju ワークショップ #78Next-L Enju ワークショップ #78
Next-L Enju ワークショップ #78Kosuke Tanabe
 
オープンソースの図書館システムNext-L Enjuのいまとこれから
オープンソースの図書館システムNext-L Enjuのいまとこれからオープンソースの図書館システムNext-L Enjuのいまとこれから
オープンソースの図書館システムNext-L EnjuのいまとこれからKosuke Tanabe
 
Next-L Enju ワークショップ #75
Next-L Enju ワークショップ #75Next-L Enju ワークショップ #75
Next-L Enju ワークショップ #75Kosuke Tanabe
 
Next-L Enju ワークショップ #76
Next-L Enju ワークショップ #76Next-L Enju ワークショップ #76
Next-L Enju ワークショップ #76Kosuke Tanabe
 
Next-L Enju ワークショップ #74
Next-L Enju ワークショップ #74Next-L Enju ワークショップ #74
Next-L Enju ワークショップ #74Kosuke Tanabe
 
Next-L Enjuのご紹介(2018年版)
Next-L Enjuのご紹介(2018年版)Next-L Enjuのご紹介(2018年版)
Next-L Enjuのご紹介(2018年版)Kosuke Tanabe
 
Next-L Enju ワークショップ #65
Next-L Enju ワークショップ #65Next-L Enju ワークショップ #65
Next-L Enju ワークショップ #65Kosuke Tanabe
 
Next-L Enju ワークショップ #64
Next-L Enju ワークショップ #64Next-L Enju ワークショップ #64
Next-L Enju ワークショップ #64Kosuke Tanabe
 
Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62Kosuke Tanabe
 
Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62Kosuke Tanabe
 
Next-L Enju 開発ワークショップ #59
Next-L Enju 開発ワークショップ #59Next-L Enju 開発ワークショップ #59
Next-L Enju 開発ワークショップ #59Kosuke Tanabe
 

More from Kosuke Tanabe (20)

Next-L Enju ワークショップ #91
Next-L Enju ワークショップ #91Next-L Enju ワークショップ #91
Next-L Enju ワークショップ #91
 
Next-L Enju ワークショップ #90
Next-L Enju ワークショップ #90Next-L Enju ワークショップ #90
Next-L Enju ワークショップ #90
 
Next-L Enju ワークショップ #89
Next-L Enju ワークショップ #89Next-L Enju ワークショップ #89
Next-L Enju ワークショップ #89
 
Next-L Enju ワークショップ #88
Next-L Enju ワークショップ #88Next-L Enju ワークショップ #88
Next-L Enju ワークショップ #88
 
Next-L Enju ワークショップ #86
Next-L Enju ワークショップ #86Next-L Enju ワークショップ #86
Next-L Enju ワークショップ #86
 
Next-L Enju ワークショップ #78
Next-L Enju ワークショップ #78Next-L Enju ワークショップ #78
Next-L Enju ワークショップ #78
 
オープンソースの図書館システムNext-L Enjuのいまとこれから
オープンソースの図書館システムNext-L Enjuのいまとこれからオープンソースの図書館システムNext-L Enjuのいまとこれから
オープンソースの図書館システムNext-L Enjuのいまとこれから
 
Next-L Enju ワークショップ #75
Next-L Enju ワークショップ #75Next-L Enju ワークショップ #75
Next-L Enju ワークショップ #75
 
Next-L Enju ワークショップ #76
Next-L Enju ワークショップ #76Next-L Enju ワークショップ #76
Next-L Enju ワークショップ #76
 
Next-L Enju ワークショップ #74
Next-L Enju ワークショップ #74Next-L Enju ワークショップ #74
Next-L Enju ワークショップ #74
 
nextlenju73
nextlenju73nextlenju73
nextlenju73
 
Next-L Enjuのご紹介(2018年版)
Next-L Enjuのご紹介(2018年版)Next-L Enjuのご紹介(2018年版)
Next-L Enjuのご紹介(2018年版)
 
Next-L Enju ワークショップ #65
Next-L Enju ワークショップ #65Next-L Enju ワークショップ #65
Next-L Enju ワークショップ #65
 
enju_ws_65
enju_ws_65enju_ws_65
enju_ws_65
 
Next-L Enju ワークショップ #64
Next-L Enju ワークショップ #64Next-L Enju ワークショップ #64
Next-L Enju ワークショップ #64
 
Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62
 
Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62
 
Next-L Enju LRM
Next-L Enju LRMNext-L Enju LRM
Next-L Enju LRM
 
Enju ws 60
Enju ws 60Enju ws 60
Enju ws 60
 
Next-L Enju 開発ワークショップ #59
Next-L Enju 開発ワークショップ #59Next-L Enju 開発ワークショップ #59
Next-L Enju 開発ワークショップ #59
 

Next-L Enju 開発ワークショップ #4